Most probe functions do nothing else than checking whether
the machine is compatible to a given string.

Define that string in ppc_md structure and check it directly from
probe_machine() instead of using ppc_md.probe() for that.

Keep checking in ppc_md.probe() only for more complex probing.

Signed-off-by: Christophe Leroy <christophe.le...@csgroup.eu>
---
v3: New
---
 arch/powerpc/include/asm/machdep.h |  1 +
 arch/powerpc/kernel/setup-common.c | 13 +++++++------
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/arch/powerpc/include/asm/machdep.h 
b/arch/powerpc/include/asm/machdep.h
index 378b8d5836a7..c5dfe5ff923c 100644
--- a/arch/powerpc/include/asm/machdep.h
+++ b/arch/powerpc/include/asm/machdep.h
@@ -20,6 +20,7 @@ struct pci_host_bridge;
 
 struct machdep_calls {
        char            *name;
+       char            *compatible;
 #ifdef CONFIG_PPC64
 #ifdef CONFIG_PM
        void            (*iommu_restore)(void);
diff --git a/arch/powerpc/kernel/setup-common.c 
b/arch/powerpc/kernel/setup-common.c
index 9b10e57040c6..d1e205fe72ba 100644
--- a/arch/powerpc/kernel/setup-common.c
+++ b/arch/powerpc/kernel/setup-common.c
@@ -626,13 +626,14 @@ static __init void probe_machine(void)
        for (machine_id = &__machine_desc_start;
             machine_id < &__machine_desc_end;
             machine_id++) {
-               DBG("  %s ...", machine_id->name);
+               DBG("  %s ...\n", machine_id->name);
+               if (machine_id->compatible && 
!of_machine_is_compatible(machine_id->compatible))
+                       continue;
                memcpy(&ppc_md, machine_id, sizeof(struct machdep_calls));
-               if (ppc_md.probe()) {
-                       DBG(" match !\n");
-                       break;
-               }
-               DBG("\n");
+               if (ppc_md.probe && !ppc_md.probe())
+                       continue;
+               DBG("   %s match !\n", machine_id->name);
+               break;
        }
        /* What can we do if we didn't find ? */
        if (machine_id >= &__machine_desc_end) {
-- 
2.39.1

Reply via email to