From e13b1bb62350f8321bc0e82dba969082db9e2052 Mon Sep 17 00:00:00 2001 From: David Mosberger <davidm@wailua.hpl.hp.com> Date: Mon, 1 Apr 2002 00:12:58 -0800 Subject: [PATCH] Initialize ar.k0 with physical I/O base not just on BP but also on all APs (based on patch by Bjorn Helgaas). --- arch/ia64/kernel/setup.c | 13 +++++++------ arch/ia64/kernel/smpboot.c | 5 +++++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c index 1befaecbf339..bab82a54556c 100644 --- a/arch/ia64/kernel/setup.c +++ b/arch/ia64/kernel/setup.c @@ -282,6 +282,7 @@ void __init setup_arch (char **cmdline_p) { extern unsigned long ia64_iobase; + unsigned long phys_iobase; unw_init(); @@ -322,16 +323,16 @@ setup_arch (char **cmdline_p) * clear in future SAL specs. We'll fall back to getting it out of * AR.KR0 if no appropriate entry is found in the memory map. */ - ia64_iobase = efi_get_iobase(); - if (ia64_iobase) + phys_iobase = efi_get_iobase(); + if (phys_iobase) /* set AR.KR0 since this is all we use it for anyway */ - ia64_set_kr(IA64_KR_IO_BASE, ia64_iobase); + ia64_set_kr(IA64_KR_IO_BASE, phys_iobase); else { - ia64_iobase = ia64_get_kr(IA64_KR_IO_BASE); + phys_iobase = ia64_get_kr(IA64_KR_IO_BASE); printk("No I/O port range found in EFI memory map, falling back to AR.KR0\n"); - printk("I/O port base = 0x%lx\n", ia64_iobase); + printk("I/O port base = 0x%lx\n", phys_iobase); } - ia64_iobase = __IA64_UNCACHED_OFFSET | (ia64_iobase & ~PAGE_OFFSET); + ia64_iobase = ioremap(phys_iobase); #ifdef CONFIG_SMP cpu_physical_id(0) = hard_smp_processor_id(); diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c index c339635170d2..3aea6cbae398 100644 --- a/arch/ia64/kernel/smpboot.c +++ b/arch/ia64/kernel/smpboot.c @@ -345,6 +345,11 @@ smp_callin (void) */ ia64_init_itm(); + /* + * Set I/O port base per CPU + */ + ia64_set_kr(IA64_KR_IO_BASE, __pa(ia64_iobase)); + #ifdef CONFIG_IA64_MCA ia64_mca_cmc_vector_setup(); /* Setup vector on AP & enable */ ia64_mca_check_errors(); /* For post-failure MCA error logging */ -- 2.30.9