/* All CPUs enumerated by SFI must be present and enabled */ void __cpuinit mp_sfi_register_lapic(u8 id) { if (MAX_APICS - id <= 0) { pr_warning("Processor #%d invalid (max %d)\n", id, MAX_APICS); return; } pr_info("registering lapic[%d]\n", id); generic_processor_info(id, GET_APIC_VERSION(apic_read(APIC_LVR))); }
static void __cpuinit acpi_register_lapic(int id, u8 enabled) { unsigned int ver = 0; if (!enabled) { ++disabled_cpus; return; } if (boot_cpu_physical_apicid != -1U) ver = apic_version[boot_cpu_physical_apicid]; generic_processor_info(id, ver); }
static void acpi_register_lapic(int id, u8 enabled) { unsigned int ver = 0; if (id >= (MAX_LOCAL_APIC-1)) { printk(KERN_INFO PREFIX "skipped apicid that is too big\n"); return; } if (!enabled) { ++disabled_cpus; return; } if (boot_cpu_physical_apicid != -1U) ver = apic_version[boot_cpu_physical_apicid]; generic_processor_info(id, ver); }
static void __init MP_processor_info(struct mpc_cpu *m) { int apicid; char *bootup_cpu = ""; if (!(m->cpuflag & CPU_ENABLED)) { disabled_cpus++; return; } apicid = x86_init.mpparse.mpc_apic_id(m); if (m->cpuflag & CPU_BOOTPROCESSOR) { bootup_cpu = " (Bootup-CPU)"; boot_cpu_physical_apicid = m->apicid; } printk(KERN_INFO "Processor #%d%s\n", m->apicid, bootup_cpu); generic_processor_info(apicid, m->apicver); }
static void __init jailhouse_get_smp_config(unsigned int early) { struct ioapic_domain_cfg ioapic_cfg = { .type = IOAPIC_DOMAIN_STRICT, .ops = &mp_ioapic_irqdomain_ops, }; struct mpc_intsrc mp_irq = { .type = MP_INTSRC, .irqtype = mp_INT, .irqflag = MP_IRQPOL_ACTIVE_HIGH | MP_IRQTRIG_EDGE, }; unsigned int cpu; jailhouse_x2apic_init(); register_lapic_address(0xfee00000); for (cpu = 0; cpu < setup_data.num_cpus; cpu++) { generic_processor_info(setup_data.cpu_ids[cpu], boot_cpu_apic_version); } smp_found_config = 1; if (setup_data.standard_ioapic) { mp_register_ioapic(0, 0xfec00000, gsi_top, &ioapic_cfg); /* Register 1:1 mapping for legacy UART IRQs 3 and 4 */ mp_irq.srcbusirq = mp_irq.dstirq = 3; mp_save_irq(&mp_irq); mp_irq.srcbusirq = mp_irq.dstirq = 4; mp_save_irq(&mp_irq); } } static void jailhouse_no_restart(void) { pr_notice("Jailhouse: Restart not supported, halting\n"); machine_halt(); }
static void __cpuinit MP_processor_info(struct mpc_config_processor *m) { int apicid; char *bootup_cpu = ""; if (!(m->mpc_cpuflag & CPU_ENABLED)) { disabled_cpus++; return; } #ifdef CONFIG_X86_NUMAQ apicid = mpc_apic_id(m, translation_table[mpc_record]); #else apicid = m->mpc_apicid; #endif if (m->mpc_cpuflag & CPU_BOOTPROCESSOR) { bootup_cpu = " (Bootup-CPU)"; boot_cpu_physical_apicid = m->mpc_apicid; } printk(KERN_INFO "Processor #%d%s\n", m->mpc_apicid, bootup_cpu); generic_processor_info(apicid, m->mpc_apicver); }
/** * acpi_register_lapic - register a local apic and generates a logic cpu number * @id: local apic id to register * @acpiid: ACPI id to register * @enabled: this cpu is enabled or not * * Returns the logic cpu number which maps to the local apic */ static int acpi_register_lapic(int id, u32 acpiid, u8 enabled) { unsigned int ver = 0; int cpu; if (id >= MAX_LOCAL_APIC) { printk(KERN_INFO PREFIX "skipped apicid that is too big\n"); return -EINVAL; } if (!enabled) { ++disabled_cpus; return -EINVAL; } if (boot_cpu_physical_apicid != -1U) ver = boot_cpu_apic_version; cpu = generic_processor_info(id, ver); if (cpu >= 0) early_per_cpu(x86_cpu_to_acpiid, cpu) = acpiid; return cpu; }