]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
m68k: Move Sun 3 into a top-level platform option
authorArnd Bergmann <arnd@arndb.de>
Wed, 30 Oct 2024 19:56:13 +0000 (20:56 +0100)
committerGeert Uytterhoeven <geert@linux-m68k.org>
Wed, 6 Nov 2024 14:10:14 +0000 (15:10 +0100)
It is possible to select an m68k MMU build but not actually enable any
of the three MMU options, which then results in a build failure:

    arch/m68k/include/asm/page.h:10:25: error: 'CONFIG_PAGE_SHIFT' undeclared here (not in a function); did you mean 'CONFIG_LOG_BUF_SHIFT'?

Change the Kconfig selection to ensure that exactly one of the three
options is always enabled whenever an MMU-enabled kernel is built, but
moving CONFIG_SUN3 into a top-level option next to M68KCLASSIC and
COLDFIRE.

All defconfig files should keep working without changes, but
alldefconfig now builds support for the classic MMU.

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202408032138.P7sBvIns-lkp@intel.com/
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Greg Ungerer <gerg@linux-m68k.org>
Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
Link: https://lore.kernel.org/20241030195638.22542-1-arnd@kernel.org
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
arch/m68k/Kconfig
arch/m68k/Kconfig.cpu
arch/m68k/Kconfig.machine
arch/m68k/kernel/Makefile
arch/m68k/kernel/time.c

index cc26df907bfe3c8143a931d259eceabb16af7411..7c4f7bcc89d76326b9d7280a3bcba79412ead7d2 100644 (file)
@@ -84,24 +84,23 @@ config MMU
          support by paged memory management. If unsure, say 'Y'.
 
 config MMU_MOTOROLA
-       bool
+       def_bool MMU && M68KCLASSIC
        select HAVE_PAGE_SIZE_4KB
 
 config MMU_COLDFIRE
+       def_bool MMU && COLDFIRE
        select HAVE_PAGE_SIZE_8KB
-       bool
 
 config MMU_SUN3
-       bool
+       def_bool MMU && SUN3
        select HAVE_PAGE_SIZE_8KB
-       depends on MMU && !MMU_MOTOROLA && !MMU_COLDFIRE
 
 config ARCH_SUPPORTS_KEXEC
-       def_bool M68KCLASSIC && MMU
+       def_bool (M68KCLASSIC || SUN3) && MMU
 
 config BOOTINFO_PROC
        bool "Export bootinfo in procfs"
-       depends on KEXEC && M68KCLASSIC
+       depends on KEXEC && (M68KCLASSIC || SUN3)
        help
          Say Y to export the bootinfo used to boot the kernel in a
          "bootinfo" file in procfs.  This is useful with kexec.
index c777a129768a0980939e6442aabd873be7b6ca0e..e7b5f6b559471ec94437d3ad7da7f90aa0b6b993 100644 (file)
@@ -2,7 +2,7 @@
 comment "Processor Type"
 
 choice
-       prompt "CPU family support"
+       prompt "CPU/machine family support"
        default M68KCLASSIC if MMU
        default COLDFIRE if !MMU
        help
@@ -19,7 +19,7 @@ choice
          processor, select COLDFIRE.
 
 config M68KCLASSIC
-       bool "Classic M68K CPU family support"
+       bool "Classic M68K CPU/machine family support"
        select HAVE_ARCH_PFN_VALID
 
 config COLDFIRE
@@ -32,13 +32,23 @@ config COLDFIRE
        select HAVE_LEGACY_CLK
        select HAVE_PAGE_SIZE_8KB if !MMU
 
-endchoice
+config SUN3
+       bool "Sun3 machine support"
+       depends on MMU
+       select HAVE_ARCH_PFN_VALID
+       select LEGACY_TIMER_TICK
+       select NO_DMA
+       select M68020
+       help
+         This option enables support for the Sun 3 series of workstations
+         (3/50, 3/60, 3/1xx, 3/2xx systems). These use a classic 68020 CPU
+         but the custom memory management unit makes them incompatible with
+         all other classic m68k machines, including Sun 3x.
 
-if M68KCLASSIC
+endchoice
 
 config M68000
-       def_bool y
-       depends on !MMU
+       def_bool M68KCLASSIC && !MMU
        select CPU_HAS_NO_BITFIELDS
        select CPU_HAS_NO_CAS
        select CPU_HAS_NO_MULDIV64
@@ -56,7 +66,7 @@ config M68000
          a paging MMU.
 
 config M68020
-       bool "68020 support"
+       bool "68020 support" if M68KCLASSIC
        depends on MMU
        select FPU
        select CPU_HAS_ADDRESS_SPACES
@@ -66,9 +76,10 @@ config M68020
          68851 MMU (Memory Management Unit) to run Linux/m68k, except on the
          Sun 3, which provides its own version.
 
+if M68KCLASSIC && MMU
+
 config M68030
        bool "68030 support"
-       depends on MMU && !MMU_SUN3
        select FPU
        select CPU_HAS_ADDRESS_SPACES
        help
@@ -78,7 +89,6 @@ config M68030
 
 config M68040
        bool "68040 support"
-       depends on MMU && !MMU_SUN3
        select FPU
        select CPU_HAS_ADDRESS_SPACES
        help
@@ -89,13 +99,14 @@ config M68040
 
 config M68060
        bool "68060 support"
-       depends on MMU && !MMU_SUN3
        select FPU
        select CPU_HAS_ADDRESS_SPACES
        help
          If you anticipate running this kernel on a computer with a MC68060
          processor, say Y. Otherwise, say N.
 
+endif # M68KCLASSIC
+
 config M68328
        bool
        depends on !MMU
@@ -117,8 +128,6 @@ config M68VZ328
        help
          Motorola 68VZ328 processor support.
 
-endif # M68KCLASSIC
-
 if COLDFIRE
 
 choice
@@ -325,7 +334,7 @@ comment "Processor Specific Options"
 
 config M68KFPU_EMU
        bool "Math emulation support"
-       depends on M68KCLASSIC && FPU
+       depends on (M68KCLASSIC || SUN3) && FPU
        help
          At some point in the future, this will cause floating-point math
          instructions to be emulated by the kernel on machines that lack a
index d06b1c5d9b0c4dbf36c9c5acb0db366841e2c264..de39f23b180ee21d3d3a028ad46f815f3690b1ad 100644 (file)
@@ -6,7 +6,6 @@ if M68KCLASSIC
 config AMIGA
        bool "Amiga support"
        depends on MMU
-       select MMU_MOTOROLA if MMU
        select LEGACY_TIMER_TICK
        help
          This option enables support for the Amiga series of computers. If
@@ -16,7 +15,6 @@ config AMIGA
 config ATARI
        bool "Atari support"
        depends on MMU
-       select MMU_MOTOROLA if MMU
        select HAVE_ARCH_NVRAM_OPS
        select LEGACY_TIMER_TICK
        help
@@ -31,7 +29,6 @@ config ATARI_KBD_CORE
 config MAC
        bool "Macintosh support"
        depends on MMU
-       select MMU_MOTOROLA if MMU
        select HAVE_ARCH_NVRAM_OPS
        select HAVE_PATA_PLATFORM
        select LEGACY_TIMER_TICK
@@ -44,7 +41,6 @@ config MAC
 config APOLLO
        bool "Apollo support"
        depends on MMU
-       select MMU_MOTOROLA if MMU
        select LEGACY_TIMER_TICK
        help
          Say Y here if you want to run Linux on an MC680x0-based Apollo
@@ -53,7 +49,6 @@ config APOLLO
 config VME
        bool "VME (Motorola and BVM) support"
        depends on MMU
-       select MMU_MOTOROLA if MMU
        help
          Say Y here if you want to build a kernel for a 680x0 based VME
          board.  Boards currently supported include Motorola boards MVME147,
@@ -97,7 +92,6 @@ config BVME6000
 config HP300
        bool "HP9000/300 and HP9000/400 support"
        depends on MMU
-       select MMU_MOTOROLA if MMU
        select LEGACY_TIMER_TICK
        help
          This option enables support for the HP9000/300 and HP9000/400 series
@@ -110,7 +104,6 @@ config SUN3X
        bool "Sun3x support"
        depends on MMU
        select LEGACY_TIMER_TICK
-       select MMU_MOTOROLA if MMU
        select M68030
        help
          This option enables support for the Sun 3x series of workstations.
@@ -124,7 +117,6 @@ config SUN3X
 config Q40
        bool "Q40/Q60 support"
        depends on MMU
-       select MMU_MOTOROLA if MMU
        select LEGACY_TIMER_TICK
        help
          The Q40 is a Motorola 68040-based successor to the Sinclair QL
@@ -133,22 +125,6 @@ config Q40
          Q60. Select your CPU below.  For 68LC060 don't forget to enable FPU
          emulation.
 
-config SUN3
-       bool "Sun3 support"
-       depends on MMU
-       depends on !MMU_MOTOROLA
-       select MMU_SUN3 if MMU
-       select LEGACY_TIMER_TICK
-       select NO_DMA
-       select M68020
-       help
-         This option enables support for the Sun 3 series of workstations
-         (3/50, 3/60, 3/1xx, 3/2xx systems). Enabling this option requires
-         that all other hardware types must be disabled, as Sun 3 kernels
-         are incompatible with all other m68k targets (including Sun 3x!).
-
-         If you don't want to compile a kernel exclusively for a Sun 3, say N.
-
 config VIRT
        bool "Virtual M68k Machine support"
        depends on MMU
@@ -157,7 +133,6 @@ config VIRT
        select GOLDFISH_TIMER
        select GOLDFISH_TTY
        select M68040
-       select MMU_MOTOROLA if MMU
        select RTC_CLASS
        select RTC_DRV_GOLDFISH
        select TTY
index f335bf3268a108a45bab079fbf0a1c8ead9beb71..6c732ed3998b714a4842ee29c977550a61979779 100644 (file)
@@ -5,16 +5,8 @@
 
 extra-y                        += vmlinux.lds
 
-obj-$(CONFIG_AMIGA)    := head.o
-obj-$(CONFIG_ATARI)    := head.o
-obj-$(CONFIG_MAC)      := head.o
-obj-$(CONFIG_APOLLO)   := head.o
-obj-$(CONFIG_VME)      := head.o
-obj-$(CONFIG_HP300)    := head.o
-obj-$(CONFIG_Q40)      := head.o
-obj-$(CONFIG_SUN3X)    := head.o
-obj-$(CONFIG_VIRT)     := head.o
-obj-$(CONFIG_SUN3)     := sun3-head.o
+obj-$(CONFIG_MMU_MOTOROLA)     := head.o
+obj-$(CONFIG_SUN3)             := sun3-head.o
 
 obj-y  += entry.o irq.o module.o process.o ptrace.o
 obj-y  += setup.o signal.o sys_m68k.o syscalltable.o time.o traps.o
index a97600b2af5021df6243c6e609b8aa8a0c2ba4e3..acd4c2da562bf0f09b7f2be4bfb0f825a73121ca 100644 (file)
@@ -62,7 +62,7 @@ void timer_heartbeat(void)
 }
 #endif /* CONFIG_HEARTBEAT */
 
-#ifdef CONFIG_M68KCLASSIC
+#if defined(CONFIG_M68KCLASSIC) || defined(CONFIG_SUN3)
 /* machine dependent timer functions */
 int (*mach_hwclk) (int, struct rtc_time*);
 EXPORT_SYMBOL(mach_hwclk);
@@ -149,7 +149,7 @@ static int __init rtc_init(void)
 
 module_init(rtc_init);
 #endif /* CONFIG_RTC_DRV_GENERIC */
-#endif /* CONFIG M68KCLASSIC */
+#endif /* CONFIG_M68KCLASSIC || SUN3 */
 
 void __init time_init(void)
 {