aboutsummaryrefslogtreecommitdiff
path: root/drivers/char/drm
AgeCommit message (Collapse)Author
2006-10-05IRQ: Maintain regs pointer globally rather than passing to IRQ handlersDavid Howells
Maintain a per-CPU global "struct pt_regs *" variable which can be used instead of passing regs around manually through all ~1800 interrupt handlers in the Linux kernel. The regs pointer is used in few places, but it potentially costs both stack space and code to pass it around. On the FRV arch, removing the regs parameter from all the genirq function results in a 20% speed up of the IRQ exit path (ie: from leaving timer_interrupt() to leaving do_IRQ()). Where appropriate, an arch may override the generic storage facility and do something different with the variable. On FRV, for instance, the address is maintained in GR28 at all times inside the kernel as part of general exception handling. Having looked over the code, it appears that the parameter may be handed down through up to twenty or so layers of functions. Consider a USB character device attached to a USB hub, attached to a USB controller that posts its interrupts through a cascaded auxiliary interrupt controller. A character device driver may want to pass regs to the sysrq handler through the input layer which adds another few layers of parameter passing. I've build this code with allyesconfig for x86_64 and i386. I've runtested the main part of the code on FRV and i386, though I can't test most of the drivers. I've also done partial conversion for powerpc and MIPS - these at least compile with minimal configurations. This will affect all archs. Mostly the changes should be relatively easy. Take do_IRQ(), store the regs pointer at the beginning, saving the old one: struct pt_regs *old_regs = set_irq_regs(regs); And put the old one back at the end: set_irq_regs(old_regs); Don't pass regs through to generic_handle_irq() or __do_IRQ(). In timer_interrupt(), this sort of change will be necessary: - update_process_times(user_mode(regs)); - profile_tick(CPU_PROFILING, regs); + update_process_times(user_mode(get_irq_regs())); + profile_tick(CPU_PROFILING); I'd like to move update_process_times()'s use of get_irq_regs() into itself, except that i386, alone of the archs, uses something other than user_mode(). Some notes on the interrupt handling in the drivers: (*) input_dev() is now gone entirely. The regs pointer is no longer stored in the input_dev struct. (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking. It does something different depending on whether it's been supplied with a regs pointer or not. (*) Various IRQ handler function pointers have been moved to type irq_handler_t. Signed-Off-By: David Howells <dhowells@redhat.com> (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
2006-09-22drm: Use register writes instead of BITBLT_MULTI packets for buffer swap blitsMichel Daenzer
This takes up two more ring buffer entries per rectangle blitted but makes sure the blit is performed top to bottom, reducing the likelyhood of tearing. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: use radeon specific names for radeon flagsDave Airlie
Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: add device/vendor id to drm_device_t for compat with FreeBSD driversEric Anholt
Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: allow multiple addMaps with the same 32-bit map offsset.Thomas Hellstrom
Reported on -mm kernels. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: fd.o Bug #7595: Avoid u32 overflows in radeon_check_and_fixup_offset().Michel Daenzer
The overflows could cause valid offsets to get rejected under some circumstances, e.g. when the framebuffer resides at the very end of the card's address space. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: Fix hashtab implementation leaking illegal error codes to user space.Thomas Hellstrom
reported by Dave Airlie Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: domain changes broke ppc r200Dave Airlie
Freedesktop.org bug #8246 The domain changes regressed on PPC, go back to just using 0, as X.org's domain support is crap Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: fixup setversion return codes..Dave Airlie
Frederik Deweerdt <deweerdt@free.fr> noticed some badness in setversion returns, however just making it work, breaks things... this code is hairy with backwards compat... Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: fixup i915 error codesDave Airlie
Frederik Deweerdt <deweerdt@free.fr> pointed this out, I fixed a missing DRM error wrapper also. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: realign sosme radeon code with drm git treeDave Airlie
this applies some minor cleanups for the radeon driver, to use the 3D flush and reset the AGP flags on X recycle Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: realign via driver with drm git treeDave Airlie
This just realigns some code/whitespace between the kernel and main tree Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: remove hash tables on drm exitThomas Hellstrom
Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: cleanupsAdrian Bunk
This patch contains the following cleanups: - make 3 needlessly global functions static - sis_mm.c: fix compile warnings with CONFIG_FB_SIS=y Signed-off-by: Adrian Bunk <bunk@stusta.de> Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: i810_dma.c: fix pointer arithmetic for 64-bit targetDenis Vlasenko
First warning result from open-coded PTR_ERR, the rest is caused by code like this: *(u32 *) ((u32) buf_priv->kernel_virtual + used) I've also fixed a missing PTR_ERR in i830_dma.c Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: avoid kernel oops in some error paths calling drm_lastcloseThomas Hellstrom
Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: allow detection of new VIA chipsetsChuck Short
Update pci ids. patch location: http://www.kernel.org/git/?p=linux/kernel/git/bcollins/ubuntu-dapper.git;a=c ommitdiff;h=5195a64a27550a279b2ecaf400066a3823f2d053 Signed-off-by: Chuck Short <zulcss@gmail.com> Signed-off-by: Ben Collins <bcollins@ubuntu.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: fix i965 build bugAndrew Morton
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: remove FALSE/TRUE that snuck in with simple memory manager changes.Andrew Morton
Thanks to Andrew Morton for pointing these out, I've fixed a few his patch missed. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: Add support for Intel i965G chipsets.Alan Hourihane
This is a patch prepared by Guangdeng Liao based off of Tungsten Graphics's final code drop. From: Alan Hourihane <alanh@tungstengraphics.com> Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: add better explanation for i830/i915Dave Airlie
Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: remove a tab that snuck inDave Airlie
Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: fix return value in auth functionDave Airlie
This just fixes up the return value in the drm_auth:remove_magic Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: SiS 315 Awareness.Thomas Hellstrom
Add support for the SiS 315 to the DRM. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: update user token hashing and map handlesThomas Hellstrom
Keep hashed user tokens, with the following changes: 32-bit physical device addresses are mapped directly to user-tokens. No duplicate maps are allowed, and the addresses are assumed to be outside of the range 0x10000000 through 0x30000000. The user-token is identical to the 32-bit physical start-address of the map. 64-bit physical device addressed are mapped to user-tokens in the range 0x10000000 to 0x30000000 with page-size increments. The user_token should not be interpreted as an address. Other map types, like upcoming TTM maps are mapped to user-tokens in the range 0x10000000 to 0x30000000 with page-size increments. The user_token should not be interpreted as an address. Implement hashed map lookups. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: move drm authentication to new generic hash table.Thomas Hellstrom
Fix drm_remove_magic potential memory leak / corruption. Move drm authentication token hashing to new generic hash table implementation. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: Add the P4VM800PRO (?) PCI ID.Dave Airlie
Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: add drm simple memory manager support for SiS and VIA driversThomas Hellstrom
This add support to the SiS and VIA drivers for the simple memory manager. This fixes a lot of problems with the current simple code these drivers used, including locking and SMP issues. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: add simple DRM memory manager, and hash tableThomas Hellstrom
This adds the DRM hashtable and simple memory manager implementations from Tungsten Graphics, this is NOT the new memory manager, this is a replacement for the SIS and VIA memory managers. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: radeon: Use RADEON_RB3D_DSTCACHE_CTLSTAT instead of ↵Michel Dänzer
RADEON_RB2D_DSTCACHE_CTLSTAT. The latter seems to be a read-only mirror of the former. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: radeon: fix up bus mastering when writeback is disabledMichel Dänzer
When writeback isn't used, actually disable it in the hardware. Not doing this might waste bus bandwidth or even cause memory corruption or system crashes on systems that check bus transfers. No such incident has been reported though. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: radeon: implement RADEON_PARAM_SCRATCH_OFFSET getparamMichel Dänzer
When this succeeds, userspace can read the scratch register contents from th mapped writeback page directly. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: radeon: add some debug output when getparam is called with unknownMichel Dänzer
Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: missing mutex unlockThomas Hellstrom
Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: remove the DRM pci domainDave Airlie
This patch removes the pci_domain from the DRM device structure, and gets it via a macro that either asks the platform or does the alpha special case. jgarzik asked for this to just use the platform magic, but I've no alpha experience and I'd rather not just break it and wait for someone to give out. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: remove local copies of pci bus/slot/funcDave
The drm keeps a local copy of these for little use. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-09-22drm: cleanup old compat code and DRM fns from Linux only codeDave Airlie
This patch removes some of the old compatibility macros from the DRM, and removes use of DRM wrappers from Linux specific code. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-08-30[PATCH] drm: radeon flush TCL VAP for vertex program enable/disableRoland Scheidegger
The radeon requires a VAP state flush when enabling/disabling vertex programs on the r200 cards. Signed-off-by: Dave Airlie <airlied@linux.ie> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-07-02[PATCH] irq-flags: drivers/drm: Use the new IRQF_ constantsThomas Gleixner
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@elte.hu> Cc: "David S. Miller" <davem@davemloft.net> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Dave Airlie <airlied@linux.ie> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-06-30Remove obsolete #include <linux/config.h>Jörn Engel
Signed-off-by: Jörn Engel <joern@wohnheim.fh-wedel.de> Signed-off-by: Adrian Bunk <bunk@stusta.de>
2006-06-27[PATCH] spin/rwlock init cleanupsIngo Molnar
locking init cleanups: - convert " = SPIN_LOCK_UNLOCKED" to spin_lock_init() or DEFINE_SPINLOCK() - convert rwlocks in a similar manner this patch was generated automatically. Motivation: - cleanliness - lockdep needs control of lock initialization, which the open-coded variants do not give - it's also useful for -rt and for lock debugging in general Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-06-24drm: radeon constify radeon microcodeDave Airlie
From: Tilman (DRM CVS) Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-06-24Add i915 ioctls to configure pipes for vblank interrupt.Dave Airlie
i915 vblanks can be generated from either pipe a or b, however a disabled pipe generates no interrupts. This change allows the X server to select which pipe generates vblank interrupts. From: Keith Packard <keith.packard@intel.com> via DRM CVS Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-06-24drm: update radeon to 1.25 add r200 vertex program supportDave Airlie
Add support for r200 vertex programs (R200_EMIT_VAP_PVS_CNTL, and new packet type for making it possible to address whole tcl vector space and have a larger count) From: Roland Scheidegger (DRM CVS) Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-06-24drm: radeon add a tcl state flush before accessing tcl vector spaceDave Airlie
Do a tcl state flush before accessing tcl vector space. This fixes some more problems with flickering (bug #6637). drm may not be appropriate place for this, since doing that flush there might both be overkill and insufficient in some cases. However, it's hard to figure out when that flush is needed, so this has to suffice. There does not seem to be a performance penalty associated with it. From: Roland Scheidegger (DRM CVS) Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-04-23drm: possible cleanupsDave Airlie
This patch contains the following possible cleanups: - make the following needlessly global function static: - drm_bufs.c: drm_addbufs_fb() - remove the following unused EXPORT_SYMBOL's: - drm_agpsupport.c: drm_agp_bind_memory - drm_bufs.c: drm_rmmap_locked - drm_bufs.c: drm_rmmap - drm_stub.c: drm_get_dev Signed-off-by: Adrian Bunk <bunk@stusta.de> Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-04-23drm: fixup r300 scratch on BE machinesDave Airlie
This fixes the r300 scratch stuff to work on PPC, from Ben Herrenschmidt on IRC. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-04-18drm: Fix further issues in drivers/char/drm/via_irq.cJayachandran C
Fix de-reference of 'dev_priv' before NULL check. Signed-off-by: Jayachandran C. <c.jayachandran@gmail.com> Cc: Dave Airlie <airlied@linux.ie> Signed-off-by: Andrew Morton <akpm@osdl.org>
2006-04-18drivers/char/drm/drm_memory.c: possible cleanupsAdrian Bunk
- #if 0 the following unused global function: - drm_ioremap_nocache() - make the following needlessly global functions static: - agp_remap() - drm_lookup_map() Signed-off-by: Adrian Bunk <bunk@stusta.de> Cc: Dave Airlie <airlied@linux.ie> Signed-off-by: Andrew Morton <akpm@osdl.org>
2006-04-07drm: deline a few large inlines in DRM codeDave Airlie
This patch moves a few large functions from drm_memory.h to drm_memory.c, with the following effect: text data bss dec hex filename 46305 1304 20 47629 ba0d new/drm.ko 46367 1304 20 47691 ba4b org/drm.ko 12969 1372 0 14341 3805 new/i810.ko 14712 1372 0 16084 3ed4 org/i810.ko 16447 1364 0 17811 4593 new/i830.ko 18198 1364 0 19562 4c6a org/i830.ko 11875 1324 0 13199 338f new/i915.ko 13025 1324 0 14349 380d org/i915.ko 23936 29288 0 53224 cfe8 new/mga.ko 27280 29288 0 56568 dcf8 org/mga.ko Please apply. Signed-off-by: Denis Vlasenko <vda@ilport.com.ua> Signed-off-by: Dave Airlie <airlied@linux.ie>