Commit Graph

2105 Commits (d313108167a793652a5fe4c1015198e0a9deac4c)

Author SHA1 Message Date
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
Alan Hourihane fef1c93aa8 build fix 2008-03-05 10:35:47 +00:00
Alan Hourihane 1a959a2095 Check mode before adding to EDID 2008-03-05 10:35:46 +00:00
Alan Hourihane 8bfe29d9e4 Use ARRAY_SIZE 2008-03-05 10:35:46 +00:00
Alan Hourihane 3ea1902be9 propogate failed fixups back up 2008-03-05 10:35:46 +00:00
Alan Hourihane 5662934ee4 Fix connector description table 2008-03-05 10:35:46 +00:00
Dave Airlie e00dea812d Merge branch 'master' of ../../drm into modesetting-101
Conflicts:

	linux-core/drmP.h
	linux-core/drm_drv.c
	linux-core/drm_proc.c
	linux-core/drm_stub.c
	linux-core/drm_sysfs.c
2008-03-06 05:26:23 +10:00
Dave Airlie 12574590cd drm: reorganise minor number handling using code from modesetting branch
Rip out the whole head thing and replace it with an idr and drm_minor
structure.
2008-03-06 05:21:50 +10:00
Benjamin Herrenschmidt a875821f7b drm: Fix for non-coherent DMA PowerPC
This patch fixes bits of the DRM so to make the radeon DRI work on
non-cache coherent PCI DMA variants of the PowerPC processors.

It moves the few places that needs change to wrappers to that
other architectures with similar issues can easily add their
own changes to those wrappers, at least until we have more useful
generic kernel API.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2008-03-05 19:25:03 +10:00
Dave Airlie d5c0101252 ttm: make sure userspace can't destroy kernel create memory managers
this adds something to say the kernel initialised the memory region not
the userspace. and blocks userspace from deallocating kernel areas
2008-03-06 05:37:54 +10:00
Dave Airlie 180c9188f4 drm/ttm: add ioctl to get back memory managed area sized
taken from modesetting branch but could be useful outside it.
2008-03-06 05:31:50 +10:00
Xiang, Haihao 638353103d i915: Evict if relocatee buffer is CACHED_MAPPED before
writting relocations, otherwise the GPU probably sees some
inconsistent data. Fix fd.o bug#14656
2008-03-05 15:09:17 +08:00
Dave Airlie f78cdac8e5 fixup previous merge 2008-03-05 15:28:59 +10:00
Dave Airlie 4dbf447f43 drm: fixup compat with old x.org drivers 2008-03-05 15:28:38 +10:00
Dave Airlie 43891ff2d0 Merge remote branch 'origin/master' into modesetting-101
Conflicts:

	linux-core/drm_compat.c
2008-03-05 10:37:02 +10:00
Eric Anholt d41846adb7 Clarify through the names what drm_ttm_alloc_pages() and friend actually did.
These are all about the page directory (pointers to pages) rather than the
actual pages backing the allocation.
2008-03-04 13:40:46 -08:00
Patrice Mandin 09999c90ab FIX_KMAP_BEGIN requires CONFIG_HIMEM (see include/asm-i386.h/fixmap.h) 2008-02-29 21:57:40 +01:00
Thomas Hellstrom 612c22f131 Working revision. 2008-02-29 15:38:55 +01:00
Thomas Hellstrom 1d068973d5 Fix compilation breakage on x86-64. 2008-02-29 13:32:25 +01:00
Thomas Hellstrom 2305100c0f More post-ioctl work. 2008-02-29 13:25:55 +01:00
Dave Airlie cdbd616ea5 agp: export the correct symbol 2008-02-29 10:16:24 +10:00
Thomas Hellstrom 8ef838e5ff Add a compat kmap_atomic_prot_pfn to do quick kernel map / unmaps of
PCI- or high memory.
This is substantially more efficient than drm_bo_kmap,
since the mapping only lives on a single processor.
Unmapping is done use kunmap_atomic(). Flushes only a single tlb() entry.

Add a support utility int drm_bo_pfn_prot() that returns the
pfn and desired page protection for a given bo offset.

This is all intended for relocations in bound TTMS or vram.
Mapping-accessing-unmapping must be atomic, either using preempt_xx() macros
or a spinlock.
2008-02-28 14:06:46 +01:00
Thomas Hellstrom 28d4d02d67 Initial commit. 2008-02-28 14:05:53 +01:00
Thomas Hellstrom 40c9e6a26d Add a compat kmap_atomic_prot_pfn to do quick kernel map / unmaps of
PCI- or high memory.
This is substantially more efficient than drm_bo_kmap,
since the mapping only lives on a single processor.
Unmapping is done use kunmap_atomic(). Flushes only a single tlb() entry.

Add a support utility int drm_bo_pfn_prot() that returns the
pfn and desired page protection for a given bo offset.

This is all intended for relocations in bound TTMS or vram.
Mapping-accessing-unmapping must be atomic, either using preempt_xx() macros
or a spinlock.
2008-02-28 13:47:15 +01:00
Dave Airlie 01dcc47d89 drm: add modesetting as a driver feature.
This change adds a driver feature that for i915 is controlled by a module
parameter. You now need to do insmod i915.ko modeset=1 to enable it the
modesetting paths.

It also fixes up lots of X paths. I can run my new DDX driver on this code
with and without modesetting enabled
2008-02-28 16:24:17 +10:00
Jerome Glisse 75c9e0d346 radeon: remove TTM from an earlier merge 2008-02-26 23:30:45 +01:00
Alan Hourihane 1e66322633 Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm into modesetting-101
Conflicts:

	shared-core/i915_dma.c
2008-02-26 15:42:41 +00:00
Alan Hourihane 73cb02b543 DRM_INFO -> DRM_DEBUG 2008-02-26 15:21:44 +00:00
Alan Hourihane 191385d518 DRM_INFO -> DRM_DEBUG 2008-02-26 15:20:59 +00:00
Alan Hourihane 89f65c50d7 define PRETHAW 2008-02-26 15:20:29 +00:00
Alan Hourihane 2476cb209e Implement short circuit for base change only
Allow mode to be set with fb_id set to -1, meaning set
the mode with the current fb (if we have one bound).

Allow intelfb to hook back up it's fb if modesetting
clears it (maybe temporary).

Move any crtc->fb related register changes to set_base
in intel_fb.

General intelfb cleanups.
2008-02-26 15:19:34 +00:00
Dave Airlie 879fb12e28 drm: fix pick crtcs mode selection code 2008-02-26 17:11:03 +11:00
Jesse Barnes 20d0e53916 i915: put ARX back into index mode before doing restore
Fixes resume from hibernate in some configurations.
2008-02-22 13:57:38 -08:00
Alan Hourihane a72399da2a silence warning 2008-02-22 11:39:21 +00:00
Dave Airlie fad1db2d73 modesetting: fix memory leak and misallocation 2008-02-22 13:49:51 +10:00
Dave Airlie cdad850ebc add ioctl to get back memory managed area sized - used for kernel inited areas 2008-02-22 13:49:51 +10:00
Dave Airlie 0d1cb1e840 hopefully shit works now without this... 2008-02-22 13:49:51 +10:00
Alan Hourihane e85ec6693a Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm into modesetting-101 2008-02-21 23:56:27 +00:00
Kristian Høgsberg 32c67922b7 Don't free irq resources until after we've unregistered the handler. 2008-02-21 15:31:48 -05:00
Alan Hourihane ea3de6daa4 Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm into modesetting-101
Conflicts:

	linux-core/drm_sysfs.c
2008-02-21 11:37:07 +00:00
Michel Dänzer 374b41e5bc linux: Clean up vblank related resources from drm_irq_uninstall().
This fixes at least two problems:

* The vblank_disable_fn timer callback could get called after the DRM was
  de-initialized, e.g. on X server shutdown.
* Leak of vblank related resources when disabling and re-enabling the IRQ, e.g.
  on an X server reset.
2008-02-21 11:49:38 +01:00
Alan Hourihane 66cd6bd666 compatibility code for pci_get_bus_and_slot() 2008-02-20 19:55:14 +00:00
Dave Airlie e484681a43 remove more offset 2008-02-20 11:44:10 +10:00
Dave Airlie 8844245cfc drm/fb: get rid of offset from structure use bo offset 2008-02-20 11:27:22 +10:00
Dave Airlie 2c409f9a07 ttm: make sure userspace can't destroy kernel create memory managers 2008-02-20 11:27:22 +10:00
Dave Airlie 6c41e5381f drm: add support for passing state into the suspend hooks.
fix i915 driver to use state for hibernate save avoidance.

Signed-off-by: Dave Airlie <airlied@redhat.com>
2008-02-20 10:02:20 +10:00
Alan Hourihane 8caf6e9571 Fix up conflicts for DRI2 (untested) 2008-02-19 15:17:24 +00:00
Alan Hourihane f24ed2ad6c Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm into modesetting-101
Conflicts:

	linux-core/i915_fence.c
	linux-core/via_fence.c
	shared-core/i915_dma.c
	shared-core/i915_drv.h
	shared-core/i915_irq.c
2008-02-18 22:35:46 +00:00
Keith Packard 5d8c754bc2 [915]: more registers for S3 (DSPCLK_GATE_D, CACHE_MODE_0, MI_ARB_STATE)
Failing to preserve the MI_ARB_STATE register was causing FIFO underruns on
the VGA output on my HP 2510p after resume.
2008-02-16 20:14:49 -08:00
Jesse Barnes 2b1c9cd696 i915: initial (and untested) TV out support
Ported from xf86-video-intel.  Still need to tie in TV modes somehow, though
preferably w/o using the properties mechanism.
2008-02-15 16:13:21 -08:00
Dave Airlie 088b383829 fb: fixup the offset by getting it from the right place 2008-02-15 16:42:44 +10:00
Dave Airlie 222092a1a8 various fixes from trying to get userspace started 2008-02-15 16:15:04 +10:00
Dave Airlie 75b01cf996 switch naming to new proposed scheme 2008-02-15 10:04:28 +10:00
Dave Airlie f2f8ace3e1 remove drm_minors_limit 2008-02-15 09:57:30 +10:00
Dave Airlie a4fc1d7ac6 start moving over to proper hierarchy wrt master accesses 2008-02-13 16:30:15 +10:00
Dave Airlie 0fbee62ec1 major port of multi-master ideas into modesetting 2008-02-13 15:19:42 +10:00
Dave Airlie f276c845bd drm: re-write minor number allocation to use an idr.
Fixup the minor number allocation scheme to use an idr and move the control
nodes up higher.
2008-02-13 12:12:52 +10:00
Jesse Barnes d63b57749f Restore pipeconf regs unconditionally
On many chipsets, the checks for DPLL enable or VGA mode will prevent the
pipeconf regs from being restored, which could result in a blank display or X
failing to come back after resume.  So restore them unconditionally along with
actually restoring pipe B's palette correctly.
2008-02-07 17:33:28 -08:00
Alan Hourihane fe83c06861 Revert "DRM_CONTROL_ALLOW logic was reversed"
This reverts commit 7af1bb874d.
2008-02-07 21:18:37 +00:00
Jesse Barnes 8b6c96dedd i915: save/restore interrupt state
On resume, if the interrupt state isn't restored correctly, we may end
up with a flood of unexpected or ill-timed interrupts, which could cause
the kernel to disable the interrupt or vblank events to happen at the
wrong time.  So save/restore them properly.
2008-02-07 10:48:08 -08:00
Jesse Barnes 79d6928520 Fix vblank enable/disable callbacks
There were two problems with the existing callback code:  the vblank
enable callback happened multiple times per disable, making drivers more
complex than they had to be, and there was a race between the final
decrement of the vblank usage counter and the next enable call, which
could have resulted in a put->schedule disable->get->enable->disable
sequence, which would be bad.

So add a new vblank_enabled array to track vblank enable on per-pipe
basis, and add a lock to protect it along with the refcount +
enable/disable calls to fix the race.
2008-02-07 10:40:06 -08:00
Jakob Bornecrantz 0618ac8a07 Added kernel part of hotplug ioctl 2008-02-07 19:24:58 +01:00
Alan Hourihane 7af1bb874d DRM_CONTROL_ALLOW logic was reversed 2008-02-05 15:12:46 +00:00
Alan Hourihane de0084590b fix some warnings 2008-02-05 10:11:46 +00:00
Alan Hourihane 5e81a40f3b build fix for older kernels 2008-02-05 10:11:24 +00:00
Alan Hourihane f2c706e247 Fix function declaration 2008-02-05 10:11:01 +00:00
Alan Hourihane 7cc825f594 Add missing round_jiffies_relative() for older kernels 2008-02-05 10:10:36 +00:00
Thomas Hellstrom 76748efae2 i915: Re-report breadcrumbs on poll to the fence manager,
since a breadcrumb may actually turn up before a corresponding fence object
has been placed on the fence ring.
2008-02-05 10:36:49 +01:00
Alan Hourihane c9772f8c03 consistency 2008-02-05 09:28:51 +00:00
Alan Hourihane 709aa46293 Remove duplicate 2008-02-05 09:28:32 +00:00
Thomas Hellstrom c77b0937f2 Add an fence_class_manager::last_queued_sequence member, since a
sequence number may actually turn up before the corresponding fence
object has been queued on the ring.

Fence drivers can use this member to determine whether a
sequence number must be re-reported.
2008-01-31 14:11:12 +01:00
Thomas Hellstrom f1edb7ad91 Simplify the fencing code and differentiate between flushes and
waiting types.
Add a "command_stream_barrier" method to the bo driver.
2008-01-30 22:06:02 +01:00
Jakob Bornecrantz abed099558 Fix for cursor off 2008-01-30 16:16:10 +01:00
Jesse Barnes 01f6afcfea Fix hibernate save/restore of VGA attribute regs
In hibernate, we may end up calling the VGA save regs function twice, so we
need to make sure it's idempotent.  That means leaving ARX in index mode after
the first save operation.  Fixes hibernate on 965.
2008-01-28 21:05:22 -08:00
Jakob Bornecrantz b9b6f9234d Misc panning fixes for intel_fb 2008-01-28 22:06:09 +01:00
Jakob Bornecrantz a2254c5a96 Added cursor support 2008-01-28 03:14:56 +01:00
Dave Airlie 98361cf28c if irq already enabled well just keep trucking 2008-01-25 16:34:05 +10:00
Dave Airlie e7a41d7f5b Merge remote branch 'origin/master' into modesetting-101
Conflicts:

	linux-core/drm_bo.c
	linux-core/drm_drv.c
	shared-core/drm.h
	shared-core/i915_dma.c
	shared-core/i915_drv.h
	shared-core/i915_irq.c
	shared-core/radeon_irq.c
2008-01-25 15:27:53 +10:00
Jesse Barnes bfdddd218e Fixup modeset ioctl number & typedef usage
Should be 0x08 rather than 0xa0, and shouldn't use typedefs.
2008-01-24 21:13:33 -08:00
Dave Airlie c57f43e3a2 i915/flush: get the ret the right way around 2008-01-23 16:45:09 +10:00
Jesse Barnes 0cd4cbc9a6 Merge branch 'master' into vblank-rework, including mach64 support
Conflicts:

	linux-core/drmP.h
	linux-core/drm_drv.c
	shared-core/i915_drv.h
	shared-core/i915_irq.c
	shared-core/mga_irq.c
	shared-core/radeon_irq.c
	shared-core/via_irq.c

Mostly trivial conflicts.

mach64 support from Mathieu Bérard.
2008-01-22 09:42:37 -08:00
Jakob Bornecrantz fb9ea12438 Made radeon_ms not always compile 2008-01-18 15:00:31 +01:00
Kyle McMartin c6f175cbea i915: fix invalid opcode exception on cpus without clflush
i915_flush_ttm was unconditionally executing a clflush instruction
to (obviously) flush the cache. Instead, check if the cpu supports
clflush, and if not, fall back to calling wbinvd to flush the entire
cache.

Signed-off-by: Kyle McMartin <kmcmartin@redhat.com>
2008-01-17 16:55:44 -08:00
Zhenyu Wang ac6b3780c8 i915: Add chipset id for Intel Integrated Graphics Device
This adds new chipset id in drm.

Signed-off-by: Zhenyu Wang <zhenyu.z.wang@intel.com>
2008-01-15 13:06:09 -05:00
Jerome Glisse f1f934c8c9 radeon_ms: add rom parsing & adapt code
Add rom (only combios for now) parsing and use informations
retrieve instead of hardcoded table. Shuffle code around a
bit.
2008-01-15 14:17:05 +01:00
Thomas Hellstrom 099e89edf0 Define i915_compat.c upper_32_bits for kernels < 2.6.21 2008-01-15 09:47:04 +01:00
Zou Nan hai 806c1929dc this is to fix a deadloop in drm hang system issue.
(1 << bits) is an undefined value when bits == 32.
 gcc may generate 1 with this expression
 which will lead to an infinite retry loop in
 drm_ht_just_insert_please.
 Because of the different implement of hash_long,
 this  issue is more frequenly see on 64 bit system
2008-01-15 09:19:02 +08:00
Dave Airlie 62df4f0a48 fixup i915 compat resource allocation 2008-01-14 19:38:41 +10:00
Jakob Bornecrantz e6fc47129f Fix for X axis panning problem 2008-01-11 17:33:00 +01:00
Jakob Bornecrantz f07942f74a Panning now works without modeset 2008-01-11 17:13:48 +01:00
Jakob Bornecrantz 0b69c1d1d6 Added fixed misc framebuffer problems 2008-01-11 02:55:00 +01:00
Dave Airlie e04d942ee8 fixup crtcinfo on modes from userspace 2008-01-09 18:11:17 +11:00
Dave Airlie 8d6e3c208f allow control getversion 2008-01-09 16:43:51 +11:00
Dave Airlie ebbc2e0a2e add control ioctls 2008-01-09 16:31:37 +11:00
Dave Airlie 135f51306b drm: only call suspend/resume on control node 2008-01-09 16:21:56 +11:00
Ben Skeggs fa5e18679f nv50: use dummy page in gart tables
Just to be safe, we don't really know exactly how the tables work yet, so
we can't be certain there's a way to say "page not present".
2008-01-07 17:09:00 +11:00
Pekka Paalanen f5e5e5c0ea drm: One forgotten rename of 'mask' to 'proposed_flags'.
Due to commit d1187641d6.
2008-01-05 00:42:38 +02:00
Dave Airlie d3da253adb drm: add initial support for a drm control device node 2008-01-04 17:49:40 +11:00
Dave Airlie df9cfeff37 crtc: fixup allocation size 2008-01-04 17:48:42 +11:00
Dave Airlie 10937cf20b drm: move drm_head to drm_minor and fix up users 2008-01-04 16:12:24 +11:00
Márton Németh 9ab620d661 drm: cleanup DRM_DEBUG() parameters
As DRM_DEBUG macro already prints out the __FUNCTION__ string (see
drivers/char/drm/drmP.h), it is not worth doing this again. At some
other places the ending "\n" was added.

airlied:- I cleaned up a few that this patch missed also
2008-01-03 16:56:04 +10:00
Xiang, Haihao b9417f4141 i915: return fence argument from i915_execbuffer ioctl32 routine 2007-12-26 17:13:58 +08:00
Xiang, Haihao 5d8d64ad38 i915: i915_execbuffer ioctl32 routine, fix #13732 2007-12-25 16:57:14 +08:00
Keith Packard da3601e43a Change drm_bo_type_dc to drm_bo_type_device and comment usage of this value.
I couldn't figure out what drm_bo_type_dc was for; Dave Airlie finally clued
me in that it was the 'normal' buffer objects with kernel allocated pages
that could be mmapped from the drm device file.

I thought that 'drm_bo_type_device' was a more descriptive name.

I also added a bunch of comments describing the use of the type enum values and
the functions that use them.
2007-12-21 12:16:29 -08:00
Keith Packard d1187641d6 Rename inappropriately named 'mask' fields to 'proposed_flags' instead.
Flags pending validation were stored in a misleadingly named field, 'mask'.
As 'mask' is already used to indicate pieces of a flags field which are
changing, it seems better to use a name reflecting the actual purpose of
this field. I chose 'proposed_flags' as they may not actually end up in
'flags', and in an case will be modified when they are moved over.

This affects the API, but not ABI of the user-mode interface.
2007-12-21 12:16:29 -08:00
Keith Packard 37fb2ac407 Use dummy_read_page for unpopulated kernel-allocated ttm pages.
Previously, dummy_read_page was used only for read-only user allocations; it
filled in pages that were not present in the user address map (presumably,
these were allocated but never written to pages).

This patch allows them to be used for read-only ttms allocated from the
kernel, so that applications can over-allocate buffers without forcing every
page to be allocated.
2007-12-21 12:16:29 -08:00
Keith Packard 881ee70ab7 Move dummy_read_page from drm_ttm_set_user to drm_ttm_create.
I'm hoping to use the dummy_read_page for kernel allocated buffers to avoid
allocating extra pages for read-only buffers (like vertex and batch buffers).
This also eliminates the 'write' parameter to drm_ttm_set_user and just
has DRM_TTM_PAGE_WRITE passed into drm_ttm_create.
2007-12-21 12:16:29 -08:00
Keith Packard 6d44f48002 Clean up and document drm_ttm.c APIs. drm_bind_ttm -> drm_ttm_bind.
Aside from changing drm_bind_ttm to drm_ttm_bind, this patch
adds only documentation and fixes the functions inside drm_ttm.c
to all be prefixed with drm_ttm_.
2007-12-21 12:16:29 -08:00
Dave Airlie 219ba5cd9a s/TRUE/true 2007-12-21 18:38:55 +10:00
Dave Airlie 629231c626 Merge branch 'modesetting-airlied' into modesetting-101 2007-12-18 19:18:21 +11:00
Dave Airlie 6d03411e5f HERE BEZ HACKZ.. magic variable to make shit work 2007-12-18 19:18:05 +11:00
Dave Airlie a19e0efb0e lockdep warned about a possible locking dependency 2007-12-18 19:17:11 +11:00
Dave Airlie 01f905c177 we should not be unlocking this here 2007-12-18 19:16:51 +11:00
Dave Airlie b13dc383df remove output names 2007-12-18 17:41:20 +11:00
Jakob Bornecrantz bdbc34e297 Fix and cleanup of Hotplug 2007-12-18 02:21:08 +01:00
Jakob Bornecrantz e239882b1e Modesetting Hotplug 2007-12-18 02:21:08 +01:00
Keith Packard 0b031dbd63 Document drm_ttm_set_user.
Add a comment explaining the parameters for this function
2007-12-15 12:10:42 -08:00
Keith Packard 9d17373ffb Document drm_buffer_object_validate function.
Just add documentation for this function, no code changes.
2007-12-15 12:10:42 -08:00
Keith Packard 7461519fed Document fence_class mess in drm_bo_setstatus_ioctl
drmBOSetStatus does not bother to set the fence_class parameter.
Fortunately, drm_bo_setstatus_ioctl doesn't end up using it as it
calls drm_bo_handle_validate with use_old_fence_class = 1.
2007-12-15 12:10:42 -08:00
Keith Packard 5f23519b14 Document drm_bo_handle_validate. Match drm_bo_do_validate parameter order.
Document parameters and usage for drm_bo_handle_validate. Change parameter
order to match drm_bo_do_validate (fence_class has been moved to after
flags, hint and mask values). Existing users of this function have been
changed, but out-of-tree users must be modified separately.
2007-12-15 12:10:42 -08:00
Keith Packard b5181d2506 Document drm_bo_do_validate. Remove spurious 'do_wait' parameter.
Add comments about the parameters to drm_bo_do_validate, along
with comments for the DRM_BO_HINT options. Remove the 'do_wait'
parameter as it is duplicated by DRM_BO_HINT_DONT_BLOCK.
2007-12-15 12:10:42 -08:00
Keith Packard b0bc5f1ae5 Make ttm create/destroy APIs consistent. Pass page_flags in create.
Creating a ttm was done with drm_ttm_init while destruction was done with
drm_destroy_ttm. Renaming these to drm_ttm_create and drm_ttm_destroy makes
their use clearer. Passing page_flags to the create function will allow that
to know whether user or kernel pages are needed, with the goal of allowing
kernel ttms to be saved for later reuse.
2007-12-15 12:10:41 -08:00
Alan Hourihane f62a300547 Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm into modesetting-101 2007-12-13 10:41:23 +00:00
Alan Hourihane 35a8b61317 catch an out of memory condition 2007-12-13 10:40:36 +00:00
Dave Airlie 8d2da20233 Merge branch 'master' of ssh://git.freedesktop.org/git/mesa/drm into modesetting-101
Conflicts:

	linux-core/drm_drv.c
	shared-core/drm.h
	shared-core/i915_dma.c
2007-12-11 16:58:00 +10:00
Dave Airlie f99dea7db0 modesetting: fixup property setting and add connector property 2007-12-11 15:56:48 +10:00
Dave Airlie 3b6786e3e6 modesetting: add dpms property and initial settable property ioctl 2007-12-11 14:46:51 +10:00
Dave Airlie cfa21b22b4 drm: move agp include outside CONFIG_AGP as it isn't dependant on agp in kernel 2007-12-10 10:13:52 +10:00
Jerome Glisse a693e8ab12 radeon_ms: fix fbcon by fixing palette 2007-12-06 23:36:58 +01:00
Jerome Glisse a39560e767 radeon_ms: update to lastest fb change 2007-12-06 23:19:52 +01:00
Jerome Glisse 931b4a84a0 Merge commit 'origin/modesetting-101' into modesetting-radeon 2007-12-06 22:42:17 +01:00
Dave Airlie f1a99ddc14 take down stuff after asking driver to unload 2007-12-06 16:03:28 +10:00
Dave Airlie 9814e87016 retab intelfb code 2007-12-06 11:47:29 +10:00
Dave Airlie 8020724615 check previous mode first 2007-12-06 11:46:54 +10:00
Dave Airlie 1ba2bb3a7e oops initialise variable to false 2007-12-06 11:35:37 +10:00
Dave Airlie 67f6eb1eb8 add property blobs and edid reporting support 2007-12-06 10:44:51 +10:00
Dave Airlie c9cda51af5 more WIP on blobs..
I'm going to pass back a list of blob ids and lengths in the getproperty.
will need another ioctl to return the blob data as it is variable length.
2007-12-05 16:31:35 +10:00
Dave Airlie 1a6c95ef71 arrgggh.. make all ioctl structs 32/64-bit compatible hopefully.
This also starts to add blob property support.

someone needs to check this work for other things like ppc/x86 alignment diffs
2007-12-05 16:03:05 +10:00
Jesse Barnes f7432d187e Don't free driver mapped locks
This fix is actually a bit of a cleanup too--it moves lock freeing to
drm_rmmap_locked and out of drm_lastclose.  This makes it symmetrical with
addmap and also prevents the lock from being incorrectly freed from driver
mappings.
2007-12-04 14:38:00 -08:00
Jerome Glisse 34797ff67c radeon_ms: radeon modesetting first commit.
This should work on all radeon but there is still many things todo:
    - add crtc2
    - tmds
    - lvds
    - add bios data table so we don't need to hardcode dac/crtc infos
    - separate clock control to make power saving easier & cleaner
    - tiling (warning tiling shouldn't be enable in double scan or interlace)
    - surface reg manager (this goes along with tiling)
    - suspend/resume hook
    - avivo & r500 family support
    - atom bios support (for posting card mostly)
    - finish superioctl skeleton
    - what else ? :)
2007-12-04 23:03:12 +01:00
Dave Airlie 2f6e533421 patch from -mm kernel to use upper_32_bits 2007-12-05 04:56:54 +10:00
Dave Airlie 1a07dd5ffd hooks up sync and flags and also clocks to get mode matching better 2007-12-03 15:30:05 +10:00
Dave Airlie 9a843d3bc7 add flags to mode debug print 2007-12-03 15:30:05 +10:00
Dave Airlie 96df9b11ad finish of mode add/remove, just have attach/detach modes 2007-12-03 15:30:05 +10:00
Dave Airlie 91cd3e3c09 modesetting API change for removing mode ids and making modes per output.
so really want to get a list of modes per output not the global hammer list.
also we remove the mode ids and let the user pass back the full mode description

need to fix up add/remove mode for user modes now
2007-12-03 15:30:05 +10:00
Robert Noland d6295cc9ff drm: Add _DRM_DRIVER map flag.
This flag indicates that the driver is responsible for the map.
2007-12-01 02:40:13 -05:00
Dave Airlie 32c9a109b1 drm: enable udev node creation 2007-11-29 09:47:24 +10:00
Dave Airlie 4602b6687e drm: oops not a cleanup.. 2007-11-29 09:46:02 +10:00
Dave Airlie dc338921f9 drm: more cleanups 2007-11-29 09:38:21 +10:00
Jesse Barnes 617cbeed2a Don't use panel fitter if we're programming a native mode
Fix from the DDX driver.
2007-11-27 12:41:05 -08:00
Dave Airlie b3af2b59a7 drm/modesetting: add initial gettable properites code.
This allow the user to retrieve a list of properties for an output.
Properties can either be 32-bit values or an enum with an associated name.
Range properties are to be supported.

This API is probably not all correct, I may make properties part of the general
resource get when I think about it some more.

So basically you can create properties and attached them to whatever outputs you want,
so it should be possible to create some generics and just attach them to every output.
2007-11-27 14:31:02 +10:00
Dave Airlie f9ac54b031 fb: make fb interface use user mode attach/detach for adding modes 2007-11-26 15:06:42 +11:00
Dave Airlie 362f428320 add _ioctl to the end of two more ioctls 2007-11-26 14:28:48 +11:00
Dave Airlie 53b4e0cb78 drm: make fb modes use usermode add/remove interface
this stops usermode from getting a mode in the crtc it can't make sense off.
2007-11-26 14:05:49 +11:00
Dave Airlie a20587e395 Merge branch 'origin' into modesetting-101
Conflicts:

	linux-core/drmP.h
	shared-core/i915_dma.c
	shared-core/i915_drm.h
	shared-core/radeon_drv.h
2007-11-22 17:17:06 +11:00
Dave Airlie 5dc5c36e62 drm: major whitespace/coding style realignment with kernel 2007-11-22 16:10:36 +10:00
Dave Airlie 7bf05708b6 drm: cleanup drm_regman.c coding style 2007-11-22 13:29:17 +10:00
Jerome Glisse 09e51db77b drm: don't reset to 0 irq_enabled when client open file descriptor 2007-11-21 18:58:29 +01:00
Jerome Glisse 8fd8bf599b drm: don't reset to 0 irq_enabled when client open file descriptor 2007-11-21 18:58:03 +01:00
Jerome Glisse f29b2a583d drm: fix dead lock in drm_buffer_object_transfer 2007-11-19 14:39:14 +01:00
Jerome Glisse 648b5b582a drm: fix dead lock in drm_buffer_object_transfer 2007-11-19 14:37:21 +01:00
Jesse Barnes e0ab2034c3 Fix connection status ABI
Userspace expects a 1 based enum for connection status so fix up the kernel
definition.
2007-11-16 13:58:43 -08:00
Jesse Barnes 96e136c479 Fix typo in copy_to_user calls
We want to copy to card_res->modes + copied, not &card_res->modes + copied.
2007-11-16 13:57:42 -08:00
Jeremy Kolb f2c8d39a0f nouveau: rename 2007-11-15 22:11:35 -05:00
Jeremy Kolb a3e627f8d6 nouveau: flip buffer into gart. 2007-11-15 22:11:35 -05:00
Jesse Barnes 7ec4ebe95e Use user copy routines for writing modes & ids back to userspace
Since the drm_mode_card_res structure contains user pointers, we have to use
put_user and copy_to_user to write stuff out.  The DRM ioctl wrapper will only
take care of copying the base drm_mode_card_res struct, not the included
arrays.
2007-11-15 17:14:03 -08:00
Thomas Hellstrom d1b0258b32 Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm into modesetting-101 2007-11-15 10:42:47 +01:00
Thomas Hellstrom 6206091e5f mm fixups. 2007-11-15 10:39:41 +01:00
Dave Airlie 1e8984a367 drm: send correct fb id to userspace 2007-11-15 18:31:23 +11:00
Dave Airlie 2520d3fd99 modes: pass type to userspace for preferred showing 2007-11-15 16:52:04 +11:00
Dave Airlie 7136f55faa drm: don't remove mappings added by the driver 2007-11-15 16:51:48 +11:00
Dave Airlie 12cbe1365b intel: fixup || vs | 2007-11-15 16:51:35 +11:00
Dave Airlie f0fe478c15 Merge branch 'master' into modesetting-101
Conflicts:

	shared-core/i915_dma.c
	tests/ttmtest/src/ttmtest.c
2007-11-15 15:04:19 +11:00
Dave Airlie 62cdc6dbb3 i915: remove excess debug output 2007-11-15 14:44:19 +11:00
Dave Airlie 2eee33ace5 intel: add flushing for i8xx chipsets.
Add a nut vs hammer style chipset flush for the i8xx chipsets - reenable TTM
code paths
2007-11-15 13:29:55 +11:00
Kristian Høgsberg 68cdcda1ea Add new shared header file drm_internal.h.
This header file is shared across linux and bsd, but is not installed
for user space to access.  It's the place to put prototypes and data
types that aren't platform or chipset specific, but still internal to
the drm.
2007-11-14 14:28:34 -05:00
Ben Skeggs 7e4bb6099a Revert "nouveau: stub superioctl"
This reverts commit 2370ded79b.

Err.. didn't mean for that to slip in :)
2007-11-14 05:11:11 +11:00
Ben Skeggs eb5487b9ca Merge branch 'fifo-cleanup' into upstream-master 2007-11-14 05:09:07 +11:00
Ben Skeggs 7246a33dd1 nouveau: store user control reg offsets in channel struct 2007-11-14 04:09:53 +11:00
Ben Skeggs 2370ded79b nouveau: stub superioctl 2007-11-14 03:00:25 +11:00
Jesse Barnes 793cd1dad5 Make sure PLLs are enabled before writing pipe configuration regs
Fix from the X driver.  Make sure the PLLs are enabled and not in VGA mode
before writing PIPE(A|B)CONF regs to avoid hangs or crashes.
2007-11-10 14:39:36 -08:00
Patrice Mandin c2f80ecf4b suspend() and resume() need kernel 2.6.22 or later 2007-11-09 18:08:08 +01:00
Jerome Glisse e1bc147ac9 drm: check edid data, so we deal well with broken driver. 2007-11-09 17:28:56 +01:00
Jerome Glisse ffb89d4c3b drm: split edid handling in get_edid & add_edid_mode
This way driver can get_edid in output status detection
(using all workaround which are in get_edid) and then provide
this edid data in get_mode callback of output.
2007-11-09 15:47:24 +01:00
Thomas Hellstrom e9805de5c7 Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm into modesetting-101
Conflicts:

	shared-core/i915_dma.c
2007-11-07 18:10:46 +01:00
Thomas Hellstrom c20370e096 Don't overwrite TTM page flags. 2007-11-07 18:07:56 +01:00
Thomas Hellstrom c07dd80269 Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm into modesetting-101
Conflicts:

	linux-core/Makefile.kernel
	shared-core/i915_dma.c
	shared-core/i915_drv.h
	shared-core/i915_irq.c
2007-11-06 10:01:52 +01:00
Thomas Hellstrom 40fb079aeb Avoid buffers not ending up on a list in some cases. 2007-11-06 09:47:57 +01:00
Thomas Hellstrom 20eecf2b88 Add missing drm_regman.c file. 2007-11-06 09:36:29 +01:00
Dave Airlie 349eebd567 i915: compat code doesn't work in i8xx hw. 2007-11-06 18:00:10 +11:00
Dave Airlie b437c8ca0f drm/agp: kernel style fixes 2007-11-06 12:16:07 +10:00
Dave Airlie 9493ce6ca3 i915: cleanup most of the whitespace 2007-11-06 12:16:07 +10:00
Thomas Hellstrom 5ce43a346c Merge branch 'master' into modesetting-101
Conflicts:

	linux-core/drm_bufs.c
	shared-core/i915_dma.c
	shared-core/i915_drv.h
	shared-core/i915_irq.c
2007-11-05 13:46:06 +01:00
Thomas Hellstrom 427cc561b3 Export a symbol. 2007-11-05 13:22:00 +01:00
Thomas Hellstrom 44ad6f409d Fix a user-buffer check. 2007-11-05 13:20:16 +01:00
Alan Hourihane 1b91113957 remove unused define 2007-11-05 10:06:37 +00:00
Alan Hourihane 306bb12603 remove duplicate and obsolete ioctl statements 2007-11-05 10:05:01 +00:00
Alan Hourihane 71385d6f75 add missing lock 2007-11-05 10:03:26 +00:00
Alan Hourihane d0956339e3 Use _size 2007-11-05 10:02:46 +00:00
Dave Airlie 82ffcbbd62 drm: more kernel coding style cleanups 2007-11-05 19:14:23 +10:00
Dave Airlie 6ee5412da0 drm/ttm: apply linux kernel coding style to bo_lock/move/object/ttm.c 2007-11-05 19:09:18 +10:00
Dave Airlie 7ad3890707 drm/ttm: kernel coding style for bo.c and objects.h 2007-11-05 19:05:32 +10:00
Dave Airlie 3b43ed51cc drm: fix the the typo 2007-11-05 18:56:46 +10:00
Li Zefan 78fe88baee drm: fix memset size error
The size passing to memset is wrong.

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
2007-11-05 18:48:27 +10:00
Dave Airlie 7f6bf84c23 drm: remove lots of spurious whitespace.
Kernel "cleanfile" script run.
2007-11-05 12:42:22 +10:00
Dave Airlie 3664de7395 drm: move some of the OS stuff into the OS header 2007-11-05 12:11:39 +10:00
Ben Skeggs 5092865601 nouveau: Use a sw method instead of notify interrupt to signal fence completion. 2007-11-05 05:46:26 +11:00
Ben Skeggs 9096d50df7 nouveau: disable m2mf buffer move for the moment 2007-11-05 05:15:32 +11:00
Ben Skeggs 0a2ab1a900 nouveau: cleanups 2007-11-05 03:53:46 +11:00
Ben Skeggs dfa449cf9a nouveau: vram is bar1 2007-11-05 02:32:46 +11:00
Ben Skeggs 173a5be28f nouveau: hook up an inital fence irq handler 2007-11-05 02:20:35 +11:00
Dave Airlie a2e8e294d8 drm: fix oops since user objects.. 2007-11-04 11:01:27 +11:00
Jeremy Kolb 998d120a47 nouveau: add darktama's email address to authors section. 2007-11-02 19:47:48 -04:00
Jeremy Kolb 2dc2ee7a5a nouveau: put it all together. 2007-11-02 19:47:48 -04:00
Jeremy Kolb c1aa08106e nouveau: Add darktama's fencing code. Restructure some stuff. 2007-11-02 19:47:48 -04:00
Jeremy Kolb 2c6cbea7de nouveau: incorporate darktama's buffer object work. 2007-11-02 19:47:47 -04:00
Jeremy Kolb 239e81093f nouveau: more filling in for ttm. Change copyright since it's based off of radeon code. 2007-11-02 19:47:47 -04:00
Thomas Hellstrom 9906c7e54b Merge branch 'master' into modesetting-101 2007-11-02 16:07:36 +01:00
Thomas Hellstrom 94c22c3349 User buffer support. 2007-11-02 16:05:25 +01:00
Jesse Barnes 629c8b0dbf Merge branch 'master' into modesetting-101
Conflicts:

	linux-core/Makefile.kernel
	linux-core/drm_stub.c
	linux-core/i915_drv.c
	shared-core/i915_dma.c
	shared-core/i915_drv.h

Fixup suspend/resume conflicts (basically use what's in DRM master for now).
Also fix up a few other conflicts that snuck in (i915_dma changes etc.).
2007-11-01 15:27:55 -07:00
Jesse Barnes 00d6026557 Cleanup vblank_init and fix drm_irq_install
The vblank_init function wanted a couple of cleanups.

Also, drm_irq_install wasn't checking the new return value of irq_postinstall.
If it returns a failure, assume IRQs didn't get set up and take appropriate
action.
2007-11-01 12:50:03 -07:00
Jeremy Kolb 1b176e7613 nouveau: add missing file. 2007-10-31 21:27:00 -04:00
Jeremy Kolb 9416541fb2 Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm 2007-10-31 20:14:48 -04:00
Jeremy Kolb 31847b4b62 nouveau: ttm stubs 2007-10-31 20:13:01 -04:00
Dave Airlie 61cbcb5dbe drm/ttm: add support for cached un-snooped mappings.
This mapping allows cached objects to be mapped in/out of the TT space
with the appropriate flushing calls.

It should put back the old CACHED functionality for snooped mappings
2007-11-01 10:34:53 +11:00
Dave Airlie 6b0b2546c2 i915: fix compat code on 965/g33 2007-11-01 02:00:36 +10:00
Dave Airlie 17f0882d50 drm: add chipset flushing via agp support 2007-10-31 11:33:34 +11:00
Dave Airlie 2489062a33 i915: add backwards compat chipset flushing code 2007-10-31 11:27:44 +11:00
Dave Airlie c106a7d8b9 drm: call driver load after initing agp subsystem 2007-10-31 11:21:05 +11:00
Jesse Barnes 91aae7e683 Merge branch 'master' into vblank-rework, fixup remaining drivers
Conflicts:

	linux-core/drmP.h
	linux-core/drm_drv.c
	linux-core/drm_irq.c
	shared-core/i915_drv.h
	shared-core/i915_irq.c
	shared-core/mga_drv.h
	shared-core/mga_irq.c
	shared-core/radeon_drv.h
	shared-core/radeon_irq.c

Merge in the latest master bits and update the remaining drivers (except
mach64 which math_b is working on).  Also remove the 9xx hack from the i915
driver; it seems to be correct.
2007-10-30 12:52:46 -07:00
Dave Airlie 50dec29c80 drm/i915: add driver cache flush entry point
Use clflush on Intel hardware to flush cached objects.
2007-10-30 17:52:13 +10:00
Kristian Høgsberg ff5889f831 Move struct drm_drawable_info out of public header file. 2007-10-29 19:32:46 -04:00
Jerome Glisse 90d8f79279 Merge branch 'radeon-ttm' of git://people.freedesktop.org/~airlied/drm into modesetting-101
Conflicts:

	linux-core/Makefile.kernel
	linux-core/drmP.h
	shared-core/radeon_cp.c
	shared-core/radeon_drv.h
	shared-core/radeon_irq.c

	modified:   linux-core/Makefile.kernel
	modified:   linux-core/ati_pcigart.c
	modified:   linux-core/drmP.h
	new file:   linux-core/radeon_buffer.c
	modified:   linux-core/radeon_drv.c
	new file:   linux-core/radeon_fence.c
	modified:   shared-core/radeon_cp.c
	modified:   shared-core/radeon_drm.h
	modified:   shared-core/radeon_drv.h
	modified:   shared-core/radeon_irq.c
	modified:   tests/ttmtest/src/ttmtest.c
2007-10-28 00:55:27 +02:00
Jesse Barnes 1e2a2babab i915: suspend/resume support
Add suspend/resume support to the i915 driver.  Moves some of the
initialization into the driver load routine, and fixes up places where we
assumed no dev_private existed in some of the cleanup paths.  This allows
us to suspend/resume properly even if X isn't running.
2007-10-26 16:10:02 -07:00
Jesse Barnes 6707ab8626 update DRM sysfs support
Make DRM devices use real Linux devices instead of class devices, which are
going away.  While we're at it, clean up some of the interfaces to take
struct drm_device * or struct device * and use the global drm_class where
needed instead of passing it around.
2007-10-26 16:08:54 -07:00
Thomas Hellstrom 1681189e11 Buffer flags and masks are 64-bit.
don't mask off the high dword.
Signed-off-by: Thomas Hellstrom <thomas-at-tungstengraphics-dot-com>
2007-10-26 10:27:30 +02:00
Thomas Hellstrom 26c32a3d79 Buffer flags and masks are 64-bit.
don't mask off the high dword.
2007-10-26 10:25:57 +02:00
Ian Romanick 7e9ea55a2f Initial pass at porting MGA to vblank-rework
This is currently only compile tested.
2007-10-25 17:14:53 -07:00
Thomas Hellstrom 9adf8c0256 Merge branch 'master' into modesetting-101
Conflicts:

	linux-core/Makefile.kernel
	linux-core/drm_bo.c
	linux-core/drm_objects.h
2007-10-25 11:00:45 +02:00
Thomas Hellstrom b9d9c30474 Tighten permissions on some buffer manager ioctls.
Set bo init minor to 0.
Add the version function to header.
2007-10-25 10:29:15 +02:00
Thomas Hellstrom 11f3e5e53f Buffer manager:
Implement a version check IOCTL for drivers that don't use
drmMMInit from user-space.
Remove the minor check from the kernel code. That's really up
to the driver.
Bump major.
2007-10-25 10:12:21 +02:00
Thomas Hellstrom b5cad27e05 Fix buffer object flag / mask checking. 2007-10-25 09:49:33 +02:00
Thomas Hellstrom 07706c9b79 Merge branch 'master' into drm-ttm-finalize 2007-10-25 09:24:45 +02:00
Roel Kluin 07abc3384e missing mutex unlock bug 2007-10-25 16:50:23 +10:00
Alan Hourihane 198170ab97 Need fb attached 2007-10-23 15:33:20 +01:00
Thomas Hellstrom 3d4b32e916 Remove duplicate file. 2007-10-22 19:16:39 +02:00
Thomas Hellstrom 824330d0e6 Don't clobber the unfenced list with DONT_FENCE operations. 2007-10-22 19:09:36 +02:00
Thomas Hellstrom 4ebe7471cb Disable i915 accelerated blit copy moves for now until we can
guarantee that it doesn't clash with the X server.
2007-10-21 12:31:00 +02:00
Thomas Hellstrom 3b19b50cb5 Remove the need for the hardware lock in the buffer manager.
Add interface entry cleaning a memory type without touching NO_EVICT buffers.
2007-10-21 12:20:56 +02:00
Thomas Hellstrom 48b5eaf303 Simple replacement for hardware lock in some cases.
Fix i915 since last commit.
2007-10-20 16:49:43 +02:00
Thomas Hellstrom c0e3537e77 Some comment updates pending removal of the init mutex. 2007-10-19 16:44:12 +02:00
Thomas Hellstrom 733ff56834 No fence_class argument on drmBOSetStatus since it's not
associated with a particular command submission.
2007-10-19 16:28:47 +02:00
Thomas Hellstrom cf2d1bba55 Remove the clean_unfenced function.
Change the restriction that non-creators can't change the buffer flags to
non-creators can't change EVICT and NO_MOVE flags.
2007-10-19 16:24:36 +02:00
Thomas Hellstrom bb29ba7fa7 Only allow creator to change shared buffer mask. 2007-10-17 10:59:48 +02:00
Thomas Hellstrom 086c058a41 Remove the op ioctl, and replace it with a setuser ioctl.
Remove need for lock for now.
May create races when we clean memory areas or on takedown.
Needs to be fixed.
Really do a validate on buffer creation in order to avoid problems with
fixed memory buffers.
2007-10-17 10:59:48 +02:00
Thomas Hellstrom 0d1926d36e Revert "Replace NO_MOVE/NO_EVICT flags to buffer objects with an ioctl to set pinning."
This reverts cf2d569dac commit.
2007-10-17 10:59:48 +02:00
Thomas Hellstrom cd276d9cab Revert "Copy the important parts of object_validate into object_create()."
This reverts f9c27aa50b commit.
2007-10-17 10:59:48 +02:00
Thomas Hellstrom 12b989a710 Revert "Remove the pinned buffer from the LRU when pinning."
This reverts 3a0bc518e3 commit.
2007-10-17 10:59:48 +02:00
Alan Hourihane 90bfc8e611 Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm into modesetting-101
Conflicts:

	linux-core/drm_bo.c
	linux-core/drm_objects.h
	shared-core/i915_dma.c
	shared-core/i915_drv.h
2007-10-16 15:28:33 +01:00
Michel Dänzer db1709f2f3 Revert part of earlier commit that caused an unresolved symbol for i915. 2007-10-16 15:10:22 +02:00
Kristian Høgsberg a69c85fec8 Drop destroy ioctls for fences and buffer objects.
We now always create a drm_ref_object for user objects and this is then the only
things that holds a reference to the user object.  This way unreference on will
destroy the user object when the last drm_ref_object goes way.
2007-10-16 22:03:05 +11:00
Kristian Høgsberg dccefba71a Take bo type argument out of the ioctl interface.
The buffer object type is still tracked internally, but it is no longer
part of the user space visible ioctl interface.  If the bo create ioctl
specifies a non-NULL buffer address we assume drm_bo_type_user,
otherwise drm_bo_type_dc.  Kernel side allocations call
drm_buffer_object_create() directly and can still specify drm_bo_type_kernel.
Not 100% this makes sense either, but with this patch, the buffer type
is no longer exported and we can clean up the internals later on.
2007-10-16 22:03:05 +11:00
[utf-8] Kristian Høgsberg 440fc5113e Eliminate support for fake buffers. 2007-10-16 21:59:38 +11:00
Alan Hourihane 2b07b0a45d should be unlocked 2007-10-15 11:54:18 +01:00
Alan Hourihane cc9be8ac32 Fix some buffer teardown problems. 2007-10-15 11:51:19 +01:00
Arthur Huillet 9d779e2c88 nouveau: mandatory "oops I forgot half of the files" commit 2007-10-12 22:40:08 +02:00
Dave Airlie 604f02ff61 i915: check mask instead of flags for buffer fence types 2007-10-12 09:46:11 +10:00
Ian Romanick fc7d4d19d3 Eliminate trailing whitespace from last commit. 2007-10-10 15:27:07 -07:00
Ian Romanick 83da774b19 Fix command list submission on big-endian. 2007-10-10 15:25:47 -07:00
Thomas Hellstrom d4680333dc Only add native-type on EXE signals. Otherwise flush flags may
get out of sync.
2007-10-10 09:31:51 +02:00
Dave Airlie 89d44a1023 radeon: make vram fixed type 2007-10-07 08:16:38 +10:00
Dave Airlie 19b7cc3444 Merge branch 'pre-superioctl-branch' 2007-10-05 12:11:43 +10:00
Maarten Maathuis b510517d59 nouveau: Switch over to using PMC_BOOT_0 for card detection. 2007-10-04 09:31:46 +02:00
Maarten Maathuis 5ca12104f8 linux-drm: Obey device class requirements when detecting devices. 2007-10-04 09:24:48 +02:00
Dave Airlie 495bbbaadc drm: fix page count calculation
Also no need to do pre-populate work on single page
2007-10-04 16:13:22 +10:00
Ian Romanick 0379919e99 Use 'ifdef __BIG_ENDIAN' instead of 'if __BIG_ENDIAN' 2007-10-03 14:12:16 -07:00
Ian Romanick 7f99fd5d7a First round of byte-ordering fixes for PowerPC.
This isn't 100% as command submission via PCI-e GART buffers doesn't work.
I've hacked around that for the time being.  This is essentially the code
that was used at the POWER.org event to show Bimini.
2007-10-03 14:08:29 -07:00
Dave Airlie b0473699ed ttm: returning into dummy causes a buffer object leak
as nobody ever derefs dummy, however not returning does the deref
correctly.
2007-10-02 15:48:28 +10:00
Pekka Paalanen aa135ba8e8 nouveau: rename nv30_graph.c to nv20_graph.c 2007-09-30 22:16:01 +03:00
Pekka Paalanen 205403aea8 nouveau: nv30 graph function renames, removed nv20_graph.c
All nv30 functions in nv30_graph.c that can be used on nv20 are renamed
as accordingly. nv20 specific parts from nv20_graph.c are moved into
nv30_graph.c.
2007-09-30 22:16:01 +03:00
Michel Dänzer 215eab6ccf Don't build without any optimization on Linux.
Building without optimization causes the drm module not to link correctly on
ppc.
2007-09-29 18:07:55 +02:00
Alan Hourihane d69721a14a Set the fb_base, so userspace applications can actually work
now instead of locking up.
2007-09-28 09:21:09 +01:00
Alan Hourihane 2ed12b6b7e Add some more checks to modelist walking for matching
incoming modes to current modelist.
2007-09-27 14:21:03 +01:00
Keith Packard 24cdd2f8c4 Allow parallel module compile 2007-09-26 14:25:13 -07:00
Alan Hourihane 61dfd19de8 Add brackets 2007-09-26 16:18:33 +01:00
Alan Hourihane b44925b2a5 Add brackets 2007-09-26 16:18:19 +01:00
Alan Hourihane dfcf9272ce no need to copy to/from user as the unlocked ioctl does
that for us.

other small cleanups.
2007-09-26 15:40:40 +01:00
Alan Hourihane b2c4c7ae5e don't copy back if an error was returned. 2007-09-26 15:39:34 +01:00
Alan Hourihane 6671ad1917 don't copy back if an error was returned. 2007-09-26 15:38:54 +01:00
Jesse Barnes 053ff86566 Move map hash destruction to after driver unload hook is called
The driver unload routine will want to remove register and SAREA maps, so don't
destroy the map hash before we get there.
2007-09-25 16:16:33 -07:00
Jesse Barnes 5433bbbfde Remove buffer object user list check in drm_bo_destroy_unlocked
In the case of driver allocated buffers, there won't necessarily be a user list
associated with the buffer, so don't bug out on an empty list.
2007-09-25 16:15:48 -07:00
Thomas Hellstrom c4b3a0f602 Merge branch 'master' into pre-superioctl-branch
Conflicts:

	linux-core/drm_bo.c
	linux-core/drm_fence.c
	linux-core/drm_objects.h
	shared-core/drm.h
2007-09-25 18:03:31 +02:00
Dave Airlie bb5516f4f4 drm/ttm: fixup fence class naming and interfaces
This is some code for nouveau that Ben Skeggs worked on, and also
fixes the naming (having class in a system header file == C++ keyword == bad plan)
2007-09-25 16:17:17 +10:00
Jesse Barnes cbcbe80c09 Cleanup SDVO debug output
SDVO debug messages were incorrectly including severity prefixes in each print
rather than each unique line.  Fix it up.
2007-09-24 15:43:00 -07:00
Jesse Barnes 5cc3083179 Merge branch 'master' into modesetting-101 - TTM & typedef removal
Conflicts:

	linux-core/drmP.h
	linux-core/drm_bo.c
	linux-core/drm_drv.c
	linux-core/drm_objects.h
	shared-core/drm.h
	shared-core/i915_dma.c
	shared-core/i915_drv.h
	shared-core/i915_irq.c

Mostly removing typedefs that snuck into the modesetting code and
updating to the latest TTM APIs.  As of today, the i915 driver builds,
but there are likely to be problems, so debugging and bugfixes will
come next.
2007-09-24 14:41:46 -07:00
Thomas Hellstrom 54df1b9ff3 Fix pinned buffer fence class. 2007-09-22 14:30:55 +02:00
Thomas Hellstrom 0774090d5b Fix drm_bo.c compiling. 2007-09-22 13:59:56 +02:00
Thomas Hellstrom bea727b838 Make nouveau compile on older kernels. 2007-09-22 13:57:21 +02:00
Thomas Hellstrom da63f4ba0f Add fence error member.
Modify the TTM backend bind arguments.
Export a number of functions needed for driver-specific super-ioctls.
Add a function to map buffer objects from the kernel, regardless of where they're
currently placed.
A number of error fixes.
2007-09-22 13:57:13 +02:00
Eric Anholt 24e33627c5 Merge branch 'bo-set-pin'
This branch replaces the NO_MOVE/NO_EVICT flags to buffer validation with a
separate privileged ioctl to pin buffers like NO_EVICT meant before.  The
functionality that was supposed to be covered by NO_MOVE may be reintroduced
later, possibly in a different way, after the superioctl branch is merged.
2007-09-21 17:12:19 -07:00
Dave Airlie bc5423f168 drm_sysfs: update sysfs code from kernel 2007-09-20 14:01:29 +10:00
Eric Anholt 3d3a96ad4e Merge branch 'origin' into bo-set-pin 2007-09-19 15:55:58 -07:00
Ian Romanick a3881ad2fe Add ioc32 compat layer for XGI DRM. 2007-09-18 11:03:49 -07:00
Ian Romanick e7d4a26913 Fix ioc32 compat layer
Previously any ioctls that weren't explicitly listed in the compat ioctl
table would fail with ENOTTY.  If the incoming ioctl number is outside the
range of the table, assume that it Just Works, and pass it off to drm_ioctl.
This make the fence related ioctls work on 64-bit PowerPC.
2007-09-18 11:03:08 -07:00
Brian 41345b95a2 Added bool typedef added in kernel 2.6.19
This allows the xgi code to compile with older kernels.
2007-09-12 12:05:15 -06:00
Brian c453135789 Added idr_replace() function which was apparently added in Linux 2.6.18
Someone should probably double-check my work here since this is the
first time I've touched drm_compat.[ch]
2007-09-12 11:49:51 -06:00
Ian Romanick c597bd57ee Bump version to 1.0.0. 2007-09-06 15:20:52 -07:00
Ian Romanick fee49e2071 Merge branch 'master' of ssh+git://git.freedesktop.org/git/mesa/drm into xgi-0-0-2 2007-08-31 10:54:55 -07:00
Ian Romanick bb3da88601 Acutally emit the IRQ (duh) when setting the fence post. 2007-08-31 10:48:13 -07:00
Ian Romanick 9c5b9d458b Use ati_pcigart for PCI-e GART table handling. 2007-08-29 14:41:49 -07:00
Ian Romanick c46ffd6b29 Fix late night dumb-dumb mistake. 2007-08-29 00:23:30 -07:00
Ian Romanick 2bcd5b5e33 Use DRM_SPINLOCK / DRM_UNSPINLOCK macros. 2007-08-29 00:04:18 -07:00
Dave Airlie 589707b765 drm: remove XFREE86_VERSION macros 2007-08-28 15:17:36 +10:00
Ian Romanick 3383e8bd6b Remove unnecessary include. 2007-08-17 10:53:18 -07:00
Ian Romanick 0d3c741df1 Forgot to add this file on the last commit. 2007-08-16 13:43:04 -07:00
Eric Anholt 0055fd5c35 Merge branch 'master' into bo-set-pin 2007-08-16 09:23:09 -07:00
Ian Romanick d8a800b63d Implement fence support. 2007-08-15 21:05:26 -07:00
Eric Anholt b668d6d905 Fix dev->agp->base initialization on BSD, and fix addmap range check on Linux.
With the previous linux commit, an AGP aperture at the end of the address space
would have wrapped to 0 and the test would have failed.
2007-08-15 14:29:31 -07:00
Ben Skeggs c3faa589b0 nouveau: Allow GART notifiers when using sgdma code. 2007-08-15 13:36:54 +10:00
Ian Romanick f563a50d14 Eliminate unused / useless ioctls. 2007-08-14 13:44:51 -07:00
Ian Romanick 7b12174aac Clean up remaining C++ style comments. 2007-08-14 13:24:02 -07:00
Ian Romanick d3c8e98dd9 Move dwWriteReg to xgi_cmdlist.c, the only file where it is used. 2007-08-14 13:20:37 -07:00
Ian Romanick be76f0eea9 Remove unused interrupt related functions. 2007-08-14 13:19:48 -07:00
Ian Romanick 891714d8d7 Clean up xgi_(en|dis)able_(mmio|ge) and move to xgi_misc.c. 2007-08-14 13:18:44 -07:00
Eric Anholt 3ee211f4f7 Bug #11895: Only add the AGP base to map offset if the caller didn't.
The i830 and newer intel 2D code adds the AGP base to map offsets already,
because it wasn't doing the AGP enable which used to set dev->agp->base.

Credit goes to Zhenyu for finding the issue.
2007-08-13 16:32:32 -07:00
Ian Romanick 15f841bd52 Strobe magic 0xB03F register to flush PCI-e GART table.
The original XGI kernel driver strobed 0xB03F each time a page was
allocated to back a GART page.  When the driver was converted to use
the DRM SG interface, this code was lost.  Returning it fixes a long
standing issue where the X-server would work fine the first time, but
acceleration commands would be ignored on the second X-server
invocation.
2007-08-13 16:21:20 -07:00
Ian Romanick 20a0e5e429 After calling drm_sman_cleanup, mark both heaps as uninitialized.
Since the heaps weren't marked as uninitialized, SG memory was never
re-allocated.  This prevented the X-server from being able to restart
without re-loading the kernel module.
2007-08-09 18:57:15 -07:00
Ian Romanick 06e09842df Use DRM_MEMORYBARRIER() macro instead of mb(). 2007-08-09 18:28:16 -07:00
Ian Romanick 371f0a4d41 Mask off correct bits in M2REG_AUTO_LINK_STATUS for interrupt handling. 2007-08-09 18:15:42 -07:00
Ian Romanick 6dd97099ea Minor clean up of IRQ code. Much, much more to come. 2007-08-09 16:20:44 -07:00
Ian Romanick dbd4d0597f Use sman memory manager instead of internal version. 2007-08-09 16:01:14 -07:00
Ian Romanick aea6b4dea9 Unify alloc and free ioctls.
The DRM_XGI_PCIE_ALLOC and DRM_XGI_FB_ALLOC ioctls (and the matching
free ioctls) are unified to DRM_XGI_ALLOC.  The desired memory region
is selected by xgi_mem_alloc::location.  The region is magically
encoded in xgi_mem_alloc::index, which is used to release the memory.

Bump to version 0.11.0.  This update requires a new DDX.
2007-08-09 15:30:36 -07:00
Ian Romanick 25cb876f85 Associate master file pointer with command list buffer.
Pass the master's file pointer, as supplied to xgi_bootstrap, to
xgi_cmdlist_initialize.  Associate that pointer with the memory
allocated for the command list buffer.  By doing this the memory will
be automatically cleaned up when the master closes the device.  This
allows the removal of some clean up code.
2007-08-09 15:23:13 -07:00
Ian Romanick f7ba02b745 Unify infrastructure for freeing on-card / GART memory. 2007-08-06 17:27:15 -07:00
Ian Romanick 6718198897 Release client memory in reclaim_buffers_idlelocked instead of preclose. 2007-08-06 16:56:20 -07:00
Ian Romanick f3072becda Refactor xgi_(fb|pcie)_free_all into xgi_free_all. 2007-08-06 16:35:07 -07:00
Ian Romanick 90907c5915 Replace per-heap semaphores with drm_device::struct_mutex. 2007-08-06 16:17:23 -07:00
Ian Romanick f96bff9e21 Unify infrastructure for allocating (not yet freeing) on-card / GART memory. 2007-08-06 16:09:05 -07:00
Ian Romanick 5362cc723e Eliminate unnecessary function xgi_pcie_free_locked. 2007-08-06 15:52:06 -07:00
Eric Anholt d749cc9ae8 Initialize the AGP structure's base address at init rather than enable.
Not all drivers call enable (intel), but they would still like to use this
member in driver code.
2007-08-06 15:45:37 -07:00
Ian Romanick a6fb93a150 Finish removing allocation "owner" infrastructure. 2007-08-06 15:43:51 -07:00
Ian Romanick 78e9c1a93d Eliminate special-case handling of framebuffer (fake) allocation. 2007-08-06 15:37:56 -07:00
Ian Romanick 997a9a738e Eliminate allocation "owner" usage. 2007-08-06 15:31:34 -07:00
Ben Skeggs 8d5a8ebc31 nouveau: ouch, add nouveau_dma.[ch] files.. 2007-08-06 22:32:36 +10:00
Ben Skeggs 92084c6e05 Export some useful ttm functions to drivers. 2007-08-06 22:11:18 +10:00
Ben Skeggs cf04641bc6 nouveau: Give DRM its own gpu channel
If your card doesn't have working context switching, it is now broken.
2007-08-06 22:05:31 +10:00
Ben Skeggs 97770db720 nouveau: Various internal and external API changes
1. DRM_NOUVEAU_GPUOBJ_FREE
	Used to free GPU objects.  The obvious usage case is for Gr objects,
	but notifiers can also be destroyed in the same way.

	GPU objects gain a destructor method and private data fields with
	this change, so other specialised cases (like notifiers) can be
	implemented on top of gpuobjs.

2. DRM_NOUVEAU_CHANNEL_FREE

3. DRM_NOUVEAU_CARD_INIT
	Ideally we'd do init during module load, but this isn't currently
	possible.  Doing init during firstopen() is bad as X has a love of
	opening/closing the DRM many times during startup.  Once the
	modesetting-101 branch is merged this can go away.

	IRQs are enabled in nouveau_card_init() now, rather than having the
	X server call drmCtlInstHandler().  We'll need this for when we give
	the kernel module its own channel.

4. DRM_NOUVEAU_GETPARAM
	Add CHIPSET_ID value, which will return the chipset id derived
	from NV_PMC_BOOT_0.

4. Use list_* in a few places, rather than home-brewed stuff.
2007-08-06 21:45:18 +10:00
Ben Skeggs beaa0c9a28 nouveau: Pass channel struct around instead of channel id. 2007-08-06 03:40:43 +10:00
Eric Anholt 3a0bc518e3 Remove the pinned buffer from the LRU when pinning.
Also, be a little safer with setting the pinned flag within the struct lock.
I'm not 100% sure if this is required, but it seems like it might be.
2007-08-02 14:08:04 -07:00
Eric Anholt cf4f1a85af Add a couple of doxygen comments from reading the code. 2007-08-02 13:51:55 -07:00
Dave Airlie 7602e4f8a6 drm: add unlocked ioctl code path - not used yet 2007-08-02 19:13:58 +10:00
Ian Romanick f83000c8b3 Refactor register dumping code. 2007-07-31 17:27:00 -07:00
Dave Airlie c395d27a72 drm/fence: shut up lockdep 2007-08-01 10:12:36 +10:00
Dave Airlie 283eaa2559 drm: fix fencing refcount error
This extra increase was causing fence leaks on my system, due to create/user add already increasing it twice no need for a 3rd go.
2007-07-31 09:25:51 +10:00
Ian Romanick 08919d8a70 Move additional GE initialization into the kernel.
This code comes directly from the X server.
2007-07-30 12:01:52 -07:00
Ian Romanick 2fc697a7d2 Fix GE shut-down sequence.
When the GE is shut down, an empty command packet without a begin-link
must be sent.  After this command is sent, wait for the hardware to go
idle.  Finally, turn off the GE and disable MMIO.
2007-07-30 10:20:15 -07:00
Ian Romanick 01628a430d Use DRM_READ/DRM_WRITE macros instead of directly accessing MMIO space. 2007-07-30 10:02:46 -07:00
Ian Romanick 2ac80e79e4 Use OUT3C5B macro instead of assuming little-endian byte order. 2007-07-30 09:59:19 -07:00
Ian Romanick cd51f13138 Convert to new ioctl interface between core DRM and device-specific module. 2007-07-27 15:45:59 -07:00
Ian Romanick c37ed9eca5 Eliminate use of DRM_ERR. 2007-07-26 17:01:16 -07:00
Ian Romanick b89cc03465 Eliminate unnecessary (and now wrong) call gto drm_sg_free. 2007-07-26 16:58:59 -07:00
Ian Romanick c561cb4650 Merge branch 'master' of ssh+git://git.freedesktop.org/git/mesa/drm into xgi-0-0-2
Conflicts:

	linux-core/drmP.h
	linux-core/drm_scatter.c
2007-07-26 16:58:28 -07:00
Eric Anholt 3c8ebd94e4 debug print ioctl return value as -integer rather than fffffwhatever. 2007-07-26 11:26:12 -07:00
Eric Anholt f9c27aa50b Copy the important parts of object_validate into object_create().
This should let us allocate buffers without holding the hardware lock.

While here, add DRM_DEBUG info for the drm_bo ioctls, so you can see something
more specific than just the cmd value per ioctl.
2007-07-26 11:18:27 -07:00
Eric Anholt cf2d569dac Replace NO_MOVE/NO_EVICT flags to buffer objects with an ioctl to set pinning.
This cleans up the create/validate interfaces for this very uncommon path, and
makes pinned object creation much easier to use for the X Server.
2007-07-26 10:15:11 -07:00
Dave Airlie 4175dd8181 drm/bo: set the req pointer for each buffer to validate 2007-07-26 15:26:36 +10:00
Dave Airlie e2d00715cc drm: fix size argument for copy to/from user 2007-07-26 13:26:04 +10:00
Ian Romanick 2bafeb673f Fix typo on previous commit. Sigh... 2007-07-24 16:17:30 -07:00
Ian Romanick 75a68635a8 Pass correct offset to xgi_find_pcie_virt.
The wrong offset was being passed to xgi_find_pcie_virt.  This would
cause an oops in addFlush2D.
2007-07-24 15:53:50 -07:00
Ian Romanick 8e64d2ae86 Fix license formatting. 2007-07-24 13:36:02 -07:00
Ian Romanick 2ef2997ee3 Fix flags for serveral ioctls. 2007-07-24 13:29:29 -07:00
Ian Romanick 887cb31ee9 Fix bug preventing X server from restarting.
The core DRM lastclose routine automatically destroys all mappings and
releases SG memory.  XP10 DRM and DDX assumed this data stayed around
until module unload.  xgi_bootstrap was reworked to recreate all these
mappings.  In addition, the drm_addmap for the GART backing store was
moved into the kernel.  This causes a change to the ioctl protocol and
a version bump.
2007-07-24 13:27:44 -07:00
Ian Romanick 46214fc397 Minor log message clean up. 2007-07-23 18:50:52 -07:00
Ian Romanick 388a2c54ee Minor log message clean up. 2007-07-23 18:50:07 -07:00
Eric Anholt 03e932e32b linux: Make DRM_IOCTL_GET_CLIENT return EINVAL when it can't find client #idx.
Fixes the getclient test and dritest -c.
2007-07-23 15:11:12 -07:00
Ian Romanick 2097d743f2 Eliminate XGI_CHECK_PCI_CONFIG.
Based on review comments from airlied, XGI_CHECK_PCI_CONFIG is
removed.  He believes (and I tend to agree) that this is a largely
unnecessary workaround for a bug elsewhere.
2007-07-23 13:26:28 -07:00
Adrian Bunk 7e6d08f670 drm_rmmap_ioctl(): remove dead code
This patch removes some obviously dead code spotted by the Coverity
checker.

Signed-off-by: Adrian Bunk <bunk@stusta.de>
2007-07-23 18:15:00 +10:00
Ian Romanick 94203840fe Bump version. 2007-07-21 23:00:01 -07:00
Ian Romanick 699207cf2f Remove some extraneous debug messages. 2007-07-21 21:37:45 -07:00
Ian Romanick 1a0775760c Rename and document fields of xgi_cmdring_info. 2007-07-21 21:35:06 -07:00
Ian Romanick 3265a61f89 Make s_cmdring a field in the xgi_info structure instead of a global. 2007-07-21 20:39:22 -07:00
Ian Romanick 5d6fdd9d79 Clean up xgi_cmd_info and associated code.
There were numerous unnecessary fields in xgi_cmd_info.  The remaining
fields had pretty crummy names.  Cut out the cruft, and rename the
rest.  As a result, the unused parameter "triggerCounter" to
triggerHWCommandList can be removed.
2007-07-21 20:34:56 -07:00
Pekka Paalanen 0844c46759 Fix misc ioctl issues, makes Nouveau run.
Debug print fix in drm_release().
Forgotten local variable init in drm_setversion().
Unnecessary put_user() in drm_addmap_ioctl().
ioctl->cmd check broken in drm_ioctl(); workaround.
2007-07-21 23:13:25 +03:00
Dave Airlie b43b0b2b32 fix missing brace placement for IOC_IN 2007-07-21 22:11:41 +10:00
Dave Airlie f68ad6d1ab fix drm no-compile due to BSD :-) 2007-07-21 21:50:25 +10:00
Eric Anholt 5b38e13416 Replace DRM_IOCTL_ARGS with (dev, data, file_priv) and remove DRM_DEVICE.
The data is now in kernel space, copied in/out as appropriate according to the
This results in DRM_COPY_{TO,FROM}_USER going away, and error paths to deal
with those failures.  This also means that XFree86 4.2.0 support for i810 DRM
is lost.
2007-07-20 18:16:42 -07:00
Eric Anholt c1119b1b09 Replace filp in ioctl arguments with drm_file *file_priv.
As a fallout, replace filp storage with file_priv storage for "unique
identifier of a client" all over the DRM.  There is a 1:1 mapping, so this
should be a noop.  This could be a minor performance improvement, as everything
on Linux dereferenced filp to get file_priv anyway, while only the mmap ioctls
went the other direction.
2007-07-20 13:39:45 -07:00
Eric Anholt e39286eb5e Remove DRM_ERR OS macro.
This was used to make all ioctl handlers return -errno on linux and errno on
*BSD.  Instead, just return -errno in shared code, and flip sign on return from
shared code to *BSD code.
2007-07-20 12:53:52 -07:00
Eric Anholt 5dc9fd96d7 Fix linux spinlock macros after the last commit. 2007-07-20 12:55:51 -07:00
Ian Romanick ed82d5398a Clean up flush command generation in addFlush2D. 2007-07-20 11:31:01 -07:00
Ian Romanick 659209cb2d Clean up generation of begin commands in xgi_submit_cmdlist
Generate the begin command once in a temporary buffer.  Then,
depending on whether the command is to be written directly to the
hardware or to a secondary buffer, copy to command to the correct place.
2007-07-20 11:29:16 -07:00
Ian Romanick 6bd8483074 Change handling of begin types slightly.
Moved the getCurBatchBeginPort before its only caller.  Modified
function to return the command ID instead of the port offset.
Function also now assumes input begin type is value.

Added code to ioctl handler to validate begin type.
2007-07-20 10:57:40 -07:00
Jakob Bornecrantz 9ccb8440f3 Changed mode config spinlock to mutex 2007-07-20 11:36:57 +02:00
Ian Romanick 56665a42f4 Delete unused variable in xgi_driver_load. 2007-07-19 19:09:24 -07:00
Ian Romanick 970674f486 Fix error handing related to xgi_cmdlist_initialize.
xgi_cmdlist_initialize wasn't correctly checking for errors from
xgi_pcie_alloc.  Furthermore, xgi_bootstrap, the one caller of
xgi_cmdlist_initialize, wasn't check its return value.
2007-07-19 19:08:47 -07:00
Ian Romanick a33f548729 Debug message and comment clean up in xgi_submit_cmdlist. 2007-07-19 19:05:52 -07:00
Ian Romanick 15245b670e Rework xgi_(pcie|fb)_free_all to prevent deadlock. 2007-07-19 11:38:56 -07:00
Ian Romanick 2f53ce4af2 Move MMIO drm_addmap (and code that depends on it) to xgi_bootstrap.
For reasons that I don't understand, the drm_addmap call would succeed
in xgi_driver_load, but writes to the map later would oops.  Moving it
to xgi_bootstrap fixes this problem.
2007-07-19 11:05:13 -07:00
Ian Romanick 5ba94c2ab8 Initial pass at converting driver to DRM infrastructure. 2007-07-19 10:29:18 -07:00
Jakob Bornecrantz 43c9abdedc Fix unlocking of spinlock when we should not 2007-07-19 16:58:23 +02:00
Eric Anholt 05204b9c8d Merge branch 'origin' 2007-07-19 06:31:26 -07:00
Eric Anholt 33a50412c2 Add dry-coded DRM drawable private information storage for FreeBSD.
With this, all modules build again.
2007-07-18 14:22:49 -07:00
Thomas Hellstrom 1ff858fe3a Fix via dmablit when blit queue is full.
Fix by Simon Farnsworth, Bugzilla Bug #11542
http://bugs.freedesktop.org/show_bug.cgi?id=11542
2007-07-18 10:40:03 +02:00
Dave Airlie a64b5d8d37 fix some missing whitespace/tab 2007-07-18 15:49:45 +10:00
Dave Airlie 3a71e87742 drm: idr stuff is upstream for 2.6.23 2007-07-18 09:46:16 +10:00
Dave Airlie 6ad1df2176 drm: remove drm_u64_t, replace with uint64_t everwhere
This might break something, stdint.h inclusion in drm.h maybe required
but I'm not sure yet what platforms have it what ones don't.
2007-07-18 09:42:06 +10:00
Dave Airlie bff698d0ed drm_context: fix braino 2007-07-18 09:27:21 +10:00
Ian Romanick 7f98815d00 Make drm_sg_free callable in-kernel. 2007-07-16 22:15:01 -07:00
Ian Romanick bcba7ba981 Log message clean up in WriteRegDWord. Remove unused inline functions. 2007-07-16 21:15:58 -07:00
Ian Romanick 5b08ab258f Clean ups (primarilly log messages) in xgi_test_rwinkernel. 2007-07-16 21:12:30 -07:00
Ian Romanick 658ff2daf3 Eliminate several useless ioctls and associated cruft.
The ioctlss XGI_ESC_DEVICE_INFO, XGI_ESC_MEM_COLLECT,
XGI_ESC_PCIE_CHECK, XGI_ESC_GET_SCREEN_INFO, XGI_ESC_PUT_SCREEN_INFO,
XGI_ESC_MMIO_INFO, and XGI_ESC_SAREA_INFO, are completely unnecessary.
The will be doubly useless when the driver is converted to the DRM
infrastructure.
2007-07-16 20:58:43 -07:00
Ian Romanick 4575d5b8f1 Massive log message clean up in xgi_submit_cmdlist. 2007-07-16 20:56:11 -07:00
Ben Skeggs ec67c2def9 nouveau: G8x PCIEGART
Actually a NV04-NV50 ttm backend for both PCI and PCIEGART, but PCIGART
support for G8X using the current mm has been hacked on top of it.
2007-07-17 13:51:14 +10:00
Dave Airlie 0be629a914 drm/radeon/ttm: more VRAM fixes 2007-07-16 14:45:47 +10:00
Dave Airlie 23631fca09 drm: fixup old kernel compat code 2007-07-16 13:52:21 +10:00
Dave Airlie 0accdc1f69 drm: fixup compat wrappers 2007-07-16 13:50:04 +10:00
Dave Airlie 535e3dec8c drm: remove internal sman typedef 2007-07-16 13:46:37 +10:00
Dave Airlie 191c062933 drm: remove drm_ref_t 2007-07-16 13:45:39 +10:00
Dave Airlie 24311d5d82 drm: remove drm_buf_t 2007-07-16 13:42:11 +10:00
Dave Airlie be85ad0333 drm: detypedef ttm/bo/fence code 2007-07-16 13:37:02 +10:00
Dave Airlie 6dce9e0735 drm: remove hashtab/sman and object typedefs 2007-07-16 12:48:44 +10:00
Dave Airlie 21ee6fbfb8 drm: remove drmP.h internal typedefs 2007-07-16 12:32:51 +10:00
Dave Airlie 1a07256d60 drm: remove ttm userspace typedefs 2007-07-16 11:30:53 +10:00
Dave Airlie b95ac8b7b3 drm: detypedef drm.h and fixup all problems 2007-07-16 11:22:15 +10:00
Dave Airlie 4be9554fcd drm: fix typedef in drm_os_linux.h 2007-07-16 11:13:07 +10:00
Dave Airlie 2134193af6 Merge branch 'drm-ttm-cleanup-branch' 2007-07-16 10:05:20 +10:00
Ian Romanick 5522136b7f Merge branch 'master' into xgi-0-0-2 2007-07-12 15:28:17 -07:00
Dave Airlie ead9cd64bd radeon: add VRAM support for radeon ttm
This needs a lot of testing
2007-07-12 14:26:03 +10:00
Dave Airlie 5c6a23704a Merge branch 'radeon-ttm' of git://people.freedesktop.org/~airlied/drm into radeon-ttm
Conflicts:

	linux-core/ati_pcigart.c
	linux-core/drmP.h
	linux-core/radeon_buffer.c
2007-07-12 14:25:29 +10:00
Ben Skeggs 750371cb6e nouveau: separate region_offset into map_handle and offset. 2007-07-12 10:46:57 +10:00
Dave Airlie 2c9e05cf4c Merge branch 'master' into cleanup
Conflicts:

	libdrm/xf86drm.c
	linux-core/drm_bo.c
	linux-core/drm_fence.c
2007-07-11 11:23:41 +10:00
Arthur Huillet 04e4922c0c Made drm_sg_alloc accessible from inside the DRM - drm_sg_alloc_ioctl is the ioctl wrapper 2007-07-11 02:34:00 +02:00
Ian Romanick 76ca1e858f Convert occurances of U32 to other types.
Most occurances of U32 were converted to u32.  These are cases where
the data represents something that will be written to the hardware.
Other cases were converted to 'unsigned int'.

U32 was the last type in xgi_types.h, so that file is removed.
2007-07-09 18:54:25 -07:00
Ian Romanick 5c481d0a42 Eliminiate fields in xgi_info that are duplicates of fields in pci_dev. 2007-07-09 16:43:48 -07:00
Ian Romanick 1f4e24b429 Move types shared with user mode to xgi_drm.h. 2007-07-09 16:33:14 -07:00
Ian Romanick 7268b65d5c Correct types that are shared with user mode. 2007-07-09 16:22:48 -07:00
Ian Romanick a3f56dc3d0 Adjust the types of the fields of xgi_aperture. 2007-07-09 16:07:27 -07:00
Ian Romanick 2f2d8b9688 Merge xgi_mem_req and xgi_mem_alloc into a single type.
These two structures were used as the request and reply for certain
ioctls.  Having a different type for an ioctl's input and output is
just wierd.  In addition, each structure contained fields (e.g., pid)
that had no business being there.

This change requires updates to user-space.
2007-07-09 15:59:09 -07:00
Ben Skeggs c806bba466 nouveau/nv50: Initial channel/object support
Should be OK on G84 for a single channel, multiple channels *almost* work.

Untested on G80.
2007-07-09 16:16:44 +10:00
Ian Romanick 86e75b7f7f Remove XGI_IOCTL_CPUID and associated cruft. 2007-07-05 17:49:13 -07:00
Ian Romanick 8b18276458 Major clean up of xgi_ge_irq_handler
Two large blocks of code were moved out of this function into separate
functions.  This brought some much needed sanity to the indentation.
Some dead varaibles were removed.
2007-07-05 17:45:44 -07:00
Ian Romanick 2695e8e209 Convert weird rtdsc usage to get_cycles.
I'm not convinced that get_cycles is the right approach here, but it's
better than the weird way that rtdsc was being used.
2007-07-05 17:18:12 -07:00
Kristian Høgsberg d57b7f02d2 Use idr_replace trick to eliminate struct drm_ctx_sarea_list. 2007-07-03 10:41:48 -04:00
Kristian Høgsberg 1814a829eb Don't take dev->struct_mutex twice in drm_setsareactx. 2007-07-03 10:31:46 -04:00
Michel Dänzer ea832a8e55 Simplification for previous commit.
Dave Airlie pointed out on IRC that idr_replace lets us know if the ID hasn't
been allocated, so we don't need a special pointer value for allocated IDs that
don't have valid information yet.
2007-07-03 12:15:15 +02:00
Michel Dänzer 8d96ba9805 Restore pre-idr semantics for drawable information.
There's a difference between a drawable ID not having valid drawable
information and not being allocated at all. Not making the distinction would
break i915 DRM swap scheduling with older X servers that don't push drawable
cliprect information to the DRM.
2007-07-03 11:41:44 +02:00
Kristian Høgsberg c9d752ff4f Fix must-check warnings and implement a few error paths. 2007-07-02 17:52:07 -04:00
Kristian Høgsberg b323ab52aa Drop drm_drawable_list and add drm_drawable_info directly to the idr. 2007-07-02 15:07:02 -04:00