Maarten Maathuis [Tue, 4 Sep 2007 16:51:57 +0000 (18:51 +0200)]
Add context init voodoo and context switch code for NV41.
Stephane Marchesin [Thu, 30 Aug 2007 23:39:40 +0000 (01:39 +0200)]
nouveau: nv04 context switching support. Works for starting X up at least.
Stephane Marchesin [Thu, 30 Aug 2007 19:51:53 +0000 (21:51 +0200)]
nouveau: give nv03 the last cut.
Keith Packard [Tue, 28 Aug 2007 19:23:51 +0000 (12:23 -0700)]
Add register defines for hw binning
Dave Airlie [Tue, 28 Aug 2007 05:17:11 +0000 (15:17 +1000)]
drm: remove XFREE86_VERSION macros
Matthieu Castet [Sun, 26 Aug 2007 18:48:32 +0000 (20:48 +0200)]
nouveau : add NV04_PGRAPH_TRAPPED_ADDR definition
- fix offset for nv04
- use it in nv10 graph ctx switch for getting next channel
- dump NV10_PGRAPH_TRAPPED_DATA_HIGH on nv10+
Matthieu Castet [Sat, 25 Aug 2007 20:10:45 +0000 (22:10 +0200)]
nouveau : nv1x graph reworks
- add forgotten init value
- use the same PGRAPH_DEBUG than the blob
- remove init of ddx reg : it should be done with object
- better handle of channel destruction
hope I didn't break anything ;)
Patrice Mandin [Fri, 24 Aug 2007 22:12:58 +0000 (00:12 +0200)]
nouveau: nv10: output a warning if last channel invalid, and switch to next
Patrice Mandin [Thu, 23 Aug 2007 08:18:34 +0000 (10:18 +0200)]
nouveau: nv10: check some NULL pointers inside context switch
Matthieu Castet [Wed, 22 Aug 2007 21:17:56 +0000 (23:17 +0200)]
nouveau : fix some potential crashes with objects causing hash collision
Ben Skeggs [Wed, 22 Aug 2007 03:23:49 +0000 (13:23 +1000)]
nouveau/nv40: Preserve other bits in 0x400304/0x400310 like NVIDIA do.
Ben Skeggs [Wed, 22 Aug 2007 03:17:19 +0000 (13:17 +1000)]
nouveau/nv40: Dump extra info on ucode state if ctx switch fails.
Ben Skeggs [Wed, 22 Aug 2007 03:09:27 +0000 (13:09 +1000)]
nouveau: NV4c ctx ucode.
Seems we already have a nv4c_ctx_init() somehow, a quick check shows the
ucode matches it still.
Ben Skeggs [Wed, 22 Aug 2007 02:54:26 +0000 (12:54 +1000)]
nouveau/nv50: Correct thinko for 8800 chips + cleanup a bit.
Stephane Marchesin [Wed, 22 Aug 2007 02:20:09 +0000 (04:20 +0200)]
nouveau: redo nv30_graph.c. Should work better, but we still lack a couple of cards.
Stephane Marchesin [Mon, 6 Aug 2007 15:42:31 +0000 (17:42 +0200)]
nouveau: fix the comment and debug message for PCIGART size
Ben Skeggs [Mon, 20 Aug 2007 16:23:21 +0000 (02:23 +1000)]
nouveau: Add NV44 ctx ucode. Patch from stillunknown.
Microcode is similar enough to the NV4A one that it should be able to use
the same initial PGRAPH context. One day this mess will go away, honest..
Ben Skeggs [Mon, 20 Aug 2007 16:18:27 +0000 (02:18 +1000)]
nouveau: Poke 0x2230 on NV47 also.
Makes 0x2220 work the same way as on NV40.
Patrice Mandin [Sun, 19 Aug 2007 16:45:01 +0000 (18:45 +0200)]
Check also for Linux, as it's not supported on different OS
Patrice Mandin [Sun, 19 Aug 2007 16:41:18 +0000 (18:41 +0200)]
Function pci_get_bus_and_slot needs 2.6.19 or later
Ben Skeggs [Thu, 16 Aug 2007 15:12:46 +0000 (01:12 +1000)]
nouveau: Detect memory on NFORCE/NFORCE2 correctly.
Eric Anholt [Wed, 15 Aug 2007 21:29:31 +0000 (14:29 -0700)]
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.
Eric Anholt [Wed, 15 Aug 2007 20:42:04 +0000 (13:42 -0700)]
BSD: Return EINVAL if drm_unlock is called on an unheld or other-owner lock.
Eric Anholt [Wed, 15 Aug 2007 20:41:24 +0000 (13:41 -0700)]
Add a set of tests for DRM locking, exposing issues on BSD.
Eric Anholt [Wed, 15 Aug 2007 20:13:24 +0000 (13:13 -0700)]
Fix a bad error message in auth.c regression test.
Eric Anholt [Wed, 15 Aug 2007 20:08:19 +0000 (13:08 -0700)]
Require master in setversion test, since it requires auth.
vehemens [Wed, 15 Aug 2007 18:12:46 +0000 (11:12 -0700)]
BSD: simplify drm_ioctl() after other refactoring.
vehemens [Wed, 15 Aug 2007 18:05:44 +0000 (11:05 -0700)]
Bug #11989: Fix regression in getstats ioctl (kernel panic).
Eric Anholt [Wed, 15 Aug 2007 18:04:56 +0000 (11:04 -0700)]
BSD: Fix regression in setversion ioctl (current version not returned).
Eric Anholt [Wed, 15 Aug 2007 18:03:10 +0000 (11:03 -0700)]
Add a regression test for the setversion interface.
Eric Anholt [Wed, 15 Aug 2007 17:52:01 +0000 (10:52 -0700)]
Add simple regression test for getstats (does it not crash the kernel?).
Eric Anholt [Tue, 14 Aug 2007 21:41:24 +0000 (14:41 -0700)]
BSD: Replace brief description in each file's first line with doxygen later on.
The brief descriptions usually had the wrong filename in them.
Ben Skeggs [Wed, 15 Aug 2007 04:14:23 +0000 (14:14 +1000)]
nouveau: Use count parameter in nouveau_notifier_alloc().
Ben Skeggs [Wed, 15 Aug 2007 03:53:58 +0000 (13:53 +1000)]
nouveau: Turn some messages into DRM_DEBUGs..
Ben Skeggs [Wed, 15 Aug 2007 03:36:54 +0000 (13:36 +1000)]
nouveau: Allow GART notifiers when using sgdma code.
Ben Skeggs [Wed, 15 Aug 2007 03:34:57 +0000 (13:34 +1000)]
nouveau: Workaround mysterious PRAMIN clobbering by the card.
Ben Skeggs [Tue, 14 Aug 2007 15:40:46 +0000 (01:40 +1000)]
nouveau: Catch all NV4x chips instead of just NV_40.
Ben Skeggs [Tue, 14 Aug 2007 14:56:24 +0000 (00:56 +1000)]
nouveau/nv40: Fix channel scheduling.
Ensure NV_PFIFO_DMA_TIMESLICE_TIMEOUT_ENABLE gets set, otherwise channels
will appear to "freeze" in some circumstances.
Eric Anholt [Mon, 13 Aug 2007 23:29:24 +0000 (16:29 -0700)]
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.
vehemens [Mon, 13 Aug 2007 17:17:47 +0000 (10:17 -0700)]
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.
Eric Anholt [Mon, 13 Aug 2007 18:27:46 +0000 (11:27 -0700)]
Add a regression test for authentication.
Eric Anholt [Mon, 13 Aug 2007 17:50:25 +0000 (10:50 -0700)]
Add doxygen and fix whitespace for drm_auth.c
vehemens [Mon, 13 Aug 2007 17:24:39 +0000 (10:24 -0700)]
Fix drm_auth.c locking to not recurse on dev_lock.
Dave Airlie [Mon, 6 Aug 2007 08:33:29 +0000 (18:33 +1000)]
i915: i965 non-secure batchbuffer bit has moved.
Ben Skeggs [Fri, 10 Aug 2007 03:54:26 +0000 (13:54 +1000)]
nouveau/nv50: demagic instmem setup.
Ben Skeggs [Fri, 10 Aug 2007 03:53:10 +0000 (13:53 +1000)]
nouveau: Allow creation of gpuobjs before any other init has taken place.
Ben Skeggs [Thu, 9 Aug 2007 01:12:13 +0000 (11:12 +1000)]
nouveau: silence irq handler a bit
Ben Skeggs [Thu, 9 Aug 2007 00:23:36 +0000 (10:23 +1000)]
nouveau/nv40: add some missing pciids.
Matthieu Castet [Wed, 8 Aug 2007 20:55:32 +0000 (22:55 +0200)]
nouveau : nv10, nv20, nv30 : don't save all channel in the same RAMFC entry
This should improve multi fifo
Ben Skeggs [Wed, 8 Aug 2007 06:37:55 +0000 (16:37 +1000)]
nouveau: Always allocate drm's push buffer in VRAM
Fixes #11868
Ben Skeggs [Wed, 8 Aug 2007 06:11:28 +0000 (16:11 +1000)]
nouveau: return channel id
Ben Skeggs [Wed, 8 Aug 2007 03:01:29 +0000 (13:01 +1000)]
nouveau/nv50: hack up initial channel context from current state
We really should be providing static values like the nv40 PGRAPH code does,
however, this will do for now to keep X at least working.
Ben Skeggs [Wed, 8 Aug 2007 00:42:12 +0000 (10:42 +1000)]
nouveau: enable/disable engine-specific interrupts in _init()/_takedown()
All interrupts are still masked by PMC until init is finished.
Matthieu Castet [Tue, 7 Aug 2007 21:09:44 +0000 (23:09 +0200)]
nouveau : fix enable irq (in the previous code all irq were masked by engine
init after irq_postinstall)
Eric Anholt [Mon, 6 Aug 2007 22:45:37 +0000 (15:45 -0700)]
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.
Ben Skeggs [Mon, 6 Aug 2007 15:51:46 +0000 (01:51 +1000)]
nouveau: Init global gpuobj list early, unbreaks sgdma code.
Stephane Marchesin [Mon, 6 Aug 2007 15:14:26 +0000 (17:14 +0200)]
nouveau: Bump PCI GART to 16MB
Ben Skeggs [Mon, 6 Aug 2007 12:32:36 +0000 (22:32 +1000)]
nouveau: ouch, add nouveau_dma.[ch] files..
Ben Skeggs [Mon, 6 Aug 2007 12:11:18 +0000 (22:11 +1000)]
Export some useful ttm functions to drivers.
Ben Skeggs [Mon, 6 Aug 2007 12:06:52 +0000 (22:06 +1000)]
nouveau: Remove PGRAPH_SURFACE hack, it wont work now anyway.
Need to find another way of doing this, ideally someone'd hunt down which
object/method controls it! The Xv blit adaptor is likely now broken on
cards that have pNv->WaitVSyncPossible enabled.
Ben Skeggs [Mon, 6 Aug 2007 12:05:31 +0000 (22:05 +1000)]
nouveau: Give DRM its own gpu channel
If your card doesn't have working context switching, it is now broken.
Ben Skeggs [Mon, 6 Aug 2007 11:46:55 +0000 (21:46 +1000)]
nouveau: Determine trapped channel id from active grctx on >=NV40
Ben Skeggs [Mon, 6 Aug 2007 11:45:18 +0000 (21:45 +1000)]
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.
Ben Skeggs [Sun, 5 Aug 2007 17:40:43 +0000 (03:40 +1000)]
nouveau: Pass channel struct around instead of channel id.
Patrice Mandin [Fri, 3 Aug 2007 21:06:39 +0000 (23:06 +0200)]
nouveau:nv10: fill and use load,save graph context functions
Patrice Mandin [Thu, 2 Aug 2007 18:08:05 +0000 (20:08 +0200)]
Merge branch 'master' of git+ssh://pmandin@git.freedesktop.org/git/mesa/drm
Patrice Mandin [Thu, 2 Aug 2007 18:06:37 +0000 (20:06 +0200)]
Add libdrm source dir, to build tests from a different build dir
Dave Airlie [Thu, 2 Aug 2007 09:13:45 +0000 (19:13 +1000)]
drm: add unlocked ioctl code path - not used yet
Dave Airlie [Wed, 25 Jul 2007 04:32:15 +0000 (14:32 +1000)]
drm/fence: shut up lockdep
Dave Airlie [Mon, 30 Jul 2007 23:22:45 +0000 (09:22 +1000)]
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.
Arthur Huillet [Fri, 27 Jul 2007 13:48:04 +0000 (15:48 +0200)]
nouveau: creating notifier in PCI memory for PCIGART
Dave Airlie [Thu, 26 Jul 2007 05:26:36 +0000 (15:26 +1000)]
drm/bo: set the req pointer for each buffer to validate
Dave Airlie [Thu, 26 Jul 2007 03:25:21 +0000 (13:25 +1000)]
drm: fix size argument for copy to/from user
Eric Anholt [Wed, 25 Jul 2007 19:54:15 +0000 (12:54 -0700)]
Improve the drawable test to use multiple drawables.
Eric Anholt [Sun, 22 Jul 2007 08:51:34 +0000 (09:51 +0100)]
Fix copy'n'paste-o in FreeBSD drawable code.
Adrian Bunk [Mon, 23 Jul 2007 08:15:00 +0000 (18:15 +1000)]
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>
Pekka Paalanen [Sat, 21 Jul 2007 20:13:25 +0000 (23:13 +0300)]
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.
Dave Airlie [Sat, 21 Jul 2007 12:11:41 +0000 (22:11 +1000)]
fix missing brace placement for IOC_IN
Dave Airlie [Sat, 21 Jul 2007 11:50:25 +0000 (21:50 +1000)]
fix drm no-compile due to BSD :-)
Eric Anholt [Fri, 20 Jul 2007 00:11:11 +0000 (17:11 -0700)]
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.
Eric Anholt [Fri, 20 Jul 2007 13:39:25 +0000 (06:39 -0700)]
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.
Eric Anholt [Fri, 20 Jul 2007 13:42:18 +0000 (06:42 -0700)]
BSD: Replace symlink building with symlinks in git.
Eric Anholt [Fri, 20 Jul 2007 00:00:17 +0000 (17:00 -0700)]
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.
Eric Anholt [Fri, 20 Jul 2007 19:55:51 +0000 (12:55 -0700)]
Fix linux spinlock macros after the last commit.
Eric Anholt [Thu, 19 Jul 2007 13:46:13 +0000 (06:46 -0700)]
FreeBSD warnings cleanup.
Eric Anholt [Thu, 19 Jul 2007 13:31:26 +0000 (06:31 -0700)]
Merge branch 'origin'
Eric Anholt [Thu, 19 Jul 2007 13:17:58 +0000 (06:17 -0700)]
FreeBSD: Fix the recently added drawable add/remove/update code.
Eric Anholt [Thu, 19 Jul 2007 13:17:04 +0000 (06:17 -0700)]
Add a test for drawable add, remove, and update.
Eric Anholt [Thu, 19 Jul 2007 13:02:20 +0000 (06:02 -0700)]
Fix the getclient test (Need this feature for future tests).
Eric Anholt [Thu, 19 Jul 2007 11:59:59 +0000 (04:59 -0700)]
Add some trivial regression tests, one of which fails.
Eric Anholt [Thu, 19 Jul 2007 10:36:57 +0000 (03:36 -0700)]
Add current BSD stuff to .gitignore.
Ben Skeggs [Thu, 19 Jul 2007 06:42:58 +0000 (16:42 +1000)]
nouveau/nv50: get non-default push buffer sizes working.
Eric Anholt [Wed, 18 Jul 2007 21:22:40 +0000 (14:22 -0700)]
Add dry-coded DRM drawable private information storage for FreeBSD.
With this, all modules build again.
Pekka Paalanen [Fri, 6 Jul 2007 17:33:32 +0000 (20:33 +0300)]
nouveau: Make nouveau_wait_for_idle() read PTIMER.
Following my nv28 kmmio dumps, nouveau_wait_for_idle() is modified to
read PTIMER and NV03_PMC_ENABLE. Also a timeout based on PTIMER value is
added, so wait_for_idle() cannot stall indefinitely (unless PTIMER is
halted). The timeout was selected as 1 giga-ticks, which for me is 1s.
Pekka Paalanen [Fri, 6 Jul 2007 16:34:15 +0000 (19:34 +0300)]
nouveau: Add read() method to Engine.timer.
This is not called from anywhere, yet.
Pekka Paalanen [Fri, 6 Jul 2007 10:57:31 +0000 (13:57 +0300)]
nouveau: Add bitfield names for NSOURCE and NSTATUS.
Name strings and pretty-printing in nouveau_graph_dump_trap_info().
Pekka Paalanen [Fri, 6 Jul 2007 09:47:53 +0000 (12:47 +0300)]
nouveau: Replace 0x00400104 and 0x00400108 with names.
NV03_PGRAPH_NSTATUS and NV03_PGRAPH_NSOURCE.
The prefix NV03 is chosen because nv10reg.h had no versioned prefix,
and the code using these registers does not check card_type.
Thomas Hellstrom [Wed, 18 Jul 2007 08:40:03 +0000 (10:40 +0200)]
Fix via dmablit when blit queue is full.
Fix by Simon Farnsworth, Bugzilla Bug #11542
http://bugs.freedesktop.org/show_bug.cgi?id=11542
Dave Airlie [Wed, 18 Jul 2007 05:49:45 +0000 (15:49 +1000)]
fix some missing whitespace/tab
Dave Airlie [Tue, 17 Jul 2007 23:46:16 +0000 (09:46 +1000)]
drm: idr stuff is upstream for 2.6.23