aboutsummaryrefslogtreecommitdiff
path: root/drivers/gpu/drm
AgeCommit message (Collapse)AuthorFilesLines
2011-02-25drm/nv50: support for compressionBen Skeggs9-27/+78
Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50-nvc0: delay GART binding until move_notify timeBen Skeggs9-87/+184
The immediate benefit of doing this is that on NV50 and up, the GPU virtual address of any buffer is now constant, regardless of what memtype they're placed in. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nouveau: rename nouveau_vram to nouveau_memBen Skeggs11-70/+70
This structure will also be used for GART in the near future. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nvc0: allow creation of buffers with any non-compressed memtypeBen Skeggs1-11/+25
This adds a table of known nvc0 memtypes, and modifies the validity check to allow any non-compressed type. Support for Z compression will come at a later point. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50-nvc0: unmap buffers from the vm when they're evictedBen Skeggs3-7/+36
Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50-nvc0: move vm bind/unbind to move_notify hookBen Skeggs1-22/+37
Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50-nvc0: restrict memtype to those specified at creation timeBen Skeggs3-5/+16
Upcoming patches are going to enable full support for buffers that keep a constant GPU virtual address whenever they're validated for use by the GPU. In order for this to work properly while keeping support for large pages, we need to know if it's ever going to be possible for a buffer to end up in GART, and if so, disable large pages for the buffer's VMA. This is a new restriction that's not present in earlier kernel's, but should not break userspace as the current code never attempts to validate buffers into a memtype other than it was created with. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nouveau: pass domain rather than ttm flags to gem_new()Ben Skeggs4-16/+17
Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50: simplify bo moves now that they're all through the vmBen Skeggs2-21/+15
Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nouveau: remove no_vm/mappable flags from nouveau_boBen Skeggs14-109/+56
'mappable' isn't really used at all, nor is it necessary anymore as the bo code is capable of moving buffers to mappable vram as required. 'no_vm' isn't necessary anymore either, any places that don't want to be mapped into a GPU address space should allocate the VRAM directly instead. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nouveau: Fix pageflip eventBenjamin Franzke1-1/+1
Assign correct event when initializing nouveau_page_flip_state. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nouveau/vbios: parse more gpio tag bits from connector tableBen Skeggs1-17/+8
Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nouveau: decode PFIFO DMA_PUSHER error codesMarcin Slusarz1-3/+14
Signed-off-by: Marcin Slusarz <[email protected]> Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50: fix typos in CCACHE error reportingMarcin Slusarz1-4/+4
The code was supposed to print registers around 0x405018 (which is read earlier), not 0x405818. Signed-off-by: Marcin Slusarz <[email protected]> Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nvc0: support for sw methods + enable page flippingBen Skeggs3-7/+23
Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50: enable page flippingBen Skeggs3-8/+12
Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50-nvc0: activate/update ds channel's framebuffer on modesetsBen Skeggs1-1/+9
The hw doesn't really appear to be designed to be used the way we have to use it due to DRI2's design. This leads us to having to keep the flipped fb support active at all times. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50-nvc0: initialise display sync channelsBen Skeggs6-6/+246
Also imports a couple of helper functions that'll be used to implement page flipping in the following commits.. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50-nvc0: precalculate some fb state when creating themBen Skeggs3-55/+61
Just a cleanup, to avoid duplicating parts of nv50_crtc.c's code in the page flipping routines. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50-nvc0: tidy evo object creation some moreBen Skeggs3-59/+62
Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50-nvc0: request and wait on notification of modeset completionBen Skeggs5-26/+77
This should prevent a number of races from occuring, the most obvious of which will be exposed when we start making use of the "display sync" evo channel for page flipping. The DS channel will reject any command stream that doesn't completely agree with the current "master" state. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50-nvc0: switch to tasklet for display isr bhBen Skeggs3-13/+8
We need to be able to have the bh run while possibly spinning waiting for the EVO notifier to signal. This apparently happens in some circumstances with preempt disabled, so our workqueue was never being run. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nouveau: make vbios parser runnable from an atomic contextBen Skeggs2-9/+9
The nv50 display isr bh needs to be converted to a tasklet, which means we can't sleep anymore. The places we execute vbios init tables are rare, and not in any way performance critical, so this isn't a huge problem. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50-nvc0: include nv50_display in evo debuggingBen Skeggs1-0/+1
Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50-nvc0: tidy evo init failure pathsBen Skeggs1-42/+33
Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50-nvc0: fix ramht entries for multiple evo channelsBen Skeggs1-1/+3
Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50-nvc0: disp channels have fixed purposes, don't "allocate" themBen Skeggs2-20/+4
Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50-nvc0: rename disp->evo to disp->masterBen Skeggs7-36/+36
More appropriate, and we're about to be using more than just the master EVO channel. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50-nvc0: move non-sharable display state into private structureBen Skeggs9-79/+96
Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nouveau: use system_wq instead of dev_priv->wqTejun Heo4-14/+13
With cmwq, there's no reason for nouveau to use a dedicated workqueue. Drop dev_priv->wq and use system_wq instead. Each work item is sync flushed when the containing structure is unregistered/destroyed. Note that this change also makes sure that nv50_gpio_handler is not freed while the contained work item is still running. Signed-off-by: Tejun Heo <[email protected]> Cc: David Airlie <[email protected]> Cc: [email protected] Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nouveau: use I2C_MODULE_PREFIX kernel defineLucas Stach1-3/+1
Signed-off-by: Lucas Stach <[email protected]> Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50: drop explicit yields in favour of smaller PFIFO timesliceBen Skeggs2-47/+8
This gives a small, but noticeable performance gain at lower performance levels, and unchanged at the higher ones. With this commit, we're now using the same timeslice size as the NVIDIA binary driver currently does, and dropping an unknown bit that NVIDIA no longer appear to set. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv84: use vm offsets for semaphoresBen Skeggs1-5/+17
We may well be making more use of semaphores in the future, having the entire VM available makes requiring DMA objects for each and every semaphore block unnecessary. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv50: 0x50 needs semaphore yields tooBen Skeggs1-4/+17
Evil, evil chipset. Worst of both worlds. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nouveau: silence some compiler warningsBen Skeggs6-9/+2
Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nvc0: implement semaphores for inter-channel syncBen Skeggs1-12/+40
Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nvc0/pfifo: semi-handle a couple more irqsBen Skeggs1-2/+13
And also, don't disable PFIFO IRQs completely whenever we recieve one, just when we don't know about it already. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv84: switch to new-style semaphoresBen Skeggs1-39/+80
These are the same semaphores nvc0 will use, and they potentially allow us to do much cooler things than our current inter-channel sync impl. Lets switch to them where possible now for some testing. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv40: support for 39-bit dma addresses on native PCIE chipsetsBen Skeggs1-5/+11
Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nv40: implement support for on-chip PCIEGARTBen Skeggs3-26/+330
v2. moved nv44 pciegart table back to instmem, where it's not accessible by userspace clients. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nouveau: introduce new gart type, and name _SGDMA more appropriatelyBen Skeggs4-13/+23
In preparation for the addition of a new nv40 backend, we'll need to be able to distinguish between a paged dma object and the on-chip GART. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25drm/nouveau: move + rename some stuff in nouveau_sgdma.cBen Skeggs1-39/+38
In preparation for the addition of a new nv40 pcie backend. Signed-off-by: Ben Skeggs <[email protected]>
2011-02-25Merge remote-tracking branch 'airlied/drm-core-next' into drm-nouveau-nextBen Skeggs151-8807/+11857
2011-02-24drm/i915: Use a symbolic constant for OpRegion lid stateChris Wilson1-1/+3
Signed-off-by: Chris Wilson <[email protected]>
2011-02-24drm/i915: Fix unintended recursion in ironlake_disable_rc6Chris Wilson1-1/+1
After disabling, we're meant to teardown the bo used for the contexts, not recurse into ourselves again and preventing module unload. Reported-and-tested-by: Ben Widawsky <[email protected]> Signed-off-by: Chris Wilson <[email protected]>
2011-02-24Merge branch 'drm-intel-fixes' of ↵Dave Airlie3-11/+104
git://git.kernel.org/pub/scm/linux/kernel/git/ickle/drm-intel into drm-fixes * 'drm-intel-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/ickle/drm-intel: drm/i915: fix corruptions on i8xx due to relaxed fencing drm/i915: skip FDI & PCH enabling for DP_A agp/intel: Experiment with a 855GM GWB bit drm/i915: don't enable FDI & transcoder interrupts after all drm/i915: Ignore a hung GPU when flushing the framebuffer prior to a switch
2011-02-24drm/i915: fix corruptions on i8xx due to relaxed fencingDaniel Vetter1-1/+15
It looks like gen2 has a peculiar interleaved 2-row inter-tile layout. Probably inherited from i81x which had 2kb tiles (which naturally fit an even-number-of-tile-rows scheme to fit onto 4kb pages). There is no other mention of this in any docs (also not in the Intel internal documention according to Chris Wilson). Problem manifests itself in corruptions in the second half of the last tile row (if the bo has an odd number of tiles). Which can only happen with relaxed tiling (introduced in a00b10c360b35d6431a9). So reject set_tiling calls that don't satisfy this constrain to prevent broken userspace from causing havoc. While at it, also check the size for newer chipsets. LKML: https://lkml.org/lkml/2011/2/19/5 Reported-by: Indan Zupancic <[email protected]> Tested-by: Indan Zupancic <[email protected]> Signed-off-by: Daniel Vetter <[email protected]> Signed-off-by: Chris Wilson <[email protected]>
2011-02-23Revert "ttm: Include the 'struct dev' when using the DMA API."Dave Airlie5-11/+8
This reverts commit 5a893fc28f0393adb7c885a871b8c59e623fd528. This causes a use after free in the ttm free alloc pages path, when it tries to get the be after the be has been destroyed. Signed-off-by: Dave Airlie <[email protected]>
2011-02-23Merge branch 'drm-mm-cleanup' into drm-nextDave Airlie26-412/+456
* drm-mm-cleanup: radeon: move blit functions to radeon_asic.h radeon: kill decls for inline functions radeon: consolidate asic-specific function decls for r600 & later drm/radeon: kill radeon_bo->gobj pointer drm/radeon: introduce gem_to_radeon_bo helper drm/radeon: embed struct drm_gem_object drm: mm: add helper to unwind scan state drm: mm: add api for embedding struct drm_mm_node drm: mm: extract node insert helper functions drm: mm: track free areas implicitly drm/nouveau: don't munge in drm_mm internals
2011-02-23Merge branch 'stable/ttm.pci-api.v5' of ↵Dave Airlie10-33/+103
git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen into drm-next * 'stable/ttm.pci-api.v5' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen: ttm: Include the 'struct dev' when using the DMA API. nouveau/ttm/PCIe: Use dma_addr if TTM has set it. radeon/ttm/PCIe: Use dma_addr if TTM has set it. ttm: Expand (*populate) to support an array of DMA addresses. ttm: Utilize the DMA API for pages that have TTM_PAGE_FLAG_DMA32 set. ttm: Introduce a placeholder for DMA (bus) addresses.