kernel-fxtec-pro1x/drivers/gpu/drm/nouveau
Marek Olšák dfadbbdb57 drm/ttm: add a way to bo_wait for either the last read or last write
Sometimes we want to know whether a buffer is busy and wait for it (bo_wait).
However, sometimes it would be more useful to be able to query whether
a buffer is busy and being either read or written, and wait until it's stopped
being either read or written. The point of this is to be able to avoid
unnecessary waiting, e.g. if a GPU has written something to a buffer and is now
reading that buffer, and a CPU wants to map that buffer for read, it needs to
only wait for the last write. If there were no write, there wouldn't be any
waiting needed.

This, or course, requires user space drivers to send read/write flags
with each relocation (like we have read/write domains in radeon, so we can
actually use those for something useful now).

Now how this patch works:

The read/write flags should passed to ttm_validate_buffer. TTM maintains
separate sync objects of the last read and write for each buffer, in addition
to the sync object of the last use of a buffer. ttm_bo_wait then operates
with one the sync objects.

Signed-off-by: Marek Olšák <maraeo@gmail.com>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2011-08-31 19:25:35 +01:00
..
Kconfig drm: fix nouveau_acpi build 2011-05-16 11:57:20 +10:00
Makefile drm/nv50: rename nv84_mpeg to nv50_mpeg 2011-05-16 10:49:04 +10:00
nouveau_acpi.c drm/nouveau: drop leftover debugging 2011-06-20 15:27:18 +10:00
nouveau_backlight.c nouveau: change the backlight parent device to the connector, not the PCI dev 2011-03-22 17:43:59 -07:00
nouveau_bios.c drm/nouveau: Add a quirk for Gigabyte NX86T 2011-07-25 09:41:29 +10:00
nouveau_bios.h drm/nouveau: recognise DCB connector type 0x41 as LVDS 2011-05-16 10:50:13 +10:00
nouveau_bo.c drm/ttm: add a way to bo_wait for either the last read or last write 2011-08-31 19:25:35 +01:00
nouveau_calc.c drm/nouveau: make the behaviour of get_pll_limits() consistent 2010-09-24 16:26:49 +10:00
nouveau_channel.c drm/nouveau: remove 'chan' argument from nouveau_bo_new 2011-06-23 16:00:37 +10:00
nouveau_connector.c drm/nouveau: ignore connector type when deciding digital/analog on DVI-I 2011-07-25 09:41:34 +10:00
nouveau_connector.h drm/nouveau: Use "force" to decide if analog load detection is ok or not. 2010-11-18 14:38:41 +10:00
nouveau_crtc.h drm/nouveau: allow cursor image and position to survive suspend 2010-05-28 16:06:17 +10:00
nouveau_debugfs.c drm/nouveau: add debugfs file to forcibly evict everything from vram 2010-09-24 16:28:33 +10:00
nouveau_display.c drm/nouveau: remove remnants of nouveau_pgraph_engine 2011-05-16 10:48:45 +10:00
nouveau_dma.c drm/nv50-nvc0: lookup pushbuf virtual address on dma_push 2011-06-23 16:00:22 +10:00
nouveau_dma.h drm/nouveau: remove no_vm/mappable flags from nouveau_bo 2011-02-25 06:45:34 +10:00
nouveau_dp.c drm/nouveau: silence some compiler warnings 2011-02-25 06:44:22 +10:00
nouveau_drv.c drm/nouveau: pass flag to engine fini() method on suspend 2011-07-25 09:43:22 +10:00
nouveau_drv.h drm/nouveau: pass flag to engine fini() method on suspend 2011-07-25 09:43:22 +10:00
nouveau_encoder.h drm/nouveau: enable enhanced framing only if DP display supports it 2010-10-05 09:57:35 +10:00
nouveau_fb.h drm/nv50-nvc0: explicitly map fbcon fb into channel vm 2011-06-23 15:59:59 +10:00
nouveau_fbcon.c drm/nv50-nvc0: explicitly map fbcon fb into channel vm 2011-06-23 15:59:59 +10:00
nouveau_fbcon.h drm/nvc0: implement fbcon acceleration 2010-12-21 17:18:39 +10:00
nouveau_fence.c drm/nouveau: remove 'chan' argument from nouveau_bo_new 2011-06-23 16:00:37 +10:00
nouveau_gem.c drm/ttm: add a way to bo_wait for either the last read or last write 2011-08-31 19:25:35 +01:00
nouveau_grctx.h drm/nouveau: Fix missing whitespace checkpatch.pl errors. 2011-05-16 10:47:25 +10:00
nouveau_hw.c drm/nv17-nv40: Fix modesetting failure when pitch == 4096px (fdo bug 35901). 2011-06-07 09:22:29 +10:00
nouveau_hw.h drm/nv04: Fix scanout over the 16MB mark. 2010-11-18 14:38:38 +10:00
nouveau_i2c.c drm/nouveau: Fix a few confusions between "chipset" and "card_type". 2010-11-18 14:39:04 +10:00
nouveau_i2c.h Merge branch 'drm-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 2010-10-26 18:57:59 -07:00
nouveau_ioc32.c drm: convert drm_ioctl to unlocked_ioctl 2009-12-18 11:22:31 +10:00
nouveau_irq.c drm/nouveau: detect disabled device in irq handler and return IRQ_NONE 2011-07-25 09:42:09 +10:00
nouveau_mem.c DRM: remove drm_pci_device_is_pcie 2011-07-13 08:14:52 +01:00
nouveau_mm.c drm/nouveau: add some debug output if nouveau_mm busy at destroy time 2011-06-23 16:00:55 +10:00
nouveau_mm.h drm/nouveau: rework vram init/fini ordering a little 2011-06-23 16:03:46 +10:00
nouveau_notifier.c drm/nv50-nvc0: explicitly map notifier bo into channel vm 2011-06-23 16:00:04 +10:00
nouveau_object.c drm/nouveau: fix off-by-one 2011-06-23 16:04:53 +10:00
nouveau_perf.c drm/nouveau/pm: Prevent overflow in nouveau_perf_init() 2011-06-18 14:38:38 +10:00
nouveau_pm.c drm/nouveau: Associate memtimings with performance levels on cards <= nv98 2011-05-16 10:50:30 +10:00
nouveau_pm.h drm/nva3: split pm backend out from nv50 2010-10-05 09:57:54 +10:00
nouveau_ramht.c drm/nv50-nvc0: fix ramht entries for multiple evo channels 2011-02-25 06:44:48 +10:00
nouveau_ramht.h drm/nouveau: return error from nouveau_ramht_remove() if not found 2010-12-03 15:05:27 +10:00
nouveau_reg.h drm/nouveau: Fix missing whitespace checkpatch.pl errors. 2011-05-16 10:47:25 +10:00
nouveau_sgdma.c DRM: remove drm_pci_device_is_pcie 2011-07-13 08:14:52 +01:00
nouveau_state.c Merge branch 'drm-nouveau-next' of git://anongit.freedesktop.org/git/nouveau/linux-2.6 into drm-core-next 2011-07-25 10:15:18 +01:00
nouveau_temp.c drm/nouveau/temp: Add default calibration values for nv67 2011-06-23 16:04:48 +10:00
nouveau_ttm.c drm: move ttm global code to core drm 2010-08-04 09:46:06 +10:00
nouveau_util.c drm/nouveau: add nouveau_enum_find() util function 2011-03-14 16:31:50 +10:00
nouveau_util.h drm/nouveau: add nouveau_enum_find() util function 2011-03-14 16:31:50 +10:00
nouveau_vm.c drm/nouveau: shut lockdep up if last vm ref needs to destroy pgd 2011-06-23 16:01:52 +10:00
nouveau_vm.h drm/nouveau: remove implicit mapping of every bo into chan_vm 2011-06-23 16:00:42 +10:00
nouveau_volt.c drm/nouveau: use static vidshift of 2 on volt 0x30 tables 2011-05-16 10:47:47 +10:00
nv04_crtc.c drm/nouveau: remove 'chan' argument from nouveau_bo_new 2011-06-23 16:00:37 +10:00
nv04_cursor.c drm/nouveau: allow cursor image and position to survive suspend 2010-05-28 16:06:17 +10:00
nv04_dac.c drm/nouveau: introduce a util function to wait on reg != val 2010-12-08 03:00:36 +01:00
nv04_dfp.c drm/nouveau: fix oops on unload with disabled LVDS panel 2011-04-05 11:07:05 +10:00
nv04_display.c drm/nv04-nv40: unregister irq handler on destroy 2010-12-03 15:11:43 +10:00
nv04_fb.c
nv04_fbcon.c drm/nouveau: implicitly insert non-DMA objects into RAMHT 2010-12-08 03:00:35 +01:00
nv04_fifo.c drm/nv50: check for vm traps on every gr irq 2011-03-14 16:32:30 +10:00
nv04_graph.c drm/nouveau/gr: disable fifo access and idle before suspend ctx unload 2011-07-25 09:43:38 +10:00
nv04_instmem.c DRM: remove drm_pci_device_is_pcie 2011-07-13 08:14:52 +01:00
nv04_mc.c drm/nouveau: Disable PROM access on init. 2010-07-13 10:13:58 +10:00
nv04_pm.c drm/nv10-nv20: Fix instability after MPLL changes. 2010-11-18 14:38:47 +10:00
nv04_timer.c
nv04_tv.c drm/nv0x-nv4x: Leave the 0x40 bit untouched when changing CRE_LCD. 2010-10-05 09:58:43 +10:00
nv10_fb.c drm/nv20: Add Z compression support. 2010-12-03 15:11:21 +10:00
nv10_fifo.c drm/nouveau: make fifo.create_context() responsible for mapping control regs 2010-12-08 03:00:34 +01:00
nv10_gpio.c drm/nouveau: introduce gpio engine 2010-07-26 11:43:57 +10:00
nv10_graph.c drm/nouveau/gr: disable fifo access and idle before suspend ctx unload 2011-07-25 09:43:38 +10:00
nv17_tv.c drm: Mark constant arrays of drm_display_mode const 2011-02-23 11:13:11 +10:00
nv17_tv.h drm: Mark constant arrays of drm_display_mode const 2011-02-23 11:13:11 +10:00
nv17_tv_modes.c drm: Mark constant arrays of drm_display_mode const 2011-02-23 11:13:11 +10:00
nv20_graph.c drm/nouveau/gr: disable fifo access and idle before suspend ctx unload 2011-07-25 09:43:38 +10:00
nv30_fb.c drm/nouveau: Rework tile region handling. 2010-12-03 15:11:20 +10:00
nv40_fb.c drm/nv40: implement support for on-chip PCIEGART 2011-02-25 06:44:04 +10:00
nv40_fifo.c drm/nv40/vpe: add support for PMPEG 2011-05-16 10:48:56 +10:00
nv40_graph.c drm/nouveau: pass flag to engine fini() method on suspend 2011-07-25 09:43:22 +10:00
nv40_grctx.c drm/nv40: make detection of 0x4097-ful chipsets available everywhere 2011-01-17 11:28:31 +10:00
nv40_mc.c drm/nv40: initialise 0x17xx on all chipsets that have it 2011-01-17 11:28:43 +10:00
nv40_mpeg.c drm/nouveau: pass flag to engine fini() method on suspend 2011-07-25 09:43:22 +10:00
nv50_calc.c drm/nva3/clk: better pll calculation when no fractional fb div available 2011-05-16 10:50:59 +10:00
nv50_crtc.c drm/nouveau: remove 'chan' argument from nouveau_bo_new 2011-06-23 16:00:37 +10:00
nv50_cursor.c drm/nv50-nvc0: rename disp->evo to disp->master 2011-02-25 06:44:42 +10:00
nv50_dac.c drm/nv50-nvc0: rename disp->evo to disp->master 2011-02-25 06:44:42 +10:00
nv50_display.c drm/nvc0: explicitly map PDISP semaphore buffer into each channel's vm 2011-06-23 16:00:27 +10:00
nv50_display.h drm/nv50-nvc0: initialise display sync channels 2011-02-25 06:45:11 +10:00
nv50_evo.c drm/nouveau: remove 'chan' argument from nouveau_bo_new 2011-06-23 16:00:37 +10:00
nv50_evo.h drm/nv50-nvc0: initialise display sync channels 2011-02-25 06:45:11 +10:00
nv50_fb.c drm/nv50: check for vm traps on every gr irq 2011-03-14 16:32:30 +10:00
nv50_fbcon.c drm/nv50-nvc0: explicitly map fbcon fb into channel vm 2011-06-23 15:59:59 +10:00
nv50_fifo.c drm/nv50: drop explicit yields in favour of smaller PFIFO timeslice 2011-02-25 06:44:30 +10:00
nv50_gpio.c drm/nouveau: use system_wq instead of dev_priv->wq 2011-02-25 06:44:36 +10:00
nv50_graph.c Merge branch 'drm-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 2011-07-26 09:21:09 -07:00
nv50_grctx.c drm/nouveau: Fix brace placement checkpatch.pl errors. 2011-05-16 10:47:19 +10:00
nv50_instmem.c drm/nouveau: will need to specify channel for vm-ful gpuobj allocations 2011-06-23 15:59:18 +10:00
nv50_mc.c drm/nouveau: introduce gpio engine 2010-07-26 11:43:57 +10:00
nv50_mpeg.c drm/nouveau: pass flag to engine fini() method on suspend 2011-07-25 09:43:22 +10:00
nv50_pm.c drm/nv50: improve nv50_pm_get_clock() 2011-05-16 10:49:41 +10:00
nv50_sor.c drm/nv50/dp: fix hack to work for macbooks booted via EFI 2011-07-25 09:40:41 +10:00
nv50_vm.c drm/nv50-nvc0/vm: don't touch chan_vm 2011-06-23 15:58:40 +10:00
nv50_vram.c drm/nouveau: rework vram init/fini ordering a little 2011-06-23 16:03:46 +10:00
nv84_crypt.c drm/nouveau: pass flag to engine fini() method on suspend 2011-07-25 09:43:22 +10:00
nva3_copy.c drm/nouveau: pass flag to engine fini() method on suspend 2011-07-25 09:43:22 +10:00
nva3_copy.fuc drm/nva3: implement support for copy engine 2011-05-16 10:48:48 +10:00
nva3_copy.fuc.h drm/nva3: implement support for copy engine 2011-05-16 10:48:48 +10:00
nva3_pm.c drm/nva3/clk: better pll calculation when no fractional fb div available 2011-05-16 10:50:59 +10:00
nvc0_copy.c drm/nouveau: pass flag to engine fini() method on suspend 2011-07-25 09:43:22 +10:00
nvc0_copy.fuc.h drm/nvc0: implement support for copy engines 2011-05-16 10:48:53 +10:00
nvc0_fb.c drm/nvc0/fb: allocate page for some unknown PFFB object 2011-06-23 15:56:59 +10:00
nvc0_fbcon.c drm/nv50-nvc0: explicitly map notifier bo into channel vm 2011-06-23 16:00:04 +10:00
nvc0_fifo.c drm/nvc0/fifo: fix typos in unload_context 2011-06-23 15:57:03 +10:00
nvc0_graph.c drm/nouveau: pass flag to engine fini() method on suspend 2011-07-25 09:43:22 +10:00
nvc0_graph.fuc drm/nvc0/gr: import and use our own fuc by default 2011-06-23 15:57:38 +10:00
nvc0_graph.h drm/nvc0/gr: calculate magicgpc918 ourselves 2011-06-23 15:57:48 +10:00
nvc0_grctx.c drm/nvc0/gr: fill in some more data for 0xc1/0xc8/0xce 2011-06-23 15:57:56 +10:00
nvc0_grgpc.fuc drm/nvc0/gr: import and use our own fuc by default 2011-06-23 15:57:38 +10:00
nvc0_grgpc.fuc.h drm/nvc0/gr: import and use our own fuc by default 2011-06-23 15:57:38 +10:00
nvc0_grhub.fuc drm/nvc0/gr: import and use our own fuc by default 2011-06-23 15:57:38 +10:00
nvc0_grhub.fuc.h drm/nvc0/gr: import and use our own fuc by default 2011-06-23 15:57:38 +10:00
nvc0_instmem.c drm/nvc0: enable per-client address spaces 2011-06-23 16:01:41 +10:00
nvc0_vm.c drm/nv50-nvc0/vm: don't touch chan_vm 2011-06-23 15:58:40 +10:00
nvc0_vram.c drm/nouveau: rework vram init/fini ordering a little 2011-06-23 16:03:46 +10:00
nvreg.h drm/nv17-nv40: Fix modesetting failure when pitch == 4096px (fdo bug 35901). 2011-06-07 09:22:29 +10:00