| Age | Commit message (Collapse) | Author |
|
Headers touched: linux/interrupt.h, linux/sched.h, linux/timer.h
|
|
Ok, now that most drivers have been converted to the new
irqreturn_t, we can remove the fascist type-checks and just
use a regular integer type which has a simpler calling
convention.
|
|
was for them or not, so that the irq subsystem can properly
handle screaming shared interrupts.
So change the irq handlers to return a "irqretval_t", which
is either IRQ_HANDLED or IRQ_NONE.
|
|
s390 fixes:
- Initialize timing related variables first and then enable the timer interrupt.
- Normalize nano seconds to micro seconds in do_gettimeofday.
- Add types for __kernel_timer_t and __kernel_clockid_t.
- Fix ugly bug in switch_to: set prev to the return value of resume, otherwise
prev still contains the previous process at the time resume was called and
not the previous process at the time resume returned. They differ...
- Add missing include to get the kernel compiled.
- Get a closer match with the i386 termios.h file.
- Cope with INITIAL_JIFFIES.
- Define cpu_relax to do a cpu yield on VM and LPAR.
- Don't reenable interrupts in program check handler.
- Add pte_file definitions.
- Fix PT_IEEE_IP special case in ptrace.
- Use compare and swap to release the lock in _raw_spin_unlock.
- Introduce invoke_softirq to switch to async. interrupt stack.
|
|
|
|
1) Every arch implemented local_bh_foo identically, move to
linux/interrupt.h
2) Kill all asm/softirq.h references
3) Kill asm/softirq.h itself
4) Move local_bh_disable() out of line to kernel/softirq.c
5) Add BUG check on irqs_disabled() to local_bh_disable()
|
|
linux/interrupt.h needs:
asm/system.h: smb_mb()
linux/linkage.h: asmlinkage/FASTCALL/etc.
|
|
The timer code is attempting to replicate the softirq characteristics at
the tasklet level, which is a little pointless. This patch converts
timers to be a first-class softirq citizen.
|
|
It really makes no sense to have request_irq and free_irq in sched.h
Let's move them to interrupt.h instead. Note that I also remove sched.h
from interrupt.h since it's not needed.
|
|
This is the smptimers patch plus the removal of old BHs and a rewrite of
task-queue handling.
Basically with the removal of TIMER_BH i think the time is right to get
rid of old BHs forever, and to do a massive cleanup of all related
fields. The following five basic 'execution context' abstractions are
supported by the kernel:
- hardirq
- softirq
- tasklet
- keventd-driven task-queues
- process contexts
I've done the following cleanups/simplifications to task-queues:
- removed the ability to define your own task-queue, what can be done is
to schedule_task() a given task to keventd, and to flush all pending
tasks.
This is actually a quite easy transition, since 90% of all task-queue
users in the kernel used BH_IMMEDIATE - which is very similar in
functionality to keventd.
I believe task-queues should not be removed from the kernel altogether.
It's true that they were written as a candidate replacement for BHs
originally, but they do make sense in a different way: it's perhaps the
easiest interface to do deferred processing from IRQ context, in
performance-uncritical code areas. They are easier to use than
tasklets.
code that cares about performance should convert to tasklets - as the
timer code and the serial subsystem has done already. For extreme
performance softirqs should be used - the net subsystem does this.
and we can do this for 2.6 - there are only a couple of areas left after
fixing all the BH_IMMEDIATE places.
i have moved all the taskqueue handling code into kernel/context.c, and
only kept the basic 'queue a task' definitions in include/linux/tqueue.h.
I've converted three of the most commonly used BH_IMMEDIATE users:
tty_io.c, floppy.c and random.c. [random.c might need more thought
though.]
i've also cleaned up kernel/timer.c over that of the stock smptimers
patch: privatized the timer-vec definitions (nothing needs it,
init_timer() used it mistakenly) and cleaned up the code. Plus i've moved
some code around that does not belong into timer.c, and within timer.c
i've organized data and functions along functionality and further
separated the base timer code from the NTP bits.
net_bh_lock: i have removed it, since it would synchronize to nothing. The
old protocol handlers should still run on UP, and on SMP the kernel prints
a warning upon use. Alexey, is this approach fine with you?
scalable timers: i've further improved the patch ported to 2.5 by wli and
Dipankar. There is only one pending issue i can see, the question of
whether to migrate timers in mod_timer() or not. I'm quite convinced that
they should be migrated, but i might be wrong. It's a 10 lines change to
switch between migrating and non-migrating timers, we can do performance
tests later on. The current, more complex migration code is pretty fast
and has been stable under extremely high networking loads in the past 2
years, so we can immediately switch to the simpler variant if someone
proves it improves performance. (I'd say if non-migrating timers improve
Apache performance on one of the bigger NUMA boxes then the point is
proven, no further though will be needed.)
|
|
This came up in 2.5.30, apparently someone was fooled by names
which do not quite match actual functions.
|
|
a number of drivers)
|
|
Doug Gilbert and James Bottomley hassled me all through KernelSummit &
OLS to explain about softirqs, tasklets and bottom halves. In the end,
it was easier to write the code myself. Thanks to James for pointing
out that the pointer handling in my original code was completely broken
and helping me debug.
I've booted this patch on a 4-way system at OSDL with two Adaptec SCSI
cards. I haven't tried stressing it (not quite sure which discs I can
use ;-), and I don't understand the locking in the scsi subsystem at all.
The main effect of applying this patch is that scsi_softirq() [was
scsi_tasklet_func, and before that scsi_bottom_half_handler()] can now be
run on multiple CPUs at the same time. We _seem_ to do enough locking
elsewhere in the SCSI stack that this is safe. But someone who really
understands the SCSI stack should audit this.
This work shows up a hole in the current softirq API -- there's no support
for unregistering a softirq (close_softirq or similar). We should do
this in scsi_exit -- make sure no softirqs are running while we unload.
This probably isn't a problem in practice, but it'd be nice to fix it.
|
|
Removes CM206_BH (patch approved by maintainer).
Deletes the no-longer-used BH entries from the enum. Explicit numbers
added so as not to destroy binary compatibility needlessly.
|
|
This makes tasklet_vec and tasklet_hi_vec static inside softirq.c, and
makes them __per_cpu_data.
|
|
We have to include linux/bitops.h for arch using generic_xxx().
The following patch changes <asm/bitops.h> of include/linux/* to
<linux/bitops.h>.
|
|
- Jens Axboe: more bio updates, fix some request list bogosity under load
- Al Viro: export seq_xxx functions
- Manfred Spraul: include file cleanups, pc110pad compile fix
- David Woodhouse: fix JFFS2 write error handling
- Dave Jones: start merging up with 2.4.x patches
- Manfred Spraul: coredump fixes, FS event counter cleanups
- me: fix SCSI CD-ROM sectorsize BIO breakage
|
|
- Jens Axboe: remove trivially dead io_request_lock usage
- Andrea Arcangeli: softirq cleanup and ARM fixes. Slab cleanups
- Christoph Hellwig: gendisk handling helper functions/cleanups
- Nikita Danilov: reiserfs dead code pruning
- Anton Altaparmakov: NTFS update to 1.1.18
- firestream network driver: patch reverted on authors request
- NIIBE Yutaka: SH architecture update
- Paul Mackerras: PPC cleanups, PPC8xx update.
- me: reverse broken bootdata allocation patch that went into pre5
|
|
- Kai Germaschewski: ISDN updates
- David Miller: sparc and network updates
- Andrea Arcangeli, Maksim Krasnyanskiy: tasklet fixes
- Stelian Pop: Motion Eye camera driver update
- Jens Axboe: DAC960 update
|
|
- remember to bump the version string
- Andrea Arkangeli: softirq cleanups and fixes, and everybody is happy
again (ie I changed some details to make me happy ;)
- Neil Brown: raid5 stall fix, nfsd filehandle sanity check fix
|
|
- Takanori Kawano: brlock indexing bugfix
- Ingo Molnar, Jeff Garzik: softirq updates and fixes
- Al Viro: rampage of superblock cleanups.
- Jean Tourrilhes: Orinoco driver update v6, IrNET update
- Trond Myklebust: NFS brown-paper-bag thing
- Tim Waugh: parport update
- David Miller: networking and sparc updates
- Jes Sorensen: m68k update.
- Ben Fennema: UDF update
- Geert Uytterhoeven: fbdev logo updates
- Willem Riede: osst driver updates
- Paul Mackerras: PPC update
- Marcelo Tosatti: unlazy swap cache
- Mikulas Patocka: hpfs update
|
|
- Andreas Dilger: make ext2fs react more gracefully to inode disk
errors
- Andrea Arkangeli: fix up alpha compile issues
- Ingo Molnar: io-apic MP table parsing update and softirq latency
update
- Johannes Erdfelt: USB updates
- Richard Henderson: alpha rawhide irq handling fixes
- Marcelo, Andrea, Rik: more VM issues
- Al Viro: fix various ext2 directory handling checks by biting the
bullet and using the page cache.
|
|
- Jens: better ordering of requests when unable to merge
- Neil Brown: make md work as a module again (we cannot autodetect
in modules, not enough background information)
- Neil Brown: raid5 SMP locking cleanups
- Neil Brown: nfsd: handle Irix NFS clients named pipe behavior and
dentry leak fix
- maestro3 shutdown fix
- fix dcache hash calculation that could cause bad hashes under certain
circumstances (Dean Gaudet)
- David Miller: networking and sparc updates
- Jeff Garzik: include file cleanups
- Andy Grover: ACPI update
- Coda-fs error return fixes
- rth: alpha Jensen update
|
|
|