Commit graph

2259 commits

Author SHA1 Message Date
Jesse Barnes
fa116081a9 Fixup sysfs output registration
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-09 11:30:15 -07:00
Jesse Barnes
e3c7a0fcb0 Merge branch 'modesetting-101' of ssh://git.freedesktop.org/git/mesa/drm into modesetting-101 2008-04-08 12:48:41 -07:00
Jesse Barnes
5a3ce06f3a Improved DRM sysfs support
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-08 12:42:23 -07:00
Jerome Glisse
779e826c1e radeon_ms: command buffer validation use array of function pointer 2008-04-08 02:18:14 +02:00
Patrice Mandin
db61f02bd7 Missing KERNEL_VERSION macro 2008-04-07 22:24:24 +02:00
Jerome Glisse
fee64980c4 radeon_ms: another fb fix reset mode if fb changed 2008-04-07 20:49:36 +02:00
Ben Skeggs
dfa9f03992 nouveau: enable accelerated move to sysmem 2008-04-07 13:29:11 +10:00
Ben Skeggs
c12b60b509 nouveau: enable m2mf for tt<->vram moves, fix fence_poll 2008-04-07 13:05:51 +10:00
Jerome Glisse
060e725a0e radeon_ms: fix framebuffer code 2008-04-06 19:23:20 +02:00
Thomas Hellstrom
e89710bef7 Place highmem pages last in the ttm page array. 2008-04-06 11:21:22 +02:00
Thomas Hellstrom
c3888b97f6 Use clflush() when available for cache flushing. 2008-04-06 10:32:02 +02:00
Thomas Hellstrom
51a0fdcf3f [I915] Fix VRAM eviction. 2008-04-06 10:30:27 +02:00
Thomas Hellstrom
87ae5b22e3 Fix emergency allocation accounting. 2008-04-06 10:30:27 +02:00
Jerome Glisse
4dfb959238 radeon_ms: fixes fb handling 2008-04-03 03:14:52 +02:00
Jerome Glisse
09e637848a radeon_ms: initial pass at command buffer validation 2008-03-31 00:55:05 +02:00
Thomas Hellstrom
22d931f966 Initialize the fence::error member. 2008-03-30 21:30:43 +02:00
Thomas Hellstrom
1f4ba62567 [i915] Report buffer state _after_ fence submission to user-space.
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-30 15:14:45 +02:00
Thomas Hellström
b8567bafff Don't call fence::poll during irq if there are no waiters. 2008-03-30 15:11:47 +02:00
Jerome Glisse
0da289bafd radeon_ms: this is a modesetting driver, bring things up to date 2008-03-27 20:08:37 +01:00
Dave Airlie
acb6c9ef97 drm: remove authentication on master exit.
using contexts for this is bad for multiple masters
2008-03-27 15:55:49 +10:00
Ben Skeggs
a244d29050 nouveau: silence warning 2008-03-24 03:26:37 +11:00
Jerome Glisse
71b66b0043 Merge branch 'modesetting-101' of ssh://git.freedesktop.org/git/mesa/drm into modesetting-101 2008-03-20 17:44:32 +01:00
Jerome Glisse
6ef119abf5 radeon_ms: fix fence 2008-03-20 17:43:43 +01:00
Thomas Hellstrom
602800a280 Evict cached_mapped relocatee before applying reloc.
Fix that got left out after the intel-post-reloc merge.
2008-03-17 11:38:46 +01:00
Dave Airlie
607964ed9e drm: add master set/drop protocol
this may not survive long - just need something for testing
2008-03-17 16:38:20 +10:00
Dave Airlie
e6be93b2a6 drm: pick correct master for cleaning up
When a master is exiting, make sure we clean it up and not the currently
in charge master.
2008-03-17 16:38:17 +10:00
Dave Airlie
d1513528d7 drm: select the correct master to attempt to remove the lock from.
When destroying DRI sarea, make sure you use the master associated with the
sarea and not the one currently in charge
2008-03-17 16:38:15 +10:00
Dave Airlie
1f96e9a982 drm/pcigart: fix the pci gart to use the drm_pci wrapper.
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-17 07:05:46 +10:00
Thomas Hellstrom
b81d7b3b8d [via] Allow a little larger stride for SG DMA DownloadFromScreen. 2008-03-16 11:45:57 +01:00
Dave Airlie
afa803ee40 ati: fix rs690 igp gart by allocating the page table in 32-bit memory 2008-03-16 15:02:53 +10:00
Dave Airlie
76946ed83d drm: this u32 should be a dma_addr_t
doesn't fix anything but just making it consistent
2008-03-16 12:56:11 +10:00
Alan Hourihane
1ea8a470fe fix build problems 2008-03-14 00:25:42 +00:00
Mike Isely
ae1bb96a7e drm: Fix race that can lockup the kernel
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-14 09:53:05 +10:00
Alan Hourihane
631c6af4d9 Fix green offset 2008-03-13 11:47:37 +00:00
Thomas Hellstrom
88bd1e4a35 Merge branch 'intel-post-reloc'
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-12 11:34:29 +01:00
Alan Hourihane
b6dc381fab Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm into modesetting-101
Conflicts:

	shared-core/i915_dma.c
	shared-core/i915_drv.h
	shared-core/i915_irq.c
2008-03-12 10:18:33 +00:00
Thomas Hellstrom
2a618e5a7f Bug # 14712
Disable page saving for GPU read-only TTMs.
2008-03-12 10:36:40 +01:00
Thomas Hellstrom
5bebcd7a0b Dont allow !sysadmin clients to alter the memory type of
NO_EVICT buffers.
2008-03-12 10:19:36 +01:00
Alan Hourihane
88be276a42 Fix for debug memory routines 2008-03-12 10:13:22 +01:00
Alan Hourihane
3262577407 Add error message 2008-03-12 10:11:49 +01:00
Thomas Hellstrom
c0a1cd052a Add an emergency pinnable memory quota for root-only processes. 2008-03-12 10:10:03 +01:00
Thomas Hellstrom
7bcce66a1d Fix kernel crash when we hit OOM conditions.
(Alan Hourihane)
2008-03-12 10:07:56 +01:00
Thomas Hellstrom
f1a681ebe5 Avoid duplicate calls to drm_ttm_bind in some cases. 2008-03-12 10:02:09 +01:00
Thomas Hellstrom
fa1d88e3b2 Make sure other TTM memory types than TT is really unbound when evicted. 2008-03-12 09:56:06 +01:00
Dave Airlie
981f515e2b drm: fix fd closing ordering.
If the master fd goes away before the aiglx fd, we try and get a lock
that actually doesn't exist.
2008-03-12 14:48:01 +10:00
Alan Hourihane
903d9231d6 Add support for monitor hotplug signals/waits
Also adjust i915 irq handling as it follows the 16bit'ism's
of the i8xx series.
2008-03-11 20:30:25 +00:00
Dave Airlie
52748d1792 drm: hopefully fix cursors on 965 2008-03-11 13:23:33 +10:00
Jerome Glisse
a7e6ca62ad Merge branch 'modesetting-101' of ssh://git.freedesktop.org/git/mesa/drm into modesetting-101 2008-03-10 23:36:27 +01:00
Jerome Glisse
a7dc4d08b9 rradeon_ms: rework fence code and bring radeon ms up to date 2008-03-10 23:35:07 +01:00
Dave Airlie
07ba3b7193 remove unneeded load call 2008-03-10 18:30:17 +10:00