Commit Graph

319 Commits (391c92ae1799f0d1fddb2321c5713afc58575514)

Author SHA1 Message Date
vehemens e6010778a8 [FreeBSD] Fix lock leak.
Signed-off-by: Robert Noland <rnoland@2hip.net>
2008-08-24 15:25:19 -04:00
Robert Noland 7a3d6624c4 [FreeBSD] Duh, we need to actually define the drm_modeset_ctl... 2008-07-25 13:46:28 -04:00
Robert Noland 2580a065d8 [FreeBSD] Catch up to linux on vblank-rework 2008-07-24 00:21:00 -04:00
Robert Noland f57f01f028 [FreeBSD] Improve upper_32_bits define.
Thanks to airlied.
2008-07-21 18:06:52 -04:00
Robert Noland 480c317a6a [FreeBSD] drm_irq.c updates for vblank fixes. 2008-07-17 14:08:06 -04:00
Robert Noland b0e4619a39 FreeBSD: Fix radeon build 2008-07-16 23:39:25 -04:00
Owain Gordon Ainsworth 74cf1f91be BSD: change drm_locked_task*() to use the same scheme as linux.
The current code can sleep in an interrupt handler, that is bad. So
instead if we can't grab the lock, flag it and run the tasklet on
unlock.

Signed-off-by: Robert Noland <rnoland@2hip.net>
2008-07-16 21:37:39 -04:00
Robert Noland 96580f660e [FreeBSD] We aren't allowed to hold locks over bus_dma_tag_create or bus_dmamem_alloc. 2008-07-15 16:53:54 -04:00
Robert Noland 29ffa0017d [FreeBSD] Fix another lock leak
Reported by vehemens
2008-06-13 17:41:34 -04:00
Robert Noland 116870a908 I915 suspend/resume for FreeBSD 2008-06-08 13:56:14 -04:00
Robert Noland 3b6ca4bf3f [FreeBSD] Rework ati_pcigart.c
This is mostly just a diff reduction with the linux version.
I'm not convinced that it will make anything better.
2008-06-08 02:00:48 -04:00
Robert Noland 96141bd33c [FreeBSD] We need to request busmastering support.
This seems to be the key to getting at least some radeon
cards working.  Most, if not all drivers need it enabled,
so just request it once the driver has attached.
2008-06-08 02:00:48 -04:00
Robert Noland 6d6921719c [FreeBSD] Incorporate vblank fixes for bsd. 2008-06-08 01:53:45 -04:00
Robert Noland ec3d996021 [FreeBSD] Forgot to call mtx_destroy on all the locks at unload. 2008-06-08 01:53:45 -04:00
Robert Noland 93c57ff4e5 [FreeBSD] Remove the locks in the vblank_disable_fn
They are recursive and causing panics with witness enabled.
2008-06-08 01:53:45 -04:00
Robert Noland fc74c2e9d6 [FreeBSD] Go back to using vbl_lock and move init/destroy to load/unload. 2008-06-08 01:53:45 -04:00
Robert Noland 416754f1cc [FreeBSD] Declare vblank_disable_fn callout MPSAFE. 2008-06-01 20:33:30 -07:00
Robert Noland 4ce47fd328 [FreeBSD] Get rid of vbl_lock and re-use irq_lock. 2008-06-01 20:33:30 -07:00
Robert Noland ac4da86928 [FreeBSD] Add symlink for radeon_microcode.h 2008-06-01 12:07:54 -07:00
Robert Noland 2186f9f6ef [FreeBSD] Call drm_vblank_cleanup during irq uninstall
I needed to re-arrange some functions for this.
Also needed to call DRM_SPINUNINIT on the vbl_lock during cleanup.
2008-06-01 12:07:54 -07:00
Owain Ainsworth df127c303d [BSD] Move unlock in drm_vm.c from accidental platform #ifdeffing.
Also remove an unreachable unlock.
2008-05-27 15:12:35 -07:00
Owain Ainsworth cc7ad27fe4 [BSD] Fix lock leak in drm_update_draw malloc failure path. 2008-05-27 15:11:25 -07:00
Owain Ainsworth 9a2ae28fbe [BSD] Fix lock leaks in error paths in drm_bufs.c. 2008-05-27 15:07:04 -07:00
Owain Ainsworth 200ac59573 [BSD] Remove superfluous recursive locking in drm_add_magic. 2008-05-27 14:59:38 -07:00
Robert Noland 8cd045079e [FreeBSD] Add vblank-rework support and get drivers building.
The i915 driver now works again.
2008-05-27 14:25:20 -07:00
Eric Anholt ad8eb0ed01 [FreeBSD] Convert from drm_device_t to struct drm_device for consistency. 2008-05-27 14:25:08 -07:00
Robert Noland 690dd04d1b bsd: Replace other occurrences of msleep with mtx_sleep 2007-12-02 01:45:09 -05:00
Robert Noland fbc307274f bsd: Now make secondary vblank work
We needed to specifically check for driver support and test the correct
vbl_received value.  Also pulled over support for _DRM_VBLANK_NEXTONMISS
from the linux code.
2007-12-02 01:23:11 -05:00
Robert Noland 787d500c15 bsd: Hook secondary vblank support. 2007-12-01 17:23:09 -05:00
Robert Noland e6ca3f5754 bsd: Fix typo in i915_drv.c 2007-12-01 16:35:48 -05:00
Robert Noland 0c3e5261b6 mtx_sleep is preferred to msleep
Calling semantics are the same and both were introduced in 5.0
2007-12-01 14:44:30 -05: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
Robert Noland 83e62be6f4 bsd: Move counter initialization to load time. 2007-12-01 02:32:23 -05:00
Robert C. Noland III 9be085cbf4 Fix up drm_ati_pcigart_info 2007-11-29 09:38:43 +10:00
Robert Noland c12a3a3ce0 Bug #13233: Chase move of agp headers on FreeBSD. 2007-11-18 22:41:41 -08: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
Jung-uk Kim 36120264ca Bug #11870: FreeBSD hardware lock cleanup fix with multiple opens by a process.
Previously, the lock would get released on the first close by the X Server
(during AIGLX setup), and the Radeon driver would then hang in initialization
due to unexpected failure in DRM calls that required the lock to be held.

Based on a patch by Kostik Belousov.
2007-10-17 12:52:12 -07:00
Eric Anholt f0fd53f86b FreeBSD: Fill in domain field when supported. 2007-10-10 15:32:05 -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
Eric Anholt 6e93c35ba7 BSD: Return EINVAL if drm_unlock is called on an unheld or other-owner lock. 2007-08-15 13:42:04 -07:00
vehemens a9ee144eab BSD: simplify drm_ioctl() after other refactoring. 2007-08-15 11:12:46 -07:00
vehemens 4cdd871e90 Bug #11989: Fix regression in getstats ioctl (kernel panic). 2007-08-15 11:06:49 -07:00
Eric Anholt 56133e04de BSD: Fix regression in setversion ioctl (current version not returned). 2007-08-15 11:06:49 -07:00
Eric Anholt 5346fc5f36 BSD: Replace brief description in each file's first line with doxygen later on.
The brief descriptions usually had the wrong filename in them.
2007-08-15 11:06:49 -07:00
vehemens 4340f49bf7 Bug #11951: Fix an errno sign inversion on pre-FreeBSD 5.
Also, annotate where signs change, to hopefully remind the reader of these
issues in the future.
2007-08-13 11:36:10 -07:00
Eric Anholt 3b07a37a48 Add doxygen and fix whitespace for drm_auth.c 2007-08-13 10:50:25 -07:00
vehemens 263775c454 Fix drm_auth.c locking to not recurse on dev_lock. 2007-08-13 10:24:39 -07:00
Eric Anholt be3099f265 Fix copy'n'paste-o in FreeBSD drawable code. 2007-07-25 12:59:43 -07: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 35de486836 BSD: Replace symlink building with symlinks in git. 2007-07-20 12:53:53 -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 f4e1c1d05c FreeBSD warnings cleanup. 2007-07-19 06:46:13 -07:00
Eric Anholt e544286eae FreeBSD: Fix the recently added drawable add/remove/update code. 2007-07-19 06:17:58 -07:00
Eric Anholt 50cb405f93 Fix the getclient test (Need this feature for future tests). 2007-07-19 06:02:20 -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
Eric Anholt 3f04fe7890 Fix FreeBSD build. 2007-07-16 01:53:06 -07: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
Jung-uk Kim b0c8d885ce Update a bunch of FreeBSD port code.
Tested on r200/r300.  i915 updates still remain to be done.
2007-05-29 15:02:44 -07:00
Eric Anholt 5d69640a6a Catch up to new interrupt API, and retire FreeBSD 4.x support here. 2007-03-24 09:39:09 -07:00
Michel Dänzer 74a92bbf6e Core build fix for BSD. 2006-12-01 11:00:32 +01:00
Michel Dänzer a97bb85c2a Unshare drm_drawable.c again for now.
The current version didn't build on BSD, where the new functionality isn't used
yet anyway. Whoever changes that will hopefully be able to make the OSes share
this file as well.
2006-12-01 10:46:21 +01:00
Alan Hourihane 7b6cd95bb6 Fix bug #8839 - a comment 2006-10-31 10:01:53 +00: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 dddacd7a3a Use the DRM_INIT_WAITQUEUE argument (needed on Linux) to avoid a warning. 2006-09-06 23:26:50 -07: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
Eric Anholt d572676185 Add a typedef for u64. 2006-09-06 23:08:29 -07:00
Michel Dänzer b9243ce3d5 .cvsignore -> .gitignore
Sort the merged file, remove the redundant explicit .ko lines and add
some generated symlinks.
2006-07-19 18:31:43 +02:00
Eric Anholt bdd381a7ce Set entry->virtual for sg maps, fixing ATI PCI/PCIE GART support.
PR: kern/97056 Submitted by: Stanislav Sedov <ssedov@mbsd.msk.ru>
2006-05-17 06:07:57 +00:00
Eric Anholt dcfcf1a84d Add the bits for vblank support on FreeBSD, which most importantly avoids
chasing a NULL pointer at the first 3d app invocation.
2006-05-17 05:44:39 +00:00
Eric Anholt 7ea4a88fa3 Add the workaround that's in the kernel to suppress GCC's warning about
refusal to inline functions that (in some cases, at least) aren't that
    large.
2006-05-17 05:41:48 +00:00
Eric Anholt 2abd1f270b Reorder the DRM_*_AGP enum to match linux's numbers (oops). Fixes i915
attachment. Make our mga_drv.c use them, while I'm here.
Submitted by: Jonathan Fosburgh <jonathan@fosburgh.org>
2006-04-18 06:08:17 +00:00
Eric Anholt 7f2c7f9977 Merge patch from jhb to catch up with FreeBSD-current vgapci master device
changes.
2005-12-30 02:17:05 +00:00
Eric Anholt 2911edaed7 Remove driver.device_is_agp code duplicated in drm_device_find_capability,
when it really wanted to live in drm_device_is_agp.
2005-12-05 10:53:06 +00:00
Eric Anholt 20fcbae5ac Finish the last bits necessary to get the i915 DRM port working on FreeBSD
Submitted by: Alexey Popov <llp@iteranet.com>
2005-12-02 23:41:47 +00:00
Eric Anholt 422002dc84 FreeBSD PR kern/85479: Restore the enabling of debugging by default by the
DRM_DEBUG kernel option. It remains controlled by hw.dri.*.debug no
    matter what.
2005-12-02 08:47:04 +00:00
Eric Anholt 1835dff04a Fix AGP support guessing: Implement the same bridge checking in the MGA
driver as Linux uses, and actually use the driver's device_is_agp if
    available (hopefully fixing i915).
2005-11-28 21:15:46 +00:00
Eric Anholt c575b7e19e Fix compiling and reenable build of i915 driver. 2005-11-15 09:22:09 +00:00
Eric Anholt 19c5c56779 Fix Savage DRI without ShadowStatus NO by allowing the shadow area to be
mapped.
2005-11-15 04:37:51 +00:00
Eric Anholt cc1a4dd856 Fix breakage from the move of driver ioctl externs to header files. 2005-11-11 09:36:58 +00:00
Eric Anholt c7af46cf7d Correct another LOR issue with resource allocation. This leaves the
drm_get_resource_* resource allocation a little racy, but they're
    getting called at either X Server startup or driver load, so it's
    serialized anyway.
2005-11-08 21:36:54 +00:00
Eric Anholt a10d8178e3 Initial port of savage to FreeBSD for the AGP and !ShadowStatus case. Adds
drm_mtrr_{add,del} for handling the MTRR setup. Still has a LOR issue
    with DRM_VERIFYAREA_READ/DRM_COPY_FROM_USER_UNCHECKED in savage_bci.c
    -- this won't work with the fine-grained locking in use, and just doing
    a single copyin to a temporary will probably work fine. Also note that
    the module leaks approximately 4 kb on unload.
2005-11-08 20:25:00 +00:00
Eric Anholt 4b2235d2e0 Correct a LOR related to the PCI resource allocations by simply moving the
uninit to unload time rather than lastclose.
2005-11-08 06:11:55 +00:00
Eric Anholt 71f9b7357c Fix FreeBSD DRM for latest MGA changes to agp support, which cleans things
up a good bit, I think. Also, remove the agp_uninit() function which
    has lain around as a noop for years now. The FreeBSD DRM is now all
    compiling, with the exception of via. One known sleeping-with-lock-held
    issue remains.
2005-11-08 05:29:26 +00:00
Eric Anholt 1a256df480 Catch FreeBSD up to the pcie gart changes. Required minor modification to
radeon_cp.c to use a drm_local_map_t-type mapping (drm_core_ioremap
    rather than drm_ioremap), which contains private device mapping
    information on BSD. I also changed the ati_pcigart interface to use
    "void *" for pointers to kva rather than "unsigned long". While PCIGART
    support appears to be broken on FreeBSD currently, I think this is not
    new, and BusType PCI remains working on my r100 in Linux.
2005-11-08 02:38:01 +00:00
Eric Anholt 145b23b552 Correct a recursion on non-recursive mutex in drm_addmap from radeon's
firstopen, by making drm_addmap require the drm device lock to be held.
    Also, make matching of kernel maps match linux by requiring shm matches
    to have the contains_lock flag set if the offset doesn't match.
2005-11-08 01:12:08 +00:00
Eric Anholt 900a7e4c36 Re-disable the via driver while it's broken on BSD. 2005-11-06 06:32:25 +00:00
Dave Airlie f42cdc8dcb Add support to turn writeback off via radeon module option 2005-09-30 06:41:10 +00:00
Eric Anholt 4b2a94db46 Fix the spelling of DRM_AUTH so that the bsd core stuff builds again. Next
up is pcigart.
2005-09-12 05:35:51 +00:00
Dave Airlie 0d346a07a8 convert ioctl flags to use flags instead of separate ints 2005-09-03 03:27:14 +00:00
Eric Anholt 22ec8ebb17 - Don't try to allocate mappings of less than a PAGE_SIZE in MGA DMA code.
- Comment out the "is this mapping/bufs in allocated AGP" bits in BSD
    because they break mga (which uses AGP allocation that doesn't track
    entries). It's not a security issue when we still have the related
    ioctls marked root-only.
- Apply some power-of-two alignment restrictions to hopefully avoid some
    panicing in bad cases of drm_pci_alloc() on FreeBSD.
- Add verbosity to some error handling that I found useful while debugging.
2005-08-26 23:27:19 +00:00
Eric Anholt c425ad1a34 Previously, drm_get_resource_start() and drm_get_resource_len() would
allocate the resource RF_ACTIVE, pull out the appropriate value, and
    return it. However, allocating large framebuffers RF_ACTIVE would run
    the system out of KVA, and this also left open the possibility of the
    resource getting moved after getting the offset. Instead, when either
    of these are called, allocate the resource if it isn't allocated
    already (non-RF_ACTIVE) and store it in the DRM device, to be cleaned
    up on lastclose.
2005-08-26 20:56:11 +00:00
Eric Anholt 5105f9ea59 Fix a lack of parenthesis in macro usage that showed up with INVARIANTS
turned on, i.e. in a kernel build.
2005-08-26 19:07:03 +00:00
Eric Anholt 55bea952b3 [1] Fix BSD DRM for the nonroot changes. [2] Don't attempt to acquire the
DMA lock in a non-DMA driver, as it will be uninitialized.
Submitted by: [1] jkim (minor changes by me)
2005-08-26 00:16:01 +00:00
Dave Airlie 8ac2fcb193 add agp buffer token 2005-08-17 22:59:00 +00:00
Eric Anholt 8c21b783c3 Port the VIA DRM to FreeBSD. Original patch by Jake, with some cleanup by
me to match other drivers and avoid ifdeffing. The linux via_drv.c will
    be moved from shared-core to linux-core soon by repocopy.
Submitted by: Jake Burkholder <jake@FreeBSD.org> Tested by: unichrome
2005-08-15 18:07:12 +00:00
Eric Anholt 4050f5066a Fix build after linux-side checkin of master/root-only split. Still only
cares about root on the BSD side, but should be secure.
2005-08-12 17:18:08 +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
Eric Anholt b0da5df90a Fix the MGA driver on BSD by passing in the proper chipset flags to the
driver's preinit routine, and by using DRM_COPY_TO_USER_IOCTL when
    copying out to an ioctl's data pointer. Pulled from the latest version
    of my drm-hook-rename.diff and only compile-tested after that.
2005-08-04 07:42:01 +00:00
Eric Anholt 942545721f Correct a couple of descriptions of files in comments (were just
copy'n'pasted).
Submitted by: jkim
2005-07-27 20:20:30 +00:00