Re: [06/12] arch: Declare screen_info in <asm/screen_info.h>
Thomas Zimmermann <[email protected]>
| Newsgroups | gmane.linux.ports.ia64,gmane.linux.kernel.efi,gmane.linux.ports.sh.devel,gmane.comp.video.dri.devel,gmane.linux.ports.mips,gmane.linux.ports.sparc,gmane.linux.ports.riscv,gmane.linux.kernel.cross-arch,gmane.linux.ports.hexagon,gmane.linux.ports.arm.kernel,gmane.linux.kernel,gmane.linux.ports.alpha,gmane.linux.ports.ppc64.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi Am 05.07.23 um 03:21 schrieb Sui Jingfeng: > Hi, Thomas > > > I love your patch, yet after applied your patch, the linux kernel fail > to compile on my LoongArch machine. screen_info is missing. I think this should be solved with your update to patch 1. Best regards Thomas > > > ``` > > CC arch/loongarch/kernel/efi.o > arch/loongarch/kernel/efi.c: In function ‘init_screen_info’: > arch/loongarch/kernel/efi.c:77:54: error: invalid application of > ‘sizeof’ to incomplete type ‘struct screen_info’ > 77 | si = early_memremap(screen_info_table, sizeof(*si)); > | ^ > arch/loongarch/kernel/efi.c:82:9: error: ‘screen_info’ undeclared (first > use in this function) > 82 | screen_info = *si; > | ^~~~~~~~~~~ > arch/loongarch/kernel/efi.c:82:9: note: each undeclared identifier is > reported only once for each function it appears in > arch/loongarch/kernel/efi.c:82:23: error: invalid use of undefined type > ‘struct screen_info’ > 82 | screen_info = *si; > | ^ > arch/loongarch/kernel/efi.c:83:29: error: invalid application of > ‘sizeof’ to incomplete type ‘struct screen_info’ > 83 | memset(si, 0, sizeof(*si)); > | ^ > arch/loongarch/kernel/efi.c:84:34: error: invalid application of > ‘sizeof’ to incomplete type ‘struct screen_info’ > 84 | early_memunmap(si, sizeof(*si)); > | ^ > make[3]: *** [scripts/Makefile.build:252: arch/loongarch/kernel/efi.o] > Error 1 > make[3]: *** Waiting for unfinished jobs.... > make[2]: *** [scripts/Makefile.build:494: arch/loongarch/kernel] Error 2 > make[1]: *** [scripts/Makefile.build:494: arch/loongarch] Error 2 > make[1]: *** Waiting for unfinished jobs.... > make: *** [Makefile:2026: .] Error 2 > > ``` > > On 2023/6/29 19:45, Thomas Zimmermann wrote: >> The variable screen_info does not exist on all architectures. Declare >> it in <asm-generic/screen_info.h>. All architectures that do declare it >> will provide it via <asm/screen_info.h>. >> >> Add the Kconfig token ARCH_HAS_SCREEN_INFO to guard against access on >> architectures that don't provide screen_info. >> >> Signed-off-by: Thomas Zimmermann <[email protected]> >> Cc: Richard Henderson <[email protected]> >> Cc: Ivan Kokshaysky <[email protected]> >> Cc: Matt Turner <[email protected]> >> Cc: Russell King <[email protected]> >> Cc: Catalin Marinas <[email protected]> >> Cc: Will Deacon <[email protected]> >> Cc: Guo Ren <[email protected]> >> Cc: Brian Cain <[email protected]> >> Cc: Huacai Chen <[email protected]> >> Cc: WANG Xuerui <[email protected]> >> Cc: Thomas Bogendoerfer <[email protected]> >> Cc: Dinh Nguyen <[email protected]> >> Cc: Michael Ellerman <[email protected]> >> Cc: Nicholas Piggin <[email protected]> >> Cc: Christophe Leroy <[email protected]> >> Cc: Paul Walmsley <[email protected]> >> Cc: Palmer Dabbelt <[email protected]> >> Cc: Albert Ou <[email protected]> >> Cc: Yoshinori Sato <[email protected]> >> Cc: Rich Felker <[email protected]> >> Cc: John Paul Adrian Glaubitz <[email protected]> >> Cc: "David S. Miller" <[email protected]> >> Cc: Thomas Gleixner <[email protected]> >> Cc: Ingo Molnar <[email protected]> >> Cc: Borislav Petkov <[email protected]> >> Cc: Dave Hansen <[email protected]> >> Cc: [email protected] >> Cc: "H. Peter Anvin" <[email protected]> >> Cc: Chris Zankel <[email protected]> >> Cc: Max Filippov <[email protected]> >> Cc: Helge Deller <[email protected]> >> Cc: Arnd Bergmann <[email protected]> >> Cc: Kees Cook <[email protected]> >> Cc: "Paul E. McKenney" <[email protected]> >> Cc: Peter Zijlstra <[email protected]> >> Cc: Frederic Weisbecker <[email protected]> >> Cc: Andrew Morton <[email protected]> >> Cc: Ard Biesheuvel <[email protected]> >> Cc: Sami Tolvanen <[email protected]> >> Cc: Juerg Haefliger <[email protected]> >> Cc: Geert Uytterhoeven <[email protected]> >> Cc: Anshuman Khandual <[email protected]> >> Cc: Niklas Schnelle <[email protected]> >> Cc: "Russell King (Oracle)" <[email protected]> >> Cc: Linus Walleij <[email protected]> >> Cc: Sebastian Reichel <[email protected]> >> Cc: "Mike Rapoport (IBM)" <[email protected]> >> Cc: "Kirill A. Shutemov" <[email protected]> >> Cc: Zi Yan <[email protected]> >> Acked-by: WANG Xuerui <[email protected]> # loongarch >> --- >> arch/Kconfig | 6 ++++++ >> arch/alpha/Kconfig | 1 + >> arch/arm/Kconfig | 1 + >> arch/arm64/Kconfig | 1 + >> arch/csky/Kconfig | 1 + >> arch/hexagon/Kconfig | 1 + >> arch/ia64/Kconfig | 1 + >> arch/loongarch/Kconfig | 1 + >> arch/mips/Kconfig | 1 + >> arch/nios2/Kconfig | 1 + >> arch/powerpc/Kconfig | 1 + >> arch/riscv/Kconfig | 1 + >> arch/sh/Kconfig | 1 + >> arch/sparc/Kconfig | 1 + >> arch/x86/Kconfig | 1 + >> arch/xtensa/Kconfig | 1 + >> drivers/video/Kconfig | 3 +++ >> include/asm-generic/Kbuild | 1 + >> include/asm-generic/screen_info.h | 12 ++++++++++++ >> include/linux/screen_info.h | 2 +- >> 20 files changed, 38 insertions(+), 1 deletion(-) >> create mode 100644 include/asm-generic/screen_info.h >> >> diff --git a/arch/Kconfig b/arch/Kconfig >> index 205fd23e0cada..2f58293fd7bcb 100644 >> --- a/arch/Kconfig >> +++ b/arch/Kconfig >> @@ -1466,6 +1466,12 @@ config ARCH_HAS_NONLEAF_PMD_YOUNG >> address translations. Page table walkers that clear the >> accessed bit >> may use this capability to reduce their search space. >> +config ARCH_HAS_SCREEN_INFO >> + bool >> + help >> + Selected by architectures that provide a global instance of >> + screen_info. >> + >> source "kernel/gcov/Kconfig" >> source "scripts/gcc-plugins/Kconfig" >> diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig >> index a5c2b1aa46b02..d749011d88b14 100644 >> --- a/arch/alpha/Kconfig >> +++ b/arch/alpha/Kconfig >> @@ -4,6 +4,7 @@ config ALPHA >> default y >> select ARCH_32BIT_USTAT_F_TINODE >> select ARCH_HAS_CURRENT_STACK_POINTER >> + select ARCH_HAS_SCREEN_INFO >> select ARCH_MIGHT_HAVE_PC_PARPORT >> select ARCH_MIGHT_HAVE_PC_SERIO >> select ARCH_NO_PREEMPT >> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig >> index 0fb4b218f6658..a9d01ee67a90e 100644 >> --- a/arch/arm/Kconfig >> +++ b/arch/arm/Kconfig >> @@ -15,6 +15,7 @@ config ARM >> select ARCH_HAS_MEMBARRIER_SYNC_CORE >> select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE >> select ARCH_HAS_PTE_SPECIAL if ARM_LPAE >> + select ARCH_HAS_SCREEN_INFO >> select ARCH_HAS_SETUP_DMA_OPS >> select ARCH_HAS_SET_MEMORY >> select ARCH_STACKWALK >> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig >> index 343e1e1cae10a..21addc4715bb3 100644 >> --- a/arch/arm64/Kconfig >> +++ b/arch/arm64/Kconfig >> @@ -36,6 +36,7 @@ config ARM64 >> select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE >> select ARCH_HAS_PTE_DEVMAP >> select ARCH_HAS_PTE_SPECIAL >> + select ARCH_HAS_SCREEN_INFO >> select ARCH_HAS_SETUP_DMA_OPS >> select ARCH_HAS_SET_DIRECT_MAP >> select ARCH_HAS_SET_MEMORY >> diff --git a/arch/csky/Kconfig b/arch/csky/Kconfig >> index 4df1f8c9d170b..28444e581fc1f 100644 >> --- a/arch/csky/Kconfig >> +++ b/arch/csky/Kconfig >> @@ -10,6 +10,7 @@ config CSKY >> select ARCH_USE_QUEUED_RWLOCKS >> select ARCH_USE_QUEUED_SPINLOCKS >> select ARCH_HAS_CURRENT_STACK_POINTER >> + select ARCH_HAS_SCREEN_INFO >> select ARCH_INLINE_READ_LOCK if !PREEMPTION >> select ARCH_INLINE_READ_LOCK_BH if !PREEMPTION >> select ARCH_INLINE_READ_LOCK_IRQ if !PREEMPTION >> diff --git a/arch/hexagon/Kconfig b/arch/hexagon/Kconfig >> index 54eadf2651786..cc683c0a43d34 100644 >> --- a/arch/hexagon/Kconfig >> +++ b/arch/hexagon/Kconfig >> @@ -5,6 +5,7 @@ comment "Linux Kernel Configuration for Hexagon" >> config HEXAGON >> def_bool y >> select ARCH_32BIT_OFF_T >> + select ARCH_HAS_SCREEN_INFO >> select ARCH_HAS_SYNC_DMA_FOR_DEVICE >> select ARCH_NO_PREEMPT >> select DMA_GLOBAL_POOL >> diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig >> index e79f15e32a451..8b1e785e6d53d 100644 >> --- a/arch/ia64/Kconfig >> +++ b/arch/ia64/Kconfig >> @@ -10,6 +10,7 @@ config IA64 >> bool >> select ARCH_BINFMT_ELF_EXTRA_PHDRS >> select ARCH_HAS_DMA_MARK_CLEAN >> + select ARCH_HAS_SCREEN_INFO >> select ARCH_HAS_STRNCPY_FROM_USER >> select ARCH_HAS_STRNLEN_USER >> select ARCH_MIGHT_HAVE_PC_PARPORT >> diff --git a/arch/loongarch/Kconfig b/arch/loongarch/Kconfig >> index d38b066fc931b..6aab2fb7753da 100644 >> --- a/arch/loongarch/Kconfig >> +++ b/arch/loongarch/Kconfig >> @@ -13,6 +13,7 @@ config LOONGARCH >> select ARCH_HAS_FORTIFY_SOURCE >> select ARCH_HAS_NMI_SAFE_THIS_CPU_OPS >> select ARCH_HAS_PTE_SPECIAL >> + select ARCH_HAS_SCREEN_INFO >> select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST >> select ARCH_INLINE_READ_LOCK if !PREEMPTION >> select ARCH_INLINE_READ_LOCK_BH if !PREEMPTION >> diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig >> index 675a8660cb85a..c0ae09789cb6d 100644 >> --- a/arch/mips/Kconfig >> +++ b/arch/mips/Kconfig >> @@ -10,6 +10,7 @@ config MIPS >> select ARCH_HAS_KCOV >> select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE if !EVA >> select ARCH_HAS_PTE_SPECIAL if !(32BIT && CPU_HAS_RIXI) >> + select ARCH_HAS_SCREEN_INFO >> select ARCH_HAS_STRNCPY_FROM_USER >> select ARCH_HAS_STRNLEN_USER >> select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST >> diff --git a/arch/nios2/Kconfig b/arch/nios2/Kconfig >> index e5936417d3cd3..7183eea282212 100644 >> --- a/arch/nios2/Kconfig >> +++ b/arch/nios2/Kconfig >> @@ -3,6 +3,7 @@ config NIOS2 >> def_bool y >> select ARCH_32BIT_OFF_T >> select ARCH_HAS_DMA_PREP_COHERENT >> + select ARCH_HAS_SCREEN_INFO >> select ARCH_HAS_SYNC_DMA_FOR_CPU >> select ARCH_HAS_SYNC_DMA_FOR_DEVICE >> select ARCH_HAS_DMA_SET_UNCACHED >> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig >> index bff5820b7cda1..b1acad3076180 100644 >> --- a/arch/powerpc/Kconfig >> +++ b/arch/powerpc/Kconfig >> @@ -148,6 +148,7 @@ config PPC >> select ARCH_HAS_PTE_DEVMAP if PPC_BOOK3S_64 >> select ARCH_HAS_PTE_SPECIAL >> select ARCH_HAS_SCALED_CPUTIME if >> VIRT_CPU_ACCOUNTING_NATIVE && PPC_BOOK3S_64 >> + select ARCH_HAS_SCREEN_INFO >> select ARCH_HAS_SET_MEMORY >> select ARCH_HAS_STRICT_KERNEL_RWX if (PPC_BOOK3S || PPC_8xx >> || 40x) && !HIBERNATION >> select ARCH_HAS_STRICT_KERNEL_RWX if PPC_85xx && !HIBERNATION >> && !RANDOMIZE_BASE >> diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig >> index 5966ad97c30c3..b5a48f8424af9 100644 >> --- a/arch/riscv/Kconfig >> +++ b/arch/riscv/Kconfig >> @@ -29,6 +29,7 @@ config RISCV >> select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE >> select ARCH_HAS_PMEM_API >> select ARCH_HAS_PTE_SPECIAL >> + select ARCH_HAS_SCREEN_INFO >> select ARCH_HAS_SET_DIRECT_MAP if MMU >> select ARCH_HAS_SET_MEMORY if MMU >> select ARCH_HAS_STRICT_KERNEL_RWX if MMU && !XIP_KERNEL >> diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig >> index 04b9550cf0070..001f5149952b4 100644 >> --- a/arch/sh/Kconfig >> +++ b/arch/sh/Kconfig >> @@ -10,6 +10,7 @@ config SUPERH >> select ARCH_HAS_GIGANTIC_PAGE >> select ARCH_HAS_GCOV_PROFILE_ALL >> select ARCH_HAS_PTE_SPECIAL >> + select ARCH_HAS_SCREEN_INFO >> select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST >> select ARCH_HIBERNATION_POSSIBLE if MMU >> select ARCH_MIGHT_HAVE_PC_PARPORT >> diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig >> index 8535e19062f65..e4bfb80b48cfe 100644 >> --- a/arch/sparc/Kconfig >> +++ b/arch/sparc/Kconfig >> @@ -13,6 +13,7 @@ config 64BIT >> config SPARC >> bool >> default y >> + select ARCH_HAS_SCREEN_INFO >> select ARCH_MIGHT_HAVE_PC_PARPORT if SPARC64 && PCI >> select ARCH_MIGHT_HAVE_PC_SERIO >> select DMA_OPS >> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig >> index 53bab123a8ee4..d7c2bf4ee403d 100644 >> --- a/arch/x86/Kconfig >> +++ b/arch/x86/Kconfig >> @@ -91,6 +91,7 @@ config X86 >> select ARCH_HAS_NONLEAF_PMD_YOUNG if PGTABLE_LEVELS > 2 >> select ARCH_HAS_UACCESS_FLUSHCACHE if X86_64 >> select ARCH_HAS_COPY_MC if X86_64 >> + select ARCH_HAS_SCREEN_INFO >> select ARCH_HAS_SET_MEMORY >> select ARCH_HAS_SET_DIRECT_MAP >> select ARCH_HAS_STRICT_KERNEL_RWX >> diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig >> index 3c6e5471f025b..c6cbd7459939c 100644 >> --- a/arch/xtensa/Kconfig >> +++ b/arch/xtensa/Kconfig >> @@ -8,6 +8,7 @@ config XTENSA >> select ARCH_HAS_DMA_PREP_COHERENT if MMU >> select ARCH_HAS_GCOV_PROFILE_ALL >> select ARCH_HAS_KCOV >> + select ARCH_HAS_SCREEN_INFO >> select ARCH_HAS_SYNC_DMA_FOR_CPU if MMU >> select ARCH_HAS_SYNC_DMA_FOR_DEVICE if MMU >> select ARCH_HAS_DMA_SET_UNCACHED if MMU >> diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig >> index 8b2b9ac37c3df..d4a72bea56be0 100644 >> --- a/drivers/video/Kconfig >> +++ b/drivers/video/Kconfig >> @@ -21,6 +21,9 @@ config STI_CORE >> config VIDEO_CMDLINE >> bool >> +config ARCH_HAS_SCREEN_INFO >> + bool >> + >> config VIDEO_NOMODESET >> bool >> default n >> diff --git a/include/asm-generic/Kbuild b/include/asm-generic/Kbuild >> index 941be574bbe00..5e5d4158a4b4b 100644 >> --- a/include/asm-generic/Kbuild >> +++ b/include/asm-generic/Kbuild >> @@ -47,6 +47,7 @@ mandatory-y += percpu.h >> mandatory-y += pgalloc.h >> mandatory-y += preempt.h >> mandatory-y += rwonce.h >> +mandatory-y += screen_info.h >> mandatory-y += sections.h >> mandatory-y += serial.h >> mandatory-y += shmparam.h >> diff --git a/include/asm-generic/screen_info.h >> b/include/asm-generic/screen_info.h >> new file mode 100644 >> index 0000000000000..6fd0e50fabfcd >> --- /dev/null >> +++ b/include/asm-generic/screen_info.h >> @@ -0,0 +1,12 @@ >> +/* SPDX-License-Identifier: GPL-2.0 */ >> + >> +#ifndef _ASM_GENERIC_SCREEN_INFO_H >> +#define _ASM_GENERIC_SCREEN_INFO_H >> + >> +#include <uapi/linux/screen_info.h> >> + >> +#if defined(CONFIG_ARCH_HAS_SCREEN_INFO) >> +extern struct screen_info screen_info; >> +#endif >> + >> +#endif /* _ASM_GENERIC_SCREEN_INFO_H */ >> diff --git a/include/linux/screen_info.h b/include/linux/screen_info.h >> index eab7081392d50..c764b9a51c24b 100644 >> --- a/include/linux/screen_info.h >> +++ b/include/linux/screen_info.h >> @@ -4,6 +4,6 @@ >> #include <uapi/linux/screen_info.h> >> -extern struct screen_info screen_info; >> +#include <asm/screen_info.h> >> #endif /* _SCREEN_INFO_H */ > -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstrasse 146, 90461 Nuernberg, Germany GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman HRB 36809 (AG Nuernberg)
OpenPGP_signature
(application/pgp-signature, 840 B) - not displayed