Colin Xu
f25a49ab8a
drm/i915/gvt: Use vgpu_lock to protect per vgpu access
...
The patch set splits out 2 small locks from the original big gvt lock:
- vgpu_lock protects per-vGPU data and logic, especially the vGPU
trap emulation path.
- sched_lock protects gvt scheudler structure, context schedule logic
and vGPU's schedule data.
Use vgpu_lock to replace the gvt big lock. By doing this, the
mmio read/write trap path, vgpu virtual event emulation and other
vgpu related process, would be protected under per vgpu_lock.
v9:
- Change commit author since the patches are improved a lot compared
with original version.
Original author: Pei Zhang <pei.zhang@intel.com>
- Rebase to latest gvt-staging.
v8:
- Correct coding and comment style.
- Rebase to latest gvt-staging.
v7:
- Remove gtt_lock since already proteced by gvt_lock and vgpu_lock.
- Fix a typo in intel_gvt_deactivate_vgpu, unlock the wrong lock.
v6:
- Rebase to latest gvt-staging.
v5:
- Rebase to latest gvt-staging.
- intel_vgpu_page_track_handler should use vgpu_lock.
v4:
- Rebase to latest gvt-staging.
- Protect vgpu->active access with vgpu_lock.
- Do not wait gpu idle in vgpu_lock.
v3: update to latest code base
v2: add gvt->lock in function gvt_check_vblank_emulation
Performance comparison on Kabylake platform.
- Configuration:
Host: Ubuntu 16.04.
Guest 1 & 2: Ubuntu 16.04.
glmark2 score comparison:
- Configuration:
Host: glxgears.
Guests: glmark2.
+--------------------------------+-----------------+
| Setup | glmark2 score |
+--------------------------------+-----------------+
| unified lock, iommu=on | 58~62 (avg. 60) |
+--------------------------------+-----------------+
| unified lock, iommu=igfx_off | 57~61 (avg. 59) |
+--------------------------------+-----------------+
| per-logic lock, iommu=on | 60~68 (avg. 64) |
+--------------------------------+-----------------+
| per-logic lock, iommu=igfx_off | 61~67 (avg. 64) |
+--------------------------------+-----------------+
lock_stat comparison:
- Configuration:
Stop lock stat immediately after boot up.
Boot 2 VM Guests.
Run glmark2 in guests.
Start perf lock_stat for 20 seconds and stop again.
- Legend: c - contentions; w - waittime-avg
+------------+-----------------+-----------+---------------+------------+
| | gvt_lock |sched_lock | vgpu_lock | gtt_lock |
+ lock type; +-----------------+-----------+---------------+------------+
| iommu set | c | w | c | w | c | w | c | w |
+------------+-------+---------+----+------+------+--------+-----+------+
| unified; | 20697 | 839 |N/A | N/A | N/A | N/A | N/A | N/A |
| on | | | | | | | | |
+------------+-------+---------+----+------+------+--------+-----+------+
| unified; | 21838 | 658.15 |N/A | N/A | N/A | N/A | N/A | N/A |
| igfx_off | | | | | | | | |
+------------+-------+---------+----+------+------+--------+-----+------+
| per-logic; | 1553 | 1599.96 |9458|429.97| 5846 | 274.33 | 0 | 0.00 |
| on | | | | | | | | |
+------------+-------+---------+----+------+------+--------+-----+------+
| per-logic; | 1911 | 1678.32 |8335|445.16| 5451 | 244.80 | 0 | 0.00 |
| igfx_off | | | | | | | | |
+------------+-------+---------+----+------+------+--------+-----+------+
Signed-off-by: Pei Zhang <pei.zhang@intel.com>
Signed-off-by: Colin Xu <colin.xu@intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
2018-05-18 12:39:02 +08:00
..
2017-09-04 16:34:59 +01:00
2018-02-06 11:41:27 -08:00
2018-05-14 05:22:01 +08:00
2017-08-10 10:26:06 +08:00
2017-11-16 11:48:34 +08:00
2018-04-23 13:09:34 +08:00
2018-05-18 12:39:02 +08:00
2017-12-04 11:24:33 +08:00
2018-05-16 11:12:27 +08:00
2017-12-04 11:24:33 +08:00
2017-12-22 16:33:03 +08:00
2018-02-06 11:40:59 -08:00
2017-11-16 11:46:07 +08:00
2018-05-16 11:12:27 +08:00
2017-12-04 11:24:33 +08:00
2018-05-17 22:05:10 +08:00
2018-03-30 14:47:18 +08:00
2018-03-30 14:47:18 +08:00
2018-05-18 12:39:02 +08:00
2018-05-18 12:39:02 +08:00
2018-05-18 12:39:02 +08:00
2018-03-06 13:19:27 +08:00
2017-06-08 13:59:16 +08:00
2018-04-04 13:46:40 +03:00
2018-03-06 13:19:20 +08:00
2018-04-30 16:01:13 +01:00
2018-03-06 13:19:23 +08:00
2018-05-18 12:39:02 +08:00
2017-12-22 16:33:03 +08:00
2018-03-06 13:19:27 +08:00
2018-02-06 11:41:34 -08:00
2018-05-18 12:39:02 +08:00
2018-03-06 13:19:20 +08:00
2017-11-16 11:48:22 +08:00
2018-04-23 13:09:32 +08:00
2017-12-04 11:24:35 +08:00
2018-05-18 12:39:02 +08:00
2018-04-23 13:09:34 +08:00
2018-04-23 13:09:34 +08:00
2018-05-18 12:39:02 +08:00