summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2010-01-11drm/nv04: differentiate between nv04/nv05Ben Skeggs1-1/+4
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2010-01-11drm/nouveau: Fix null deref in nouveau_fence_emit due to deleted fenceLuca Barbieri1-20/+13
Currently Nouveau will unvalidate all buffers if it is forced to wait on one, and then start revalidating from the beginning. While doing so, it destroys the operation fence, causing nouveau_fence_emit to crash. This patch fixes this bug by taking the fence object out of validate_op and creating it just before emit. The fence pointer is initialized to 0 and unref'ed unconditionally. In addition to fixing the bug, this prevents its reintroduction and simplifies the code. Signed-off-by: Luca Barbieri <luca@luca-barbieri.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2010-01-11drm/nv50: prevent a possible ctxprog hangBen Skeggs1-0/+1
The below is mainly an educated guess at what's going on, docs would sure be handy... NVIDIA? :P It appears it's possible for a ctxprog to run even while a GPU exception is pending. The GF8 and up ctxprogs appear to have a small snippet of code which detects this, and stalls the ctxprog until it's been handled, which essentially looks like: if (r2 & 0x00008000) { r0 |= 0x80000000; while (r0 & 0x80000000) {} } I don't know of any way that flag would get cleared unless the driver intervenes (and indeed, in the cases I've seen the hang, nothing steps in to automagically clear it for us). This patch causes the driver to clear the flag during the PGRAPH IRQ handler. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2010-01-11drm/nouveau: have ttm's fault handler called directlyBen Skeggs1-29/+1
There's no good reason for us to have our own anymore, this is left over from an early port to these TTM interfaces. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2010-01-11drm/nv50: restore correct cache1 get/put address on fifoctx loadBen Skeggs1-4/+2
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2010-01-11drm/nouveau: create function for "dealing" with gpu lockupMarcin Slusarz4-26/+22
It's mostly a cleanup, but in nv50_fbcon_accel_init gpu lockup message was printed, but HWACCEL_DISBALED flag was not set. Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2010-01-11drm/nouveau: remove unused nouveau_channel_idle() functionBen Skeggs2-42/+0
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2010-01-11drm/nouveau: fix handling of fbcon colours in 8bppBen Skeggs2-4/+10
Depending on the visual, the colours handed to us in fillrect() can either be an actual colour, or an index into the pseudo-palette. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2010-01-11drm/nv04: Context switching fixes.Francisco Jerez1-74/+78
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
2010-01-11drm/nouveau: Use the software object for fencing.Francisco Jerez2-3/+4
This should avoid a race condition on nv0x, if we're doing it with actual PGRAPH objects and a there's a fence within the FIFO DMA fetch area when a context switch kicks in. In that case we get an ILLEGAL_MTHD interrupt as expected, but the values in PGRAPH_TRAPPED_ADDR aren't calculated correctly and they're almost useless (e.g. you can see ILLEGAL_MTHDs for the now inactive channel, with a wrong offset/data pair). Signed-off-by: Francisco Jerez <currojerez@riseup.net>
2010-01-11drm/nouveau: Allocate a per-channel instance of NV_SW.Francisco Jerez6-24/+48
It will be useful for various synchronization purposes, mostly stolen from "[PATCH] drm/nv50: synchronize user channel after buffer object move on kernel channel" by Maarten Maathuis. Signed-off-by: Francisco Jerez <currojerez@riseup.net>
2010-01-11drm/nv50: make the blocksize depend on vram sizeMaarten Maathuis1-17/+19
- This should be better than what we have now. - I'm less sure about the non power of two path. Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
2010-01-11drm/nouveau: better alignment of bo sizes and use roundup instead of ALIGNMaarten Maathuis2-4/+8
- Aligning to block size should ensure that the extra size is enough. - Using roundup, because not all sizes are powers of two. Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
2010-01-11drm/nouveau: Don't skip card take down on nv0x.Francisco Jerez1-2/+2
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
2010-01-11drm/nouveau: Implement nv42-nv43 TV load detection.Francisco Jerez1-1/+89
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
2010-01-11drm/nouveau: Clean up the nv17-nv4x load detection code a bit.Francisco Jerez3-31/+37
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
2010-01-11drm/nv50: fix fillrect colorMarcin Slusarz1-1/+2
struct fb_fillrect->color is not a color, but index into pseudo_palette array Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2010-01-11drm/nv50: ignore vbios table's claim to the contrary if EDID says >8bpcBen Skeggs1-0/+17
Should fix dim panel issues reported on Dell M6400/M6500. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
2010-01-11drm/nouveau: Drop redundant placement initialization.Francisco Jerez1-10/+2
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
2010-01-11drm/nouveau: No need to force evict=true when swapping evicted BOs back in.Francisco Jerez1-1/+1
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
2010-01-11drm/nouveau: Fix "general protection fault" in the flipd/flips eviction path.Francisco Jerez1-2/+2
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
2010-01-11drm/i2c/ch7006: Drop build time dependency to nouveau.Francisco Jerez1-3/+2
This partially reverts e4b41066, as this driver is intended to be useful with any KMS driver for suitable hardware. The missing build dependency that commit workarounded was DRM_KMS_HELPER. Signed-off-by: Francisco Jerez <currojerez@riseup.net>
2010-01-11drm/nouveau: Make the MM aware of pre-G80 tiling.Francisco Jerez3-65/+265
This commit has also the following 3 bugfix commits squashed into it from the nouveau git tree: drm/nouveau: Fix up the tiling alignment restrictions for nv1x. drm/nouveau: Fix up the nv2x tiling alignment restrictions. drm/nv50: fix align typo for g9x Signed-off-by: Francisco Jerez <currojerez@riseup.net>
2010-01-11drm/nouveau: Pre-G80 tiling support.Francisco Jerez8-147/+185
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
2010-01-11drm/nouveau: Add cache_flush/pull fifo engine functions.Francisco Jerez3-0/+48
Signed-off-by: Francisco Jerez <currojerez@riseup.net>
2010-01-11drm: reduce WARN_ON to a printk.Dave Airlie1-1/+1
Lots of ppl keep thinking this is an oops, it was just a warning for me to see, just make it a printk now. Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-01-11drm/kms/fb: check for depth changes from userspace for resizing.Dave Airlie1-5/+4
If userspace (plymouth in this case) asks for a deeper depth, refuse it as well due to lack of resizing. This fixes an issue since < 32MB cards went to 8bpp and plymouth crashes on startup. Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-01-11drm: Keep disabled outputs disabled after suspend / resumeDavid John1-1/+23
With the current DRM code, an output that has been powered off from userspace will automatically power back on when resuming from suspend. This patch fixes this behaviour. Tested only with the Intel i915 driver on an Intel GM45 Express chipset. Signed-off-by: David John <davidjon@xenontk.org> Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-01-07Merge remote branch 'korg/drm-radeon-next' into drm-linusDave Airlie9-24/+63
* korg/drm-radeon-next: drm/radeon/kms: rs600: use correct mask for SW interrupt gpu/drm/radeon/radeon_irq.c: move a dereference below a NULL test drm/radeon/radeon_device.c: move a dereference below a NULL test drm/radeon/radeon_fence.c: move a dereference below the NULL test drm/radeon/radeon_connectors.c: add a NULL test before dereference drm/radeon/kms: fix memory leak drm/radeon/kms: add missing breaks in i2c and ss lookups drm/radeon/kms: add primary dac adj values table drm/radeon/kms: fallback to default connector table
2010-01-07drm/radeon/kms: rs600: use correct mask for SW interruptLuca Tettamanti1-1/+1
The mask happens to be the same, but the IH is reading the status, not the not the control register. Signed-off-by: Luca Tettamanti <kronos.it@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-01-07gpu/drm/radeon/radeon_irq.c: move a dereference below a NULL testDarren Jenkins1-5/+5
If a NULL value is possible, the dereference should only occur after the NULL test. Coverity CID: 13338 Signed-off-by: Darren Jenkins <darrenrjenkins@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-01-07drm/radeon/radeon_device.c: move a dereference below a NULL testDarren Jenkins1-2/+4
If a NULL value is possible, the dereference should only occur after the NULL test. Coverity CID: 13335 Signed-off-by: Darren Jenkins <darrenrjenkins@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-01-07drm/radeon/radeon_fence.c: move a dereference below the NULL testDarren Jenkins1-5/+4
If a NULL value is possible, the dereference should only occur after the NULL test. Coverity CID: 13334 Signed-off-by: Darren Jenkins <darrenrjenkins@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-01-07drm/radeon/radeon_connectors.c: add a NULL test before dereferenceDarren Jenkins1-1/+1
The encoder variable can be NULL in this function so I believe it should be checked before dereference. Coverity CID: 13253 [airlied: extremely unlikely to happen] Signed-off-by: Darren Jenkins <darrenrjenkins@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-01-07drm/radeon/kms: fix memory leakJiri Slaby1-0/+1
Stanse found a memory leak in radeon_master_create. master_priv is not freed/assigned on all paths. Fix that. Signed-off-by: Jiri Slaby <jslaby@suse.cz> Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-01-07Merge branch 'drm-core-next' into drm-linusDave Airlie8-20/+24
* drm-core-next: drm/kms: Fix &&/|| confusion in drm_fb_helper_connector_parse_command_line() drm/edid: Fix CVT width/height decode drm/edid: Skip empty CVT codepoints drm: remove address mask param for drm_pci_alloc()
2010-01-07drm/kms: Fix &&/|| confusion in drm_fb_helper_connector_parse_command_line()Roel Kluin1-1/+1
This always evaluates to true. Signed-off-by: Roel Kluin <roel.kluin@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-01-07drm/edid: Fix CVT width/height decodeAdam Jackson1-5/+5
Signed-off-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-01-07drm/edid: Skip empty CVT codepointsAdam Jackson1-0/+4
Signed-off-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-01-07drm: remove address mask param for drm_pci_alloc()Zhenyu Wang6-14/+14
drm_pci_alloc() has input of address mask for setting pci dma mask on the device, which should be properly setup by drm driver. And leave it as a param for drm_pci_alloc() would cause confusion or mistake would corrupt the correct dma mask setting, as seen on intel hw which set wrong dma mask for hw status page. So remove it from drm_pci_alloc() function. Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-01-06drm/radeon/kms: add missing breaks in i2c and ss lookupsAlex Deucher1-0/+2
Should fix fdo bug 25741 Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-01-06drm/radeon/kms: add primary dac adj values tableAlex Deucher1-9/+41
Look up primary dac adj values from the table if there is no bios or bios dac table to reference. The lookup table may need to be adjusted for certain families. Should fix kernel bug 14945. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-01-06drm/radeon/kms: fallback to default connector tableAlex Deucher1-1/+4
if necessary for combios Some early combios radeon cards don't have a connector table or dac table in the bios, if they do not, fallback to the default tables. Should fix kernel bug 14963. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2009-12-23Merge remote branch 'korg/drm-radeon-next' into drm-linusDave Airlie21-61/+459
* korg/drm-radeon-next: drm/radeon/kms: add definitions for v4 power tables drm/radeon/kms: never combine LVDS with another encoder drm/radeon/kms: Check module arguments to be valid V2 drm/radeon/kms: Avoid crash when trying to cleanup uninitialized structure drm/radeon/kms: add cvt mode if we only have lvds w/h and no edid (v4) drm/radeon/kms: add 3DC compression support drm/radeon/kms: allow rendering while no colorbuffer is set on r300 drm/radeon/kms: enable memory clock reading on legacy (V2) drm/radeon/kms: prevent parallel AtomBIOS calls drm/radeon/kms: set proper default tv standard drm/radeon/kms: fix legacy rmx drm/radeon/kms/atom: fill in proper defines for digital setup
2009-12-23drm/radeon/kms: add definitions for v4 power tablesAlex Deucher1-0/+199
[airlied: just adding this for completeness to avoid drift between public atombios.h files] Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2009-12-23drm/radeon/kms: never combine LVDS with another encoderAlex Deucher1-26/+23
When linking multiple encoders to a connector, make sure to not link LVDS with another connector. Some bioses have the same i2c line for LVDS and VGA. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2009-12-23drm/radeon/kms: Check module arguments to be valid V2Jerome Glisse1-5/+68
This patch add a function which check module argument to be valid. On invalid argument it prints a warning and setback the default value. V2: Allow 0 for vram limit & agp mode which are the default value Signed-off-by: Jerome Glisse <jglisse@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2009-12-23drm/radeon/kms: Avoid crash when trying to cleanup uninitialized structureJerome Glisse3-4/+13
Add boolean to record if some part of the driver are initialized or not this allow to avoid a crash when trying to cleanup uninitialized structure members. Signed-off-by: Jerome Glisse <jglisse@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2009-12-23drm/radeon/kms: add cvt mode if we only have lvds w/h and no edid (v4)Alex Deucher1-0/+12
This fixes LVDS on some mac laptops without a panel edid. v2 - Set proper mode type flags v3 - Note that this is not neceesarily the exact panel mode, but an approximation based on the cvt formula. For these systems we should ideally read the mode info out of the registers or add a mode table, but this works and is much simpler. v4 - Update comments and debug message. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
2009-12-23drm/radeon/kms: add 3DC compression supportMarek Olšák2-0/+19
There are 2 formats: ATI1N: 64 bits per 4x4 block, one-channel format ATI2N: 128 bits per 4x4 block, two-channel format Signed-off-by: Dave Airlie <airlied@redhat.com>