OpenCloudOS-Kernel/drivers/gpu/drm
Chris Wilson 8f9420184a drm/i915: Move the modulus for ring emission to the register write
Space reservation is already safe with respect to the ring->size
modulus, but hardware only expects to see values in the range
0...ring->size-1 (inclusive) and so requires the modulus to prevent us
writing the value ring->size instead of 0. As this is only required for
the register itself, we can defer the modulus to the register update and
not perform it after every command packet. We keep the
intel_ring_advance() around in the code to provide demarcation for the
end-of-packet (which then can be compared against intel_ring_begin() as
the number of dwords emitted must match the reserved space).

v2: Assert that the ring size is a power-of-two to match assumptions in
the code. Simplify the comment before writing the tail value to explain
why the modulus is necessary.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Dave Gordon <david.s.gordon@intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1470174640-18242-13-git-send-email-chris@chris-wilson.co.uk
2016-08-02 22:58:25 +01:00
..
amd drm/amdkfd: Clean up inline handling 2016-06-21 21:32:52 +02:00
arc drm/arc: Remove redundant calls to drm_connector_register_all() 2016-06-21 10:53:12 +02:00
arm drm/arm: Add support for Mali Display Processors 2016-06-15 17:29:22 +01:00
armada drm: Lobotomize set_busid nonsense for !pci drivers 2016-06-21 21:56:23 +02:00
ast Merge tag 'topic/drm-misc-2016-06-07' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-06-09 11:19:28 +10:00
atmel-hlcdc drm/atmel-hlcdc: Remove redundant call to drm_connector_unregister_all() 2016-06-22 09:57:20 +02:00
bochs drm/bochs: Use lockless gem BO free callback 2016-06-01 09:40:16 +02:00
bridge drm/bridge: Add sii902x driver 2016-06-20 15:55:49 +02:00
cirrus Merge tag 'topic/drm-misc-2016-06-07' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-06-09 11:19:28 +10:00
etnaviv drm: Lobotomize set_busid nonsense for !pci drivers 2016-06-21 21:56:23 +02:00
exynos drm: Lobotomize set_busid nonsense for !pci drivers 2016-06-21 21:56:23 +02:00
fsl-dcu drm/fsl-dcu: use drm_mode_config_cleanup on initialization errors 2016-06-21 15:37:26 +02:00
gma500 drm/gma500: use drm_crtc_vblank_{on,off}() 2016-06-13 18:38:19 +02:00
hisilicon drm: Lobotomize set_busid nonsense for !pci drivers 2016-06-21 21:56:23 +02:00
i2c
i810
i915 drm/i915: Move the modulus for ring emission to the register write 2016-08-02 22:58:25 +01:00
imx drm: Lobotomize set_busid nonsense for !pci drivers 2016-06-21 21:56:23 +02:00
mediatek MT8173 HDMI support 2016-06-24 13:16:07 +10:00
mga
mgag200 Merge tag 'topic/drm-misc-2016-06-07' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-06-09 11:19:28 +10:00
msm drm: Lobotomize set_busid nonsense for !pci drivers 2016-06-21 21:56:23 +02:00
nouveau drm: Lobotomize set_busid nonsense for !pci drivers 2016-06-21 21:56:23 +02:00
omapdrm drm: Lobotomize set_busid nonsense for !pci drivers 2016-06-21 21:56:23 +02:00
panel drm/panel: simple: Add support for TPK U.S.A. LLC Fusion 7" and 10.1" panels 2016-05-12 11:32:14 +02:00
qxl Merge tag 'topic/drm-misc-2016-06-07' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-06-09 11:19:28 +10:00
r128
radeon drm/radeon: use crtc directly in drm_crtc_vblank_put() 2016-06-13 18:38:12 +02:00
rcar-du Merge branch 'drm/next/du' of git://linuxtv.org/pinchartl/media into drm-next 2016-06-24 13:15:10 +10:00
rockchip drm/rockchip: Finish initialization before registering DRM device 2016-06-21 10:52:58 +02:00
savage
shmobile drm: Lobotomize set_busid nonsense for !pci drivers 2016-06-21 21:56:23 +02:00
sis drm: Move master pointer from drm_minor to drm_device 2016-06-21 21:43:24 +02:00
sti drm: sti: rework init sequence 2016-06-21 21:32:52 +02:00
sun4i drm/sun4i: Remove open-coded drm_connector_register_all() 2016-06-22 09:57:45 +02:00
tdfx
tegra drm: tegra: Rely on the default ->best_encoder() behavior 2016-06-10 17:24:48 +02:00
tilcdc drm: Lobotomize set_busid nonsense for !pci drivers 2016-06-21 21:56:23 +02:00
ttm Linux 4.6-rc7 2016-05-09 13:49:56 +10:00
udl drm/udl: use drm_crtc_send_vblank_event() 2016-06-06 18:03:06 +02:00
vc4 drm/vc4: Remove unused connector 2016-06-22 12:41:47 +02:00
vgem drm/vgem: Stop calling drm_drv_set_unique 2016-06-21 21:43:37 +02:00
via drm: Move master pointer from drm_minor to drm_device 2016-06-21 21:43:24 +02:00
virtio drm: Lobotomize set_busid nonsense for !pci drivers 2016-06-21 21:56:23 +02:00
vmwgfx drm: document drm_auth.c 2016-06-21 22:10:55 +02:00
Kconfig drm/mediatek: Add DRM Driver for Mediatek SoC MT8173. 2016-05-06 17:47:35 +02:00
Makefile drm: Add helper for simple display pipeline 2016-06-10 17:33:17 +02:00
ati_pcigart.c
drm_agpsupport.c drm: Give drm_agp_clear drm_legacy_ prefix 2016-04-27 08:41:34 +02:00
drm_atomic.c drm/atomic: Add struct drm_crtc_commit to track async updates 2016-06-10 16:57:54 +02:00
drm_atomic_helper.c drm/atomic-helpers: Clear up cleanup_done a bit 2016-06-15 17:25:36 +02:00
drm_auth.c drm: document drm_auth.c 2016-06-21 22:10:55 +02:00
drm_bridge.c drm/doc: Switch to sphinx/rst fixed-width quoting 2016-06-03 20:58:24 +02:00
drm_bufs.c drm: Move master pointer from drm_minor to drm_device 2016-06-21 21:43:24 +02:00
drm_cache.c
drm_context.c
drm_crtc.c drm: document drm_auth.c 2016-06-21 22:10:55 +02:00
drm_crtc_helper.c drm/crtc-helper: disable_unused_functions really isn't for atomic 2016-06-21 11:46:08 +02:00
drm_crtc_internal.h drm: Clean up drm_crtc.h 2016-06-21 21:43:28 +02:00
drm_debugfs.c drm: Nuke legacy maps debugfs files 2016-06-16 10:16:11 +02:00
drm_dma.c
drm_dp_aux_dev.c drm/dp: Allow signals to interrupt drm_aux-dev reads/writes 2016-04-28 11:48:09 +02:00
drm_dp_dual_mode_helper.c drm: Add helper for DP++ adaptors 2016-05-23 11:10:46 +03:00
drm_dp_helper.c drm: Minimally initialise drm_dp_aux 2016-06-17 14:41:47 +02:00
drm_dp_mst_topology.c Linux 4.6-rc7 2016-05-09 13:49:56 +10:00
drm_drv.c drm: Don't call drm_dev_set_unique from platform drivers 2016-06-21 21:43:41 +02:00
drm_edid.c drm/edid: add displayid detailed 1 timings to the modelist. (v1.1) 2016-05-23 11:35:31 +10:00
drm_edid_load.c Fix annoyingly awkward typo in drm_edid_load.c 2016-05-30 09:59:28 +02:00
drm_encoder_slave.c
drm_fb_cma_helper.c drm: fb: cma: fix memory leak 2016-06-13 09:53:09 +02:00
drm_fb_helper.c drm/fb-helper: Reduce READ_ONCE(master) to lockless_dereference 2016-06-22 10:07:28 +02:00
drm_flip_work.c
drm_fops.c drm: Clean up drm_crtc.h 2016-06-21 21:43:28 +02:00
drm_fourcc.c drm: Move format-related helpers to drm_fourcc.c 2016-06-09 11:58:50 +02:00
drm_gem.c drm/doc: Appease sphinx 2016-06-02 16:25:20 +02:00
drm_gem_cma_helper.c drm: Wrap direct calls to driver->gem_free_object from CMA 2016-06-01 15:00:28 +10:00
drm_global.c
drm_hashtab.c
drm_info.c drm: Extract drm_is_current_master 2016-06-21 21:58:12 +02:00
drm_internal.h drm: Nuke SET_UNIQUE ioctl 2016-06-21 21:43:46 +02:00
drm_ioc32.c
drm_ioctl.c drm: document drm_auth.c 2016-06-21 22:10:55 +02:00
drm_irq.c drm: fix send_vblank_event use-after-free error 2016-06-20 21:18:35 +02:00
drm_kms_helper_common.c
drm_legacy.h drm: Hide hw.lock cleanup in filp->release better 2016-06-16 10:16:37 +02:00
drm_lock.c drm: Extract drm_is_current_master 2016-06-21 21:58:12 +02:00
drm_memory.c
drm_mipi_dsi.c drm/dsi: Add uevent callback 2016-06-13 10:45:57 +02:00
drm_mm.c drm/mm: avoid possible null pointer dereference 2016-05-23 14:56:11 +02:00
drm_modes.c Merge tag 'topic/drm-misc-2016-06-07' of git://anongit.freedesktop.org/drm-intel into drm-next 2016-06-09 11:19:28 +10:00
drm_modeset_lock.c drm/doc: Switch to sphinx/rst fixed-width quoting 2016-06-03 20:58:24 +02:00
drm_of.c
drm_panel.c drm/panel: Flesh out kerneldoc 2016-05-06 16:04:48 +02:00
drm_pci.c drm: Nuke SET_UNIQUE ioctl 2016-06-21 21:43:46 +02:00
drm_plane_helper.c drm: Deal with rotation in drm_plane_helper_check_update() 2016-06-17 16:41:25 +02:00
drm_platform.c drm: Lobotomize set_busid nonsense for !pci drivers 2016-06-21 21:56:23 +02:00
drm_prime.c drm/prime: fix error path deadlock fail 2016-06-13 17:32:18 +02:00
drm_probe_helper.c drm: Only create a cmdline mode if no probed modes match 2016-06-02 15:10:22 +02:00
drm_rect.c
drm_scatter.c
drm_simple_kms_helper.c drm: Deal with rotation in drm_plane_helper_check_update() 2016-06-17 16:41:25 +02:00
drm_sysfs.c drm: Remove dev_pm_ops from drm_class 2016-06-09 08:43:25 +02:00
drm_trace.h
drm_trace_points.c
drm_vm.c drm: Nuke legacy maps debugfs files 2016-06-16 10:16:11 +02:00
drm_vma_manager.c drm/doc: Switch to sphinx/rst fixed-width quoting 2016-06-03 20:58:24 +02:00