linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] powerpc: populate the default bus with machine_arch_initcall
@ 2016-08-11 11:09 Kevin Hao
  2016-08-11 13:17 ` Rob Herring
  2016-08-12  4:39 ` Michael Ellerman
  0 siblings, 2 replies; 9+ messages in thread
From: Kevin Hao @ 2016-08-11 11:09 UTC (permalink / raw)
  To: linuxppc-dev; +Cc: Michael Ellerman, Kefeng Wang, Rob Herring

With the commit 44a7185c2ae6 ("of/platform: Add common method to
populate default bus"), a default function is introduced to populate
the default bus and this function is invoked at the arch_initcall_sync
level. This will override the arch specific population of default bus
which run at a lower level than arch_initcall_sync. Since not all
powerpc specific buses are added to the of_default_bus_match_table[],
this causes some powerpc specific bus are not probed. Fix this by
using a more preceding initcall.

Signed-off-by: Kevin Hao <haokexin@gmail.com>
---
Of course we can adjust the powerpc arch codes to use the
of_platform_default_populate_init(), but it has high risk to break
other boards given the complicated powerpc specific buses. So I would
like just to fix the broken boards in the current release, and cook 
a patch to change to of_platform_default_populate_init() for linux-next.

Only boot test on a mpc8315erdb board.

 arch/powerpc/platforms/40x/ep405.c               | 2 +-
 arch/powerpc/platforms/40x/ppc40x_simple.c       | 2 +-
 arch/powerpc/platforms/40x/virtex.c              | 2 +-
 arch/powerpc/platforms/40x/walnut.c              | 2 +-
 arch/powerpc/platforms/44x/canyonlands.c         | 2 +-
 arch/powerpc/platforms/44x/ebony.c               | 2 +-
 arch/powerpc/platforms/44x/iss4xx.c              | 2 +-
 arch/powerpc/platforms/44x/ppc44x_simple.c       | 2 +-
 arch/powerpc/platforms/44x/ppc476.c              | 2 +-
 arch/powerpc/platforms/44x/sam440ep.c            | 2 +-
 arch/powerpc/platforms/44x/virtex.c              | 2 +-
 arch/powerpc/platforms/44x/warp.c                | 2 +-
 arch/powerpc/platforms/82xx/ep8248e.c            | 2 +-
 arch/powerpc/platforms/82xx/km82xx.c             | 2 +-
 arch/powerpc/platforms/82xx/mpc8272_ads.c        | 2 +-
 arch/powerpc/platforms/82xx/pq2fads.c            | 2 +-
 arch/powerpc/platforms/83xx/mpc831x_rdb.c        | 2 +-
 arch/powerpc/platforms/83xx/mpc834x_itx.c        | 2 +-
 arch/powerpc/platforms/85xx/ppa8548.c            | 2 +-
 arch/powerpc/platforms/8xx/adder875.c            | 2 +-
 arch/powerpc/platforms/8xx/ep88xc.c              | 2 +-
 arch/powerpc/platforms/8xx/mpc86xads_setup.c     | 2 +-
 arch/powerpc/platforms/8xx/mpc885ads_setup.c     | 2 +-
 arch/powerpc/platforms/8xx/tqm8xx_setup.c        | 2 +-
 arch/powerpc/platforms/cell/setup.c              | 2 +-
 arch/powerpc/platforms/embedded6xx/gamecube.c    | 2 +-
 arch/powerpc/platforms/embedded6xx/linkstation.c | 2 +-
 arch/powerpc/platforms/embedded6xx/mvme5100.c    | 2 +-
 arch/powerpc/platforms/embedded6xx/storcenter.c  | 2 +-
 arch/powerpc/platforms/embedded6xx/wii.c         | 2 +-
 arch/powerpc/platforms/pasemi/setup.c            | 2 +-
 31 files changed, 31 insertions(+), 31 deletions(-)

diff --git a/arch/powerpc/platforms/40x/ep405.c b/arch/powerpc/platforms/40x/ep405.c
index 1c8aec6e9bb7..1328cb38e5d7 100644
--- a/arch/powerpc/platforms/40x/ep405.c
+++ b/arch/powerpc/platforms/40x/ep405.c
@@ -62,7 +62,7 @@ static int __init ep405_device_probe(void)
 
 	return 0;
 }
-machine_device_initcall(ep405, ep405_device_probe);
+machine_arch_initcall(ep405, ep405_device_probe);
 
 static void __init ep405_init_bcsr(void)
 {
diff --git a/arch/powerpc/platforms/40x/ppc40x_simple.c b/arch/powerpc/platforms/40x/ppc40x_simple.c
index 2a050007bbae..50dce54e6b3b 100644
--- a/arch/powerpc/platforms/40x/ppc40x_simple.c
+++ b/arch/powerpc/platforms/40x/ppc40x_simple.c
@@ -39,7 +39,7 @@ static int __init ppc40x_device_probe(void)
 
 	return 0;
 }
-machine_device_initcall(ppc40x_simple, ppc40x_device_probe);
+machine_arch_initcall(ppc40x_simple, ppc40x_device_probe);
 
 /* This is the list of boards that can be supported by this simple
  * platform code.  This does _not_ mean the boards are compatible,
diff --git a/arch/powerpc/platforms/40x/virtex.c b/arch/powerpc/platforms/40x/virtex.c
index 91a08ea758a8..d262696b3cbc 100644
--- a/arch/powerpc/platforms/40x/virtex.c
+++ b/arch/powerpc/platforms/40x/virtex.c
@@ -33,7 +33,7 @@ static int __init virtex_device_probe(void)
 
 	return 0;
 }
-machine_device_initcall(virtex, virtex_device_probe);
+machine_arch_initcall(virtex, virtex_device_probe);
 
 static int __init virtex_probe(void)
 {
diff --git a/arch/powerpc/platforms/40x/walnut.c b/arch/powerpc/platforms/40x/walnut.c
index e5797815e2f1..9a9c0bccba47 100644
--- a/arch/powerpc/platforms/40x/walnut.c
+++ b/arch/powerpc/platforms/40x/walnut.c
@@ -42,7 +42,7 @@ static int __init walnut_device_probe(void)
 
 	return 0;
 }
-machine_device_initcall(walnut, walnut_device_probe);
+machine_arch_initcall(walnut, walnut_device_probe);
 
 static int __init walnut_probe(void)
 {
diff --git a/arch/powerpc/platforms/44x/canyonlands.c b/arch/powerpc/platforms/44x/canyonlands.c
index 157f4ce46386..681fa66ff194 100644
--- a/arch/powerpc/platforms/44x/canyonlands.c
+++ b/arch/powerpc/platforms/44x/canyonlands.c
@@ -47,7 +47,7 @@ static int __init ppc460ex_device_probe(void)
 
 	return 0;
 }
-machine_device_initcall(canyonlands, ppc460ex_device_probe);
+machine_arch_initcall(canyonlands, ppc460ex_device_probe);
 
 /* Using this code only for the Canyonlands board.  */
 
diff --git a/arch/powerpc/platforms/44x/ebony.c b/arch/powerpc/platforms/44x/ebony.c
index 1070225f5f9b..fa3838fd67bc 100644
--- a/arch/powerpc/platforms/44x/ebony.c
+++ b/arch/powerpc/platforms/44x/ebony.c
@@ -42,7 +42,7 @@ static int __init ebony_device_probe(void)
 
 	return 0;
 }
-machine_device_initcall(ebony, ebony_device_probe);
+machine_arch_initcall(ebony, ebony_device_probe);
 
 /*
  * Called very early, MMU is off, device-tree isn't unflattened
diff --git a/arch/powerpc/platforms/44x/iss4xx.c b/arch/powerpc/platforms/44x/iss4xx.c
index 5f296dd6b1c0..39cea8e5a6ab 100644
--- a/arch/powerpc/platforms/44x/iss4xx.c
+++ b/arch/powerpc/platforms/44x/iss4xx.c
@@ -47,7 +47,7 @@ static int __init iss4xx_device_probe(void)
 
 	return 0;
 }
-machine_device_initcall(iss4xx, iss4xx_device_probe);
+machine_arch_initcall(iss4xx, iss4xx_device_probe);
 
 /* We can have either UICs or MPICs */
 static void __init iss4xx_init_irq(void)
diff --git a/arch/powerpc/platforms/44x/ppc44x_simple.c b/arch/powerpc/platforms/44x/ppc44x_simple.c
index 8d6e4da9dfbe..5ea921ae080b 100644
--- a/arch/powerpc/platforms/44x/ppc44x_simple.c
+++ b/arch/powerpc/platforms/44x/ppc44x_simple.c
@@ -38,7 +38,7 @@ static int __init ppc44x_device_probe(void)
 
 	return 0;
 }
-machine_device_initcall(ppc44x_simple, ppc44x_device_probe);
+machine_arch_initcall(ppc44x_simple, ppc44x_device_probe);
 
 /* This is the list of boards that can be supported by this simple
  * platform code.  This does _not_ mean the boards are compatible,
diff --git a/arch/powerpc/platforms/44x/ppc476.c b/arch/powerpc/platforms/44x/ppc476.c
index e55933f9cd55..d19ba31aa442 100644
--- a/arch/powerpc/platforms/44x/ppc476.c
+++ b/arch/powerpc/platforms/44x/ppc476.c
@@ -118,7 +118,7 @@ static int __init ppc47x_device_probe(void)
 
 	return 0;
 }
-machine_device_initcall(ppc47x, ppc47x_device_probe);
+machine_arch_initcall(ppc47x, ppc47x_device_probe);
 
 static void __init ppc47x_init_irq(void)
 {
diff --git a/arch/powerpc/platforms/44x/sam440ep.c b/arch/powerpc/platforms/44x/sam440ep.c
index 688ffeab0699..13014efb1abb 100644
--- a/arch/powerpc/platforms/44x/sam440ep.c
+++ b/arch/powerpc/platforms/44x/sam440ep.c
@@ -42,7 +42,7 @@ static int __init sam440ep_device_probe(void)
 
 	return 0;
 }
-machine_device_initcall(sam440ep, sam440ep_device_probe);
+machine_arch_initcall(sam440ep, sam440ep_device_probe);
 
 static int __init sam440ep_probe(void)
 {
diff --git a/arch/powerpc/platforms/44x/virtex.c b/arch/powerpc/platforms/44x/virtex.c
index a7e08026097a..cbd8d73ae5ba 100644
--- a/arch/powerpc/platforms/44x/virtex.c
+++ b/arch/powerpc/platforms/44x/virtex.c
@@ -39,7 +39,7 @@ static int __init virtex_device_probe(void)
 
 	return 0;
 }
-machine_device_initcall(virtex, virtex_device_probe);
+machine_arch_initcall(virtex, virtex_device_probe);
 
 static int __init virtex_probe(void)
 {
diff --git a/arch/powerpc/platforms/44x/warp.c b/arch/powerpc/platforms/44x/warp.c
index 5ecce543103e..3ea5a5d92a00 100644
--- a/arch/powerpc/platforms/44x/warp.c
+++ b/arch/powerpc/platforms/44x/warp.c
@@ -40,7 +40,7 @@ static int __init warp_device_probe(void)
 	of_platform_bus_probe(NULL, warp_of_bus, NULL);
 	return 0;
 }
-machine_device_initcall(warp, warp_device_probe);
+machine_arch_initcall(warp, warp_device_probe);
 
 static int __init warp_probe(void)
 {
diff --git a/arch/powerpc/platforms/82xx/ep8248e.c b/arch/powerpc/platforms/82xx/ep8248e.c
index cdab847749e6..1394022574c9 100644
--- a/arch/powerpc/platforms/82xx/ep8248e.c
+++ b/arch/powerpc/platforms/82xx/ep8248e.c
@@ -302,7 +302,7 @@ static int __init declare_of_platform_devices(void)
 
 	return 0;
 }
-machine_device_initcall(ep8248e, declare_of_platform_devices);
+machine_arch_initcall(ep8248e, declare_of_platform_devices);
 
 /*
  * Called very early, device-tree isn't unflattened
diff --git a/arch/powerpc/platforms/82xx/km82xx.c b/arch/powerpc/platforms/82xx/km82xx.c
index 28860e40b5db..87925209bf52 100644
--- a/arch/powerpc/platforms/82xx/km82xx.c
+++ b/arch/powerpc/platforms/82xx/km82xx.c
@@ -191,7 +191,7 @@ static int __init declare_of_platform_devices(void)
 
 	return 0;
 }
-machine_device_initcall(km82xx, declare_of_platform_devices);
+machine_arch_initcall(km82xx, declare_of_platform_devices);
 
 /*
  * Called very early, device-tree isn't unflattened
diff --git a/arch/powerpc/platforms/82xx/mpc8272_ads.c b/arch/powerpc/platforms/82xx/mpc8272_ads.c
index d23c10a96bde..518b57dab431 100644
--- a/arch/powerpc/platforms/82xx/mpc8272_ads.c
+++ b/arch/powerpc/platforms/82xx/mpc8272_ads.c
@@ -194,7 +194,7 @@ static int __init declare_of_platform_devices(void)
 	of_platform_bus_probe(NULL, of_bus_ids, NULL);
 	return 0;
 }
-machine_device_initcall(mpc8272_ads, declare_of_platform_devices);
+machine_arch_initcall(mpc8272_ads, declare_of_platform_devices);
 
 /*
  * Called very early, device-tree isn't unflattened
diff --git a/arch/powerpc/platforms/82xx/pq2fads.c b/arch/powerpc/platforms/82xx/pq2fads.c
index 6c654dc74a4b..b22d8bdd6848 100644
--- a/arch/powerpc/platforms/82xx/pq2fads.c
+++ b/arch/powerpc/platforms/82xx/pq2fads.c
@@ -180,7 +180,7 @@ static int __init declare_of_platform_devices(void)
 	of_platform_bus_probe(NULL, of_bus_ids, NULL);
 	return 0;
 }
-machine_device_initcall(pq2fads, declare_of_platform_devices);
+machine_arch_initcall(pq2fads, declare_of_platform_devices);
 
 define_machine(pq2fads)
 {
diff --git a/arch/powerpc/platforms/83xx/mpc831x_rdb.c b/arch/powerpc/platforms/83xx/mpc831x_rdb.c
index 40e0d8307b59..a95bdc1b225e 100644
--- a/arch/powerpc/platforms/83xx/mpc831x_rdb.c
+++ b/arch/powerpc/platforms/83xx/mpc831x_rdb.c
@@ -49,7 +49,7 @@ static int __init mpc831x_rdb_probe(void)
 	return of_device_compatible_match(of_root, board);
 }
 
-machine_device_initcall(mpc831x_rdb, mpc83xx_declare_of_platform_devices);
+machine_arch_initcall(mpc831x_rdb, mpc83xx_declare_of_platform_devices);
 
 define_machine(mpc831x_rdb) {
 	.name			= "MPC831x RDB",
diff --git a/arch/powerpc/platforms/83xx/mpc834x_itx.c b/arch/powerpc/platforms/83xx/mpc834x_itx.c
index 8fd0c1e8b182..f8738d9cd52c 100644
--- a/arch/powerpc/platforms/83xx/mpc834x_itx.c
+++ b/arch/powerpc/platforms/83xx/mpc834x_itx.c
@@ -48,7 +48,7 @@ static int __init mpc834x_itx_declare_of_platform_devices(void)
 	mpc83xx_declare_of_platform_devices();
 	return of_platform_bus_probe(NULL, mpc834x_itx_ids, NULL);
 }
-machine_device_initcall(mpc834x_itx, mpc834x_itx_declare_of_platform_devices);
+machine_arch_initcall(mpc834x_itx, mpc834x_itx_declare_of_platform_devices);
 
 /* ************************************************************************
  *
diff --git a/arch/powerpc/platforms/85xx/ppa8548.c b/arch/powerpc/platforms/85xx/ppa8548.c
index 2410167b290a..0e876090661d 100644
--- a/arch/powerpc/platforms/85xx/ppa8548.c
+++ b/arch/powerpc/platforms/85xx/ppa8548.c
@@ -74,7 +74,7 @@ static int __init declare_of_platform_devices(void)
 
 	return 0;
 }
-machine_device_initcall(ppa8548, declare_of_platform_devices);
+machine_arch_initcall(ppa8548, declare_of_platform_devices);
 
 /*
  * Called very early, device-tree isn't unflattened
diff --git a/arch/powerpc/platforms/8xx/adder875.c b/arch/powerpc/platforms/8xx/adder875.c
index 333dece79394..7b11310f7347 100644
--- a/arch/powerpc/platforms/8xx/adder875.c
+++ b/arch/powerpc/platforms/8xx/adder875.c
@@ -101,7 +101,7 @@ static int __init declare_of_platform_devices(void)
 	of_platform_bus_probe(NULL, of_bus_ids, NULL);
 	return 0;
 }
-machine_device_initcall(adder875, declare_of_platform_devices);
+machine_arch_initcall(adder875, declare_of_platform_devices);
 
 define_machine(adder875) {
 	.name = "Adder MPC875",
diff --git a/arch/powerpc/platforms/8xx/ep88xc.c b/arch/powerpc/platforms/8xx/ep88xc.c
index cd0d90f1fb1c..ebd64df848bf 100644
--- a/arch/powerpc/platforms/8xx/ep88xc.c
+++ b/arch/powerpc/platforms/8xx/ep88xc.c
@@ -160,7 +160,7 @@ static int __init declare_of_platform_devices(void)
 
 	return 0;
 }
-machine_device_initcall(ep88xc, declare_of_platform_devices);
+machine_arch_initcall(ep88xc, declare_of_platform_devices);
 
 define_machine(ep88xc) {
 	.name = "Embedded Planet EP88xC",
diff --git a/arch/powerpc/platforms/8xx/mpc86xads_setup.c b/arch/powerpc/platforms/8xx/mpc86xads_setup.c
index 8d02f5ff4481..5f6a9051a8f7 100644
--- a/arch/powerpc/platforms/8xx/mpc86xads_setup.c
+++ b/arch/powerpc/platforms/8xx/mpc86xads_setup.c
@@ -134,7 +134,7 @@ static int __init declare_of_platform_devices(void)
 
 	return 0;
 }
-machine_device_initcall(mpc86x_ads, declare_of_platform_devices);
+machine_arch_initcall(mpc86x_ads, declare_of_platform_devices);
 
 define_machine(mpc86x_ads) {
 	.name			= "MPC86x ADS",
diff --git a/arch/powerpc/platforms/8xx/mpc885ads_setup.c b/arch/powerpc/platforms/8xx/mpc885ads_setup.c
index e821a42d5816..911b9c3a98f5 100644
--- a/arch/powerpc/platforms/8xx/mpc885ads_setup.c
+++ b/arch/powerpc/platforms/8xx/mpc885ads_setup.c
@@ -210,7 +210,7 @@ static int __init declare_of_platform_devices(void)
 
 	return 0;
 }
-machine_device_initcall(mpc885_ads, declare_of_platform_devices);
+machine_arch_initcall(mpc885_ads, declare_of_platform_devices);
 
 define_machine(mpc885_ads) {
 	.name			= "Freescale MPC885 ADS",
diff --git a/arch/powerpc/platforms/8xx/tqm8xx_setup.c b/arch/powerpc/platforms/8xx/tqm8xx_setup.c
index 4cea8b1afa44..e0c7a45d0eac 100644
--- a/arch/powerpc/platforms/8xx/tqm8xx_setup.c
+++ b/arch/powerpc/platforms/8xx/tqm8xx_setup.c
@@ -136,7 +136,7 @@ static int __init declare_of_platform_devices(void)
 
 	return 0;
 }
-machine_device_initcall(tqm8xx, declare_of_platform_devices);
+machine_arch_initcall(tqm8xx, declare_of_platform_devices);
 
 define_machine(tqm8xx) {
 	.name			= "TQM8xx",
diff --git a/arch/powerpc/platforms/cell/setup.c b/arch/powerpc/platforms/cell/setup.c
index d3543e68efe8..d4809e7a3f2c 100644
--- a/arch/powerpc/platforms/cell/setup.c
+++ b/arch/powerpc/platforms/cell/setup.c
@@ -185,7 +185,7 @@ static int __init cell_publish_devices(void)
 
 	return 0;
 }
-machine_subsys_initcall(cell, cell_publish_devices);
+machine_arch_initcall(cell, cell_publish_devices);
 
 static void __init mpic_init_IRQ(void)
 {
diff --git a/arch/powerpc/platforms/embedded6xx/gamecube.c b/arch/powerpc/platforms/embedded6xx/gamecube.c
index 36789cec957c..a6f937552324 100644
--- a/arch/powerpc/platforms/embedded6xx/gamecube.c
+++ b/arch/powerpc/platforms/embedded6xx/gamecube.c
@@ -97,5 +97,5 @@ static int __init gamecube_device_probe(void)
 	of_platform_bus_probe(NULL, gamecube_of_bus, NULL);
 	return 0;
 }
-device_initcall(gamecube_device_probe);
+arch_initcall(gamecube_device_probe);
 
diff --git a/arch/powerpc/platforms/embedded6xx/linkstation.c b/arch/powerpc/platforms/embedded6xx/linkstation.c
index f29cf29b11f8..01b4566ed2e6 100644
--- a/arch/powerpc/platforms/embedded6xx/linkstation.c
+++ b/arch/powerpc/platforms/embedded6xx/linkstation.c
@@ -32,7 +32,7 @@ static int __init declare_of_platform_devices(void)
 	of_platform_bus_probe(NULL, of_bus_ids, NULL);
 	return 0;
 }
-machine_device_initcall(linkstation, declare_of_platform_devices);
+machine_arch_initcall(linkstation, declare_of_platform_devices);
 
 static int __init linkstation_add_bridge(struct device_node *dev)
 {
diff --git a/arch/powerpc/platforms/embedded6xx/mvme5100.c b/arch/powerpc/platforms/embedded6xx/mvme5100.c
index ed7321d6772e..8b048b708262 100644
--- a/arch/powerpc/platforms/embedded6xx/mvme5100.c
+++ b/arch/powerpc/platforms/embedded6xx/mvme5100.c
@@ -204,7 +204,7 @@ static int __init probe_of_platform_devices(void)
 	return 0;
 }
 
-machine_device_initcall(mvme5100, probe_of_platform_devices);
+machine_arch_initcall(mvme5100, probe_of_platform_devices);
 
 define_machine(mvme5100) {
 	.name			= "MVME5100",
diff --git a/arch/powerpc/platforms/embedded6xx/storcenter.c b/arch/powerpc/platforms/embedded6xx/storcenter.c
index 471a50bcd074..521d8882896c 100644
--- a/arch/powerpc/platforms/embedded6xx/storcenter.c
+++ b/arch/powerpc/platforms/embedded6xx/storcenter.c
@@ -34,7 +34,7 @@ static int __init storcenter_device_probe(void)
 	of_platform_bus_probe(NULL, storcenter_of_bus, NULL);
 	return 0;
 }
-machine_device_initcall(storcenter, storcenter_device_probe);
+machine_arch_initcall(storcenter, storcenter_device_probe);
 
 
 static int __init storcenter_add_bridge(struct device_node *dev)
diff --git a/arch/powerpc/platforms/embedded6xx/wii.c b/arch/powerpc/platforms/embedded6xx/wii.c
index 3fd683e40bc9..7c6eef1b8744 100644
--- a/arch/powerpc/platforms/embedded6xx/wii.c
+++ b/arch/powerpc/platforms/embedded6xx/wii.c
@@ -242,5 +242,5 @@ static int __init wii_device_probe(void)
 	of_platform_bus_probe(NULL, wii_of_bus, NULL);
 	return 0;
 }
-device_initcall(wii_device_probe);
+arch_initcall(wii_device_probe);
 
diff --git a/arch/powerpc/platforms/pasemi/setup.c b/arch/powerpc/platforms/pasemi/setup.c
index e86c1bd08f1f..a69a5c108e67 100644
--- a/arch/powerpc/platforms/pasemi/setup.c
+++ b/arch/powerpc/platforms/pasemi/setup.c
@@ -407,7 +407,7 @@ static int __init pasemi_publish_devices(void)
 
 	return 0;
 }
-machine_device_initcall(pasemi, pasemi_publish_devices);
+machine_arch_initcall(pasemi, pasemi_publish_devices);
 
 
 /*
-- 
2.8.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] powerpc: populate the default bus with machine_arch_initcall
  2016-08-11 11:09 [PATCH] powerpc: populate the default bus with machine_arch_initcall Kevin Hao
@ 2016-08-11 13:17 ` Rob Herring
  2016-08-12  2:32   ` Kevin Hao
  2016-08-12  4:39 ` Michael Ellerman
  1 sibling, 1 reply; 9+ messages in thread
From: Rob Herring @ 2016-08-11 13:17 UTC (permalink / raw)
  To: Kevin Hao; +Cc: linuxppc-dev, Michael Ellerman, Kefeng Wang

On Thu, Aug 11, 2016 at 6:09 AM, Kevin Hao <haokexin@gmail.com> wrote:
> With the commit 44a7185c2ae6 ("of/platform: Add common method to
> populate default bus"), a default function is introduced to populate
> the default bus and this function is invoked at the arch_initcall_sync
> level. This will override the arch specific population of default bus
> which run at a lower level than arch_initcall_sync. Since not all
> powerpc specific buses are added to the of_default_bus_match_table[],
> this causes some powerpc specific bus are not probed. Fix this by
> using a more preceding initcall.
>
> Signed-off-by: Kevin Hao <haokexin@gmail.com>
> ---
> Of course we can adjust the powerpc arch codes to use the
> of_platform_default_populate_init(), but it has high risk to break
> other boards given the complicated powerpc specific buses. So I would
> like just to fix the broken boards in the current release, and cook
> a patch to change to of_platform_default_populate_init() for linux-next.

The patch that broke things was sitting in -next for some time and no
one reported anything. Are all these boards broken?

I'm fine to just disable the default call for PPC instead if there's
some chance this does not fix some boards. There could be some other
initcall ordering dependencies.

>
> Only boot test on a mpc8315erdb board.

Curious, what would it take to remove the of_platform_bus_probe and
use the default here? We can add additional bus compatibles to match.
The difference between of_platform_bus_probe and
of_platform_bus_populate is the former will match root nodes with no
compatible string. Most platforms should not need that behavior and it
would be nice to know which ones.

Rob

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] powerpc: populate the default bus with machine_arch_initcall
  2016-08-11 13:17 ` Rob Herring
@ 2016-08-12  2:32   ` Kevin Hao
  0 siblings, 0 replies; 9+ messages in thread
From: Kevin Hao @ 2016-08-12  2:32 UTC (permalink / raw)
  To: Rob Herring; +Cc: linuxppc-dev, Michael Ellerman, Kefeng Wang

[-- Attachment #1: Type: text/plain, Size: 4073 bytes --]

On Thu, Aug 11, 2016 at 08:17:52AM -0500, Rob Herring wrote:
> On Thu, Aug 11, 2016 at 6:09 AM, Kevin Hao <haokexin@gmail.com> wrote:
> > With the commit 44a7185c2ae6 ("of/platform: Add common method to
> > populate default bus"), a default function is introduced to populate
> > the default bus and this function is invoked at the arch_initcall_sync
> > level. This will override the arch specific population of default bus
> > which run at a lower level than arch_initcall_sync. Since not all
> > powerpc specific buses are added to the of_default_bus_match_table[],
> > this causes some powerpc specific bus are not probed. Fix this by
> > using a more preceding initcall.
> >
> > Signed-off-by: Kevin Hao <haokexin@gmail.com>
> > ---
> > Of course we can adjust the powerpc arch codes to use the
> > of_platform_default_populate_init(), but it has high risk to break
> > other boards given the complicated powerpc specific buses. So I would
> > like just to fix the broken boards in the current release, and cook
> > a patch to change to of_platform_default_populate_init() for linux-next.
> 
> The patch that broke things was sitting in -next for some time and no
> one reported anything. Are all these boards broken?

At least in theory. :-)
The effect may be different due to what devices are missed. For me, the
Gianfar Ethernet on my mpc8315erdb board is malfunction due to the MIDIO bus
is not probed.

> 
> I'm fine to just disable the default call for PPC instead if there's
> some chance this does not fix some boards.

I have tried to cover all the invocation of of_platform_bus_probe() via
machine_device_initcall(). Yes, I maybe missed some boards. But won't
we want to take this as a step to use the default populate function since
it does remove some reduplication codes?

> There could be some other
> initcall ordering dependencies.
> 
> >
> > Only boot test on a mpc8315erdb board.
> 
> Curious, what would it take to remove the of_platform_bus_probe and
> use the default here? We can add additional bus compatibles to match.

I thought about this. But the bus compatibles list seems a bit longer and
it may cause some side effects on some boards due to all these additional
buses. So that changes seem a bit aggressive to me. It does seem a feature
for linux-next. The following is the compatible buses list which are needed
to be added to the default match table if we want fix all the current broken
boards:
	{ .compatible = "fsl,ep8248e-bcsr", },
	{ .compatible = "fsl,pq2pro-localbus", },
	{ .compatible = "fsl,qe", },
	{ .compatible = "fsl,srio", },
	{ .compatible = "gianfar", },
	{ .compatible = "gpio-leds", },
	{ .compatible = "hawk-bridge", },
	{ .compatible = "ibm,ebc", },
	{ .compatible = "ibm,opb", },
	{ .compatible = "ibm,plb3", },
	{ .compatible = "ibm,plb4", },
	{ .compatible = "ibm,plb6", },
	{ .compatible = "nintendo,flipper", },
	{ .compatible = "nintendo,hollywood", },
	{ .compatible = "pasemi,localbus", },
	{ .compatible = "pasemi,sdc", },
	{ .compatible = "soc", },
	{ .compatible = "xlnx,compound", },
	{ .compatible = "xlnx,dcr-v29-1.00.a", },
	{ .compatible = "xlnx,opb-v20-1.10.c", },
	{ .compatible = "xlnx,plb-v34-1.01.a", },
	{ .compatible = "xlnx,plb-v34-1.02.a", },
	{ .compatible = "xlnx,plb-v46-1.00.a", },
	{ .compatible = "xlnx,plb-v46-1.02.a", },
	{ .name = "cpm", },
	{ .name = "localbus", },
	{ .name = "soc", },
	{ .type = "axon", },
	{ .type = "ebc", },
	{ .type = "opb", },
	{ .type = "plb4", },
	{ .type = "plb5", },
	{ .type = "qe", },
	{ .type = "soc", },
	{ .type = "spider", },

Of course I can choose to use the default function if all you guys think it is
better. :-)

> The difference between of_platform_bus_probe and
> of_platform_bus_populate is the former will match root nodes with no
> compatible string. Most platforms should not need that behavior and it
> would be nice to know which ones.

I don't think this difference would cause any real side effect for these boards.

Thanks,
Kevin

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] powerpc: populate the default bus with machine_arch_initcall
  2016-08-11 11:09 [PATCH] powerpc: populate the default bus with machine_arch_initcall Kevin Hao
  2016-08-11 13:17 ` Rob Herring
@ 2016-08-12  4:39 ` Michael Ellerman
  2016-08-12  5:49   ` Kevin Hao
  1 sibling, 1 reply; 9+ messages in thread
From: Michael Ellerman @ 2016-08-12  4:39 UTC (permalink / raw)
  To: Kevin Hao, linuxppc-dev; +Cc: Kefeng Wang, Rob Herring

Kevin Hao <haokexin@gmail.com> writes:

> With the commit 44a7185c2ae6 ("of/platform: Add common method to
> populate default bus"), a default function is introduced to populate
> the default bus and this function is invoked at the arch_initcall_sync
> level. This will override the arch specific population of default bus
> which run at a lower level than arch_initcall_sync. Since not all
> powerpc specific buses are added to the of_default_bus_match_table[],
> this causes some powerpc specific bus are not probed. Fix this by
> using a more preceding initcall.
>
> Signed-off-by: Kevin Hao <haokexin@gmail.com>
> ---
> Of course we can adjust the powerpc arch codes to use the
> of_platform_default_populate_init(), but it has high risk to break
> other boards given the complicated powerpc specific buses. So I would
> like just to fix the broken boards in the current release, and cook 
> a patch to change to of_platform_default_populate_init() for linux-next.
>
> Only boot test on a mpc8315erdb board.
>
>  arch/powerpc/platforms/40x/ep405.c               | 2 +-
>  arch/powerpc/platforms/40x/ppc40x_simple.c       | 2 +-
>  arch/powerpc/platforms/40x/virtex.c              | 2 +-
>  arch/powerpc/platforms/40x/walnut.c              | 2 +-
>  arch/powerpc/platforms/44x/canyonlands.c         | 2 +-
>  arch/powerpc/platforms/44x/ebony.c               | 2 +-
>  arch/powerpc/platforms/44x/iss4xx.c              | 2 +-
>  arch/powerpc/platforms/44x/ppc44x_simple.c       | 2 +-
>  arch/powerpc/platforms/44x/ppc476.c              | 2 +-
>  arch/powerpc/platforms/44x/sam440ep.c            | 2 +-
>  arch/powerpc/platforms/44x/virtex.c              | 2 +-
>  arch/powerpc/platforms/44x/warp.c                | 2 +-
>  arch/powerpc/platforms/82xx/ep8248e.c            | 2 +-
>  arch/powerpc/platforms/82xx/km82xx.c             | 2 +-
>  arch/powerpc/platforms/82xx/mpc8272_ads.c        | 2 +-
>  arch/powerpc/platforms/82xx/pq2fads.c            | 2 +-
>  arch/powerpc/platforms/83xx/mpc831x_rdb.c        | 2 +-
>  arch/powerpc/platforms/83xx/mpc834x_itx.c        | 2 +-
>  arch/powerpc/platforms/85xx/ppa8548.c            | 2 +-
>  arch/powerpc/platforms/8xx/adder875.c            | 2 +-
>  arch/powerpc/platforms/8xx/ep88xc.c              | 2 +-
>  arch/powerpc/platforms/8xx/mpc86xads_setup.c     | 2 +-
>  arch/powerpc/platforms/8xx/mpc885ads_setup.c     | 2 +-
>  arch/powerpc/platforms/8xx/tqm8xx_setup.c        | 2 +-
>  arch/powerpc/platforms/cell/setup.c              | 2 +-
>  arch/powerpc/platforms/embedded6xx/gamecube.c    | 2 +-
>  arch/powerpc/platforms/embedded6xx/linkstation.c | 2 +-
>  arch/powerpc/platforms/embedded6xx/mvme5100.c    | 2 +-
>  arch/powerpc/platforms/embedded6xx/storcenter.c  | 2 +-
>  arch/powerpc/platforms/embedded6xx/wii.c         | 2 +-
>  arch/powerpc/platforms/pasemi/setup.c            | 2 +-

That's not a very minimal fix.

Every one of those initcall changes could be introducing a bug, by
changing the order vs other init calls.

Can we just go back to the old behaviour on ppc?

cheers

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] powerpc: populate the default bus with machine_arch_initcall
  2016-08-12  4:39 ` Michael Ellerman
@ 2016-08-12  5:49   ` Kevin Hao
  2016-08-12 19:30     ` Rob Herring
  0 siblings, 1 reply; 9+ messages in thread
From: Kevin Hao @ 2016-08-12  5:49 UTC (permalink / raw)
  To: Michael Ellerman; +Cc: linuxppc-dev, Kefeng Wang, Rob Herring, devicetree

[-- Attachment #1: Type: text/plain, Size: 5108 bytes --]

On Fri, Aug 12, 2016 at 02:39:32PM +1000, Michael Ellerman wrote:
> Kevin Hao <haokexin@gmail.com> writes:
> 
> > With the commit 44a7185c2ae6 ("of/platform: Add common method to
> > populate default bus"), a default function is introduced to populate
> > the default bus and this function is invoked at the arch_initcall_sync
> > level. This will override the arch specific population of default bus
> > which run at a lower level than arch_initcall_sync. Since not all
> > powerpc specific buses are added to the of_default_bus_match_table[],
> > this causes some powerpc specific bus are not probed. Fix this by
> > using a more preceding initcall.
> >
> > Signed-off-by: Kevin Hao <haokexin@gmail.com>
> > ---
> > Of course we can adjust the powerpc arch codes to use the
> > of_platform_default_populate_init(), but it has high risk to break
> > other boards given the complicated powerpc specific buses. So I would
> > like just to fix the broken boards in the current release, and cook 
> > a patch to change to of_platform_default_populate_init() for linux-next.
> >
> > Only boot test on a mpc8315erdb board.
> >
> >  arch/powerpc/platforms/40x/ep405.c               | 2 +-
> >  arch/powerpc/platforms/40x/ppc40x_simple.c       | 2 +-
> >  arch/powerpc/platforms/40x/virtex.c              | 2 +-
> >  arch/powerpc/platforms/40x/walnut.c              | 2 +-
> >  arch/powerpc/platforms/44x/canyonlands.c         | 2 +-
> >  arch/powerpc/platforms/44x/ebony.c               | 2 +-
> >  arch/powerpc/platforms/44x/iss4xx.c              | 2 +-
> >  arch/powerpc/platforms/44x/ppc44x_simple.c       | 2 +-
> >  arch/powerpc/platforms/44x/ppc476.c              | 2 +-
> >  arch/powerpc/platforms/44x/sam440ep.c            | 2 +-
> >  arch/powerpc/platforms/44x/virtex.c              | 2 +-
> >  arch/powerpc/platforms/44x/warp.c                | 2 +-
> >  arch/powerpc/platforms/82xx/ep8248e.c            | 2 +-
> >  arch/powerpc/platforms/82xx/km82xx.c             | 2 +-
> >  arch/powerpc/platforms/82xx/mpc8272_ads.c        | 2 +-
> >  arch/powerpc/platforms/82xx/pq2fads.c            | 2 +-
> >  arch/powerpc/platforms/83xx/mpc831x_rdb.c        | 2 +-
> >  arch/powerpc/platforms/83xx/mpc834x_itx.c        | 2 +-
> >  arch/powerpc/platforms/85xx/ppa8548.c            | 2 +-
> >  arch/powerpc/platforms/8xx/adder875.c            | 2 +-
> >  arch/powerpc/platforms/8xx/ep88xc.c              | 2 +-
> >  arch/powerpc/platforms/8xx/mpc86xads_setup.c     | 2 +-
> >  arch/powerpc/platforms/8xx/mpc885ads_setup.c     | 2 +-
> >  arch/powerpc/platforms/8xx/tqm8xx_setup.c        | 2 +-
> >  arch/powerpc/platforms/cell/setup.c              | 2 +-
> >  arch/powerpc/platforms/embedded6xx/gamecube.c    | 2 +-
> >  arch/powerpc/platforms/embedded6xx/linkstation.c | 2 +-
> >  arch/powerpc/platforms/embedded6xx/mvme5100.c    | 2 +-
> >  arch/powerpc/platforms/embedded6xx/storcenter.c  | 2 +-
> >  arch/powerpc/platforms/embedded6xx/wii.c         | 2 +-
> >  arch/powerpc/platforms/pasemi/setup.c            | 2 +-
> 
> That's not a very minimal fix.
> 
> Every one of those initcall changes could be introducing a bug, by
> changing the order vs other init calls.
> 
> Can we just go back to the old behaviour on ppc?

Sure. How about this one?

From 4362b4cdd8a6198df4cc46c628473f0d44e03fa8 Mon Sep 17 00:00:00 2001
From: Kevin Hao <haokexin@gmail.com>
Date: Fri, 12 Aug 2016 13:30:03 +0800
Subject: [PATCH v2] of/platform: disable the
 of_platform_default_populate_init() for all the ppc boards

With the commit 44a7185c2ae6 ("of/platform: Add common method to
populate default bus"), a default function is introduced to populate
the default bus and this function is invoked at the arch_initcall_sync
level. But a lot of ppc boards use machine_device_initcall() to
populate the default bus. This means that the default populate function
has higher priority and would override the arch specific population of
the bus. The side effect is that some arch specific bus are not probed,
then cause various malfunction due to the miss of some devices. Since
it is very possible to introduce bugs if we simply change the initcall
level for all these boards(about 30+). This just disable this default
function for all the ppc boards.

Signed-off-by: Kevin Hao <haokexin@gmail.com>
---
 drivers/of/platform.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/of/platform.c b/drivers/of/platform.c
index 8aa197691074..f39ccd5aa701 100644
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -497,6 +497,7 @@ int of_platform_default_populate(struct device_node *root,
 }
 EXPORT_SYMBOL_GPL(of_platform_default_populate);
 
+#ifndef CONFIG_PPC
 static int __init of_platform_default_populate_init(void)
 {
 	struct device_node *node;
@@ -521,6 +522,7 @@ static int __init of_platform_default_populate_init(void)
 	return 0;
 }
 arch_initcall_sync(of_platform_default_populate_init);
+#endif
 
 static int of_platform_device_destroy(struct device *dev, void *data)
 {
-- 
2.8.1

Thanks,
Kevin

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] powerpc: populate the default bus with machine_arch_initcall
  2016-08-12  5:49   ` Kevin Hao
@ 2016-08-12 19:30     ` Rob Herring
  2016-08-14 21:21       ` Benjamin Herrenschmidt
  0 siblings, 1 reply; 9+ messages in thread
From: Rob Herring @ 2016-08-12 19:30 UTC (permalink / raw)
  To: Kevin Hao
  Cc: Michael Ellerman, linuxppc-dev, Kefeng Wang,
	devicetree@vger.kernel.org

On Fri, Aug 12, 2016 at 12:49 AM, Kevin Hao <haokexin@gmail.com> wrote:
> On Fri, Aug 12, 2016 at 02:39:32PM +1000, Michael Ellerman wrote:
>> Kevin Hao <haokexin@gmail.com> writes:

[...]

>> Every one of those initcall changes could be introducing a bug, by
>> changing the order vs other init calls.
>>
>> Can we just go back to the old behaviour on ppc?
>
> Sure. How about this one?
>
> From 4362b4cdd8a6198df4cc46c628473f0d44e03fa8 Mon Sep 17 00:00:00 2001
> From: Kevin Hao <haokexin@gmail.com>
> Date: Fri, 12 Aug 2016 13:30:03 +0800
> Subject: [PATCH v2] of/platform: disable the
>  of_platform_default_populate_init() for all the ppc boards
>
> With the commit 44a7185c2ae6 ("of/platform: Add common method to
> populate default bus"), a default function is introduced to populate
> the default bus and this function is invoked at the arch_initcall_sync
> level. But a lot of ppc boards use machine_device_initcall() to
> populate the default bus. This means that the default populate function
> has higher priority and would override the arch specific population of
> the bus. The side effect is that some arch specific bus are not probed,
> then cause various malfunction due to the miss of some devices. Since
> it is very possible to introduce bugs if we simply change the initcall
> level for all these boards(about 30+). This just disable this default
> function for all the ppc boards.
>
> Signed-off-by: Kevin Hao <haokexin@gmail.com>
> ---
>  drivers/of/platform.c | 2 ++
>  1 file changed, 2 insertions(+)

I've applied this one.

Rob

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] powerpc: populate the default bus with machine_arch_initcall
  2016-08-12 19:30     ` Rob Herring
@ 2016-08-14 21:21       ` Benjamin Herrenschmidt
  2016-08-14 22:42         ` Rob Herring
  0 siblings, 1 reply; 9+ messages in thread
From: Benjamin Herrenschmidt @ 2016-08-14 21:21 UTC (permalink / raw)
  To: Rob Herring, Kevin Hao
  Cc: Kefeng Wang, linuxppc-dev, devicetree@vger.kernel.org

On Fri, 2016-08-12 at 14:30 -0500, Rob Herring wrote:
> 
> > With the commit 44a7185c2ae6 ("of/platform: Add common method to
> > populate default bus"), a default function is introduced to
> > populate
> > the default bus and this function is invoked at the
> > arch_initcall_sync
> > level. But a lot of ppc boards use machine_device_initcall() to
> > populate the default bus. This means that the default populate
> > function
> > has higher priority and would override the arch specific population
> > of
> > the bus. The side effect is that some arch specific bus are not
> > probed,
> > then cause various malfunction due to the miss of some devices.
> > Since
> > it is very possible to introduce bugs if we simply change the
> > initcall
> > level for all these boards(about 30+). This just disable this
> > default
> > function for all the ppc boards.
> > 
> > Signed-off-by: Kevin Hao <haokexin@gmail.com>
> > ---
> >  drivers/of/platform.c | 2 ++
> >  1 file changed, 2 insertions(+)
> 
> I've applied this one.

Not fan of the hard #ifdef at all... it will make it hard to convert
platforms one by one. Why not an arch_want_default_of_probe() or
something like this which we can then plumb into ppc_md. ?

Cheers,
Ben.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] powerpc: populate the default bus with machine_arch_initcall
  2016-08-14 21:21       ` Benjamin Herrenschmidt
@ 2016-08-14 22:42         ` Rob Herring
  2016-08-14 23:54           ` Benjamin Herrenschmidt
  0 siblings, 1 reply; 9+ messages in thread
From: Rob Herring @ 2016-08-14 22:42 UTC (permalink / raw)
  To: Benjamin Herrenschmidt
  Cc: Kevin Hao, Kefeng Wang, linuxppc-dev, devicetree@vger.kernel.org

On Sun, Aug 14, 2016 at 4:21 PM, Benjamin Herrenschmidt
<benh@kernel.crashing.org> wrote:
> On Fri, 2016-08-12 at 14:30 -0500, Rob Herring wrote:
>>
>> > With the commit 44a7185c2ae6 ("of/platform: Add common method to
>> > populate default bus"), a default function is introduced to
>> > populate
>> > the default bus and this function is invoked at the
>> > arch_initcall_sync
>> > level. But a lot of ppc boards use machine_device_initcall() to
>> > populate the default bus. This means that the default populate
>> > function
>> > has higher priority and would override the arch specific population
>> > of
>> > the bus. The side effect is that some arch specific bus are not
>> > probed,
>> > then cause various malfunction due to the miss of some devices.
>> > Since
>> > it is very possible to introduce bugs if we simply change the
>> > initcall
>> > level for all these boards(about 30+). This just disable this
>> > default
>> > function for all the ppc boards.
>> >
>> > Signed-off-by: Kevin Hao <haokexin@gmail.com>
>> > ---
>> >  drivers/of/platform.c | 2 ++
>> >  1 file changed, 2 insertions(+)
>>
>> I've applied this one.
>
> Not fan of the hard #ifdef at all... it will make it hard to convert
> platforms one by one. Why not an arch_want_default_of_probe() or
> something like this which we can then plumb into ppc_md. ?

Yeah, I'm not either really. I didn't propose using IS_ENABLED here
either as it does add a needless initcall.

Do you have any idea which platforms are not broken and could be
switched over now. If not, I think we should just leave as is for 4.8
and make it per platform selectable for 4.9.

Rob

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] powerpc: populate the default bus with machine_arch_initcall
  2016-08-14 22:42         ` Rob Herring
@ 2016-08-14 23:54           ` Benjamin Herrenschmidt
  0 siblings, 0 replies; 9+ messages in thread
From: Benjamin Herrenschmidt @ 2016-08-14 23:54 UTC (permalink / raw)
  To: Rob Herring
  Cc: Kevin Hao, Kefeng Wang, linuxppc-dev, devicetree@vger.kernel.org

On Sun, 2016-08-14 at 17:42 -0500, Rob Herring wrote:
> > Not fan of the hard #ifdef at all... it will make it hard to
> convert
> > platforms one by one. Why not an arch_want_default_of_probe() or
> > something like this which we can then plumb into ppc_md. ?
> 
> Yeah, I'm not either really. I didn't propose using IS_ENABLED here
> either as it does add a needless initcall.
> 
> Do you have any idea which platforms are not broken and could be
> switched over now. If not, I think we should just leave as is for 4.8
> and make it per platform selectable for 4.9.

Not really... the non-embedded platforms (mac, pseries, etc...) don't
really use the OF bus probing iirc, so it's going to be a matter of
scrubbing the embedded ones. I agree we can do that in 4.9

Cheers,
Ben.

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-08-14 23:55 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-11 11:09 [PATCH] powerpc: populate the default bus with machine_arch_initcall Kevin Hao
2016-08-11 13:17 ` Rob Herring
2016-08-12  2:32   ` Kevin Hao
2016-08-12  4:39 ` Michael Ellerman
2016-08-12  5:49   ` Kevin Hao
2016-08-12 19:30     ` Rob Herring
2016-08-14 21:21       ` Benjamin Herrenschmidt
2016-08-14 22:42         ` Rob Herring
2016-08-14 23:54           ` Benjamin Herrenschmidt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).