kernel_optimize_test/drivers
Remy Bohmer 1ecc26bd27 atmel_serial: split the interrupt handler
Split up the interrupt handler of the serial port into a interrupt top-half
and a tasklet.

The goal is to get the interrupt top-half as short as possible to minimize
latencies on interrupts.  But the old code also does some calls in the
interrupt handler that are not allowed on preempt-RT in IRQF_NODELAY context.
This handler is executed in this context because of the interrupt sharing with
the timer interrupt.  The timer interrupt on Preempt-RT runs in IRQF_NODELAY
context.

The tasklet takes care of handling control status changes, pushing incoming
characters to the tty layer, handling break and other errors.  It also handles
pushing TX data into the data register.

Reading the complete receive queue is still done in the top-half because we
never want to miss any incoming character.

[hskinnemoen@atmel.com: misc cleanups and simplifications]
Signed-off-by: Remy Bohmer <linux@bohmer.net>
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
Cc: Andrew Victor <linux@maxim.org.za>
Tested-by: Marc Pignat <marc.pignat@hevs.ch>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-02-08 09:22:37 -08:00
..
acorn/char
acpi ACPI: fix build warning 2008-02-07 04:24:01 -05:00
amba
ata ata_piix.c:piix_init_one() must be __devinit 2008-02-06 07:01:56 -05:00
atm
auxdisplay
base Driver core: Revert "Fix Firmware class name collision" 2008-02-07 11:31:46 -08:00
block aoe: statically initialise devlist_lock 2008-02-08 09:22:32 -08:00
bluetooth Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2008-02-05 10:09:07 -08:00
cdrom Merge branch 'for-2.6.25' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2008-02-07 09:02:26 -08:00
char tty_ioctl: drag screaming into compliance with the coding style 2008-02-08 09:22:25 -08:00
clocksource
connector
cpufreq [CPUFREQ] fix configuration help message 2008-02-06 22:57:58 -05:00
cpuidle Revert "cpuidle: build fix for non-x86" 2008-02-07 04:16:34 -05:00
crypto
dca
dio dio: ARRAY_SIZE() cleanup 2008-02-05 09:44:23 -08:00
dma async_tx: replace 'int_en' with operation preparation flags 2008-02-06 10:12:18 -07:00
edac drivers/edac/i3000: document type promotion 2008-02-07 08:42:23 -08:00
eisa
firewire
firmware SMBIOS/DMI: add type 41 = Onboard Devices Extended Information 2008-02-08 09:22:37 -08:00
gpio gpio: handle pca953{4,5,6,7,8} too 2008-02-06 10:41:15 -08:00
hid
hwmon hwmon: (lm80) Add individual alarm files 2008-02-07 20:39:45 -05:00
i2c hwmon: Discard useless I2C driver IDs 2008-02-07 20:39:44 -05:00
ide aout: remove unnecessary inclusions of {asm, linux}/a.out.h 2008-02-08 09:22:30 -08:00
ieee1394
infiniband RDMA/nes: Add a driver for NetEffect RNICs 2008-02-04 20:20:45 -08:00
input mn10300: add the MN10300/AM33 architecture to the kernel 2008-02-08 09:22:30 -08:00
isdn drivers/isdn/hardware/eicon/debug.c: fix uninitialized var warning 2008-02-06 10:41:12 -08:00
leds leds: Add HP Jornada 6xx driver 2008-02-07 10:10:28 +00:00
lguest Fix container_of() usage 2008-02-08 09:22:32 -08:00
macintosh ppc: fix #ifdef-s in mediabay driver (take 2) 2008-02-06 02:57:50 +01:00
mca
md dm raid1: report fault status 2008-02-08 02:11:39 +00:00
media Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2008-02-07 12:57:44 -08:00
message
mfd ASIC3 driver 2008-02-07 08:42:23 -08:00
misc [SCSI] enclosure: add support for enclosure services 2008-02-07 18:04:10 -06:00
mmc
mtd Merge git://git.infradead.org/mtd-2.6 2008-02-07 10:20:31 -08:00
net mn10300: add the MN10300/AM33 architecture to the kernel 2008-02-08 09:22:30 -08:00
nubus nubus: kill drivers/nubus/nubus_syms.c 2008-02-05 09:44:23 -08:00
of [POWERPC] Create and hook up of_platform_device_shutdown 2008-02-06 16:29:59 +11:00
oprofile
parisc iommu sg merging: parisc: make iommu respect the segment size limits 2008-02-05 09:44:10 -08:00
parport parport: fix ieee1284_epp_read_addr 2008-02-08 09:22:36 -08:00
pci mn10300: add the MN10300/AM33 architecture to the kernel 2008-02-08 09:22:30 -08:00
pcmcia drivers/pcmcia: add missing pci_dev_get 2008-02-05 09:44:09 -08:00
pnp Merge branches 'release', 'bugzilla-6217', 'bugzilla-6629', 'bugzilla-6933', 'bugzilla-7186', 'bugzilla-8269', 'bugzilla-8570', 'bugzilla-9139', 'bugzilla-9277', 'bugzilla-9341', 'bugzilla-9444', 'bugzilla-9614', 'bugzilla-9643' and 'bugzilla-9644' into release 2008-02-07 03:09:43 -05:00
power Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2008-02-07 09:45:58 -08:00
ps3 ps3: use symbolic names for video modes 2008-02-06 10:41:17 -08:00
rapidio
rtc rtc: at91sam9 RTC support (RTT and/or RTC) 2008-02-06 10:41:14 -08:00
s390 calibrate_delay() must be __cpuinit 2008-02-06 10:41:08 -08:00
sbus
scsi Convert SG from nopage to fault. 2008-02-07 19:09:22 -08:00
serial atmel_serial: split the interrupt handler 2008-02-08 09:22:37 -08:00
sh
sn
spi spi: remove more dev->power.power_state usage 2008-02-06 10:41:11 -08:00
ssb
tc
telephony
thermal
uio uio: nopage 2008-02-06 10:41:07 -08:00
usb usb: net2280 can't have a function called show_registers() 2008-02-08 09:22:30 -08:00
video mn10300: add the MN10300/AM33 architecture to the kernel 2008-02-08 09:22:30 -08:00
virtio virtio: add missing #include <linux/delay.h> 2008-02-06 10:41:21 -08:00
w1 DS1WM: decouple host IRQ and INTR active state settings 2008-02-07 08:42:06 -08:00
watchdog
xen
zorro
Kconfig Merge branches 'release' and 'menlo' into release 2008-02-07 03:18:04 -05:00
Makefile Merge branches 'release' and 'menlo' into release 2008-02-07 03:18:04 -05:00