summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2008-04-03radeon_ms: add crtc set base callback & fix paletteJerome Glisse
2008-04-03radeon_ms: fixes fb handlingJerome Glisse
2008-04-03nv50: primitive display interrupt handler.Maarten Maathuis
2008-03-31radeon_ms: small fix & cleanup to command checkingJerome Glisse
2008-03-31nouveau: fix return from function..Dave Airlie
dude kernel moduless use kernel errors :) this fixes an oops on init when this codepath hits.
2008-03-31radeon_ms: initial pass at command buffer validationJerome Glisse
2008-03-30Initialize the fence::error member.Thomas Hellstrom
2008-03-30[i915] Report buffer state _after_ fence submission to user-space.Thomas Hellstrom
This fixes a problem where the wrong bo->fence_type was reported, and also saves some memory space. [bo core] export the drm_bo_fill_rep_arg function.
2008-03-30Don't call fence::poll during irq if there are no waiters.Thomas Hellström
2008-03-30nouveau: forgot to add a breakMaarten Maathuis
2008-03-30nouveau: Add ctx values for nv86.Maarten Maathuis
- Note that this may not work for all nv86.
2008-03-30radeon_ms: add hang debuging helper functionsJerome Glisse
2008-03-30drm/r300: fix wait interface mixupDave Airlie
This interface was defined completely wrong, however userspace has only ever used 4 values from it (0x1, 0x2, 0x3 and 0x6), so fix the interface to do what userspace actually expected but define new defines for new users to use it properly.
2008-03-29r300: Correctly translate the value for the R300_CMD_WAIT command.Oliver McFadden
Previously, the R300_CMD_WAIT command would write the passed directly to the hardware. However this is incorrect because the R300_WAIT_* values used are internal interface values that do not map directly to the hardware. The new function I have added translates the R300_WAIT_* values into appropriate values for the hardware before writing the register. Thanks to John Bridgman for pointing this out. :-)
2008-03-27radeon_ms: this is a modesetting driver, bring things up to dateJerome Glisse
2008-03-27drm: remove authentication on master exit.Dave Airlie
using contexts for this is bad for multiple masters
2008-03-25nouveau: nv20 bios does not initialise PTIMERStuart Bennett
The wait functions depend on PTIMER, so write the old (incorrect, but working) values for uninitialised hw
2008-03-24i915: fix oops on agp=offDave Airlie
Kernel bug 10289.
2008-03-24Merge branch 'r500-fp'Dave Airlie
2008-03-24nouveau: silence warningBen Skeggs
2008-03-24nv40: voodoo - not quite.Ben Skeggs
2008-03-24nv40: allocate massive amount of PRAMIN for grctx on all chipsets.Ben Skeggs
More or less a workaround for issues on some chipsets where a context switch results in critical data in PRAMIN being overwritten by the GPU. The correct fix is known, but may take some time before it's a feasible option.
2008-03-21r500: fragment program upload is also used to upload constants.Dave Airlie
Limit frag address to 8 bits
2008-03-20Merge branch 'modesetting-101' of ssh://git.freedesktop.org/git/mesa/drm ↵Jerome Glisse
into modesetting-101
2008-03-20radeon_ms: fix fenceJerome Glisse
2008-03-20drm: fixup r500fp submissionDave Airlie
2008-03-20nouveau: do not set on-board timer's numerator/denominator to bad valuesStuart Bennett
2008-03-19RADEON: switch over to new production microcodeAlex Deucher
This needs to be tested thoroughly before pushing to the kernel.
2008-03-19RADEON: production microcode for all radeons, r1xx-r6xxAlex Deucher
This updated microcode is not in use yet.
2008-03-19move some more r300 regs into not allowed on r500Dave Airlie
2008-03-18drm: add new rs690 pci idDave Airlie
2008-03-17Evict cached_mapped relocatee before applying reloc.Thomas Hellstrom
Fix that got left out after the intel-post-reloc merge.
2008-03-17drm: add master set/drop protocolDave Airlie
this may not survive long - just need something for testing
2008-03-17i915: safety check the sarea map still existsDave Airlie
2008-03-17drm: pick correct master for cleaning upDave Airlie
When a master is exiting, make sure we clean it up and not the currently in charge master.
2008-03-17drm: select the correct master to attempt to remove the lock from.Dave Airlie
When destroying DRI sarea, make sure you use the master associated with the sarea and not the one currently in charge
2008-03-17initial r500 RS and FP register and upload codeDave Airlie
2008-03-17drm/pcigart: fix the pci gart to use the drm_pci wrapper.Dave Airlie
This is the correct fix for the RS690 and hopefully the dma coherent work. For now we limit everybody to a 32-bit DMA mask but it is possible for RS690 to use a 40-bit DMA mask for the GART table itself, and the PCIE cards can use 40-bits for the table entries. Signed-off-by: Dave Airlie <airlied@redhat.com>
2008-03-16Avoid unnecessary waits for command regulator pause.Thomas Hellstrom
2008-03-16[via] Remove some leftover vars.Thomas Hellstrom
2008-03-16[via] Allow a little larger stride for SG DMA DownloadFromScreen.Thomas Hellstrom
2008-03-16[via] The millionth fixup for the millionth-1 attempt to stabilize the AGPThomas Hellstrom
DMA command submission. It's worth remembering that all new bright ideas on how to make this command reader work properly and according to docs will probably fail :( Bring in some old code.
2008-03-16[via] Fix driver after vblank-rework merge.Thomas Hellstrom
2008-03-16ati: fix rs690 igp gart by allocating the page table in 32-bit memoryDave Airlie
2008-03-16drm/rs690: set AGP_BASE_2 to 0Dave Airlie
2008-03-16drm: set rs690 gart base completly.Dave Airlie
The docs state bits 4-11 represent bits 32-39 of a 40-bit address
2008-03-16drm: this u32 should be a dma_addr_tDave Airlie
doesn't fix anything but just making it consistent
2008-03-14fix build problemsAlan Hourihane
2008-03-14drm: Fix race that can lockup the kernelMike Isely
The i915_vblank_swap() function schedules an automatic buffer swap upon receipt of the vertical sync interrupt. Such an operation is lengthy so it can't be allowed to happen in normal interrupt context, thus the DRM implements this by scheduling the work in a kernel softirq-scheduled tasklet. In order for the buffer swap to work safely, the DRM's central lock must be taken, via a call to drm_lock_take() located in drivers/char/drm/drm_irq.c within the function drm_locked_tasklet_func(). The lock-taking logic uses a non-interrupt-blocking spinlock to implement the manipulations needed to take the lock. This semantic would be safe if all attempts to use the spinlock only happen from process context. However this buffer swap happens from softirq context which is really a form of interrupt context. Thus we have an unsafe situation, in that drm_locked_tasklet_func() can block on a spinlock already taken by a thread in process context which will never get scheduled again because of the blocked softirq tasklet. This wedges the kernel hard. To trigger this bug, run a dual-head cloned mode configuration which uses the i915 drm, then execute an opengl application which synchronizes buffer swaps against the vertical sync interrupt. In my testing, a lockup always results after running anywhere from 5 minutes to an hour and a half. I believe dual-head is needed to really trigger the problem because then the vertical sync interrupt handling is no longer predictable (due to being interrupt-sourced from two different heads running at different speeds). This raises the probability of the tasklet trying to run while the userspace DRI is doing things to the GPU (and manipulating the DRM lock). The fix is to change the relevant spinlock semantics to be the interrupt-blocking form. After this change I am no longer able to trigger the lockup; the longest test run so far was 20 hours (test stopped after that point). Note: I have examined the places where this spinlock is being employed; all are reasonably short bounded sequences and should be suitable for interrupts being blocked without impacting overall kernel interrupt response latency. Signed-off-by: Mike Isely <isely@pobox.com>
2008-03-13Fix green offsetAlan Hourihane