Adam Belay [Tue, 6 Jan 2004 12:08:21 +0000 (04:08 -0800)]
[PATCH] Fix PnP BIOS call
The recent escd fix I have made corrects a thinko in the PnPBIOS code and it
turns out that faults from calling /proc/pnp/bus/escd were probably not caused
by BIOS bugs.
Fix for oops on rmmod caused by *_remove() function marked as __devinit
(and thus discarded after module initialization - if CONFIG_MODULES=y
and CONFIG_HOTPLUG is not set).
This patch changes __devinit to __devexit and adds __devexit_p() where
pointer to such function is used.
The only exception is au1000, where au1000_remove() is called from
cleanup_au1000() function - __devinit is jest removed there.
This patch for 2.6 fixes the problem found by Zoltan Farkas
with mixed PCI/ISA and a non-modular config. The problem is the old_netdev
ISA probing isn't skipping eth0 which already got assigned by the PCI
initialization.
Russell King [Sun, 4 Jan 2004 17:29:23 +0000 (17:29 +0000)]
[ARM] Fix cachepolicy=<foo>
On ARM, it is possible to configure the desired cache policy in
the page tables. Unfortunately, we haven't been updating the
protection_map nor PAGE_KERNEL, so this option doesn't change
the behaviour of the majority of mappings. This cset corrects
this oversight.
Amit Gurdasani [Sun, 4 Jan 2004 16:28:39 +0000 (16:28 +0000)]
[SERIAL] EISA ID for PnP modem
Patch from: Amit Gurdasani
I have a PROLiNK 1456VH internal Rockwell-based ISA PnP K56flex fax modem
whose EISA ID seems not to be known to 8250_pnp.c. The ID is AEI0250 as
reported in /sys/devices/pnp1/01:01/01:01.00/id and adding this into the
pnp_dev_table[] allows the device to be found and enabled properly by the
8250 serial driver.
Linus Torvalds [Sat, 3 Jan 2004 10:25:13 +0000 (02:25 -0800)]
Fix IDE "PIO WRITE wait for ready" test under extreme interrupt load.
From Daniel Tram Lux: under extreme irq load on an underpowered CPU,
the timeout loop may not make any progress, and decide that a timeout
occurred before it has actually tested the status register.
The minimal fix for now is to just have a final test _after_ the timeout
to remove the problem. The real fix would likely be to not have irqs
enabled between reading the status and the timeout.
Russell King [Fri, 2 Jan 2004 19:36:52 +0000 (19:36 +0000)]
[SERIAL] Remove old RSA resource handlign.
The resource handling left in autoconfig() is plainly wrong, since
we've already claimed the necessary resources prior to calling
autoconfig(). Therefore, we remove the superfluous code from
autoconfig().
Andi Kleen [Thu, 1 Jan 2004 03:41:03 +0000 (19:41 -0800)]
[PATCH] X86-64 merge
At least one of them is critical. It fixes an path in the IOMMU that
I broke with the ealier "fullflush" workaround.
- Check for ~/bin/installkernel like i386 (M. Bligh)
- Implement 32bit RTC_IRQ_SET correctly (Lutz Vieweg)
- Disable some useless printks in 32bit emulation
- Warning fixes for mixed C99 style declarations/statements.
- Sync lAPIC power management with i386
- Use topology sysfs like i386
- Fix some serious bugs in the MCE handler. ECC should
be decoded correctly now.
- Add oops=panic option to panic on Oopses.
- Fix hackish code in head.S
- Add missing options in IOMMU
- Fix _syscall6 (Olaf Hering)
- Remove broken ACPI locking code. Port IA64 C version.
- Make safe_smp_processor_id() more reliable
- Read HPET in vsyscall code
- Add workaround for BIOS that corrupt 64bit registers in HLT
- Fix unaligned access in bitops.h
- Remove broken ntp drift correction code for now
- i386 merge in SCI setup
- Fix wrong offset in callin.h (Jim Houston)
- Minor comment fixes
Michael Hunold [Thu, 1 Jan 2004 03:25:24 +0000 (19:25 -0800)]
[PATCH] DVB: Revamp of the TTUSB-DEC driver
- Alter hotplug firmware naming to fit in with dvb standard.
- Use the hotplug firmware loader for 2.6 kernels instead of compiling
the firmware into the module.
- Integrate frontend into ttusb_dec module and remove pseudo-i2c bits,
move ttusb_dec header into source file.
- Rudimentary section filter support (enough for scan).
Michael Hunold [Thu, 1 Jan 2004 03:25:04 +0000 (19:25 -0800)]
[PATCH] DVB: Fixes for frontend drivers
- ves1820: increase mdelay from 30 to 50 to be more reliable with bad
reception quality (Andreas Oberritter)
- dst: remove AUTO_INVERSION for capabilities, allow params
dst_type_flags and dst_type to have multiple values for multiple
cards in one machine (Jamie Honan)
David Mosberger [Wed, 31 Dec 2003 15:18:59 +0000 (07:18 -0800)]
ia64: Allow system-call number to be changed during system-call tracing
(both for native and x86 system call tracing). This is needed
by recent versions of strace and UML likes to do that, too.
David Mosberger [Tue, 30 Dec 2003 17:10:09 +0000 (09:10 -0800)]
ia64: Fix a ptrace-bug that caused "strace -f" to crash the inferior
process. The root-cause of the problem was that ptrace() tried
to copy the portion of the register backing store that landed on
the kernel stack back to users-space, but the resulting state
was inconsistent if the inferior process was in the middle of a
system-call (as would always be the case for strace).
The solution is to avoid all needless copying and to instead
ensure that when accessing a memory location that may belong to
a thread's register-backing store, we attach to that particular
thread, rather than the thread identified by the PID argument.
If the thread happens to be unattachable, we fall back to using
the thread identified by the PID argument. This should have the
desired effect if the thread has terminated already and if the
thread is running while ptrace() is trying to access its state,
all bets are off anyhow and there are no coherency guarantees.
In other words, this should be doing the right thing under all
circumstances.
The patch also fixes the case where PT_AR_BSP and/or PT_CFM are
written while the inferior process is in the middle of a system
call. This makes arguments passed to GDB inferior calls come
out right.
The patch was tested with strace -f and the GDB testsuite, which
showed no regressions compared to the previous version of the
kernel.
Andrew Morton [Tue, 30 Dec 2003 09:00:38 +0000 (01:00 -0800)]
[PATCH] call_usermodehelper retval fix
The reworked firmware loader in the DVB patches needs the fix to the
call_usermodehelper() return value.
From: Rusty Russell <rusty@rustcorp.com.au>
MODULE_ALIAS_BLOCK() and MODULE_ALIAS_CHAR() define aliases of form
"XXX-<major>-<minor>", so we should probe for modules using this form.
Unfortunately in 2.4, block aliases were "XXX-<major>" and char aliases
were of both forms.
Ideally, all modules would now be using MODULE_ALIAS() macros to define
their aliases, and the old configuration files wouldn't matter as much.
Unfortunately, this hasn't happened, so we make request_module() return the
exit status of modprobe, and then do fallback when probing for char and
block devices.
(Kudos to Chris Wright, I stole his kernel_thread flags).
Andrew Morton [Tue, 30 Dec 2003 09:00:07 +0000 (01:00 -0800)]
[PATCH] fix for 16-bit PCMCIA interrupt selection
From: David Hinds <dhinds@sonic.net>
This fixes interrupt allocation for 16-bit PCMCIA cards, so that on systems
supporting ISA bus interrupts, if all ISA interrupts are unavailable, we'll
fall back on sharing the bridge PCI interrupt.
Andrew Morton [Tue, 30 Dec 2003 08:59:37 +0000 (00:59 -0800)]
[PATCH] dhinds is not 2.6 PCMCIA maintainer
From: David Hinds <dhinds@sonic.net>
I have not been actively maintaining PCMCIA for 2.6; I tried asking the
more active developers to see if someone would step into the job but they
were not willing to do so at this time. I'll still submit patches from
time to time.
(David has a ./CREDITS entry, of course).
We should really put in Russell King here, but I'll let him do that
himself.
Andrew Morton [Tue, 30 Dec 2003 08:59:27 +0000 (00:59 -0800)]
[PATCH] PPC32: Fix the mkprep util to work correctly on Solaris 8
From: Tom Rini <trini@kernel.crashing.org>
Peter Wahl <PeterWahl@web.de>
PPC32: Fix the mkprep util to work correctly on Solaris 8.
- There is a very odd problem with the alignment of dword_t values
which causes this program to not work correctly when compiled on
Solaris 8. The workaround is not use a pointer and to memcpy the
values instead.
Andrew Morton [Tue, 30 Dec 2003 07:49:45 +0000 (23:49 -0800)]
[PATCH] readahead: multiple performance fixes
From: Ram Pai <linuxram@us.ibm.com>
I have enclosed a patch that fixes a bunch of performance bugs in the
readahead code.
Below is a brief summary of the problems noticed and the proposed fixes
with some results:
Problem 1: Readahead code closes the readahead window and goes into
slowread path, if a file is accessed the first time at an offset
notequal to zero. In the case of databases(especially in db2), a file
may not be accessed at offset 0 the first time though the i/o's are
sequential.
Fix to Problem 1:
min = get_min_readahead(ra);
orig_next_size = ra-next_size;
- if (ra-next_size == 0 && offset == 0) {
+ if (ra-next_size == 0) {
------------------------------------------------------------------------
Problem 2: After fixing Problem, the readahead window still does not
open up the first time, if all the pages requested are already in the
page cache. This time the window closes because of pagecache hits
instead of misses. To fix this we put in these changes.
------------------------------------------------------------------------
Problem 3: In the case of large random reads, the readahead window is
read in, the moment there is a hit in the active window. And it turns
out that in most of the cases the readahead window gets scrapped,
because the next large random read does not even touch any of the pages
in that readahead window. We fixed this by introducing lazy readahead.
Basically we wait till the last page in the active window gets a hit.
And once the last page is hit, the readahead window is then read in.
This fix gave a tremendous boost in the performance.
To fix this the changes we put in were:
/*
* This read request is within the current window. It is time
* to submit I/O for the ahead window while the application is
* crunching through the current window.
*/
- if (ra-ahead_start == 0) {
+ if (ra-ahead_start == 0 && offset == (ra-start + ra-size -1)) {
------------------------------------------------------------------------
Problem 4:
If the request page does not fall in the active window and is not
the first page of the read ahead window, we scrap both the active
window and the readahaed window and read in the active window. But it
turns out that we read in a lot of pages in the active window based on
the size of the 'projected readahead window size' (the next_size
variable). And we end up using part of the active window and waste the
remaining. We put in a fix where we read in just as many pages in the
active window based on the number of pages used in the recent past.
Again this gave us another big boost in performance and ended up
beating the performance of aio patch on a DSS workload.
The fix to this is:
* ahead window and get some I/O underway for the new
* current window.
*/
+ if (!first_access && preoffset = ra-start &&
+ preoffset < (ra-start + ra-size)) {
+ ra-size = preoffset - ra-start + 2;
+ } else {
+ ra-size = ra-next_size;
------------------------------------------------------------------------
Problem 5:
With all the above fixes there is very low chance that the readahead
window shall close. But however if it does, we found that the slow
read path is really slow. Any loss of sequentiality in the slow read
path is penalized heavily by closing the window back to zero. So we
fixed this by decreasing the window size by one anytime we loose
sequentiality and increasing in by 1 if we didn't.
With the above set of fixes we got about 28% improvement in DSS workload
which is about 5% more than what we got with the suparna's aio patch.
This patch compared equivalent to suparna's aio patch with aio-stress
run.
It fared better than aio patch for large random io.
We are yet to run a bunch of other benchmarks to evaluate this patch.
We would like to get your inputs on this patch and any suggestions you
may have to improve it. I have enclosed a patch with all these changes
along with some changes to the comments that reflect the new behaviour.
NOTE: the above patch reverts suparna's aio patch.