#
44aefd27 |
| 05-Oct-2006 |
Linus Torvalds <torvalds@g5.osdl.org> |
Merge git://git.infradead.org/~dhowells/irq-2.6
* git://git.infradead.org/~dhowells/irq-2.6: IRQ: Maintain regs pointer globally rather than passing to IRQ handlers IRQ: Typedef the IRQ handler
Merge git://git.infradead.org/~dhowells/irq-2.6
* git://git.infradead.org/~dhowells/irq-2.6: IRQ: Maintain regs pointer globally rather than passing to IRQ handlers IRQ: Typedef the IRQ handler function type IRQ: Typedef the IRQ flow handler function type
show more ...
|
#
7d12e780 |
| 05-Oct-2006 |
David Howells <dhowells@redhat.com> |
IRQ: Maintain regs pointer globally rather than passing to IRQ handlers
Maintain a per-CPU global "struct pt_regs *" variable which can be used instead of passing regs around manually through all ~1
IRQ: Maintain regs pointer globally rather than passing to IRQ handlers
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)
show more ...
|
Revision tags: v2.6.19-rc1, v2.6.18 |
|
#
0612ec48 |
| 19-Sep-2006 |
Dmitry Torokhov <dtor@insightbb.com> |
Merge rsync://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
|
#
9b4f2e95 |
| 17-Sep-2006 |
Stefan Richter <stefanr@s5r6.in-berlin.de> |
ieee1394: merge from Linus
Conflicts: drivers/ieee1394/hosts.c Patch "lockdep: annotate ieee1394 skb-queue-head locking" was meddling with patch "ieee1394: fix kerneldoc of hpsb_alloc_host".
Signed
ieee1394: merge from Linus
Conflicts: drivers/ieee1394/hosts.c Patch "lockdep: annotate ieee1394 skb-queue-head locking" was meddling with patch "ieee1394: fix kerneldoc of hpsb_alloc_host".
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
show more ...
|
Revision tags: v2.6.18-rc7, v2.6.18-rc6 |
|
#
0a7d5f8c |
| 30-Aug-2006 |
David Woodhouse <dwmw2@infradead.org> |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
|
Revision tags: v2.6.18-rc5, v2.6.18-rc4 |
|
#
d932cb7e |
| 04-Aug-2006 |
Dmitry Torokhov <dtor@insightbb.com> |
Merge rsync://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into for-linus
|
#
57cad808 |
| 31-Jul-2006 |
Paul Mackerras <paulus@samba.org> |
Merge branch 'merge'
|
Revision tags: v2.6.18-rc3 |
|
#
20f99dcf |
| 27-Jul-2006 |
John W. Linville <linville@tuxdriver.com> |
Merge branch 'from-linus' into upstream
|
#
4bf311dd |
| 17-Jul-2006 |
Steven Whitehouse <swhiteho@redhat.com> |
Merge branch 'master'
|
Revision tags: v2.6.18-rc2 |
|
#
70d002bc |
| 12-Jul-2006 |
Linus Torvalds <torvalds@g5.osdl.org> |
Merge commit master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6 of HEAD
* HEAD: (44 commits) [PATCH] USB: move usb-serial.h to include/linux/usb/ [PATCH] USB: Anydata: Fixes wrong URB ca
Merge commit master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6 of HEAD
* HEAD: (44 commits) [PATCH] USB: move usb-serial.h to include/linux/usb/ [PATCH] USB: Anydata: Fixes wrong URB callback. [PATCH] USB: gadget section fixups [PATCH] USB: another unusual device [PATCH] USB: Add one VID/PID to ftdi_sio [PATCH] USB: unusual_devs entry for Sony DSC-H5 [PATCH] USB: unusual_devs entry for Nokia E61 [PATCH] USB: unusual_devs entry for Nokia N91 [PATCH] USB: add ZyXEL vendor/product ID to rtl8150 driver [PATCH] USB: Option driver: new product ID [PATCH] USB: add support for WiseGroup., Ltd SmartJoy Dual PLUS Adapter [PATCH] USB: ipw.c driver fix [PATCH] USB: remove devfs information from Kconfig [PATCH] USB: remove empty destructor from drivers/usb/mon/mon_text.c [PATCH] USB: ipaq.c timing parameters [PATCH] USB: ipaq.c bugfixes [PATCH] USB: ehci: fix bogus alteration of a local variable [PATCH] USB: add driver for non-composite Sierra Wireless devices [PATCH] USB: fix pointer dereference in drivers/usb/misc/usblcd [PATCH] USB: Kill compiler warning in quirk_usb_handoff_ohci ...
show more ...
|
#
a969888c |
| 11-Jul-2006 |
Greg Kroah-Hartman <gregkh@suse.de> |
[PATCH] USB: move usb-serial.h to include/linux/usb/
USB serial outside of the kernel tree can not build properly due to usb-serial.h being buried down in the source tree. This patch moves the loca
[PATCH] USB: move usb-serial.h to include/linux/usb/
USB serial outside of the kernel tree can not build properly due to usb-serial.h being buried down in the source tree. This patch moves the location of the file to include/linux/usb and fixes up all of the usb serial drivers to handle the move properly.
Cc: Sergei Organov <osv@javad.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
show more ...
|
Revision tags: v2.6.18-rc1, v2.6.17, v2.6.17-rc6, v2.6.17-rc5, v2.6.17-rc4, v2.6.17-rc3, v2.6.17-rc2, v2.6.17-rc1 |
|
#
95d465fd |
| 01-Apr-2006 |
Dmitry Torokhov <dtor_core@ameritech.net> |
Manual merge with Linus.
Conflicts: arch/powerpc/kernel/setup-common.c drivers/input/keyboard/hil_kbd.c drivers/input/mouse/hil_ptr.c
|
#
86579dd0 |
| 31-Mar-2006 |
Steven Whitehouse <swhiteho@redhat.com> |
Merge branch 'master'
|
#
d62e54ab |
| 30-Mar-2006 |
Steve French <sfrench@us.ibm.com> |
Merge with /pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Signed-off-by: Steve French <sfrench@us.ibm.com>
|
#
11ed56fb |
| 24-Mar-2006 |
Jeff Garzik <jeff@garzik.org> |
Merge branch 'upstream'
Conflicts:
drivers/scsi/sata_vsc.c
|
#
1ebbe2b2 |
| 23-Mar-2006 |
Trond Myklebust <Trond.Myklebust@netapp.com> |
Merge branch 'linus'
|
#
b4d8d1a9 |
| 23-Mar-2006 |
Anton Altaparmakov <aia21@cantab.net> |
Merge branch 'master' of /usr/src/ntfs-2.6/
|
#
74293759 |
| 23-Mar-2006 |
Anton Altaparmakov <aia21@hera.kernel.org> |
Merge branch 'master' of /home/aia21/ntfs-2.6/
|
#
5501972e |
| 22-Mar-2006 |
Jaroslav Kysela <perex@suse.cz> |
Merge with rsync://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
|
#
4d74f423 |
| 21-Mar-2006 |
Nathan Scott <nathans@bruce> |
Merge HEAD from ../linux-2.6
|
#
d04cdb64 |
| 21-Mar-2006 |
James Bottomley <jejb@mulgrave.il.steeleye.com> |
Merge ../linux-2.6
|
#
2bf2154c |
| 21-Mar-2006 |
Linus Torvalds <torvalds@g5.osdl.org> |
Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6: (81 commits) [PATCH] USB: omninet: fix up debugging comments [PATCH
Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6: (81 commits) [PATCH] USB: omninet: fix up debugging comments [PATCH] USB serial: add navman driver [PATCH] USB: Fix irda-usb use after use [PATCH] USB: rtl8150 small fix [PATCH] USB: ftdi_sio: add Icom ID1 USB product and vendor ids [PATCH] USB: cp2101: add new device IDs [PATCH] USB: fix check_ctrlrecip to allow control transfers in state ADDRESS [PATCH] USB: vicam.c: fix a NULL pointer dereference [PATCH] USB: ZC0301 driver bugfix [PATCH] USB: add support for Creativelabs Silvercrest USB keyboard [PATCH] USB: storage: new unusual_devs.h entry: Mitsumi 7in1 Card Reader [PATCH] USB: storage: unusual_devs.h entry 0420:0001 [PATCH] USB: storage: another unusual_devs.h entry [PATCH] USB: storage: sandisk unusual_devices entry [PATCH] USB: fix initdata issue in isp116x-hcd [PATCH] USB: usbcore: usb_set_configuration oops (NULL ptr dereference) [PATCH] USB: usbcore: Don't assume a USB configuration includes any interfaces [PATCH] USB: ub 03 drop stall clearing [PATCH] USB: ub 02 remove diag [PATCH] USB: ub 01 remove first_open ...
show more ...
|
Revision tags: v2.6.16 |
|
#
e9a66c64 |
| 17-Mar-2006 |
Greg Kroah-Hartman <gregkh@suse.de> |
[PATCH] USB serial: add navman driver
Thanks to Warren Lewis <wlewis@scn.org> for the information needed to write the driver and for testing it out.
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.d
[PATCH] USB serial: add navman driver
Thanks to Warren Lewis <wlewis@scn.org> for the information needed to write the driver and for testing it out.
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
show more ...
|