Check that the processor to be woken up APIC ID is addressable in the
current APIC mode.
Note that in practice systems with APIC IDs > 255 should already have
x2APIC enabled by the firmware, and hence this is mostly a safety
belt.
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
if ( (apicid = x86_cpu_to_apicid[cpu]) == BAD_APICID )
return -ENODEV;
+ if ( (!x2apic_enabled && apicid >= APIC_ALL_CPUS) ||
+ (!iommu_intremap && (apicid >> 8)) )
+ {
+ printk("Unsupported: APIC ID %#x in xAPIC mode w/o interrupt remapping\n",
+ apicid);
+ return -EINVAL;
+ }
+
if ( (ret = do_boot_cpu(apicid, cpu)) != 0 )
return ret;