1
linux/arch/ia64/kernel
Tony Luck 10617bbe84 [IA64] Ensure cpu0 can access per-cpu variables in early boot code
ia64 handles per-cpu variables a litle differently from other architectures
in that it maps the physical memory allocated for each cpu at a constant
virtual address (0xffffffffffff0000). This mapping is not enabled until
the architecture specific cpu_init() function is run, which causes problems
since some generic code is run before this point. In particular when
CONFIG_PRINTK_TIME is enabled, the boot cpu will trap on the access to
per-cpu memory at the first printk() call so the boot will fail without
the kernel printing anything to the console.

Fix this by allocating percpu memory for cpu0 in the kernel data section
and doing all initialization to enable percpu access in head.S before
calling any generic code.

Other cpus must take care not to access per-cpu variables too early, but
their code path from start_secondary() to cpu_init() is all in arch/ia64

Signed-off-by: Tony Luck <tony.luck@intel.com>
2008-08-12 10:34:20 -07:00
..
cpufreq [IA64] improper printk format in acpi-cpufreq 2008-07-17 11:11:17 -07:00
.gitignore [IA64] Cleanup generated file not ignored by .gitignore 2008-08-04 11:06:16 -07:00
acpi-ext.c
acpi-processor.c ACPI: Set _PSD ACPI_PDC_SMP_T_SWCOORD 2008-02-02 02:22:43 -05:00
acpi.c [IA64] Avoid overflowing ia64_cpu_to_sapicid in acpi_map_lsapic() 2008-07-17 11:24:42 -07:00
asm-offsets.c [IA64] Move include/asm-ia64 to arch/ia64/include/asm 2008-08-01 10:21:21 -07:00
audit.c
brl_emu.c
crash_dump.c
crash.c [IA64] simplify notify hooks in mca.c 2008-04-22 08:56:38 -07:00
cyclone.c
efi_stub.S
efi.c [IA64] Kernel parameter for max number of concurrent global TLB purges 2008-04-04 11:06:38 -07:00
entry.h
entry.S [IA64] Wire up new system calls 2008-07-25 10:10:28 -07:00
err_inject.c sysdev: Pass the attribute to the low level sysdev show/store function 2008-07-21 21:55:02 -07:00
esi_stub.S
esi.c
fsys.S Pull miscellaneous into release branch 2008-04-17 10:14:51 -07:00
fsyscall_gtod_data.h [IA64] generalize attribute of fsyscall_gtod_data 2008-02-04 15:36:36 -08:00
gate-data.S
gate.lds.S [IA64] increase .data.patch offset 2007-12-07 14:28:02 -08:00
gate.S
head.S [IA64] Ensure cpu0 can access per-cpu variables in early boot code 2008-08-12 10:34:20 -07:00
ia64_ksyms.c Generic semaphore implementation 2008-04-17 10:42:34 -04:00
init_task.c [PATCH] take init_files to fs/file.c 2008-05-16 17:22:20 -04:00
iosapic.c [IA64] Move include/asm-ia64 to arch/ia64/include/asm 2008-08-01 10:21:21 -07:00
irq_ia64.c [IA64] pvops: add hooks, pv_irq_ops, to paravirtualized irq related operations. 2008-05-27 15:11:10 -07:00
irq_lsapic.c
irq.c [IA64] fix section mismatch in arch/ia64/kernel/irq.c 2008-04-30 14:08:01 -07:00
ivt.S [IA64] pv_ops: fix ivt.S paravirtualization 2008-08-04 10:52:12 -07:00
jprobes.S [IA64] Move include/asm-ia64 to arch/ia64/include/asm 2008-08-01 10:21:21 -07:00
kprobes.c kprobes: improve kretprobe scalability with hashed locking 2008-07-25 10:53:30 -07:00
machine_kexec.c vmcoreinfo: fix the configuration dependencies 2008-02-07 08:42:25 -08:00
machvec.c
Makefile [IA64] pvops: paravirtualize NR_IRQS 2008-05-27 15:09:30 -07:00
mca_asm.S [IA64] Add API for allocating Dynamic TR resource. 2008-04-03 11:02:58 -07:00
mca_drv_asm.S [IA64] mca style cleanup 2008-02-04 15:42:06 -08:00
mca_drv.c [IA64] mca style cleanup 2008-02-04 15:42:06 -08:00
mca_drv.h [IA64] mca style cleanup 2008-02-04 15:42:06 -08:00
mca.c on_each_cpu(): kill unused 'retry' parameter 2008-06-26 11:24:38 +02:00
minstate.h [IA64] pvops: paravirtualize minstate.h. 2008-05-27 15:02:17 -07:00
module.c [IA64] adding parameter check to module_free() 2008-07-17 11:22:01 -07:00
msi_ia64.c [IA64] Fix irq migration in multiple vector domain 2008-03-04 14:16:20 -08:00
nr-irqs.c [IA64] Move include/asm-ia64 to arch/ia64/include/asm 2008-08-01 10:21:21 -07:00
numa.c [IA64] Minimize per_cpu reservations. 2008-04-08 13:51:35 -07:00
pal.S
palinfo.c smp_call_function: get rid of the unused nonatomic/retry argument 2008-06-26 11:24:35 +02:00
paravirt_inst.h [IA64] pvops: paravirtualize minstate.h. 2008-05-27 15:02:17 -07:00
paravirt.c [IA64] pvops: add to hooks, pv_time_ops, for steal time accounting. 2008-05-27 15:11:42 -07:00
paravirtentry.S [IA64] pvops: paravirtualize entry.S 2008-05-27 15:08:01 -07:00
patch.c [IA64] Workaround for RSE issue 2008-05-27 13:24:39 -07:00
perfmon_default_smpl.c [IA64] remove remaining __FUNCTION__ occurrences 2008-03-06 09:19:27 -08:00
perfmon_generic.h
perfmon_itanium.h
perfmon_mckinley.h
perfmon_montecito.h
perfmon.c tracehook: wait_task_inactive 2008-07-26 12:00:09 -07:00
process.c ACPI : Create "idle=nomwait" bootparam 2008-07-16 23:27:05 +02:00
ptrace.c [IA64] remove duplicate code for register access 2008-03-12 16:28:02 -07:00
relocate_kernel.S
sal.c [IA64] Update check_sal_cache_flush to use platform_send_ipi() 2008-06-11 16:40:33 -07:00
salinfo.c ia64: use non-racy method for proc entries creation 2008-04-29 08:06:21 -07:00
setup.c [IA64] Ensure cpu0 can access per-cpu variables in early boot code 2008-08-12 10:34:20 -07:00
sigframe.h
signal.c [IA64] TS_RESTORE_SIGMASK 2008-05-01 14:29:44 -07:00
smp.c on_each_cpu(): kill unused 'retry' parameter 2008-06-26 11:24:38 +02:00
smpboot.c [IA64] Ensure cpu0 can access per-cpu variables in early boot code 2008-08-12 10:34:20 -07:00
sys_ia64.c flag parameters: pipe 2008-07-24 10:47:28 -07:00
time.c Pull pvops into release branch 2008-07-17 10:53:37 -07:00
topology.c [IA64] fix section mismatch in arch/ia64/kernel/topology.c 2008-04-30 14:08:07 -07:00
traps.c [IA64] honor notify_die() returning NOTIFY_STOP 2008-02-05 08:26:44 -08:00
unaligned.c [IA64] arch/ia64/kernel/: use time_* macros 2008-04-09 10:38:30 -07:00
uncached.c smp_call_function: get rid of the unused nonatomic/retry argument 2008-06-26 11:24:35 +02:00
unwind_decoder.c
unwind_i.h
unwind.c [IA64] remove remaining __FUNCTION__ occurrences 2008-03-06 09:19:27 -08:00
vmlinux.lds.S [IA64] Ensure cpu0 can access per-cpu variables in early boot code 2008-08-12 10:34:20 -07:00