[PATCH] ia64: enable recovery from TLB errors
Here's the updated version of the MCA TLB recovery patch.
[PATCH] ia64: fix deadlock in ia64_mca_cmc_int_caller()
smp_call_function() must not be called from interrupt context (can
deadlock on tasklist_lock). Use keventd to call smp_call_function().
[PATCH] ia64: sync pal/sal/salinfo/mca with 2.4 code
Forward port the recent changes to pal.h, sal.h, mca.h, salinfo.c and
mca.c from 2.4.23-rc2 to 2.6.0-test9.
This converts 2.6 to use salinfo instead of printing CMC/CPE/MCA/INIT
records in the kernel. It makes the two kernel versions as close
together as possible.
[PATCH] ia64: sn2 defconfig file
As promised, here's a patch to add an sn2 defconfig file to get people
started with 2.6 kernels. I even turned on CONFIG_IA64_SGI_SIM support
to make Jack happy :)
[PATCH] ia64: initialize bootmem maps in reverse order
The arch-independent bootmem code now requires that arches initialize
their bootmem maps in reverse order (in particular, from high to low
addesses), otherwise alloc_bootmem_pages_low() won't work. This change
makes the ia64 code do just that, so that machines without an IOMMU can
allocate their bounce buffers in low memory at early boot. It also adds
a sanity check to the early init code to make sure that each node has a
local data area, because if they don't, many things will break later on
and may be hard to track down.
[PATCH] ia64: Prevent SAL calls from being preempted
(SAL_CALL_REENTRANT): Disable preemption around the SAL call to
make sure we don't get rescheduled on a different CPU.
[PATCH] ia64: Force generic and hp kernels to use 16MB granules
This forces the granule size to 16MB for HP zx1 and generic
kernels. HP sx1000 machines require this.
[PATCH] ia64: Remove unused ACPI functions.
Remove unused functions:
[PATCH] ia64: Remove extraneous printks (we get the same information from ACPI).
(iosapic_init): Remove extraneous printk.
(pci_acpi_scan_root): Remove extraneous printk.
[PATCH] ia64: Fix PCI root bridge resources to handle prior allocations.
(alloc_resources): Use insert_resource(), not request_resource(), to
allocate PCI root bridge windows. This fixes the problem
where root bridge window allocation fails because an early
driver (like VGA) has already allocated things.
[PATCH] ia64: make NODES_SHIFT a little biggger
Make NODES_SHIFT larger to accomodate 256 node machines.
[PATCH] ia64: update sn2 MAINTAINERS file entry
[PATCH] ia64: make cpu_to_node_map unsigned
This small fix is needed for machines with more than 128 nodes.
[PATCH] ia64: prevent buffer-overrun in acpi_numa_memory_affinity_init()
The code in acpi_numa_memory_affinity_init that sorts the node_memblk
can overrun the array & clobber the memory that follows the end of the
array. The error will be seen only on systems that fill the
node_memblk array and only if SAL doesnt sort the entries in the SRAT.
[PATCH] ia64: enable out-of-tree compilation for IA64
ia64: Bring export of spin-lock contention-routines in sync with
this change: Jim Wilson says that gcc v3.3 also supports
marking ar.pfs as clobbered, so use ia64_spinlock_contention()
for any GCC with v3.3 or newer.
ia64: Fix compiler warning in intrinsics.h.
ia64: Fix ivt overflow that occurred when turning on
ia64: Fix bug discovered by Bill Nottingham & Jakub Jelinek where
put_user() arguments with function-calls would cause the
macro to return unexpected values. Fixed by avoiding macro
argument evaluation while r8/r9 are in use for exception-handling
purposes. Also, consolidated access-macros so that GCC and
Intel compiler use 90% the same code.
ia64: Based on patch by Jerome Marchand: Add ia64-optimized
atomic_dec_and_lock(). Actually, this could be the generic
version for any platform that has cmpxchg().
ia64: Switch places for the gate pages and the guard page. This improves
backwards-compatibility with older (broken) versions of GCC which
recognize a signal-handler only if it is in the address range
from 0xa000000000000100. to 0xa000000000020000.
ia64: Jim Wilson says that gcc v3.3 also supports marking ar.pfs as
clobbered, so use ia64_spinlock_contention() for any GCC with
v3.3 or newer.
[PATCH] ia64: make perfmon CONFIG_PREEMPT-safe again
Here's a fix for non-preemption safety in perfmon.c.
I haven't tried it while running a preemption stress test, but this
allows q-syscollect to work.
[PATCH] ia64: fix typo in vmlinux.lds.S
The security init section was incorrectly using PAGE_OFFSET instead of
[PATCH] ia64: fix smp_affinity user-space accesses
Here is a new improved patch for verifying user access to string
passed in to kernel on write to /proc/irq/<pid>/smp_affinity.
The access_ok() but missing __get_user() on each byte earlier patch
has been replaced with a copy_from_user().
I have built it and verified that it handles write requests
as before, on an ia64 system (well - you can no longer pass
more than 14 spaces after the 'R' - tough).
Drop KERN_CACHEDECAYTICKS sysctl.
Add KERN_GATE_DSO sysctl, which allows to register a pathname for
the file containing an image of the gate DSO.
ia64: Fix a bug in sigtramp() which corrupted ar.rnat when unwinding
across a signal trampoline (in user space). Reported by
ia64: Make drivers/acpi/tables.c compile again.
[PATCH] early_serial_setup array bounds check
early_serial_setup() doesn't validate the array index,
so a caller could corrupt memory after serial8250_ports
by supplying a value of port->line that's too large.
I haven't seen a failure related to this, but it seems fragile
to rely on callers to know how many ports the driver supports.
[PATCH] serial console registration bugfix
uart_set_options() can dereference a null pointer. This happens
if you specify a console that hasn't previously been setup by
For example, on ia64, the HCDP typically tells us about line 0,
so we calls early_serial_setup() for it. If the user specifies
"console=ttyS3", we machine-check when trying to follow the
uninitialized port->ops pointer.
It's not entirely clear to me whether we should return 0 or -ENODEV
or something. The advantage of returning zero is that if the user
specifies "console=ttyS0" and we just lack the HCDP, the console
doesn't work as early as usual, but it does start working after the
serial driver detects the port (though the baud/parity/etc from the
command line are lost). Returning -ENODEV seems to prevent it from
Merge with 2.6.0-test7.
Make NFS server work on ia64 (and other 64-bit arches) again.
Patch received via Matthew Wilcox.
Remove bogus __attribute_used__ in module.h.
[PATCH] ia64: fix early printk for sn2
Quick fix for the early printk function name for sn2. Goes along with a
patch I'm about to send to Andrew.
Some more __attribute_used__ fixes.
Initial merge with 2.6.0-test5.
Mark initcall macros with __attribute_used__ so the definitions do not
get optimized away by the compiler (such as the latest GCC pre-3.4).
[PATCH] ia64: Add HP AGP 8X bridge and fix ACPI claim
The following patch to the HP ZX1 GART driver
- adds recognition of the HWP0007 device (an AGP 8X bridge)
- fixes the use of acpi_get_devices()
The problem with acpi_get_devices() is that it always returns AE_OK,
except when the callback (zx1_gart_probe()) returns a failure. That
means agp_hp_init() cannot use the status from acpi_get_devices()
to distinguish between (1) an AGP bridge was found and successfully
initialized, and (2) no AGP bridge was found at all.
[PATCH] Fix Slowdown in /proc/kallsyms
Out by one error broke caching of results in /proc/kallsyms, slowing
reading to a crawl.
Patch by Arun to make test-popseg.x86 work again: I've tracked this down to
mm/memory.c:do_no_page() dereferencing vma->vm_file. The problem is that
the vma used for mapping the GDT has vma->vm_ops->nopage, but vma->vm_file
Andrew Morton agreed with this patch, but for some reason, it didn't make
it into 2.6.0-test4.
(kallsyms_open): Fix oops caused by uninitialized memory.
Merge with 2.6.0-test3.
Check for X__DSDT in acpi_get_table_header_early()
ia64: Merge with 2.6.0-test2.
Update with latest version from Linus' tree.
[PATCH] Use local_t for module reference counts
Cset exclude: email@example.com|ChangeSet|20030711020407|51156
Cset exclude: firstname.lastname@example.org|ChangeSet|20030709222337|34756
Undo (most of) the ia64-specific changes to pci_irq.c.
iosapic_parse_prt() is the right place to do those.
Merge with 2.6.0-pre1.
Remove extra blank line.
Clean up some no-longer-needed ia64 workarounds.
Move EARLY_PRINTK config options to this repository, where the code lives.
ia64: Merge with 2.5.75.
Manual merge with 2.5.74+.
Cset exclude: email@example.com|ChangeSet|20030621161908|14888
Cset exclude: firstname.lastname@example.org|ChangeSet|20030621161905|15263
(acpi_os_readable): Correct type of 2nd arg to acpi_size.
Sync with Linus' tree.
Update ia64 defconfig.
More ppc64 bad merge fixing...
[PATCH] ia64: add missing __exit_p() to i460-agp.c
Drop export of init_thread_union alltogether.
Simplify the irq_desc patch to make it more acceptable for the
Fix weird PPC64 merge errors.
Revert back to adjusting RPCSVC_MAXPAGES.
Don't declare init_thread_union in sched.h if there is an architecture-
[PATCH] ia64: early_printk for SGI SN2
More 2.5.72 cleanup/syncing.
Merge conflicts with 2.5.72.
Make hp-agp.c compile again. It's still broken, because the generic
AGP code once again thinks all AGP bridges must be PCI devices.
Add back /proc/sys/kernel/cache_decay_ticks.
Fix <linux/pci.h> so it can be used on platforms with CONFIG_PCI off.
Fix serial HCDP and ACPI support for serial driver.
Merge with 2.5.71.
[PATCH] make FIXMAP user page reading more portable
This patch vs 2.5.70 works fine for me on x86. include/asm-x86_64/fixmap.h
needs the macros added for its vsyscall page too.
Undo last change.
Allow read accesses to the entire FIXMAP range. This lets gdb see the
instructions in the gate page (there is no security issue, because the
gate page only contains instructions or non-security-sensitive data such
as the ELF headers, etc.).
Remove include of <asm/unistd.h> now that force_successful_syscall()
is back in ptrace.h.
Fix gratuitous PPC64 changes (were probably caused by a bad bk merge
with Linus' tree).
Clean up tg3 driver to avoid relying on PCI-DMA implementation internals. This removes code and gets
rid of the (incorrect) dependence on PCI_DMA_BUS_IS_PHYS.
Adjust for force_successful_syscall_return() having moved back to
Don't try to support uncached accesses via read()/write().
More small cleanups to /dev/mem driver and for stack dumping.
Fix up drivers/char/mem.c some more.
Clean up drivers/char/mem.c to reduce #ifdef bloat. Make it work better on ia64.
More minor cleanups
Move task_cache back to its original place.
Fix task creation/destruction to make it possible for the thread_info and the
task_struct to be next to each other.
Add force_successful_syscall_return() to remaining platforms.
Adjust show_trace()/show_stack() interfce to make them truly portable:
first arg is task whose trace should be shown, second arg is stack
pointer value starting from which the trace should be shown. Either
(or both) arguments can be NULL.
[PATCH] fix TCP roundtrip time update code
One of those very-hard-to-track-down, trivial-to-fix kind of problems:
without this patch, TCP roundtrip time measurements will corrupt the
routing cache's RTT estimates under heavy network load (the bug causes
RTAX_RTT to go negative, but since its type is u32, you end up with a
huge positive value...). From there on, later TCP connections quickly
will go south.
The typo was introduced 8 months ago in v1.29 of the file by the patch
entitled "Cleanup DST metrics and abstrct MSS/PMTU further".
ia64: Fix backtrace printing so it doesn't output tabs anymore.
[PATCH] Fix ps/2 mouse and keyboard on I2000
I finally got sufficiently fed up to fix the PS/2 keyboard. The
problem is that the generic code requests an ISA interrupt directly,
instead of via isa_irq_to_vector().
Fix locking comments for time interpolator routines.
Overhaul time-interpolation support. Platforms that do not ever wish to
use time-interpolation should NOT define CONFIG_TIME_INTERPOLATION.
There will be no overhead on such platforms.
If you have a platform that has exactly one time-interpolation source,
define CONFIG_TIME_INTERPOLATION and let the generic code take care
of updating "last_nsec_offset" as needed, but never call
register_time_interpolator(). Instead, hard-code the updating of
last_nsec_offset in do_gettimeofday() (and do_settimeofday()).
This will minimize overhead to a single load & NULL check (everything else
If you have a platform that needs to support multiple interpolation
sources, register each source with regsiter_time_interpolator().
Each call to time_interpolator_update()/time_interpolator_reset() will
then incur an indirect function call. C'est la vie.
Undo previous pasting-operator "fix". Code was right and pre3.4 compiler was
Add two hooks for high-precision time-interpolation. Based on patch by
Small driver fixes.
Undo timer breakage. Makes profil() work again.
Change last_time_offset into last_nsec_offset and make it work for real.
Misc fixes: PCI ids and prefetch in page-table tear-down.
Fix off-by-one error to make NFSd work with PAGE_SIZE = 64KB.
Add MM_VM_SIZE() support.
Add EARLY_PRINTK support.
Minor build fixes/enhancements.
Various minor driver fixes.
Support serial ports in ACPI namespace and serial consoles via HCDP.
Toolchain bug workarounds.
AGP fixes for ia64.
Make ACPI work on ia64.
Generic DRM support for platforms that cant_use_aperture.
Add module_arch_cleanup() callback.