David Mosberger [Wed, 16 Jul 2003 12:44:13 +0000 (05:44 -0700)]
ia64: If the compiler supports it, use attribute (model (small)) to
tell the compiler that per-CPU variables can be addressed
with "addl".
On the simulator kernel, this saves about 2776 bytes in the
kernel image. On a zx1 kernel, it saves about 5593 bytes.
As per-CPU variables are used more, these savings will
increase, of course.
David Mosberger [Tue, 15 Jul 2003 09:40:35 +0000 (02:40 -0700)]
ia64: Patch by Arun Sharma: Make execve()ing of ia32 tasks work again.
The impact on native ia64 fork+execve performance as measured by
LMbench is in the noise range (plus or minus 0.1%). The first two
hunks in the patch are not together because we wanted to hide the
memory latency.
David Mosberger [Tue, 15 Jul 2003 07:39:40 +0000 (00:39 -0700)]
ia64: Change per-CPU implementation so that __get_cpu_var() returns the
canonical address (l-value). To get the virtually mapped
alias (which is more efficient), use __ia64_per_cpu_var(). The
latter is safe only if the address of the l-value is never passed
to another CPU (i.e., not stored in any global place).
For extremely efficient, portable per-CPU variables, there is
now a new API local.h which was introduced by Rusty Russell.
To use this, declare a variable of type local_t as a per-CPU
variable and then use {__,}cpu_local_FOO() to manipulate such
variables. This patch also updated the atomic interface with
a 64-bit counter.
Matthew Wilcox [Mon, 14 Jul 2003 11:15:00 +0000 (04:15 -0700)]
[PATCH] ia64: use has_8259 in acpi_register_irq()
acpi_madt is marked as __initdata, so an attempt to use
acpi_register_irq() after we discarded init sections would cause us to
dereference a random location. Everywhere else uses has_8259 anyway.
Paul Mundt [Mon, 14 Jul 2003 02:30:01 +0000 (19:30 -0700)]
[PATCH] shwdt update
This patch includes quite a few changes and updates for the shwdt driver (which
brings it in sync with LinuxSH CVS HEAD). This fixes up support for the SH-2,
and also fixes up some timer brain-damage.
Paul Mundt [Mon, 14 Jul 2003 02:29:53 +0000 (19:29 -0700)]
[PATCH] PCMCIA: Update hd64465 driver
This patch updates the sh-specific hd64465 pcmcia driver for the new API, as
well as fixing up some other issues (such as remap_page_range() abuse -- we
remap through P3 area instead) which caused it not to compile. Changes by
Dominik Brodowski and myself.
First "test" kernel. Same naming we used for 2.4.0 - there it took
from May to December to get to the real version. Let's see if we
can do it faster this time.
Russell King [Mon, 14 Jul 2003 00:57:32 +0000 (01:57 +0100)]
[PCMCIA] Fix hangs when PCMCIA modules loaded.
Switching the PCMCIA interrupts from serial PCI interrupts to parallel
PCI interrupts causes machines to hang solid. If we leave such setups
well alone, and only change the interrupt mode of parallel PCI systems
between PCI+ISA and PCI only.
The accounting works now, but I still think this last bit should be
added as well. This makes absolutely sure we only account fs requests,
at both ends. Better safe than sorry.
Petr Vandrovec [Sun, 13 Jul 2003 04:29:09 +0000 (21:29 -0700)]
[PATCH] new sysctl checking accesses userspace directly
The recent change from Andi breaks here: tmp.name is user pointer, not
array in __sysctl_args, and so it is better to access it through
copy_from_user instead of directly.
Dave Jones [Sun, 13 Jul 2003 14:36:45 +0000 (15:36 +0100)]
[AGPGART] Make frontend sparse clean.
Didn't turn up anything particularly nasty, but it does clean up
usage of a few types that are passed around.
- Do the casts in the ioctl handler instead.
- Remove unused variables.
- __user annotations.
Dave Jones [Sat, 12 Jul 2003 22:45:43 +0000 (23:45 +0100)]
[AGPGART] SiS 746 support
This (and a few other SiS chipsets) are AGP 3 compliant. AFAIK, none of
these have been tested in AGP3 mode, but they should work just fine in
AGP2.x mode at least.
Dave Jones [Sat, 12 Jul 2003 13:30:37 +0000 (14:30 +0100)]
[AGPGART] HP AGP update.
From David Mosberger
This GART isn't actually a PCI device, which the AGP core/DRI expects it to be.
This patch gets the relevant info out of ACPI tables, and fakes the rest.
Samuel Thibault [Sat, 12 Jul 2003 07:17:40 +0000 (00:17 -0700)]
[PATCH] [2.5] maestro volume tuning
This tunes the volume control of maestro sound boards: The log
conversion seems not good for PCM and CD. The volume buttons
incrementing / decrementing the main volume by 10 on 100 is too much,
much better set it to 5.
Deprecate the numerical sysctl name space. People can use /proc/sys
instead.
The numeric name space was never well maintained and especially
in distribution kernels is not very consistent (everybody has their
own extensions, conflicting with others). It's also a great
source of rejects when merging patches. The name-based /proc/sys
is a much better interface for this, which people should use instead.
Discussion of this on l-k found no advocate for it, so it seems to not
be very popular anyways.
This patch deprecates numerical name space accesses to make it possible
to remove them in the future. The only exception is kernel.version,
which is used by glibc (this one has to be maintained forever)
- __div64_32(): remove __attribute_pure__ qualifier from the prototype
since this function obviously clobbers memory through &(n);
- do_div(): add a check to ensure (n) is type-compatible with uint64_t;
- as_update_iohist(): Use sector_div() instead of do_div().
(Whether the result of the addition should always be stored in 64bits
regardless of CONFIG_LBD is still being discussed, therefore it's
unadderessed here);
- Fix all places where do_div() was being called with a bad divisor argument.
Every failed SG_IO request is replayed second time without data
transfer. Fix the problem by immediately purging the failed SG_IO
request from the request queue.