Commit e13b1bb6 authored by David Mosberger's avatar David Mosberger

Initialize ar.k0 with physical I/O base not just on BP but also on

all APs (based on patch by Bjorn Helgaas).
parent 95aa08a0
...@@ -282,6 +282,7 @@ void __init ...@@ -282,6 +282,7 @@ void __init
setup_arch (char **cmdline_p) setup_arch (char **cmdline_p)
{ {
extern unsigned long ia64_iobase; extern unsigned long ia64_iobase;
unsigned long phys_iobase;
unw_init(); unw_init();
...@@ -322,16 +323,16 @@ setup_arch (char **cmdline_p) ...@@ -322,16 +323,16 @@ setup_arch (char **cmdline_p)
* clear in future SAL specs. We'll fall back to getting it out of * 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. * AR.KR0 if no appropriate entry is found in the memory map.
*/ */
ia64_iobase = efi_get_iobase(); phys_iobase = efi_get_iobase();
if (ia64_iobase) if (phys_iobase)
/* set AR.KR0 since this is all we use it for anyway */ /* 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 { 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("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 #ifdef CONFIG_SMP
cpu_physical_id(0) = hard_smp_processor_id(); cpu_physical_id(0) = hard_smp_processor_id();
......
...@@ -345,6 +345,11 @@ smp_callin (void) ...@@ -345,6 +345,11 @@ smp_callin (void)
*/ */
ia64_init_itm(); ia64_init_itm();
/*
* Set I/O port base per CPU
*/
ia64_set_kr(IA64_KR_IO_BASE, __pa(ia64_iobase));
#ifdef CONFIG_IA64_MCA #ifdef CONFIG_IA64_MCA
ia64_mca_cmc_vector_setup(); /* Setup vector on AP & enable */ ia64_mca_cmc_vector_setup(); /* Setup vector on AP & enable */
ia64_mca_check_errors(); /* For post-failure MCA error logging */ ia64_mca_check_errors(); /* For post-failure MCA error logging */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment