aboutsummaryrefslogtreecommitdiff
path: root/drivers/char/drm
AgeCommit message (Collapse)Author
2006-12-09Merge branch 'drm-patches' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 * 'drm-patches' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (21 commits) Fix http://bugzilla.kernel.org/show_bug.cgi?id=7606 drm: add flag for mapping PCI DMA buffers read-only. drm: fix up irqflags in drm_lock.c drm: i915 updates drm: i915: fix up irqflags arg drm: i915: Only return EBUSY after we've established we need to schedule a new swap. drm: i915: Fix 'sequence has passed' condition in i915_vblank_swap(). drm: i915: Add SAREA fileds for determining which pipe to sync window buffer swaps to. drm: Make handling of dev_priv->vblank_pipe more robust. drm: DRM_I915_VBLANK_SWAP ioctl: Take drm_vblank_seq_type_t instead drm: i915: Add ioctl for scheduling buffer swaps at vertical blanks. drm: Core vsync: Don't clobber target sequence number when scheduling signal. drm: Core vsync: Add flag DRM_VBLANK_NEXTONMISS. drm: Make locked tasklet handling more robust. drm: drm_rmdraw: Declare id and idx as signed so testing for < 0 works as intended. drm: Change first valid DRM drawable ID to be 1 instead of 0. drm: drawable locking + memory management fixes + copyright drm: Add support for interrupt triggered driver callback with lock held to DRM core. drm: Add support for tracking drawable information to core drm: add support for secondary vertical blank interrupt to i915 ...
2006-12-08[PATCH] struct path: convert drmJosef Sipek
Signed-off-by: Josef Sipek <jsipek@fsl.cs.sunysb.edu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-12-07[PATCH] mm: incorrect VM_FAULT_OOM returns from driversNick Piggin
Some drivers are returning OOM when it is not in response to a memory shortage. Signed-off-by: Nick Piggin <npiggin@suse.de> Cc: Dave Airlie <airlied@linux.ie> Cc: Jaroslav Kysela <perex@suse.cz> Cc: Takashi Iwai <tiwai@suse.de> Cc: Greg KH <greg@kroah.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-12-07[PATCH] drm-sis linkage fixAndrew Morton
Fix http://bugzilla.kernel.org/show_bug.cgi?id=7606 WARNING: "drm_sman_set_manager" [drivers/char/drm/sis.ko] undefined! Cc: <daniel-silveira@gee.inatel.br> Cc: Dave Airlie <airlied@linux.ie> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-12-07Fix http://bugzilla.kernel.org/show_bug.cgi?id=7606Andrew Morton
WARNING: "drm_sman_set_manager" [drivers/char/drm/sis.ko] undefined! Cc: <daniel-silveira@gee.inatel.br> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-12-07drm: add flag for mapping PCI DMA buffers read-only.George Sapountzis
Add DRM_PCI_BUFFER_RO flag for mapping PCI DMA buffer read-only. An additional flag is needed, since PCI DMA buffers do not have an associated map. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-12-07drm: fix up irqflags in drm_lock.cDave Airlie
Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-12-07drm: i915 updates=?utf-8?q?Michel_D=C3=A4nzer?=
Add support for DRM_VBLANK_NEXTONMISS. Bump minor for swap scheduling ioctl and secondary vblank support. Avoid mis-counting vblank interrupts when they're only enabled for pipe A. Only schedule vblank tasklet if there are scheduled swaps pending. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-12-07drm: i915: fix up irqflags arg=?utf-8?q?Michel_D=C3=A4nzer?=
Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-12-07drm: i915: Only return EBUSY after we've established we need to schedule a ↵=?utf-8?q?Michel_D=C3=A4nzer?=
new swap. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-12-07drm: i915: Fix 'sequence has passed' condition in i915_vblank_swap().=?utf-8?q?Michel_D=C3=A4nzer?=
Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-12-07drm: i915: Add SAREA fileds for determining which pipe to sync window buffer ↵=?utf-8?q?Michel_D=C3=A4nzer?=
swaps to. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-12-07drm: Make handling of dev_priv->vblank_pipe more robust.=?utf-8?q?Michel_D=C3=A4nzer?=
Initialize it to default value if it hasn't been set by the X server yet. In i915_vblank_pipe_set(), only update dev_priv->vblank_pipe and call i915_enable_interrupt() if the argument passed from userspace is valid to avoid corrupting dev_priv->vblank_pipe on invalid arguments. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-12-07drm: DRM_I915_VBLANK_SWAP ioctl: Take drm_vblank_seq_type_t instead=?utf-8?q?Michel_D=C3=A4nzer?=
of pipe number. Handle relative as well as absolute target sequence numbers. Return error if target sequence has already passed, so userspace can deal with this situation as it sees fit. On success, return the sequence number of the vertical blank when the buffer swap is expected to take place. Also add DRM_IOCTL_I915_VBLANK_SWAP definition for userspace code that may want to use ioctl() instead of drmCommandWriteRead(). Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-12-07drm: i915: Add ioctl for scheduling buffer swaps at vertical blanks.=?utf-8?q?Michel_D=C3=A4nzer?=
This uses the core facility to schedule a driver callback that will be called ASAP after the given vertical blank interrupt with the HW lock held. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-12-07drm: Core vsync: Don't clobber target sequence number when scheduling signal.=?utf-8?q?Michel_D=C3=A4nzer?=
It looks like this would have caused signals to always get sent on the next vertical blank, regardless of the sequence number. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-12-07drm: Core vsync: Add flag DRM_VBLANK_NEXTONMISS.=?utf-8?q?Michel_D=C3=A4nzer?=
When this flag is set and the target sequence is missed, wait for the next vertical blank instead of returning immediately. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-12-07drm: Make locked tasklet handling more robust.=?utf-8?q?Michel_D=C3=A4nzer?=
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. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-12-07drm: drm_rmdraw: Declare id and idx as signed so testing for < 0 works as ↵=?utf-8?q?Felix_K=C3=BChling?=
intended. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-12-07drm: Change first valid DRM drawable ID to be 1 instead of 0.=?utf-8?q?Michel_D=C3=A4nzer?=
This makes it easier for userspace to know when it needs to allocate an ID. Also free drawable information memory when it's no longer needed. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-12-07drm: drawable locking + memory management fixes + copyright=?utf-8?q?Michel_D=C3=A4nzer?=
Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-12-07drm: Add support for interrupt triggered driver callback with lock held to ↵=?utf-8?q?Michel_D=C3=A4nzer?=
DRM core. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-12-07drm: Add support for tracking drawable information to core=?utf-8?q?Michel_D=C3=A4nzer?=
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. Only reallocate cliprect memory if the number of cliprects changes. Also improve diagnostic output. hook up drm ioctl update draw export drm_get_drawable_info symbol Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-12-07drm: add support for secondary vertical blank interrupt to i915=?utf-8?q?Michel_D=C3=A4nzer?=
When the vertical blank interrupt is enabled for both pipes, pipe A is considered primary and pipe B secondary. When it's only enabled for one pipe, it's always considered primary for backwards compatibility. Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-12-07drm: add support for secondary vertical blank interrupt to DRM core=?utf-8?q?Michel_D=C3=A4nzer?=
Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-11-22WorkStruct: make allyesconfigDavid Howells
Fix up for make allyesconfig. Signed-Off-By: David Howells <dhowells@redhat.com>
2006-10-25drm: ioremap balanced with iounmap for drivers/char/drmAmol Lad
ioremap must be balanced by an iounmap and failing to do so can result in a memory leak. Tested (compilation only) to make sure the files are compiling without any warning/error due to new changes Signed-off-by: Amol Lad <amol@verismonetworks.com> Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-10-25drm: fix error returns, sysfs error handlingJeff Garzik
- callers of drm_sysfs_create() and drm_sysfs_device_add() looked for errors using IS_ERR(), but the functions themselves only ever returned NULL on error. Fixed. - unwind from, and propagate sysfs errors Signed-off-by: Jeff Garzik <jeff@garzik.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-10-25fix return code in error case.Dave Jones
The other failure returns in this function are negative, so make this one do the same. Signed-off-by: Dave Jones <davej@redhat.com> Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-10-24drm: mga: set dev_priv_sizeTilman Sauerbeck
fd.o bug 1746 Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-10-24drm: savage: dev->agp_buffer_map is not initialized for AGP DMA on savagesMichael Karcher
fd.o bug 8662 Signed-off-by: Dave Airlie <airlied@linux.ie>
2006-10-24drm: radeon: only allow specific type-3 packetss through verifierRoland Scheidegger
only allow specific type-3 packets to pass the verifier instead of all for r100/r200 as others might be unsafe (r300 already does this), and add checking for these we need but aren't safe. Check the RADEON_CP_INDX_BUFFER packet on both r200 and r300 as it isn't safe neither. Signed-off-by: Dave Airlie <airlied@linux.ie>
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>