Bugzilla – Attachment 728521 Details for
Bug 1043231
Kernel build failed at armv7hl
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Forgot Password
[patch]
0001-ARM-add-support-for-generic-early_ioremap-early_memr.patch
0001-ARM-add-support-for-generic-early_ioremap-early_memr.patch (text/plain), 5.46 KB, created by
Matwey Kornilov
on 2017-06-11 20:15:25 UTC
(
hide
)
Description:
0001-ARM-add-support-for-generic-early_ioremap-early_memr.patch
Filename:
MIME Type:
Creator:
Matwey Kornilov
Created:
2017-06-11 20:15:25 UTC
Size:
5.46 KB
patch
obsolete
>From c4cd1fee3665f166804c08e2a29ba0d4d90c2db5 Mon Sep 17 00:00:00 2001 >From: Ard Biesheuvel <ard.biesheuvel@linaro.org> >Date: Tue, 1 Sep 2015 08:59:28 +0200 >Subject: [PATCH] ARM: add support for generic early_ioremap/early_memremap > >This enables the generic early_ioremap implementation for ARM. > >It uses the fixmap region reserved for kmap. Since early_ioremap >is only supported before paging_init(), and kmap is only supported >afterwards, this is guaranteed not to cause any clashes. > >Tested-by: Ryan Harkin <ryan.harkin@linaro.org> >Reviewed-by: Matt Fleming <matt@codeblueprint.co.uk> >Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> >Git-commit: 2937367b8a4b0d46ce3312cb997e4a240b02cf15 >Patch-mainline: v4.5-rc1 >Signed-off-by: Matwey V. Kornilov <matwey.kornilov@gmail.com> >--- > arch/arm/Kconfig | 1 + > arch/arm/include/asm/Kbuild | 1 + > arch/arm/include/asm/fixmap.h | 29 ++++++++++++++++++++++++++++- > arch/arm/kernel/setup.c | 7 +++++-- > arch/arm/mm/ioremap.c | 9 +++++++++ > arch/arm/mm/mmu.c | 2 +- > 6 files changed, 45 insertions(+), 4 deletions(-) > >diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig >index a129c0ade98c..cf6f9b0f8b15 100644 >--- a/arch/arm/Kconfig >+++ b/arch/arm/Kconfig >@@ -21,6 +21,7 @@ config ARM > select GENERIC_ALLOCATOR > select GENERIC_ATOMIC64 if (CPU_V7M || CPU_V6 || !CPU_32v6K || !AEABI) > select GENERIC_CLOCKEVENTS_BROADCAST if SMP >+ select GENERIC_EARLY_IOREMAP > select GENERIC_IDLE_POLL_SETUP > select GENERIC_IRQ_PROBE > select GENERIC_IRQ_SHOW >diff --git a/arch/arm/include/asm/Kbuild b/arch/arm/include/asm/Kbuild >index bd425302c97a..16da6380eb85 100644 >--- a/arch/arm/include/asm/Kbuild >+++ b/arch/arm/include/asm/Kbuild >@@ -3,6 +3,7 @@ > generic-y += bitsperlong.h > generic-y += cputime.h > generic-y += current.h >+generic-y += early_ioremap.h > generic-y += emergency-restart.h > generic-y += errno.h > generic-y += exec.h >diff --git a/arch/arm/include/asm/fixmap.h b/arch/arm/include/asm/fixmap.h >index 58cfe9f1a687..5c17d2dec777 100644 >--- a/arch/arm/include/asm/fixmap.h >+++ b/arch/arm/include/asm/fixmap.h >@@ -19,20 +19,47 @@ enum fixed_addresses { > FIX_TEXT_POKE0, > FIX_TEXT_POKE1, > >- __end_of_fixed_addresses >+ __end_of_fixmap_region, >+ >+ /* >+ * Share the kmap() region with early_ioremap(): this is guaranteed >+ * not to clash since early_ioremap() is only available before >+ * paging_init(), and kmap() only after. >+ */ >+#define NR_FIX_BTMAPS 32 >+#define FIX_BTMAPS_SLOTS 7 >+#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_early_ioremap_region > }; > >+static const enum fixed_addresses __end_of_fixed_addresses = >+ __end_of_fixmap_region > __end_of_early_ioremap_region ? >+ __end_of_fixmap_region : __end_of_early_ioremap_region; >+ > #define FIXMAP_PAGE_COMMON (L_PTE_YOUNG | L_PTE_PRESENT | L_PTE_XN | L_PTE_DIRTY) > > #define FIXMAP_PAGE_NORMAL (FIXMAP_PAGE_COMMON | L_PTE_MT_WRITEBACK) >+#define FIXMAP_PAGE_RO (FIXMAP_PAGE_NORMAL | L_PTE_RDONLY) > > /* Used by set_fixmap_(io|nocache), both meant for mapping a device */ > #define FIXMAP_PAGE_IO (FIXMAP_PAGE_COMMON | L_PTE_MT_DEV_SHARED | L_PTE_SHARED) > #define FIXMAP_PAGE_NOCACHE FIXMAP_PAGE_IO > >+#define __early_set_fixmap __set_fixmap >+ >+#ifdef CONFIG_MMU >+ > void __set_fixmap(enum fixed_addresses idx, phys_addr_t phys, pgprot_t prot); > void __init early_fixmap_init(void); > > #include <asm-generic/fixmap.h> > >+#else >+ >+static inline void early_fixmap_init(void) { } >+ >+#endif > #endif >diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c >index 1521049e6374..b341b1c3b2fa 100644 >--- a/arch/arm/kernel/setup.c >+++ b/arch/arm/kernel/setup.c >@@ -40,6 +40,7 @@ > #include <asm/cputype.h> > #include <asm/efi.h> > #include <asm/elf.h> >+#include <asm/early_ioremap.h> > #include <asm/fixmap.h> > #include <asm/procinfo.h> > #include <asm/psci.h> >@@ -958,8 +959,8 @@ void __init setup_arch(char **cmdline_p) > strlcpy(cmd_line, boot_command_line, COMMAND_LINE_SIZE); > *cmdline_p = cmd_line; > >- if (IS_ENABLED(CONFIG_FIX_EARLYCON_MEM)) >- early_fixmap_init(); >+ early_fixmap_init(); >+ early_ioremap_init(); > > parse_early_param(); > >@@ -971,6 +972,8 @@ void __init setup_arch(char **cmdline_p) > sanity_check_meminfo(); > arm_memblock_init(mdesc); > >+ early_ioremap_reset(); >+ > paging_init(mdesc); > request_standard_resources(mdesc); > >diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c >index 0c81056c1dd7..66a978d05958 100644 >--- a/arch/arm/mm/ioremap.c >+++ b/arch/arm/mm/ioremap.c >@@ -30,6 +30,7 @@ > #include <asm/cp15.h> > #include <asm/cputype.h> > #include <asm/cacheflush.h> >+#include <asm/early_ioremap.h> > #include <asm/mmu_context.h> > #include <asm/pgalloc.h> > #include <asm/tlbflush.h> >@@ -469,3 +470,11 @@ int pci_ioremap_io(unsigned int offset, phys_addr_t phys_addr) > } > EXPORT_SYMBOL_GPL(pci_ioremap_io); > #endif >+ >+/* >+ * Must be called after early_fixmap_init >+ */ >+void __init early_ioremap_init(void) >+{ >+ early_ioremap_setup(); >+} >diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c >index 4867f5daf82c..de19f90221e2 100644 >--- a/arch/arm/mm/mmu.c >+++ b/arch/arm/mm/mmu.c >@@ -390,7 +390,7 @@ void __init early_fixmap_init(void) > * The early fixmap range spans multiple pmds, for which > * we are not prepared: > */ >- BUILD_BUG_ON((__fix_to_virt(__end_of_permanent_fixed_addresses) >> PMD_SHIFT) >+ BUILD_BUG_ON((__fix_to_virt(__end_of_early_ioremap_region) >> PMD_SHIFT) > != FIXADDR_TOP >> PMD_SHIFT); > > pmd = fixmap_pmd(FIXADDR_TOP); >-- >2.12.0 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
Actions:
View
|
Diff
Attachments on
bug 1043231
:
728059
|
728060
|
728061
|
728062
|
728063
|
728064
|
728065
|
728066
|
728067
|
728068
|
728069
|
728070
|
728071
|
728072
|
728073
|
728074
|
728075
|
728076
|
728077
| 728521 |
728695
|
728770