powerpc: Add support for GENERIC_EARLY_IOREMAP
Add support for GENERIC_EARLY_IOREMAP. Let's define 16 slots of 256Kbytes each for early ioremap. Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/412c7eaa6a373d8f82a3c3ee01e6a65a1a6589de.1568295907.git.christophe.leroy@c-s.fr
This commit is contained in:
Родитель
77693a5fb5
Коммит
265c3491c4
|
@ -161,6 +161,7 @@ config PPC
|
||||||
select GENERIC_CMOS_UPDATE
|
select GENERIC_CMOS_UPDATE
|
||||||
select GENERIC_CPU_AUTOPROBE
|
select GENERIC_CPU_AUTOPROBE
|
||||||
select GENERIC_CPU_VULNERABILITIES if PPC_BARRIER_NOSPEC
|
select GENERIC_CPU_VULNERABILITIES if PPC_BARRIER_NOSPEC
|
||||||
|
select GENERIC_EARLY_IOREMAP
|
||||||
select GENERIC_IRQ_SHOW
|
select GENERIC_IRQ_SHOW
|
||||||
select GENERIC_IRQ_SHOW_LEVEL
|
select GENERIC_IRQ_SHOW_LEVEL
|
||||||
select GENERIC_PCI_IOMAP if PCI
|
select GENERIC_PCI_IOMAP if PCI
|
||||||
|
|
|
@ -12,3 +12,4 @@ generic-y += mcs_spinlock.h
|
||||||
generic-y += preempt.h
|
generic-y += preempt.h
|
||||||
generic-y += vtime.h
|
generic-y += vtime.h
|
||||||
generic-y += msi.h
|
generic-y += msi.h
|
||||||
|
generic-y += early_ioremap.h
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#define _ASM_FIXMAP_H
|
#define _ASM_FIXMAP_H
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
|
#include <linux/sizes.h>
|
||||||
#include <asm/page.h>
|
#include <asm/page.h>
|
||||||
#include <asm/pgtable.h>
|
#include <asm/pgtable.h>
|
||||||
#ifdef CONFIG_HIGHMEM
|
#ifdef CONFIG_HIGHMEM
|
||||||
|
@ -64,6 +65,14 @@ enum fixed_addresses {
|
||||||
FIX_IMMR_SIZE,
|
FIX_IMMR_SIZE,
|
||||||
#endif
|
#endif
|
||||||
/* FIX_PCIE_MCFG, */
|
/* FIX_PCIE_MCFG, */
|
||||||
|
__end_of_permanent_fixed_addresses,
|
||||||
|
|
||||||
|
#define NR_FIX_BTMAPS (SZ_256K / PAGE_SIZE)
|
||||||
|
#define FIX_BTMAPS_SLOTS 16
|
||||||
|
#define TOTAL_FIX_BTMAPS (NR_FIX_BTMAPS * FIX_BTMAPS_SLOTS)
|
||||||
|
|
||||||
|
FIX_BTMAP_END = __end_of_permanent_fixed_addresses,
|
||||||
|
FIX_BTMAP_BEGIN = FIX_BTMAP_END + TOTAL_FIX_BTMAPS - 1,
|
||||||
__end_of_fixed_addresses
|
__end_of_fixed_addresses
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -71,6 +80,7 @@ enum fixed_addresses {
|
||||||
#define FIXADDR_START (FIXADDR_TOP - __FIXADDR_SIZE)
|
#define FIXADDR_START (FIXADDR_TOP - __FIXADDR_SIZE)
|
||||||
|
|
||||||
#define FIXMAP_PAGE_NOCACHE PAGE_KERNEL_NCG
|
#define FIXMAP_PAGE_NOCACHE PAGE_KERNEL_NCG
|
||||||
|
#define FIXMAP_PAGE_IO PAGE_KERNEL_NCG
|
||||||
|
|
||||||
#include <asm-generic/fixmap.h>
|
#include <asm-generic/fixmap.h>
|
||||||
|
|
||||||
|
@ -85,5 +95,7 @@ static inline void __set_fixmap(enum fixed_addresses idx,
|
||||||
map_kernel_page(__fix_to_virt(idx), phys, flags);
|
map_kernel_page(__fix_to_virt(idx), phys, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define __early_set_fixmap __set_fixmap
|
||||||
|
|
||||||
#endif /* !__ASSEMBLY__ */
|
#endif /* !__ASSEMBLY__ */
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -44,6 +44,7 @@
|
||||||
#include <asm/asm-prototypes.h>
|
#include <asm/asm-prototypes.h>
|
||||||
#include <asm/kdump.h>
|
#include <asm/kdump.h>
|
||||||
#include <asm/feature-fixups.h>
|
#include <asm/feature-fixups.h>
|
||||||
|
#include <asm/early_ioremap.h>
|
||||||
|
|
||||||
#include "setup.h"
|
#include "setup.h"
|
||||||
|
|
||||||
|
@ -80,6 +81,8 @@ notrace void __init machine_init(u64 dt_ptr)
|
||||||
/* Configure static keys first, now that we're relocated. */
|
/* Configure static keys first, now that we're relocated. */
|
||||||
setup_feature_keys();
|
setup_feature_keys();
|
||||||
|
|
||||||
|
early_ioremap_setup();
|
||||||
|
|
||||||
/* Enable early debugging if any specified (see udbg.h) */
|
/* Enable early debugging if any specified (see udbg.h) */
|
||||||
udbg_early_init();
|
udbg_early_init();
|
||||||
|
|
||||||
|
|
|
@ -65,6 +65,7 @@
|
||||||
#include <asm/hw_irq.h>
|
#include <asm/hw_irq.h>
|
||||||
#include <asm/feature-fixups.h>
|
#include <asm/feature-fixups.h>
|
||||||
#include <asm/kup.h>
|
#include <asm/kup.h>
|
||||||
|
#include <asm/early_ioremap.h>
|
||||||
|
|
||||||
#include "setup.h"
|
#include "setup.h"
|
||||||
|
|
||||||
|
@ -332,6 +333,8 @@ void __init early_setup(unsigned long dt_ptr)
|
||||||
apply_feature_fixups();
|
apply_feature_fixups();
|
||||||
setup_feature_keys();
|
setup_feature_keys();
|
||||||
|
|
||||||
|
early_ioremap_setup();
|
||||||
|
|
||||||
/* Initialize the hash table or TLB handling */
|
/* Initialize the hash table or TLB handling */
|
||||||
early_init_mmu();
|
early_init_mmu();
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче