summaryrefslogtreecommitdiff
path: root/linux-core
AgeCommit message (Collapse)Author
2008-04-14Fix buffer object map wait error.Thomas Hellstrom
Add some branch prediction hints.
2008-04-14Fix buffer object creation validation.Thomas Hellstrom
BO lock fixes.
2008-04-14Unlock the BO mutex while waiting for idle, unmapped, unfenced.Thomas Hellstrom
Move unfenced checking into idle checking. Never time out while waiting for software events like unmapped or unfenced.
2008-04-14Fix up buffer manager locking.Thomas Hellstrom
2008-04-11Save and restore dsparb and d_state regsKeith Packard
2008-04-10Fixup Intel TV property codeJesse Barnes
Use the new TV property creation routine and fixup the set_property code to actually do a mode set call when properties change.
2008-04-10Split TV property creation into its own routineJesse Barnes
It needs to take arguments from the caller about supported TV formats, so declare it in drm_crtc.h and export it.
2008-04-10Remove structure fields & codeJesse Barnes
Cleanup some random cruft left over from the initial port.
2008-04-10Fix masking in get_load_detect_pipeJesse Barnes
Start i at -1 so that the masking works right.
2008-04-10Keep display info in struct display_infoJesse Barnes
Some fields had snuck into the drm_output structure. Put them back and fill in more stuff from the EDID block.
2008-04-09Fix TV load detectionJesse Barnes
Now that we can allocate load detect pipes, we can perform TV out load detection correctly. Call the new routines and enable proper TV detection.
2008-04-09Port pipe reservation code for load detectionJesse Barnes
TV out needs to do load detection, which means we have to find an available pipe to use for the detection. Port over the pipe reservation code for this purpose.
2008-04-09Add newline to debug output for output addJesse Barnes
2008-04-09Older kernels don't have kobject_uevent_env(), so puntAlan Hourihane
the event for these older kernels.
2008-04-09Fixup sysfs output registrationJesse Barnes
Put off registering new outputs with sysfs until they're properly configured, or we may get duplicates if the type hasn't been set yet (as is the case with SDVO initialization). This also means moving de-registration into the cleanup function instead of output destroy, since the latter occurs during the normal course of setup when an output isn't found (and therefore not registered with sysfs yet.
2008-04-08Merge branch 'modesetting-101' of ssh://git.freedesktop.org/git/mesa/drm ↵Jesse Barnes
into modesetting-101
2008-04-08Improved DRM sysfs supportJesse Barnes
This patch ties outputs, output properties and hotplug events into the DRM core. Each output has a corresponding directory under the primary DRM device (usually card0) containing dpms, edid, modes, and connection status files. New hotplug change events occur when outputs are added or hotplug events are detected.
2008-04-08radeon_ms: command buffer validation use array of function pointerJerome Glisse
2008-04-07Missing KERNEL_VERSION macroPatrice Mandin
2008-04-07radeon_ms: another fb fix reset mode if fb changedJerome Glisse
2008-04-07nouveau: enable accelerated move to sysmemBen Skeggs
2008-04-07nouveau: enable m2mf for tt<->vram moves, fix fence_pollBen Skeggs
2008-04-06radeon_ms: fix framebuffer codeJerome Glisse
2008-04-06Place highmem pages last in the ttm page array.Thomas Hellstrom
2008-04-06Use clflush() when available for cache flushing.Thomas Hellstrom
2008-04-06[I915] Fix VRAM eviction.Thomas Hellstrom
2008-04-06Fix emergency allocation accounting.Thomas Hellstrom
2008-04-03radeon_ms: fixes fb handlingJerome Glisse
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-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-24nouveau: silence warningBen Skeggs
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-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-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-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-16[via] Allow a little larger stride for SG DMA DownloadFromScreen.Thomas Hellstrom
2008-03-16ati: fix rs690 igp gart by allocating the page table in 32-bit memoryDave Airlie
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
2008-03-12Merge branch 'intel-post-reloc'Thomas Hellstrom
Conflicts: linux-core/drm_compat.c linux-core/drm_compat.h linux-core/drm_ttm.c shared-core/i915_dma.c Bump driver minor to 13 due to introduction of new relocation type.
2008-03-12Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm into ↵Alan Hourihane
modesetting-101 Conflicts: shared-core/i915_dma.c shared-core/i915_drv.h shared-core/i915_irq.c