Ian Romanick [Thu, 12 Jul 2007 22:28:17 +0000 (15:28 -0700)]
Merge branch 'master' into xgi-0-0-2
Ben Skeggs [Thu, 12 Jul 2007 16:18:59 +0000 (02:18 +1000)]
nouveau: unbreak AGP
Ben Skeggs [Thu, 12 Jul 2007 01:55:47 +0000 (11:55 +1000)]
nouveau: mem_alloc() returns offsets, not absolute addresses now.
Ben Skeggs [Thu, 12 Jul 2007 01:39:45 +0000 (11:39 +1000)]
nouveau: nuke left over debug message
Ben Skeggs [Thu, 12 Jul 2007 00:15:16 +0000 (10:15 +1000)]
nouveau: separate region_offset into map_handle and offset.
Arthur Huillet [Thu, 12 Jul 2007 00:35:39 +0000 (02:35 +0200)]
fixed object creation code to not Oops on 64bits, worked around memalloc not working on 64bit for PCIGART
Arthur Huillet [Wed, 11 Jul 2007 13:01:37 +0000 (15:01 +0200)]
NV50 will not attempt to use PCIGART now
Arthur Huillet [Wed, 11 Jul 2007 12:56:27 +0000 (14:56 +0200)]
fixed bug that prevented PCIE cards from actually using PCIGART - NV50 will probably still have a problem
Ben Skeggs [Wed, 11 Jul 2007 04:22:59 +0000 (14:22 +1000)]
nouveau/nv50: G80 fixes.
Again, no hardware, so no idea if it'll even work yet. I understand how
the PRAMIN setup works now, un-hardcoding stuff will come "RealSoonNow(tm)".
Ben Skeggs [Wed, 11 Jul 2007 02:38:48 +0000 (12:38 +1000)]
nouveau: Some checks on userspace object handles.
Arthur Huillet [Wed, 11 Jul 2007 00:35:10 +0000 (02:35 +0200)]
Added support for PCIGART for PCI(E) cards. Bumped DRM interface patchlevel.
Arthur Huillet [Wed, 11 Jul 2007 00:33:12 +0000 (02:33 +0200)]
Made drm_sg_alloc accessible from inside the DRM - drm_sg_alloc_ioctl is the ioctl wrapper
Ian Romanick [Tue, 10 Jul 2007 01:54:25 +0000 (18:54 -0700)]
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.
Ian Romanick [Tue, 10 Jul 2007 01:52:43 +0000 (18:52 -0700)]
Fix ioctl types.
I had moved code from xgi_drv.h to xgi_drm.h before changing the ioctl
types for XGI_IOCTL_(FB|PCIE)_ALLOC.
Ian Romanick [Mon, 9 Jul 2007 23:43:48 +0000 (16:43 -0700)]
Eliminiate fields in xgi_info that are duplicates of fields in pci_dev.
Ian Romanick [Mon, 9 Jul 2007 23:33:14 +0000 (16:33 -0700)]
Move types shared with user mode to xgi_drm.h.
Ian Romanick [Mon, 9 Jul 2007 23:22:48 +0000 (16:22 -0700)]
Correct types that are shared with user mode.
Ian Romanick [Mon, 9 Jul 2007 23:07:27 +0000 (16:07 -0700)]
Adjust the types of the fields of xgi_aperture.
Ian Romanick [Mon, 9 Jul 2007 22:59:09 +0000 (15:59 -0700)]
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.
Ben Skeggs [Mon, 9 Jul 2007 13:58:00 +0000 (23:58 +1000)]
nouveau: Allocate mappable VRAM for notifiers..
Ben Skeggs [Mon, 9 Jul 2007 10:02:14 +0000 (20:02 +1000)]
nouveau: Don't be so strict on <NV50
Ben Skeggs [Mon, 9 Jul 2007 05:37:37 +0000 (15:37 +1000)]
nouveau: Avoid oops
Turns out lastclose() gets called even if firstopen() has never been...
Ben Skeggs [Wed, 4 Jul 2007 14:12:33 +0000 (00:12 +1000)]
nouveau/nv50: Initial channel/object support
Should be OK on G84 for a single channel, multiple channels *almost* work.
Untested on G80.
Ben Skeggs [Wed, 4 Jul 2007 05:31:01 +0000 (15:31 +1000)]
nouveau: enable reporting for all PFIFO/PGRAPH irqs
Ben Skeggs [Mon, 2 Jul 2007 09:31:18 +0000 (19:31 +1000)]
nouveau: rewrite gpu object code
Allows multiple references to a single object, needed to support PCI(E)GART
scatter-gather DMA objects which would quickly fill PRAMIN if each channel
had its own.
Handle per-channel private instmem areas. This is needed to support NV50,
but might be something we want to do on earlier chipsets at some point?
Everything that touches PRAMIN is a GPU object.
Ian Romanick [Fri, 6 Jul 2007 00:49:13 +0000 (17:49 -0700)]
Remove XGI_IOCTL_CPUID and associated cruft.
Ian Romanick [Fri, 6 Jul 2007 00:45:44 +0000 (17:45 -0700)]
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.
Ian Romanick [Fri, 6 Jul 2007 00:18:12 +0000 (17:18 -0700)]
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.
Kristian Høgsberg [Tue, 3 Jul 2007 14:41:48 +0000 (10:41 -0400)]
Use idr_replace trick to eliminate struct drm_ctx_sarea_list.
Kristian Høgsberg [Tue, 3 Jul 2007 14:31:46 +0000 (10:31 -0400)]
Don't take dev->struct_mutex twice in drm_setsareactx.
Michel Dänzer [Tue, 3 Jul 2007 10:33:51 +0000 (12:33 +0200)]
One more spinlock initializer cleanup.
Michel Dänzer [Tue, 3 Jul 2007 10:15:15 +0000 (12:15 +0200)]
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.
Michel Dänzer [Tue, 3 Jul 2007 09:41:44 +0000 (11:41 +0200)]
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.
Kristian Høgsberg [Mon, 2 Jul 2007 21:52:07 +0000 (17:52 -0400)]
Fix must-check warnings and implement a few error paths.
Kristian Høgsberg [Thu, 28 Jun 2007 18:45:26 +0000 (14:45 -0400)]
Drop drm_drawable_list and add drm_drawable_info directly to the idr.
Ian Romanick [Sat, 30 Jun 2007 04:48:31 +0000 (21:48 -0700)]
Convert a few more U32 variables to more appropriate, generic types.
Ian Romanick [Sat, 30 Jun 2007 04:38:48 +0000 (21:38 -0700)]
Convert xgi_mem_location enum values to less generic names.
Ian Romanick [Sat, 30 Jun 2007 04:35:27 +0000 (21:35 -0700)]
Convert open coded list iterators to either list_for_each_entry or list_for_each_entry_safe
Ian Romanick [Sat, 30 Jun 2007 04:15:33 +0000 (21:15 -0700)]
Clean up xgi_pcie_heap_check
The whole purpose of xgi_pcie_heap_check is to log information about
entries on the used_list. If XGI_DEBUG is not set, it doesn't print
anything. Therefore we can #ifdef the whole function body.
Convert open-code list iteration to use list_for_each_entry.
Ian Romanick [Sat, 30 Jun 2007 04:05:16 +0000 (21:05 -0700)]
Stop-gap fix in xgi_submit_cmdlist
Comment in the code explains it. Basically, I put an if-statement
around a block of code to prevent a NULL pointer dereference that
should never happen in the first place. Eventually, this will need to
come out.
Ian Romanick [Sat, 30 Jun 2007 04:00:50 +0000 (21:00 -0700)]
Convert some PCI-e GART related variable to generic types.
A few of the PCI-e GART related fields in struct xgi_info were
hardcoded to u32. None of them need to be. Convert them to either
unsigned int or bool.
Ian Romanick [Sat, 30 Jun 2007 03:49:21 +0000 (20:49 -0700)]
Delete unused arrays s_emptyBegin and s_flush2D.
Ian Romanick [Fri, 29 Jun 2007 23:41:32 +0000 (16:41 -0700)]
Replace U(8|16) with u(8|16).
Ian Romanick [Fri, 29 Jun 2007 23:37:39 +0000 (16:37 -0700)]
Eliminate unnecessary defines of TRUE and FALSE.
Ian Romanick [Fri, 29 Jun 2007 23:37:01 +0000 (16:37 -0700)]
Replace BOOL with bool.
Ian Romanick [Fri, 29 Jun 2007 23:35:36 +0000 (16:35 -0700)]
Eliminate unused integer and float typedefs.
Ian Romanick [Fri, 29 Jun 2007 22:27:38 +0000 (15:27 -0700)]
Eliminate structure typedefs
Documentation/CodingStyle says that 'typedef struct foo foo_t' is
evil. I tend to agree. Elminate all uses of such construct.
Ian Romanick [Fri, 29 Jun 2007 16:30:02 +0000 (09:30 -0700)]
Fix return type of xgi_find_pcie_block.
This function used to return 'void *', which was then cast to
'xgi_pcie_block_t *' at the only caller. I changed the return type to
'struct xgi_pcie_block_s *' and removed the explicit cast.
Thomas Hellstrom [Fri, 29 Jun 2007 13:22:28 +0000 (15:22 +0200)]
Avoid hitting BUG() for kernel-only fence objects.
Thomas Hellstrom [Fri, 29 Jun 2007 10:50:12 +0000 (12:50 +0200)]
Fence object reference / dereference cleanup.
Buffer object dereference cleanup.
Add a struct drm_device member to fence objects:
This can simplify code, particularly in drivers.
Ian Romanick [Fri, 29 Jun 2007 06:40:36 +0000 (23:40 -0700)]
Remove unused type 'struct xgi_pcie_list_s' / xgi_pcie_list_t.
Ian Romanick [Fri, 29 Jun 2007 05:32:11 +0000 (22:32 -0700)]
Minor clean up of variable declarations in xgi_find_pcie_virt.
Ian Romanick [Fri, 29 Jun 2007 05:26:39 +0000 (22:26 -0700)]
Clean up debug log messages in xgi_find_pcie_block.
Ian Romanick [Fri, 29 Jun 2007 05:20:13 +0000 (22:20 -0700)]
Convert comment header of xgi_find_pcie_virt to kernel doc format.
Ben Skeggs [Fri, 29 Jun 2007 03:52:55 +0000 (13:52 +1000)]
nouveau: small RAMFC cleanups
Ben Skeggs [Thu, 28 Jun 2007 11:01:17 +0000 (21:01 +1000)]
nouveau: Hack around possible Xv blit adaptor breakage
Ben Skeggs [Wed, 27 Jun 2007 18:23:17 +0000 (04:23 +1000)]
nouveau/nv10: Fix earlier NV1x chips
Can't use nv04 code for them, since an extra field was inserted into
RAMFC after DMA_PUT/GET.
Ben Skeggs [Mon, 25 Jun 2007 05:42:55 +0000 (15:42 +1000)]
nouveau: never touch PRAMIN with NV_WRITE, cleanup RAMHT code a bit
Ben Skeggs [Mon, 25 Jun 2007 05:16:19 +0000 (15:16 +1000)]
nouveau: simplify PRAMIN access
Ben Skeggs [Sun, 24 Jun 2007 17:52:06 +0000 (03:52 +1000)]
nouveau: name some regs
Ben Skeggs [Sun, 24 Jun 2007 10:49:19 +0000 (20:49 +1000)]
nouveau/nv50: skeletal backend
Ben Skeggs [Sun, 24 Jun 2007 09:03:35 +0000 (19:03 +1000)]
nouveau: Nuke DMA_OBJECT_INIT ioctl (bumps interface to 0.0.7)
For various reasons, this ioctl was a bad idea.
At channel creation we now automatically create DMA objects covering
available VRAM and GART memory, where the client used to do this themselves.
However, there is still a need to be able to create DMA objects pointing at
specific areas of memory (ie. notifiers). Each channel is now allocated a
small amount of memory from which a client can suballocate things (such as
notifiers), and have a DMA object created which covers the suballocated area.
The NOTIFIER_ALLOC ioctl exposes this functionality.
Ben Skeggs [Wed, 27 Jun 2007 16:56:30 +0000 (02:56 +1000)]
nouveau/nv04: Set NV_PFIFO_CACHE1_PUSH1 correctly + small tweaks
Ian Romanick [Tue, 26 Jun 2007 20:46:36 +0000 (13:46 -0700)]
Clean up warnings about unused variables and functions.
Ian Romanick [Tue, 26 Jun 2007 20:39:01 +0000 (13:39 -0700)]
Clean up mixed declarations and code.
Ian Romanick [Tue, 26 Jun 2007 20:29:28 +0000 (13:29 -0700)]
Revert over-zealous change from previous commit.
Ian Romanick [Tue, 26 Jun 2007 20:26:10 +0000 (13:26 -0700)]
Add XGI driver to Makefiles.
Ian Romanick [Tue, 26 Jun 2007 20:20:15 +0000 (13:20 -0700)]
Clean up compile-time kernel feature detection.
Ian Romanick [Tue, 26 Jun 2007 20:16:04 +0000 (13:16 -0700)]
linux/config.h is deprecated or gone.
Ian Romanick [Tue, 26 Jun 2007 20:15:22 +0000 (13:15 -0700)]
Gut support for pre-2.6 kernels.
Ian Romanick [Tue, 26 Jun 2007 20:10:30 +0000 (13:10 -0700)]
dos2unix and Lindent
Ian Romanick [Tue, 26 Jun 2007 20:05:29 +0000 (13:05 -0700)]
Initial XP10 code drop from XGI.
See attachment 10246 on https://bugs.freedesktop.org/show_bug.cgi?id=5921
Ian Romanick [Tue, 26 Jun 2007 16:51:55 +0000 (09:51 -0700)]
Add support SiS based XGI chips to SiS DRM.
Ben Skeggs [Sun, 24 Jun 2007 15:57:57 +0000 (01:57 +1000)]
nouveau: NV49/NV4B PGRAPH setup from jb17bsome and stephan_2303
Ben Skeggs [Sun, 24 Jun 2007 09:00:44 +0000 (19:00 +1000)]
nouveau: kill some dead code
Ben Skeggs [Sun, 24 Jun 2007 09:00:26 +0000 (19:00 +1000)]
nouveau: NV04/NV10/NV20 PGRAPH engtab functions
NV04/NV10 load_context()/save_context() are stubs. I don't know enough about
how they work to implement them sanely. The "old" context_switch() code
remains hooked up, so it shouldn't break anything.
NV20 will probably break if load_context() works. No inital context values
are filled in, so when the first channel is created PGRAPH will probably end
up having its state zeroed. Some setup from nv20_graph_init() will probably
need to be moved to the per-channel context setup.
Ben Skeggs [Sun, 24 Jun 2007 08:58:38 +0000 (18:58 +1000)]
nouveau: NV3X PGRAPH engtab functions
Ben Skeggs [Sun, 24 Jun 2007 08:58:14 +0000 (18:58 +1000)]
nouveau: NV1X/2X/3X PFIFO engtab functions
Earlier NV1X chips use the NV04 code, see previous commits about NV10 RAMFC
entry size.
Ben Skeggs [Sun, 24 Jun 2007 08:57:09 +0000 (18:57 +1000)]
nouveau: NV04 PFIFO engtab functions
Ben Skeggs [Sun, 24 Jun 2007 08:56:40 +0000 (18:56 +1000)]
nouveau: NV4X PGRAPH engtab functions
Ben Skeggs [Sun, 24 Jun 2007 08:56:01 +0000 (18:56 +1000)]
nouveau: NV4X PFIFO engtab functions
Ben Skeggs [Sun, 24 Jun 2007 08:55:23 +0000 (18:55 +1000)]
nouveau: split PFIFO/PGRAPH context creation
Ben Skeggs [Sun, 24 Jun 2007 08:55:06 +0000 (18:55 +1000)]
nouveau: (mostly) hook up put_base again
Ben Skeggs [Sun, 24 Jun 2007 08:54:51 +0000 (18:54 +1000)]
nouveau: prototype PFIFO/PGRAPH engtab API
Ben Skeggs [Sun, 24 Jun 2007 08:54:36 +0000 (18:54 +1000)]
nouveau: rename engtab functions
Michel Dänzer [Fri, 22 Jun 2007 09:55:26 +0000 (11:55 +0200)]
radeon: Acknowledge all interrupts we're interested in.
Failure to do so was probably the root cause of fd.o bug 11287.
Oliver McFadden [Thu, 21 Jun 2007 14:35:11 +0000 (14:35 +0000)]
r300: Synchronized the register defines file; documentation changes.
Oliver McFadden [Thu, 21 Jun 2007 14:32:58 +0000 (14:32 +0000)]
r300: Allow writes to R300_VAP_PVS_WAITIDLE.
Oliver McFadden [Mon, 18 Jun 2007 08:42:46 +0000 (08:42 +0000)]
r300: Registers 0x2220-0x2230 are known as R300_VAP_CLIP_X_0-R300_VAP_CLIP_Y_1.
Oliver McFadden [Mon, 18 Jun 2007 08:36:50 +0000 (08:36 +0000)]
r300: Synchronized the register defines file again.
David Woodhouse [Mon, 18 Jun 2007 02:45:20 +0000 (12:45 +1000)]
fix radeon setparam on 32/64 systems, harder.
Commit
9b01bd5b284bbf519b726b39f1352023cb5e9e69 introduced a
compat_ioctl handler for RADEON_SETPARAM, the sole purpose of which was
to handle the fact that on i386, alignof(uint64_t)==4.
Unfortunately, this handler was installed for _all_ 64-bit
architectures, instead of only x86_64 and ia64. And thus it breaks
32-bit compatibility on every other arch, where 64-bit integers are
aligned to 8 bytes in 32-bit mode just the same as in 64-bit mode.
Arnd has a cunning plan to use 'compat_u64' with appropriate alignment
attributes according to the 32-bit ABI, but for now let's just make the
compat_radeon_cp_setparam routine entirely disappear on 64-bit machines
whose 32-bit compat support isn't for i386. It would be a no-op with
compat_u64 anyway.
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Michel Dänzer [Fri, 15 Jun 2007 15:13:11 +0000 (17:13 +0200)]
i915: Fix handling of breadcrumb counter wraparounds.
Thomas Hellstrom [Fri, 15 Jun 2007 08:35:52 +0000 (10:35 +0200)]
Fix i915 sequence mask.
Thomas Hellstrom [Fri, 15 Jun 2007 08:31:32 +0000 (10:31 +0200)]
Indentation fixes.
Thomas Hellstrom [Fri, 15 Jun 2007 08:21:31 +0000 (10:21 +0200)]
Fix refcounting / lock race.
Reported by Steve Wilkins / Michel Dänzer.
Thomas Hellstrom [Thu, 14 Jun 2007 09:52:38 +0000 (11:52 +0200)]
Locking fixes and instrumentation.
Thomas Hellstrom [Wed, 13 Jun 2007 13:59:28 +0000 (15:59 +0200)]
Fix drmMMUnlock / drmMMLock return values.
Thomas Hellstrom [Wed, 13 Jun 2007 13:38:59 +0000 (15:38 +0200)]
Make sure we read fence->signaled while spinlocked.
Thomas Hellstrom [Wed, 13 Jun 2007 13:19:30 +0000 (15:19 +0200)]
Fix fence object deref race.
Dave Airlie [Sun, 10 Jun 2007 05:40:10 +0000 (15:40 +1000)]
use krh's idr mods to remove lists from idr code