void __init sfi_init_late(void) { int length; if (sfi_disabled) return; length = syst_va->header.len; sfi_unmap_memory(syst_va, sizeof(struct sfi_table_simple)); /* Use ioremap now after it is ready */ sfi_use_ioremap = 1; #ifdef CONFIG_X86_EARLYMIC /* E820 does not mark page reserved */ memblock_reserve(0x92000, PAGE_SIZE); /* needed for ioremap */ SetPageReserved(pfn_to_page(0x92)); #endif syst_va = sfi_map_memory(syst_pa, length); sfi_acpi_init(); }
/* * sfi_unmap_table() * * Undoes effect of sfi_map_table() by unmapping table * if it did not completely fit on same page as SYST. */ static void sfi_unmap_table(struct sfi_table_header *th) { if (!TABLE_ON_PAGE(syst_va, th, th->len)) sfi_unmap_memory(th, TABLE_ON_PAGE(th, th, th->len) ? sizeof(*th) : th->len); }