Jesse Barnes [Mon, 31 Mar 2003 07:45:09 +0000 (23:45 -0800)]
[PATCH] ia64: machine vectors for readX routines
We need readX() to be machine vectors since some platforms don't provide
DMA coherence via PIO reads (PCI drivers and the spec imply that this is
a good idea). Writes are ok though for all existing ia64 platforms (and
hopefully it'll stay that way).
Andreas Schwab [Thu, 27 Mar 2003 04:43:01 +0000 (20:43 -0800)]
[PATCH] ia64: Fix request_module from ia32 process
When an ia32 process triggers request_module the kernel cannot execute
modprobe because the kernel thread still has the ia32 address limits in
force. I think a kernel thread should always have the ia64 address
limits, similar to what sys32_execve is doing.
Jes Sorensen [Thu, 27 Mar 2003 04:38:22 +0000 (20:38 -0800)]
[PATCH] ia64: don't try to synchronize ITCs on ITC_DRIFT platforms
A small patch for 2.4 that stops the kernel from trying to syncrhonize
ITC clocks between CPUs if we know that the ITC isn't synchronized
across the backplane.
Eric Piel [Wed, 26 Mar 2003 06:18:34 +0000 (22:18 -0800)]
[PATCH] ia64: fix settimeofday() not synchronised with gettimeofday()
Eric Piel wrote:
> However, now, it still gives negative difference:
> # ./a.out
> requested: 1047572128s 2564ns
> new: 1047572128s 1588ns
> diff is -0.000976000sec
>
> That's better but there is still something...
> Can anyone reproduce this bug? Any idea about what may cause this
> shifted results?
>
> I don't understand what does the line in settimeofday():
> nsec -= (jiffies - wall_jiffies ) * (1000000000 / HZ);
Finally I read the code to do the same thing for i386 (get and
settimeofday()). This explains the meaning of this line, in the i386
it's associated with the equivalent line in do_gettimeofday()! On ia64
everything is done inside of gettimeoffset(). Therefore I'm now
confident that suppressing this line is a Good Thing ;-) The patch doing
it wrt the bk tree is attached.
The test case confirms that it works:
requested: 1048681051s 194873ns
new: 1048681051s 194874ns
diff is 0.000001000sec
That's the same result than on a 2.4.19 .
This also solved an error on the high resolution timers test suite.
David Mosberger [Mon, 24 Mar 2003 05:43:45 +0000 (21:43 -0800)]
ia64: Manual merge of Keith Owen's patch to avoid deadlock on
ia64_sal_mc_rendez(). Also prefix local-variables in
SAL macros to avoid name collisions.
Keith Owens [Mon, 24 Mar 2003 05:36:20 +0000 (21:36 -0800)]
[PATCH] ia64: mca rendezvous fix
We are not setting the 'always rendezvous for mca' flag. kdb needs it
set to get decent mca debugging on all cpus but I do not want kdb to
change sal behaviour. Since we do not recover from mca without a
debugger, I see no reason why this flag should not be on for all
kernels.
The rendezvous timeout was set to 100 * HZ, but SAL expects the timeout
to be in milliseconds, HZ may not be 1 millisecond. The patch makes
the timeout an explicit 20 seconds, semi-arbitrary value.
David Mosberger [Fri, 21 Mar 2003 18:53:01 +0000 (10:53 -0800)]
First draft at making modules work again (loosely based on Rusty's original and
thoroughly broken ia64 patch). Not all relocs are supported yet and the reloc
code needs to be cleaned up, but simply stuff like loading the palinfo module
works. Also, linkage-stubs are optimized with brl for McKinley or better.
Trying to port some patches from i386 to ia64 I've found that
show_trace_task is the only portable way to show tasks' call
traces(perhaps because it is called from ./kernel/sched.c:)).
But its ia64 implementation can't work with running task.
Attached patch fixes this issue.
As I understand show_trace and show_stack are platform
dependent or have different sense/args.
Alex Williamson [Wed, 19 Mar 2003 01:24:26 +0000 (17:24 -0800)]
[PATCH] ia64: Use PAL_HALT_LIGHT in cpu_idle
Here's patches for 2.4 & 2.5 to use PAL_HALT_LIGHT in cpu_idle.
This helps to reduce CPU temp a little on boxes with firmware that
takes advantage of this lower power state. I've tried this on a
rx2600 (2x900MHz McKinley) and an i2000 (fw 117) and it shows some
benefit. On McKinley systems, only the very latest PAL from Intel
actually reduces power consumption in the halt_light state. For HP
rx2600/zx6000/zx2000, this means you need to be running firmware 1.82.
Rohit Seth, at Intel, has run some benchmarks with this kind of
modification and found the effects of enabling halt_light to fall
within the noise of mosts tests. I replaced pal_halt(1) in safe_halt
with pal_halt_light() since halt_light is required to be implemented,
but pal_halt(1) is an optional halt state. I'd be interested to hear
of any measurements anyone does using this, where it works/fails, and
if any benchmarks/applications are impacted.
Jesse Barnes [Tue, 18 Mar 2003 07:12:07 +0000 (23:12 -0800)]
[PATCH] ia64: remove stale mmiob function
The consensus on lkml was that devices should do reads from safe
registers to ensure PIO write ordering, which means we no longer need
mmiob. This patch removes the mmiob entries from the machine vector
headers and io.h and updates the documentation about PIO ordering.
David Mosberger [Tue, 18 Mar 2003 06:59:30 +0000 (22:59 -0800)]
ia64: Patch by Andreas Schwab: The read_lock and read_unlock macros
should not use such innocent variable names like tmp because they
have a high probability to clash with (part of) the argument.
Eric Piel [Thu, 13 Mar 2003 05:41:41 +0000 (21:41 -0800)]
[PATCH] ia64: POSIX timer fixes
Here is a patch to have the POSIX timer interface completly integrated
in ia64 (2.5.64). The programs in userland can now access the siginfo
structure. With that patch the test programs of the high resolution
timers pass without error but one which seems to also be triggered on
ix86: nanosleeps too short.
Jakub Jelínek [Thu, 13 Mar 2003 03:34:20 +0000 (19:34 -0800)]
[PATCH] ia64: clone2/clone argument order fixes
do_fork is declared as:
struct task_struct *do_fork(unsigned long clone_flags,
unsigned long stack_start,
struct pt_regs *regs,
unsigned long stack_size,
int *parent_tidptr,
int *child_tidptr)
ie. parent_tidptr is out4 and child_tidptr is out5, but
the comments in clone2 were suggesting otherwise.
So, we either need a patch which will codify current order
of clone arguments (ie. ptid, ctid, tls; attached below - has the advantage
that clone2 stays with the same ABI as in 2.5.[56]x), or the arguments
of clone2 and clone should be reordered to match the IA-32 order
(which is ptid, tls, ctid).
Alex Williamson [Tue, 11 Mar 2003 08:08:19 +0000 (00:08 -0800)]
[PATCH] ia64: CPE & CMC polling for 2.5
Here's another feature I'd like to add to MCA support; the ability
to detect a flood of CMCs and switch to polling mode for retrieving
CMC logs. Once no more CMC logs are found, return to and interrupt
driven handler. If the flood threshold is never reached, the CMC
handler simply behaves as it does today.
It's useful to get the CMC logs to know that something isn't
quite right, but if you end up with some bad memory it's too easy for
them to interfere with useful work. I've tested this on an HP rx2600,
with a known bad DIMM. This DIMM acts like it has a completely dead
DRAM on it. With the current CMC handler, once I hit that range of
memory addresses, the system essentially dies, constantly handling
CMC errors. With this patch, the system hits the threshold quickly,
but remains functional with no performance degredation once in polling
mode. This patch applies against linux-2.4.20-ia64-021210 and
includes:
- Switching CMCs to polling mode at predeterimined threshold
- If polling for CPEs, poll on all processors
- Fix timestamp on log output
David Mosberger [Tue, 4 Mar 2003 10:40:21 +0000 (02:40 -0800)]
ia64: Implement pcibios_prep_mwi() and define HAVE_ARCH_PCI_MWI to
ensure that PCI line-size gets programmed properly. Based
on patch by Grant Grundler.
Seth Rohit [Tue, 4 Mar 2003 09:33:01 +0000 (01:33 -0800)]
[PATCH] ia64: 2nd update for HugeTLB Page patch for IA-64 2.5.60 kernel
Please find attached a small hugetlb page support update for 2.5.60
IA-64 kernel (+ my previous hugetlb page patch). This patch adds the
HAVE_ARCH_HUGETLB_UNMAPPED_AREA define for IA-64 arch.
hugetlb_get_unmapped_area function is added in
arch/ia64/mm/hugetlbpage.c
Seth Rohit [Tue, 4 Mar 2003 09:30:54 +0000 (01:30 -0800)]
[PATCH] ia64: HugeTLB Page patch for IA-64 2.5.60 kernel
Please find attached a hugetlb page patch for IA-64 2.5.60 kernel .
Changes in generic files are mostly backported from 2.5.62 (to get
hugetlb support functioning properly).
Ben Collins [Tue, 4 Mar 2003 08:25:16 +0000 (00:25 -0800)]
[PATCH] More IEEE1394 updates
- Cleanup Makefile.
- Fix potentional crash in dv1394 module unload.
- Why does ARM's memcpy not return void*? Oh well, work around it in
eth1394 by not expecting standard behavior.
Jesse Barnes [Tue, 4 Mar 2003 07:00:36 +0000 (23:00 -0800)]
[PATCH] ia64: SN update
And here's the SN specific part of the update. This should get an SN2
compile all the way to the link stage, where I still have some devfs
stuff to cleanup.
IA64 ABI specifies that globals > 8 bytes need to be aligned to 16 bytes.
gcc doesn't follow this convention. Current kernel code will fail to work with
a compiler which follows the ABI.
size of structure ia64_machine_vector is > 8 bytes and not multiple of 16 bytes.
When we have CONFIG_IA64_GENERIC, each machine specific vector from different
object files gets linked into a user defined section(forming array of
structures).
Now with a compiler conforming to ABI, there will be holes in this array
resulting in the code failure when it goes through this array of structures.
Following patch will make the size of the structure to be multiple of 16 bytes
making both ABI confirming/non-conforming compilers happy.
Current 2.5 kernels are broken with CONFIG_IA64_GENERIC option. Two unused
members are still remaining in the structure, resulting in corruption of
structure elements during the MACHVEC_INIT initialization. Attached patch
fixes this problem.
Rationalize __init/__devinit attributes. The noteworthy changes are
that
iosapic_system_init(),
iosapic_init(),
iosapic_register_platform_intr(), and
iosapic_override_isa_irq()
are __init (only called from ACPI __init functions), but
iosapic_lists[],
num_iosapic,
find_iosapic(),
register_intr(),
iosapic_register_intr(), and
acpi_register_irq()
are not because they may be used after init-time by modules.
pcat_compat: __initdata, referenced by
iosapic_system_init (__init)
iosapic_init (__init)
iosapic_parse_prt (__init)
find_iosapic: normal, called by
register_intr (normal)
register_intr: normal, called by
iosapic_register_intr (normal), called by
acpi_register_irq (normal), called by
modules (=> can't be __init or __devinit)
iosapic_register_platform_intr (__init)
iosapic_override_isa_irq (__init)
iosapic_parse_prt (__init)
iosapic_reassign_vector: __init, called by
iosapic_register_platform_intr (__init), called by
acpi_parse_plat_int_src (__init)
iosapic_system_init: __init, called by
acpi_parse_madt (__init)
iosapic_init: __init, called by
acpi_parse_iosapic (__init)
iosapic_register_platform_intr: __init, called by
acpi_parse_plat_int_src (__init)
iosapic_override_isa_irq: __init, called by
acpi_parse_int_src_ovr (__init)
iosapic_init (__init)
fixup_vector: __init, called by
iosapic_parse_prt (__init), called by
acpi_pci_irq_init (__init)
Make interrupt registration functions take named constants for
polarity and trigger mode. Old -> new magic decoder ring:
polarity 0 -> IOSAPIC_POL_LOW(#defined to 1)
polarity 1 -> IOSAPIC_POL_HIGH(#defined to 0)
trigger 0 -> IOSAPIC_LEVEL(#defined to 1)
trigger 1 -> IOSAPIC_EDGE(#defined to 0)
emove IOSAPIC address and GSI base from external interrupt
registration interfaces. This lets us remove acpi_find_iosapic(),
which is functionally similar to find_iosapic().
Linus Torvalds [Tue, 4 Mar 2003 06:30:19 +0000 (22:30 -0800)]
Merge penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/hlist
into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux
Andi Kleen [Tue, 4 Mar 2003 06:28:32 +0000 (22:28 -0800)]
[PATCH] dcache/inode hlist patchkit
- Inode and dcache Hash table only needs half the memory/cache because
of using hlists.
- Simplify dcache-rcu code. With NULL end markers in the hlists
is_bucket is not needed anymore. Also the list walking code
generates better code on x86 now because it doesn't need to dedicate
a register for the list head.
- Reorganize struct dentry to be more cache friendly. All the state
accessed for the hash walk is in one chunk now together with the
inline name (all at the end)
- Add prefetching for all the list walks. Old hash lookup code didn't
use it.
- Some other minor cleanup.
Ben Collins [Tue, 4 Mar 2003 02:55:45 +0000 (18:55 -0800)]
[PATCH] IEEE1394 updates
- Add ioctl32 compat function registration for video1394, dv1394 and
amdtp.
- Convert SBP-2 driver to new SCSI hotplug host/device interfaces.
- Initial Async ISO (GASP) support.