- 14 Jun, 2002 1 commit
-
-
Ingo Molnar authored
-
- 12 Jun, 2002 1 commit
-
-
Ingo Molnar authored
- i've extended the scheduler context-switch mechanism with the following per-arch defines: prepare_arch_schedule(prev_task); finish_arch_schedule(prev_task); prepare_arch_switch(rq); finish_arch_switch(rq); - plus switch_to() takes 3 parameters again: switch_to(prev, next, last); - schedule_tail() has the 'prev' task parameter again, it must be passed over in switch_to() and passed in to the fork() startup path. architectures that need to unlock the runqueue before doing the switch can do the following: #define prepare_arch_schedule(prev) task_lock(prev) #define finish_arch_schedule(prev) task_unlock(prev) #define prepare_arch_switch(rq) spin_unlock(&(rq)->lock) #define finish_arch_switch(rq) __sti() this way the task-lock makes sure that a task is not scheduled on some other CPU before the switch-out finishes, but the runqueue lock is dropped. (Local interrupts are kept disabled in this variant, just to exclude things like TLB flushes - if that matters.) architectures that can hold the runqueue lock during context-switch can do the following simplification: #define prepare_arch_schedule(prev) do { } while(0) #define finish_arch_schedule(prev) do { } while(0) #define prepare_arch_switch(rq) do { } while(0) #define finish_arch_switch(rq) spin_unlock_irq(&(rq)->lock) further optimizations possible in the 'simple' variant: - an architecture does not have to handle the 'last' parameter in switch_to() if the 'prev' parameter is unused in finish_arch_schedule(). This way the inlined return value of context_switch() too gets optimized away at compile-time. - an architecture does not have to pass the 'prev' pointer to schedule_tail(), if the 'prev' parameter is unused in finish_arch_schedule(). the x86 architecture makes use of these optimizations. Via this solution we have a reasonably flexible context-switch setup which falls back to the current (faster) code on x86, but on other platforms the runqueue lock can be dropped before doing the context-switch as well. Ingo NOTE: i have coded and tested the 'complex' variant on x86 as well to make sure it works for you on Sparc64 - but since x86's switch_mm() is not too subtle it can use the simpler variant. [ The following things had to be done to make x86 arch use the complex variant: the 4 complex macros have to be used in system.h, entry.S has to 'pushl %ebx' and 'addl $4, %esp' around the call to schedule_tail(), and switch_to() had to be reverted to the 3-parameter variant present in the 2.4 kernels. NOTE2: prepare_to_switch() functionality has been moved into the prepare_arch_switch() macro. NOTE3: please use macros for prepare|finish_arch_switch() so that we can keep the scheduler data structures internal to sched.c.
-
- 11 Jun, 2002 38 commits
-
-
Peter Chubb authored
This patch fixes the Compaq WL210 problems I've been having. The symptoms were that no interupts were ever received from the card; the BIOS reported it had assigned INTA to IRQ 10; but the yenta driver reported IRQ 17. The fix is not to rely on the BIOS's initialisation of interrupt routing in the TI1410, but to do it explicitly. This may break laptops that actually use the parallel ISA IRQ mechanism.
-
Linus Torvalds authored
on non-x86 architectures)
-
Linus Torvalds authored
in structures and unions (and why not other variables too..)
-
Linus Torvalds authored
-
Linus Torvalds authored
-
Linus Torvalds authored
-
Andi Kleen authored
Many old ISA drivers are not 64bit clean. To avoid dealing with them on x86-64 I guarded them with CONFIG_ISA. This is also helpful for other archs (including modern x86) that do not have ISA slots anymore. The patch has been reviewed by Linux-Kernel, with some additional cleanups by me. It misses some directories like ISDN or sound drivers.
-
Andi Kleen authored
This fixes a potential security issue on i386. FXRSTOR raises an #GP when the MXCSR field in the FXSAVE frame contains illegal values. By putting an signal frame just at a border to an unmapped page a malicious user could potentially cause an exception in the context switch using this. When the EFAULT occurs in the last bytes of the signal frame the MXCSR check would be skipped in the old code, but the rogue value would be already in task_struct, causing problems later. Here is the minimal fix for this. Originally discovered by Andrea while doing x86-64 work. It was fixed in a different way a bit more intrusive way on x86-64 - all FXRSTOR in the kernel are guarded by exception handlers.
-
Andi Kleen authored
It's nearly impossible to get the correct CPU names for AMD CPUs in the MP table (would need BIOS calls etc.). The decoding of CPU names form the mptable doesn't look too useful anyways, because the correct CPU name from CPUID is printed only a few lines later. This patch just removes the name table and replaces it with a printout of the hex value. This mirrors a change in x86-64
-
Andi Kleen authored
Remove myself as networking maintainer. I haven't done much for networking for a long time and it doesn't look likely it'll change anytime soon. Also David/Alexey are doing a fine job without me.
-
Andi Kleen authored
Here is the big 2.5.21 x86-64 sync patch. It only touches arch/x86_64 and include/asm-x86_64. It requires a few other changes that I'm sending in separate mail. Changes: - merge wit 2.5.21 - merge from 2.5.21/i386 (new PCI code, new LDT code etc.) - sync with 2.4-x86_64 tree. - minor updates to 32bit emulation - better early console; including serial support. - now set up dummy PDA for booting to avoid problems - Fix GS reloading in context switch one instruction race - Remove hardcoded names from mpparse code - Fix inline assembly for RAID-5 xor (similar change needed for i386) - Real per cpu data support based on PDA field - Cleanup of offset.c generation requested by Kai: it only puts structure offsets into offset.h now. - Fix i387 fxsave signal frame problems. - Add uname emulation via personality ("linux32") - New SSE optimized checksum-copy, copy*user, memcpy, clear_page, copy_page functions. Other tunings/cleanups in checksum and other user memory access function. - check if exception table is really sorted - Cleanups in page table handling in preparation of non executable pages support. - Cleanup PDA access to not require offset.h (thanks to kai for kicking me to this) - use long long for u64/s64 to avoid more warnings - remove CONFIG_ISA - fix various bugs and other cleanups
-
Linus Torvalds authored
-
Linus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
Ingo Molnar authored
-
Ingo Molnar authored
-
Ingo Molnar authored
enable/disable preemption to not spend too much time with preemption disabled. wait_task_inactive() can take quite some time occasionally ...
-
Ingo Molnar authored
set p->thread_info->cpu directly if the task is not running and is not on any runqueue.
-
Ingo Molnar authored
-
Linus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
Linus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
Brad Heilbrun authored
Recent header cleanup broke this driver. Needs #include <linux/init.h>
-
Andy Grover authored
ACPI interpreter update Change non-interpreter code to account for the interpreter changes.
-
Andy Grover authored
This update gets things compiling again after a device model change.
-
Andy Grover authored
This adds preliminary support for _TRA resource on PCI root bridges (Bjorn Helgaas)
-
bk://linuxusb.bkbits.net/linus-2.5Linus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
Linus Torvalds authored
-
Linus Torvalds authored
-
Alexander Viro authored
end_request(int) turned to end_request(req, int); all old callers are converted to end_request(CURRENT, value). Now we can start killing CURRENT/QUEUE - end_request() was the last obstacle to that.
-
Alexander Viro authored
ditto for DEVICE_INTR/CLEAR_INTR. do_mfm/do_acsi/do_hd/... are explicitly declared in the drivers that use DEVICE_INTR stuff; DEVICE_INTR/CLEAR_INTR is gone from blk.h.
-
Alexander Viro authored
#define DEVICE_NAME ... removed from the drivers that never use that macro.
-
Alexander Viro authored
monstrous cascade of #ifdefs is gone from blk.h. This is the first step of cleanup - we move #define in question into the code that includes blk.h (i.e. DEVICE_NR, DEVICE_NAME and DEVICE_INTR are explicitly set by drivers).
-
Alexander Viro authored
->s_dev is switched to dev_t. Everything that uses it uses it as a number - i.e. all instances are either minor() or kdev_t_to_nr().
-
Alexander Viro authored
->j_dev is gone from reiserfs journal. All its uses had been replaced with use of ->j_dev_bd; it's simply not used anymore.
-
Alexander Viro authored
get_super() split in two functions - get_super(bdev) and user_get_super(dev_t). Callers that used get_super() to get superblock by (dev_t) syscall argument switched to the latter; the rest had block_device in question and switched to passing it.
-
Alexander Viro authored
ROOT_DEV converted to dev_t. There's no reason for it to be kdev_t - it's both used as a number and set as a number.
-
Alexander Viro authored
do_getattr() renamed to vfs_getattr(), exported and used by loop.c and nfsd - both blindly accessed ->i_dev/->i_ino of random inodes when they ought to be calling ->getattr() to get that information.
-
Alexander Viro authored
misc gratitious kdev_t uses fixed (janitorial stuff - e.g. quota patches had reintroduced kdevname(sb->s_dev) in places where we'd switched to sb->s_id, etc.)
-
Alexander Viro authored
added bdev_read_only() - analog of is_read_only() using block_device. Almost all callers of is_read_only() converted.
-