int acpi_disabled;
EXPORT_SYMBOL(acpi_disabled); int acpi_noirq; int acpi_pci_disabled;
EXPORT_SYMBOL(acpi_pci_disabled); int acpi_strict = 1; /* We have no workarounds on LoongArch */ int num_processors; int disabled_cpus;
if (acpi_pptt_cpu_is_thread(cpu) <= 0)
cpu_data[cpu].core = topology_id; else {
topology_id = find_acpi_cpu_topology(cpu, 1); if (topology_id < 0) return -ENOENT;
cpu_data[cpu].core = topology_id;
}
}
pptt_enabled = 1;
return 0;
}
#ifndef CONFIG_SUSPEND int (*acpi_suspend_lowlevel)(void); #else int (*acpi_suspend_lowlevel)(void) = loongarch_acpi_suspend; #endif
void __init acpi_boot_table_init(void)
{ /* * If acpi_disabled, bail out
*/ if (acpi_disabled) goto fdt_earlycon;
/* * Initialize the ACPI boot-time table parser.
*/ if (acpi_table_init()) {
disable_acpi(); goto fdt_earlycon;
}
loongson_sysconf.boot_cpu_id = read_csr_cpuid();
/* * Process the Multiple APIC Description Table (MADT), if present
*/
acpi_process_madt();
/* Do not enable ACPI SPCR console by default */
acpi_parse_spcr(earlycon_acpi_spcr_enable, false);
if (IS_ENABLED(CONFIG_ACPI_BGRT))
acpi_table_parse(ACPI_SIG_BGRT, acpi_parse_bgrt);
return;
fdt_earlycon: if (earlycon_acpi_spcr_enable)
early_init_dt_scan_chosen_stdout();
}
#ifdef CONFIG_ACPI_NUMA
/* Callback for Proximity Domain -> CPUID mapping */ void __init
acpi_numa_processor_affinity_init(struct acpi_srat_cpu_affinity *pa)
{ int pxm, node;
if (srat_disabled()) return; if (pa->header.length != sizeof(struct acpi_srat_cpu_affinity)) {
bad_srat(); return;
} if ((pa->flags & ACPI_SRAT_CPU_ENABLED) == 0) return;
pxm = pa->proximity_domain_lo; if (acpi_srat_revision >= 2) {
pxm |= (pa->proximity_domain_hi[0] << 8);
pxm |= (pa->proximity_domain_hi[1] << 16);
pxm |= (pa->proximity_domain_hi[2] << 24);
}
node = acpi_map_pxm_to_node(pxm); if (node < 0) {
pr_err("SRAT: Too many proximity domains %x\n", pxm);
bad_srat(); return;
}
if (pa->apic_id >= CONFIG_NR_CPUS) {
pr_info("SRAT: PXM %u -> CPU 0x%02x -> Node %u skipped apicid that is too big\n",
pxm, pa->apic_id, node); return;
}
void __init
acpi_numa_x2apic_affinity_init(struct acpi_srat_x2apic_cpu_affinity *pa)
{ int pxm, node;
if (srat_disabled()) return; if (pa->header.length < sizeof(struct acpi_srat_x2apic_cpu_affinity)) {
bad_srat(); return;
} if ((pa->flags & ACPI_SRAT_CPU_ENABLED) == 0) return;
pxm = pa->proximity_domain;
node = acpi_map_pxm_to_node(pxm); if (node < 0) {
pr_err("SRAT: Too many proximity domains %x\n", pxm);
bad_srat(); return;
}
if (pa->apic_id >= CONFIG_NR_CPUS) {
pr_info("SRAT: PXM %u -> CPU 0x%02x -> Node %u skipped apicid that is too big\n",
pxm, pa->apic_id, node); return;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.