Skip to contentSkip to conversation

arm: boot: ep93xx: don't rely on machine_is_*() for removed board files

PATCH In review Ethan Nelson-Moore 2 participants 4 messages May 9 – May 10

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 arm: boot: ep93xx: don't rely on machine_is_*() for removed board files

Code in misc-ep93xx.h relies on machine_is_*() macros for several boards that no longer have legacy board files. They were removed in commit e5ef574dda70 ("ARM: ep93xx: delete all boardfiles"). This prevents the removal of machine IDs no longer used by the kernel from mach-types. To resolve this issue, create local copies of these macros. (The checks themselves are still valid because the IDs are still passed in by the bootloader on these machines.) Also take the opportunity to remove three repeated checks for the same ID.

---
 arch/arm/boot/compressed/misc-ep93xx.h | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)
arch/arm/boot/compressed/misc-ep93xx.h +16 -4
index 65b4121d1490..b0a1b42aab31 100644
@@ -3,7 +3,22 @@
  * Copyright (C) 2006 Lennert Buytenhek <[email protected]>
  */
 
-#include <asm/mach-types.h>
+/*
+ * These machine IDs are no longer used by the kernel since EP93xx was converted
+ * to DT booting, but they are still passed in by bootloaders, so we use our own
+ * local definitions of the relevant macros.
+ */
+#define machine_is_bk3()		(__machine_arch_type == 1880)
+#define machine_is_edb9301()		(__machine_arch_type == 462)
+#define machine_is_edb9302a()		(__machine_arch_type == 1127)
+#define machine_is_edb9302()		(__machine_arch_type == 538)
+#define machine_is_edb9307a()		(__machine_arch_type == 1128)
+#define machine_is_edb9307()		(__machine_arch_type == 607)
+#define machine_is_edb9312()		(__machine_arch_type == 451)
+#define machine_is_edb9315a()		(__machine_arch_type == 772)
+#define machine_is_edb9315()		(__machine_arch_type == 463)
+#define machine_is_ts72xx()		(__machine_arch_type == 673)
+#define machine_is_vision_ep9307()	(__machine_arch_type == 1578)
 
 static inline unsigned int __raw_readl(unsigned int ptr)
 {
@@ -60,14 +75,11 @@ static inline void ep93xx_decomp_setup(void)
 	if (machine_is_edb9301() ||
 	    machine_is_edb9302() ||
 	    machine_is_edb9302a() ||
-	    machine_is_edb9302a() ||
 	    machine_is_edb9307() ||
 	    machine_is_edb9307a() ||
-	    machine_is_edb9307a() ||
 	    machine_is_edb9312() ||
 	    machine_is_edb9315() ||
 	    machine_is_edb9315a() ||
-	    machine_is_edb9315a() ||
 	    machine_is_ts72xx() ||
 	    machine_is_bk3() ||
 	    machine_is_vision_ep9307())
Signature · 1 line
2.43.0
#1 lore raw

Hi Ethan,

Quoted 8 lines · Ethan Nelson-Moore

Code in misc-ep93xx.h relies on machine_is_*() macros for several boards that no longer have legacy board files. They were removed in commit e5ef574dda70 ("ARM: ep93xx: delete all boardfiles"). This prevents the removal of machine IDs no longer used by the kernel from mach-types. To resolve this issue, create local copies of these macros. (The checks themselves are still valid because the IDs are still passed in by the bootloader on these machines.) Also take the opportunity to remove three repeated checks for the same ID.

I most probably miss something, but what is the reason for removing the machine IDs from the mach-types, especially if they are still used by the kernel (though only in its decompressor code)?

Quoted 48 lines

---
 arch/arm/boot/compressed/misc-ep93xx.h | 20 ++++++++++++++++----

 1 file changed, 16 insertions(+), 4 deletions(-)
arch/arm/boot/compressed/misc-ep93xx.h +0 -0
index 65b4121d1490..b0a1b42aab31 100644
@@ -3,7 +3,22 @@
   * Copyright (C) 2006 Lennert Buytenhek <[email protected]>
   */

arch/arm/boot/compressed/misc-ep93xx.h +16 -1
-#include <asm/mach-types.h>
+/*
+ * These machine IDs are no longer used by the kernel since EP93xx was converted
+ * to DT booting, but they are still passed in by bootloaders, so we use our own
+ * local definitions of the relevant macros.
+ */
+#define machine_is_bk3()		(__machine_arch_type == 1880)
+#define machine_is_edb9301()		(__machine_arch_type == 462)
+#define machine_is_edb9302a()		(__machine_arch_type == 1127)
+#define machine_is_edb9302()		(__machine_arch_type == 538)
+#define machine_is_edb9307a()		(__machine_arch_type == 1128)
+#define machine_is_edb9307()		(__machine_arch_type == 607)
+#define machine_is_edb9312()		(__machine_arch_type == 451)
+#define machine_is_edb9315a()		(__machine_arch_type == 772)
+#define machine_is_edb9315()		(__machine_arch_type == 463)
+#define machine_is_ts72xx()		(__machine_arch_type == 673)
+#define machine_is_vision_ep9307()	(__machine_arch_type == 1578)


 static inline unsigned int __raw_readl(unsigned int ptr) {

arch/arm/boot/compressed/misc-ep93xx.h +0 -0
@@ -60,14 +75,11 @@ static inline void ep93xx_decomp_setup(void)

  if (machine_is_edb9301() ||
      machine_is_edb9302() ||
      machine_is_edb9302a() ||

arch/arm/boot/compressed/misc-ep93xx.h +0 -1
-	    machine_is_edb9302a() ||

      machine_is_edb9307() ||
      machine_is_edb9307a() ||

arch/arm/boot/compressed/misc-ep93xx.h +0 -1
-	    machine_is_edb9307a() ||
 	    machine_is_edb9312() ||
 	    machine_is_edb9315() ||
 	    machine_is_edb9315a() ||
arch/arm/boot/compressed/misc-ep93xx.h +0 -1
-	    machine_is_edb9315a() ||

      machine_is_ts72xx() ||
      machine_is_bk3() ||
      machine_is_vision_ep9307())

Signature · 1 line
Alexander Sverdlin.
#2 lore raw
Quoted 3 lines · Alexander Sverdlin

I most probably miss something, but what is the reason for removing the machine IDs from the mach-types, especially if they are still used by the kernel (though only in its decompressor code)?

Hi, Alexander,

My plan after all my related patches are merged is to remove all entries for legacy board files that are not used by the kernel (i.e.:
boards that were removed, never in mainline, or converted to DT booting). This would reduce mach-types from 579 to 28 entries and would allow it to be used as a list of non-DT boards remaining in the kernel. The last time mach-types was similarly filtered was in 2016.

Ethan

maintainer Acked-by on v1 1/1
#3 lore raw
In reply to Ethan Nelson-Moore

Hi Ethan,

Quoted 10 lines · Ethan Nelson-Moore

Code in misc-ep93xx.h relies on machine_is_*() macros for several boards that no longer have legacy board files. They were removed in commit e5ef574dda70 ("ARM: ep93xx: delete all boardfiles"). This prevents the removal of machine IDs no longer used by the kernel from mach-types. To resolve this issue, create local copies of these macros. (The checks themselves are still valid because the IDs are still passed in by the bootloader on these machines.) Also take the opportunity to remove three repeated checks for the same ID.

I'll pick the patch and send it to Arnd if there will be no objection during this week.

Quoted 47 lines

---
 arch/arm/boot/compressed/misc-ep93xx.h | 20 ++++++++++++++++----

 1 file changed, 16 insertions(+), 4 deletions(-)
arch/arm/boot/compressed/misc-ep93xx.h +0 -0
index 65b4121d1490..b0a1b42aab31 100644
@@ -3,7 +3,22 @@
   * Copyright (C) 2006 Lennert Buytenhek <[email protected]>
   */

arch/arm/boot/compressed/misc-ep93xx.h +16 -1
-#include <asm/mach-types.h>
+/*
+ * These machine IDs are no longer used by the kernel since EP93xx was converted
+ * to DT booting, but they are still passed in by bootloaders, so we use our own
+ * local definitions of the relevant macros.
+ */
+#define machine_is_bk3()		(__machine_arch_type == 1880)
+#define machine_is_edb9301()		(__machine_arch_type == 462)
+#define machine_is_edb9302a()		(__machine_arch_type == 1127)
+#define machine_is_edb9302()		(__machine_arch_type == 538)
+#define machine_is_edb9307a()		(__machine_arch_type == 1128)
+#define machine_is_edb9307()		(__machine_arch_type == 607)
+#define machine_is_edb9312()		(__machine_arch_type == 451)
+#define machine_is_edb9315a()		(__machine_arch_type == 772)
+#define machine_is_edb9315()		(__machine_arch_type == 463)
+#define machine_is_ts72xx()		(__machine_arch_type == 673)
+#define machine_is_vision_ep9307()	(__machine_arch_type == 1578)


 static inline unsigned int __raw_readl(unsigned int ptr) {

arch/arm/boot/compressed/misc-ep93xx.h +0 -0
@@ -60,14 +75,11 @@ static inline void ep93xx_decomp_setup(void)

  if (machine_is_edb9301() ||
      machine_is_edb9302() ||
      machine_is_edb9302a() ||

arch/arm/boot/compressed/misc-ep93xx.h +0 -1
-	    machine_is_edb9302a() ||

      machine_is_edb9307() ||
      machine_is_edb9307a() ||

arch/arm/boot/compressed/misc-ep93xx.h +0 -1
-	    machine_is_edb9307a() ||
 	    machine_is_edb9312() ||
 	    machine_is_edb9315() ||
 	    machine_is_edb9315a() ||
arch/arm/boot/compressed/misc-ep93xx.h +0 -1
-	    machine_is_edb9315a() ||

      machine_is_ts72xx() ||
      machine_is_bk3() ||
      machine_is_vision_ep9307())

Signature · 1 line
Alexander Sverdlin.