Hong Liu
b2dee13f5d
free dummy read page if fail to init mm
...
Since drm_bo_driver_init will be called in driver_load, we need to free
what it alloced when error to avoid memory leak.
2008-05-12 12:07:27 -07:00
Dave Airlie
3f66a0005c
drm: remove root only from a lot of drm ioctls to get stuff running as non-root
2008-05-12 16:29:22 +10:00
Dave Airlie
1eedeed091
drm: masters are always authenticated
2008-05-12 16:28:58 +10:00
Dave Airlie
8f7fc880e8
drm: fix oops on reading proc file with no master
2008-05-12 16:28:40 +10:00
Jesse Barnes
6ee0c09b0e
i915: use BDB TV flag for TV detection
...
Even if the TV encoder hasn't been fused off, we may not have a TV connector on
the platform. The BDB in the BIOS should give us this info in some cases.
2008-05-09 14:19:39 -07:00
Jesse Barnes
12725a37af
i915: add basic VBT support
...
Map the VBIOS (and therefore VBT) at init time for use by various output
initialization routines.
2008-05-09 14:19:00 -07:00
Alan Hourihane
eeff906aa0
Fix build problems
2008-05-09 16:36:28 +01:00
Jakob Bornecrantz
7bcbc443f4
i915: Changed intel_fb to use the new drm_crtc_set_config interface
2008-05-08 20:10:18 +02:00
Jakob Bornecrantz
9d9104ad5f
i915: Fixed indent in intel_fb.c
2008-05-08 15:25:37 +02:00
Jakob Bornecrantz
ba36d54ad4
drm: Made set_config use drm_mode_set as a argument
2008-05-08 15:03:57 +02:00
Dave Airlie
442e124123
drm: check for NULL fb here, shouldn't happen but avoid oops for now
2008-05-08 16:11:25 +10:00
Dave Airlie
19abd5c1ac
drm: set crtc->fb to NULL
2008-05-08 16:10:26 +10:00
Dave Airlie
74a49aea61
intel: set correct limits on screen width/height from DDX
2008-05-08 16:10:06 +10:00
Dave Airlie
576cba86b7
drm: fix replacefb to change fb properties
2008-05-08 16:09:45 +10:00
Dave Airlie
ed072ed075
drm_mode: initial replacefb implemenation
2008-05-08 14:02:05 +10:00
Dave Airlie
df46e0691b
drm: fix typo from previous merge
2008-05-08 10:45:18 +10:00
Dave Airlie
ef204fb5c2
Merge remote branch 'origin/master' into modesetting-101
...
Conflicts:
linux-core/Makefile.kernel
shared-core/i915_drv.h
2008-05-08 10:25:01 +10:00
Dave Airlie
b44f2da380
drm: nopage compat fixup for drm_vm
...
The kernel has removed nopage so move the old nopage codepaths into a compat vm file and switch to using the fault paths.
nopfn is on its way out in the future also, so we should switch to using fault
for that path as well soon
2008-05-07 15:10:23 +10:00
Jesse Barnes
cb33133ef3
i915: fix off by one in VGA save/restore of AR & CR regs
...
Turns out it's important to save/restore AR14 in particular.
2008-04-29 12:39:38 -07:00
Thomas Hellstrom
7f269bec7e
Merge branch 'master' into modesetting-101
...
Conflicts:
linux-core/Makefile.kernel
linux-core/drm_compat.c
linux-core/drm_fops.c
linux-core/drm_lock.c
shared-core/drm.h
shared-core/i915_dma.c
shared-core/i915_drv.h
shared-core/i915_irq.c
2008-04-28 12:10:44 +02:00
Jesse Barnes
7f8e406085
Use fixed sized types in new ioctls
...
Make both crtc and the command argument 32 bits to avoid any 32-on-64 compat
issues.
2008-04-27 09:42:17 -07:00
Kristian Høgsberg
55a9941977
Make via compile.
...
Chase the lock to it's new location.
2008-04-23 12:43:52 -04:00
Kristian Høgsberg
33fa02f2d8
Make radeon_ms compile.
...
Remove lock functions and use pci_map_rom() instead of pci_map_rom_copy().
2008-04-23 12:42:26 -04:00
Thomas Hellstrom
10b9a116a7
Don't disable IRQs, just tasklets, when taking the drm lock spinlock.
2008-04-23 17:34:21 +02:00
Jakob Bornecrantz
9ba3aaaa1a
Fixed unlock check on EAGAIN
2008-04-23 12:43:45 +02:00
Hong Liu
b57e1f7efd
add sysfs entry for DVO output
...
forget to add it in the previous DVO porting patch.
Signed-off-by: Hong Liu <hong.liu@intel.com>
2008-04-22 18:35:26 -07:00
Hong Liu
c250104c8f
fix removing output_attrs
...
fix a typo in removing output sysfs.
Signed-off-by: Hong Liu <hong.liu@intel.com>
2008-04-22 18:32:39 -07:00
Pekka Paalanen
b3967765c0
linux-core Makefile: add GIT_REVISION
...
This tries to automatically fetch a git revision string and if succeeds,
it #defines GIT_REVISION string macro. Packagers can override it by
'make GIT_REVISION=foo'.
Update Nouveau to use GIT_REVISION, if defined, instead of DRIVER_DATE
in struct drm_driver.
Signed-off-by: Pekka Paalanen <pq@iki.fi>
2008-04-22 22:07:21 +03:00
Hong Liu
21a93915d8
Porting DVO stuff
...
Ported from Xorg intel 2d driver. Changed interfaces definitions, which needed
to be changed later if other device wants to use these DVO stuff.
2008-04-17 11:43:28 -07:00
Thomas Hellstrom
1ad1bd5bd9
Fix buffer object map wait error.
...
Add some branch prediction hints.
2008-04-14 13:52:33 +02:00
Thomas Hellstrom
c5955c6523
Fix buffer object creation validation.
...
BO lock fixes.
2008-04-14 12:14:20 +02:00
Thomas Hellstrom
c9b73ef6da
Unlock the BO mutex while waiting for idle, unmapped, unfenced.
...
Move unfenced checking into idle checking.
Never time out while waiting for software events like unmapped or unfenced.
2008-04-14 12:13:33 +02:00
Thomas Hellstrom
65dd0e68ff
Fix up buffer manager locking.
2008-04-14 12:13:17 +02:00
Keith Packard
b986d7d2c9
Save and restore dsparb and d_state regs
2008-04-11 20:31:07 -07:00
Jesse Barnes
3b32ee36ae
Fixup Intel TV property code
...
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-10 20:31:31 -07:00
Jesse Barnes
83c3acb7da
Split TV property creation into its own routine
...
It needs to take arguments from the caller about supported TV formats,
so declare it in drm_crtc.h and export it.
2008-04-10 20:30:12 -07:00
Jesse Barnes
bee546ad69
Remove structure fields & code
...
Cleanup some random cruft left over from the initial port.
2008-04-10 19:02:53 -07:00
Jesse Barnes
ebd1544973
Fix masking in get_load_detect_pipe
...
Start i at -1 so that the masking works right.
2008-04-10 11:27:39 -07:00
Jesse Barnes
0a6e301e6d
Keep display info in struct display_info
...
Some fields had snuck into the drm_output structure. Put them back and
fill in more stuff from the EDID block.
2008-04-10 11:23:55 -07:00
Jesse Barnes
b3737f3fd9
Fix TV load detection
...
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-09 14:13:38 -07:00
Jesse Barnes
6c92689dcc
Port pipe reservation code for load detection
...
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-09 14:13:38 -07:00
Jesse Barnes
256a96135e
Add newline to debug output for output add
2008-04-09 14:13:38 -07:00
Alan Hourihane
61a81a043c
Older kernels don't have kobject_uevent_env(), so punt
...
the event for these older kernels.
2008-04-09 22:07:40 +01:00
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
Dave Airlie
9f19e79f95
drm: we already worked out the pitch. multiplying by 4 is just madness..
2008-03-07 17:09:51 +11:00
Dave Airlie
33cb42a9f7
make startup of Xorg smoother if the mode doesn't change.
...
just flip the framebuffer in when required.
2008-03-07 13:03:42 +11:00
Dave Airlie
348d95e00b
worst merge effort ever
2008-03-07 12:25:26 +11:00
Dave Airlie
47b7ec71fe
drm/modesetting: fixup irq removal on exit
2008-03-07 12:15:38 +11:00
Dave Airlie
f96baf1e1e
Merge branch 'master' of ../../drm into modesetting-101
2008-03-07 11:59:21 +11:00
Dave Airlie
2540ea7dc6
flush_agp_mappings commit
2008-03-07 09:29:35 +10:00
Dave Airlie
92a30dd608
drm/bo: allow non-suser priv to add kernel BOs.
...
modprobe can be run with dropped capabilities we still want the kernel bos
to work.
2008-03-06 14:43:23 +10:00