Although these work arounds aren't guarded by PPC_CHRP, they should only ever have taken effect on CHRP Long Trail machines due to the firmware version check. With CHRP support removed they are no longer needed, remove them.
Signed-off-by: Michael Ellerman <m...@ellerman.id.au> --- arch/powerpc/kernel/prom_init.c | 62 +++------------------------------ 1 file changed, 5 insertions(+), 57 deletions(-) diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c index 94ffc52440bd..1485494cfc38 100644 --- a/arch/powerpc/kernel/prom_init.c +++ b/arch/powerpc/kernel/prom_init.c @@ -94,7 +94,6 @@ static int of_workarounds __prombss; #endif #define OF_WA_CLAIM 1 /* do phys/virt claim separately, then map */ -#define OF_WA_LONGTRAIL 2 /* work around longtrail bugs */ #ifdef DEBUG_PROM #define prom_debug(x...) prom_printf(x) @@ -267,6 +266,7 @@ static ssize_t __init prom_strscpy_pad(char *dest, const char *src, size_t n) return rc; } +#ifdef CONFIG_PPC64 static int __init prom_strncmp(const char *cs, const char *ct, size_t count) { unsigned char c1, c2; @@ -282,6 +282,7 @@ static int __init prom_strncmp(const char *cs, const char *ct, size_t count) } return 0; } +#endif static size_t __init prom_strlen(const char *s) { @@ -668,52 +669,11 @@ static inline int __init prom_getproplen(phandle node, const char *pname) return call_prom("getproplen", 2, 1, node, ADDR(pname)); } -static void __init add_string(char **str, const char *q) -{ - char *p = *str; - - while (*q) - *p++ = *q++; - *p++ = ' '; - *str = p; -} - -static char *__init tohex(unsigned int x) -{ - static const char digits[] __initconst = "0123456789abcdef"; - static char result[9] __prombss; - int i; - - result[8] = 0; - i = 8; - do { - --i; - result[i] = digits[x & 0xf]; - x >>= 4; - } while (x != 0 && i > 0); - return &result[i]; -} - static int __init prom_setprop(phandle node, const char *nodename, const char *pname, void *value, size_t valuelen) { - char cmd[256], *p; - - if (!(OF_WORKAROUNDS & OF_WA_LONGTRAIL)) - return call_prom("setprop", 4, 1, node, ADDR(pname), - (u32)(unsigned long) value, (u32) valuelen); - - /* gah... setprop doesn't work on longtrail, have to use interpret */ - p = cmd; - add_string(&p, "dev"); - add_string(&p, nodename); - add_string(&p, tohex((u32)(unsigned long) value)); - add_string(&p, tohex(valuelen)); - add_string(&p, tohex(ADDR(pname))); - add_string(&p, tohex(prom_strlen(pname))); - add_string(&p, "property"); - *p = 0; - return call_prom("interpret", 1, 1, (u32)(unsigned long) cmd); + return call_prom("setprop", 4, 1, node, ADDR(pname), + (u32)(unsigned long) value, (u32) valuelen); } /* We can't use the standard versions because of relocation headaches. */ @@ -1678,14 +1638,6 @@ static void __init prom_init_mem(void) for (node = 0; prom_next_node(&node); ) { type[0] = 0; prom_getprop(node, "device_type", type, sizeof(type)); - - if (type[0] == 0) { - /* - * CHRP Longtrail machines have no device_type - * on the memory node, so check the name instead... - */ - prom_getprop(node, "name", type, sizeof(type)); - } if (prom_strcmp(type, "memory")) continue; @@ -2238,7 +2190,6 @@ static void __init prom_init_client_services(unsigned long pp) /* * For really old powermacs, we need to map things we claim. * For that, we need the ihandle of the mmu. - * Also, on the longtrail, we need to work around other bugs. */ static void __init prom_find_mmu(void) { @@ -2254,10 +2205,7 @@ static void __init prom_find_mmu(void) /* XXX might need to add other versions here */ if (prom_strcmp(version, "Open Firmware, 1.0.5") == 0) of_workarounds = OF_WA_CLAIM; - else if (prom_strncmp(version, "FirmWorks,3.", 12) == 0) { - of_workarounds = OF_WA_CLAIM | OF_WA_LONGTRAIL; - call_prom("interpret", 1, 1, "dev /memory 0 to allow-reclaim"); - } else + else return; prom.memory = call_prom("open", 1, 1, ADDR("/memory")); prom_getprop(prom.chosen, "mmu", &prom.mmumap, -- 2.47.0