Commit 78c32000 authored by Thomas Gleixner's avatar Thomas Gleixner Committed by Dave Hansen

x86/apic: Get rid of apic_phys

No need for an extra variable to find out whether the APIC has been mapped
or is accessible (X2APIC mode).

Provide an inline for this and check apic_mmio_base which is only set when
the local APIC has been mapped.
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Tested-by: default avatarMichael Kelley <mikelley@microsoft.com>
Tested-by: default avatarSohil Mehta <sohil.mehta@intel.com>
Tested-by: Juergen Gross <jgross@suse.com> # Xen PV (dom0 and unpriv. guest)
parent f52e2c3e
...@@ -99,6 +99,11 @@ static bool virt_ext_dest_id __ro_after_init; ...@@ -99,6 +99,11 @@ static bool virt_ext_dest_id __ro_after_init;
/* For parallel bootup. */ /* For parallel bootup. */
unsigned long apic_mmio_base __ro_after_init; unsigned long apic_mmio_base __ro_after_init;
static inline bool apic_accessible(void)
{
return x2apic_mode || apic_mmio_base;
}
/* /*
* Map cpu index to physical APIC ID * Map cpu index to physical APIC ID
*/ */
...@@ -199,8 +204,6 @@ unsigned int lapic_timer_period = 0; ...@@ -199,8 +204,6 @@ unsigned int lapic_timer_period = 0;
static void apic_pm_activate(void); static void apic_pm_activate(void);
static unsigned long apic_phys __ro_after_init;
/* /*
* Get the LAPIC version * Get the LAPIC version
*/ */
...@@ -1127,8 +1130,7 @@ void clear_local_APIC(void) ...@@ -1127,8 +1130,7 @@ void clear_local_APIC(void)
int maxlvt; int maxlvt;
u32 v; u32 v;
/* APIC hasn't been mapped yet */ if (!apic_accessible())
if (!x2apic_mode && !apic_phys)
return; return;
maxlvt = lapic_get_maxlvt(); maxlvt = lapic_get_maxlvt();
...@@ -1218,8 +1220,7 @@ void apic_soft_disable(void) ...@@ -1218,8 +1220,7 @@ void apic_soft_disable(void)
*/ */
void disable_local_APIC(void) void disable_local_APIC(void)
{ {
/* APIC hasn't been mapped yet */ if (!apic_accessible())
if (!x2apic_mode && !apic_phys)
return; return;
apic_soft_disable(); apic_soft_disable();
...@@ -2142,7 +2143,7 @@ void __init init_apic_mappings(void) ...@@ -2142,7 +2143,7 @@ void __init init_apic_mappings(void)
static __init void apic_set_fixmap(void) static __init void apic_set_fixmap(void)
{ {
set_fixmap_nocache(FIX_APIC_BASE, mp_lapic_addr); set_fixmap_nocache(FIX_APIC_BASE, mp_lapic_addr);
apic_phys = apic_mmio_base = APIC_BASE; apic_mmio_base = APIC_BASE;
apic_printk(APIC_VERBOSE, "mapped APIC to %16lx (%16lx)\n", apic_printk(APIC_VERBOSE, "mapped APIC to %16lx (%16lx)\n",
apic_mmio_base, mp_lapic_addr); apic_mmio_base, mp_lapic_addr);
apic_read_boot_cpu_id(false); apic_read_boot_cpu_id(false);
...@@ -2896,11 +2897,11 @@ early_param("apic", apic_set_verbosity); ...@@ -2896,11 +2897,11 @@ early_param("apic", apic_set_verbosity);
static int __init lapic_insert_resource(void) static int __init lapic_insert_resource(void)
{ {
if (!apic_phys) if (!apic_mmio_base)
return -1; return -1;
/* Put local APIC into the resource map. */ /* Put local APIC into the resource map. */
lapic_resource.start = apic_phys; lapic_resource.start = apic_mmio_base;
lapic_resource.end = lapic_resource.start + PAGE_SIZE - 1; lapic_resource.end = lapic_resource.start + PAGE_SIZE - 1;
insert_resource(&iomem_resource, &lapic_resource); insert_resource(&iomem_resource, &lapic_resource);
......
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