Commit Graph

136 Commits (6d59bad8e9cab6170e1af3d67597b6f5f145c33f)

Author SHA1 Message Date
Thomas Hellstrom e1460426b8 Bugzilla Bug #9457
Add refcounting of user waiters to the DRM hardware lock, so that we can use the
DRM_LOCK_CONT flag more conservatively.

Also add a kernel waiter refcount that if nonzero transfers the lock for the kernel context,
when it is released. This is useful when waiting for idle and can be used
for very simple fence object driver implementations for the new memory manager.

It also resolves the AIGLX startup deadlock for the sis and the via drivers.
i810, i830 still require that the hardware lock is really taken so the deadlock remains
for those two. I'm not sure about ffb. Anyone familiar with that code?
2007-02-13 20:47:30 +01:00
Thomas Hellstrom 609e3b0375 Implement a policy for selecting memory types. 2007-02-06 14:20:33 +01:00
Dave Airlie 87faf62fae fixup permission along line of kernel 2007-01-01 11:22:35 +11:00
Dave Airlie 86ff2aeb9b drm: remove all 2.4 support for drm development tree.
Bye bye 2.4 you served us well..
2006-12-19 20:29:03 +11:00
Thomas Hellstrom 38ed67196f Remove the memory caches for fence objects and memory manager nodes,
since the support for memory caches has gone from 2.6.20.
2006-12-15 12:37:24 +01:00
Thomas Hellstrom e22b04f807 Merging drm-ttm-0-2-branch
Conflicts:

	linux-core/drmP.h
	linux-core/drm_drv.c
	linux-core/drm_irq.c
	linux-core/drm_stub.c
	shared-core/drm.h
	shared-core/i915_drv.h
	shared-core/i915_irq.c
2006-10-18 17:33:19 +02:00
Thomas Hellstrom f22f89e6b3 Add vma list memory usage to memory accounting.
Use byte unit for /proc printout of memory usage for small sizes to be
able to detect memory allocation bugs more easily.
2006-10-17 19:52:34 +02:00
Thomas Hellstrom 5881ce1b91 Extend generality for more memory types.
Fix up init and destruction code.
2006-10-17 11:05:37 +02:00
Thomas Hellstrom c58574c605 Use a nopage-based approach to fault in pfns. 2006-10-10 10:37:26 +02:00
Thomas Hellstrom a31046b873 Add a buffer object manager for TTM maps. 2006-10-02 14:03:15 +02:00
Michel Dänzer 3a16e615ca Make locked tasklet handling more robust.
Initialize the spinlock unconditionally when struct drm_device is filled in,
and return early in drm_locked_tasklet() if the driver doesn't support IRQs.
2006-10-02 11:04:42 +02:00
Michel Dänzer 9810ec2737 Add support for tracking drawable information to core
Actually make the existing ioctls for adding and removing drawables do
something useful, and add another ioctl for the X server to update drawable
information. The only kind of drawable information tracked so far is cliprects.
(cherry picked from 29598e5253 commit)
2006-09-29 12:55:08 +02:00
Michel Dänzer 29598e5253 Add support for tracking drawable information to core
Actually make the existing ioctls for adding and removing drawables do
something useful, and add another ioctl for the X server to update drawable
information. The only kind of drawable information tracked so far is cliprects.
2006-09-28 15:41:35 +02:00
Eric Anholt 55057660f0 Put the PCI device/vendor id in the drm_device_t.
This helps us unbreak FreeBSD DRM from the 965 changes.
2006-09-06 23:25:14 -07:00
Thomas Hellstrom a6b8e3eaf4 Make memory caches global so that they can be used with
multiple heads.
2006-09-04 16:57:20 +02:00
Thomas Hellstrom 11f51a9a87 Bugfixes,
Memory allocation optimizations.
Buffer manager takedown.
2006-09-01 15:41:55 +02:00
Thomas Hellstrom 4ddabd1562 Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/drm into drm-ttm-0-2-branch
Conflicts:

	linux-core/drmP.h
2006-08-28 09:28:10 +02:00
Dave Airlie 9b984b34e9 drm: lots of small cleanups and whitespace issues fixed up
remove a mach64 warning, align a lot of things from linux kernel
2006-08-28 11:31:43 +10:00
Dave Airlie 205c573e44 remove local copies of pci domain/bus/slot/num 2006-08-28 11:27:09 +10:00
Thomas Hellstrom 166da9355d User / Kernel space fence objects (device-independent part). 2006-08-21 21:02:08 +02:00
Thomas Hellstrom 42c2cfcf7d Generic DRM support base-class support for user-space objects, like
fence objects and buffer objects:
Refcounting,
Inter-process sharing,
Synchronization
Destruction.
2006-08-21 20:30:19 +02:00
Dave Airlie 5cfbd5dbab switch drm to use Linux mutexes instead of semaphore.
I hope the fallback compat code works if not shout at me.
2006-07-24 10:51:27 +10:00
Thomas Hellstrom a392349691 Change drm Map handles to be arbitrary 32-bit hash tokens in the range
0x10000000 to 0x90000000 in PAGE_SIZE increments.
Implement hashed map lookups.
This potentially breaks both 2D and 3D drivers. If so, the corresponding
2D and 3D driver should be fixed, and it's corresponding drm device driver
    should have its major bumped as soon as possible.
Bump sis and via drm device driver majors.
The SiS and Unichrome 3D drivers are fixed in Mesa CVS HEAD and
    mesa_6_4_branch.
2006-07-10 13:00:21 +00:00
Dave Airlie b2523e7aa1 always enable and set master on pci device 2006-02-18 04:18:45 +00:00
Dave Airlie 4791dc8856 major realigment of DRM CVS with kernel code, makes integration much easier 2006-02-18 02:53:36 +00:00
Dave Airlie 92150972e5 use drm_cards_limit instead of cards_limit 2006-01-02 05:54:10 +00:00
Eric Anholt c789ea1521 Rename the driver hooks in the DRM to something a little more
understandable: preinit -> load postinit -> (removed) presetup ->
    firstopen postsetup -> (removed) open_helper -> open prerelease ->
    preclose free_filp_priv -> postclose pretakedown -> lastclose
    postcleanup -> unload release -> reclaim_buffers_locked version ->
    (removed)
postinit and version were replaced with generic code in the Linux DRM
    (drivers now set their version numbers and description in the driver
    structure, like on BSD). postsetup wasn't used at all. Fixes the savage
    hooks for initializing and tearing down mappings at the right times.
    Testing involved at least starting X, running glxgears, killing
    glxgears, exiting X, and repeating.
Tested on: FreeBSD (g200, g400, r200, r128) Linux (r200, savage4)
2005-08-05 03:50:23 +00:00
Jon Smirl 04fea06002 Simplify the sysfs code 2005-07-03 18:07:03 +00:00
Jon Smirl d41af11ee3 Add sysfs attribute dri_library_name on Linux. code in share-core/via_drv.c
is ok to be shared, it will be passive on BSD.
2005-07-03 17:16:12 +00:00
Alan Hourihane b6b270a260 Given that BenH says using the sysdev approach for DRM is bogus, I'll yank
the code for it, rather than introducing something that isn't going to
    work 100% of the time.
2005-06-28 08:03:33 +00:00
Jon Smirl 7586a655fc Fix drm_memory_debug.c to compile, doesn't seem to be working Clean up
error return path in drm_stub.c
2005-06-23 05:29:16 +00:00
Jon Smirl 4152605ea1 Get the power management hooks into the right place so that everything gets
freed correctly.
2005-06-22 05:49:56 +00:00
Dave Airlie 805a07714f misc cleanup patch from Adrian Bunk 2005-06-04 06:18:11 +00:00
Alan Hourihane 54fbf85125 Actually check for drm_fb_loaded before trying to initialize the sysdev
approach.
2005-05-28 00:08:53 +00:00
Alan Hourihane 45f1db8db9 Re-implement the power management.
There's two choices when fb is or isn't loaded as we treat ourselves as a
    PCI driver in the latter case.
If we are a PCI driver, then register the suspend/resume functions
    directly. If not, then we register as a sysdev and pick up the
    suspend/resume actions and pump them down into a generic *power
    function.
It'll be nice when this little mess is sorted out with regard to being a
    real PCI driver ;-/
2005-05-28 00:00:08 +00:00
Ian Romanick e051cd19c0 Added device_is_agp callback to drm_driver. This function is called by the
platform-specific drm_device_is_agp function. Added implementation of
    this function the the Linux-specific portion of the MGA driver to
    detect PCI G450 cards. Added code to the Linux-specific portion of the
    generic DRM layer to not initialize AGP infrastructure if the card is
    not AGP (this matches what already existed in BSD).
Bumped the driver date and the driver patch-level for MGA.
This mostly fixes bugzilla #3248. The BSD side still needs an
    implementation of mga_driver_device_is_agp.
2005-05-16 17:37:10 +00:00
Dave Airlie 956a701544 fix up AGP multi-head support for kernel 2.6.12 2005-03-25 09:48:34 +00:00
Dave Airlie df6ef4836e For 2.6.12 and 2.6.11.x:
Remove incorrect "drm_"-prefix from parameter description.
Signed-off-by: Magnus Damm <damm@opensource.se>
2005-03-25 09:01:27 +00:00
Dave Airlie 03ddea5b27 change DRIVER_ to CORE_ makes things look nicer, also change it so the
driver name is marked on resource allocations
2005-02-07 11:20:43 +00:00
Jon Smirl 816a291709 Switch SPIN_LOCK_UNLOCKED to spin_lock_init() 2004-10-29 17:09:54 +00:00
Jon Smirl c611cb9f17 Add include of moduleparam.h 2004-10-29 14:38:07 +00:00
Jon Smirl 9ea6fe7aa6 Prepare to eliminate inter_module_get("agp") 2004-10-23 04:21:27 +00:00
Jon Smirl 7ebbebf3d3 Switch linux-core from using dev->pdev->driver->name to
dev->driver->pci_driver.name. This avoids the stealth mode case where
    pdev is pointing to the wrong driver or no driver.
2004-10-20 05:11:49 +00:00
Jose Fonseca 0d89b19325 Update Doxygen configuration & comments. 2004-10-18 14:16:41 +00:00
Jon Smirl fa50e2b513 Switch linux-core over to 2.6 parameter model to enable debug use
drm_debug=1
2004-10-15 02:59:35 +00:00
Jon Smirl ad70dc676e Breakout heads into their own data structures. 2004-10-12 03:59:17 +00:00
Jon Smirl ad549c5ae6 Rename fn_tbl to driver. Core driver now uses pci_driver name which
reflects the personality name.
2004-10-10 22:54:55 +00:00
Jon Smirl 6dee8401a6 enable the device in the right order, remove __devinit from drm_int 2004-10-05 02:58:14 +00:00
Jon Smirl 9f9a8f1382 Lindent of core build. Drivers checked for no binary diffs. A few files
weren't Lindent's because their comments didn't convert very well. A
    bunch of other minor clean up with no code implact included.
2004-09-30 21:12:10 +00:00
Jon Smirl 1c0a437fa2 Move things around to reduce public symbols and even out files. Switch to
get_order from drm_order.
2004-09-30 19:26:35 +00:00
Jon Smirl 3aef3841d0 Make fops per driver instead of global, remove default flush, poll, read
functions
2004-09-30 18:13:33 +00:00
Jon Smirl fa6b1d129e First check in for DRM that splits core from personality modules 2004-09-27 19:51:38 +00:00
Jon Smirl 36a257cfe9 Remove 2.6 code that allow DRM major device number to be shared. We can add
it back later if needed. Checked DRM on both 2.4 and
2.6 to ensure that it builds and runs.
2004-09-23 17:22:27 +00:00
Jon Smirl c158a36c4c 1) switches from class_sysfs to drm sysfs implementation to allow
customization
2) compiles again on 2.4, but doesn't work
2004-09-23 05:39:15 +00:00
Jon Smirl 27fc998f7d Remove hotplug reset support from DRM driver. This will be handled by the
VGA driver when it gets written.
2004-09-22 19:13:02 +00:00
Jon Smirl c7c9d3ef7b Let's try adding the dyn-minor patch again. This patch will reuse minor
numbers if a card is hotplugged in/out instead of just having them
    increase.
2004-09-16 18:42:03 +00:00
Jon Smirl eeb0ef1a70 Back dyn-minor patch out for now. fops handling is broken on some cards 2004-09-15 17:44:30 +00:00
Jon Smirl 941d2cf431 Don't use module_param if it isn't defined in older kernels. 2004-09-15 16:06:50 +00:00
Jon Smirl 64ef12c55c Dynamic device minor support. Minor device numbers will be reused if the
device is hotplugged in/out of the system
2004-09-15 00:20:21 +00:00
Dave Airlie 019fd38a3c __NO_VERSION__ hasn't been needed since 2.3 days ditch it... 2004-08-27 09:11:07 +00:00
Jon Smirl c360d6f4f2 Fix warning about unused ddev variable 2004-08-15 15:46:28 +00:00
Jon Smirl 23bbff24aa Add dev to DRIVER_CTX_DTOR( dev, pos->handle) so that sis driver will
compile #if 0 get_pci_driver use in hotplug function until fbdev work
    around is written
2004-08-15 15:35:14 +00:00
Dave Airlie ecf1458b2c minor patch from Jon Smirl : sets up some things for later use 2004-08-11 09:07:36 +00:00
Dave Airlie 9277f9eef3 Patch from Jon Smirl to add attribute field to the pciids, and use this for
certain radeon combinations - intel drivers can probably use this for
    dual head capable devices etc..
2004-08-10 11:14:07 +00:00
Dave Airlie be3e54bc15 2.4 hotplug compat 2004-08-04 10:53:21 +00:00
Dave Airlie 4f8f02a192 fix for drm in /proc - from Jon Smirl 2004-08-03 09:21:11 +00:00
Jon Smirl 5e7e41819e Add a hotplug event to DRM. Parameters match the ones from the general PCI
hotplug event plus the addition of one requesting RESET. Put your
    scripts in /etc/hotplug.d/drm to run. kernel class_simple generates the
    ADD/REMOVE events. No cards currently request RESET, the flag is there
    to stop you from resetting your boot display.
2004-07-31 15:45:00 +00:00
Dave Airlie 02df04d71d sync up with current 2.6 kernel bk tree - mostly __user annotations 2004-07-25 08:47:38 +00:00
Dave Airlie c54ba5691a if the driver has already register don't do another intermodule register 2004-07-25 05:41:44 +00:00
Dave Airlie 6ed7e36f4c another logic error returns 0 or greater for success 2004-07-22 12:07:13 +00:00
Dave Airlie c9911beb09 add some more debugging fix ++ and -- 2004-07-21 09:30:43 +00:00
Dave Airlie 7ee263b94f attempt to clean up stub_register, register_chrdev isn't good enough to
make the decision for multiple cards with one drm ..
2004-07-20 10:59:02 +00:00
Dave Airlie bb5112b616 Fix reference counting for stub for new Linux PCI probe 2004-07-14 12:34:55 +00:00
Dave Airlie 0b481856dd use drm.. not dri for class... 2004-05-03 00:06:04 +00:00
Dave Airlie a3612f450b better device class support from Jon Smirls patches.. 2004-05-02 12:27:17 +00:00
Dave Airlie 13724f032e 2.6 sysfs patches + stubs in drmP.h for 2.4 compatibility 2004-04-08 13:11:04 +00:00
Dave Airlie c3e2685e82 long dev_t patches from 2.6 tree 2004-04-08 12:25:31 +00:00
Jose Fonseca d2443b2186 Merged DRM documentation. 2003-05-27 00:37:33 +00:00
Rik Faith 977b420d5d Updates from Rusty Russell to:
1) Remove redundant header inclusion
2) Silence bitop on non-long argument warnings (change int to long)
3) Move to ISO C (gcc 2.6) initializers (accepted by older gccs also) All
    of these are syntax changes that should not impact functionality.
2002-08-06 18:00:57 +00:00
Keith Whitwell 9e67da5626 Allow drm to build under 2.4 and 2.5(.14) 2002-05-16 23:47:15 +00:00
Alan Hourihane f4c2f14002 No one's maintaining 2.2.x support - so remove all the cruft. 2001-08-19 15:20:08 +00:00
Jeff Hartmann 51e38d96ea Lots of DRM fixes: added new pieces of template code so the ffb driver can
be ported, rolled back r128 and i810 version bumps so 4.1.0 works with
    cvs kernel modules, added Config.in and updated Makefile.kernel,
    incorporated lots of drm fixes inspired by patches sent by Redhat, made
    DRM(realloc) usage check for NULL allocations, restructure driver init
    routines to export dev_priv only when initialized and to check for all
    error conditions.
2001-08-07 18:15:10 +00:00
David Dawes 56bd9c2077 Merge the multihead-1-0-0 branch into the trunk, with the exception of the
glide header files.
The changes include:
- Brian Paul's changes to the tdfx client-side 3D driver to make it
    dlopen() the correct glide library (Voodoo3 or Voodoo5). This allows
    both types of the glide library to co-exist, and allows Voodoo3/Voodoo5
    cards to be mixed in multi-head configs.
- DRM kernel driver changes to allow a driver to set up multiple instances
    (minor numbers), one for each card present that the driver supports.
    This is currently implemented and tested only for the tdfx DRM driver.
- Add some missing missing <stdarg.h> includes.
- Some log message cleanups.
- Change the 2D tdfx driver to access VGA legacy registers via their PCI
    I/O space access points rather than their legacy addresses, and fix
    some problems with the way the VGA-related bits are initialised.
Status:
- With these changes, multi-head direct rendering works with multiple
    Voodoo3 and/or Voodoo5 cards. This has been tested with two PCI Voodoo3
    cards and an AGP Voodoo5 card, and all permutations of those.
Caveats:
- Xinerama is not supported. If Xinerama is enabled, then direct rendering
    gets disabled.
- The text mode on secondary screens will show junk after the X server
    exits.
- On some hardware, starting the X server on multiple 3dfx cards will
    result in a hard lockup. One workaround is to enable APIC support in a
    uni-processor kernel, or use an SMP kernel.
2001-07-30 19:59:39 +00:00
Rik Faith c4a247d262 Add Linux 2.2.x support for stubs 2001-02-21 16:06:10 +00:00
Gareth Hughes 01a14789ed - Clean up the way customization of the templates is done.
- Fix old-style DMA for gamma driver (please test).
- Pull out IRQ handling into drm_dma.h (please test on i810, gamma).
- Lots of general cleanups, remove compiler warnings etc.
2001-02-16 05:24:06 +00:00
Gareth Hughes 360475376c Merge mga-1-0-0-branch into trunk. 2001-02-15 08:12:14 +00:00