Re: [PATCH 14/36] powerpc/pseries: move to use bus_get_dev_root()

2023-03-14 Thread Michael Ellerman
Greg Kroah-Hartman  writes:
> Direct access to the struct bus_type dev_root pointer is going away soon
> so replace that with a call to bus_get_dev_root() instead, which is what
> it is there for.
>
> Cc: Michael Ellerman 
> Cc: Nicholas Piggin 
> Cc: Christophe Leroy 
> Cc: Greg Kroah-Hartman 
> Cc: linuxppc-dev@lists.ozlabs.org
> Signed-off-by: Greg Kroah-Hartman 
> ---
> Note, this is a patch that is a prepatory cleanup as part of a larger
> series of patches that is working on resolving some old driver core
> design mistakes.  It will build and apply cleanly on top of 6.3-rc2 on
> its own, but I'd prefer if I could take it through my driver-core tree
> so that the driver core changes can be taken through there for 6.4-rc1.
>
>  .../platforms/pseries/pseries_energy.c| 28 +++
>  arch/powerpc/platforms/pseries/suspend.c  | 10 +--
>  2 files changed, 25 insertions(+), 13 deletions(-)

Acked-by: Michael Ellerman  (powerpc)

The other powerpc changes look OK too.

cheers


[PATCH 14/36] powerpc/pseries: move to use bus_get_dev_root()

2023-03-13 Thread Greg Kroah-Hartman
Direct access to the struct bus_type dev_root pointer is going away soon
so replace that with a call to bus_get_dev_root() instead, which is what
it is there for.

Cc: Michael Ellerman 
Cc: Nicholas Piggin 
Cc: Christophe Leroy 
Cc: Greg Kroah-Hartman 
Cc: linuxppc-dev@lists.ozlabs.org
Signed-off-by: Greg Kroah-Hartman 
---
Note, this is a patch that is a prepatory cleanup as part of a larger
series of patches that is working on resolving some old driver core
design mistakes.  It will build and apply cleanly on top of 6.3-rc2 on
its own, but I'd prefer if I could take it through my driver-core tree
so that the driver core changes can be taken through there for 6.4-rc1.

 .../platforms/pseries/pseries_energy.c| 28 +++
 arch/powerpc/platforms/pseries/suspend.c  | 10 +--
 2 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/arch/powerpc/platforms/pseries/pseries_energy.c 
b/arch/powerpc/platforms/pseries/pseries_energy.c
index 09e98d301db0..2c661b798235 100644
--- a/arch/powerpc/platforms/pseries/pseries_energy.c
+++ b/arch/powerpc/platforms/pseries/pseries_energy.c
@@ -300,20 +300,22 @@ static struct device_attribute 
attr_percpu_deactivate_hint =
 static int __init pseries_energy_init(void)
 {
int cpu, err;
-   struct device *cpu_dev;
+   struct device *cpu_dev, *dev_root;
 
if (!firmware_has_feature(FW_FEATURE_BEST_ENERGY))
return 0; /* H_BEST_ENERGY hcall not supported */
 
/* Create the sysfs files */
-   err = device_create_file(cpu_subsys.dev_root,
-   _cpu_activate_hint_list);
-   if (!err)
-   err = device_create_file(cpu_subsys.dev_root,
-   _cpu_deactivate_hint_list);
+   dev_root = bus_get_dev_root(_subsys);
+   if (dev_root) {
+   err = device_create_file(dev_root, 
_cpu_activate_hint_list);
+   if (!err)
+   err = device_create_file(dev_root, 
_cpu_deactivate_hint_list);
+   put_device(dev_root);
+   if (err)
+   return err;
+   }
 
-   if (err)
-   return err;
for_each_possible_cpu(cpu) {
cpu_dev = get_cpu_device(cpu);
err = device_create_file(cpu_dev,
@@ -337,14 +339,18 @@ static int __init pseries_energy_init(void)
 static void __exit pseries_energy_cleanup(void)
 {
int cpu;
-   struct device *cpu_dev;
+   struct device *cpu_dev, *dev_root;
 
if (!sysfs_entries)
return;
 
/* Remove the sysfs files */
-   device_remove_file(cpu_subsys.dev_root, _cpu_activate_hint_list);
-   device_remove_file(cpu_subsys.dev_root, _cpu_deactivate_hint_list);
+   dev_root = bus_get_dev_root(_subsys);
+   if (dev_root) {
+   device_remove_file(dev_root, _cpu_activate_hint_list);
+   device_remove_file(dev_root, _cpu_deactivate_hint_list);
+   put_device(dev_root);
+   }
 
for_each_possible_cpu(cpu) {
cpu_dev = get_cpu_device(cpu);
diff --git a/arch/powerpc/platforms/pseries/suspend.c 
b/arch/powerpc/platforms/pseries/suspend.c
index 1b902cbf85c5..5c43435472cc 100644
--- a/arch/powerpc/platforms/pseries/suspend.c
+++ b/arch/powerpc/platforms/pseries/suspend.c
@@ -143,6 +143,7 @@ static const struct platform_suspend_ops 
pseries_suspend_ops = {
  **/
 static int pseries_suspend_sysfs_register(struct device *dev)
 {
+   struct device *dev_root;
int rc;
 
if ((rc = subsys_system_register(_subsys, NULL)))
@@ -151,8 +152,13 @@ static int pseries_suspend_sysfs_register(struct device 
*dev)
dev->id = 0;
dev->bus = _subsys;
 
-   if ((rc = device_create_file(suspend_subsys.dev_root, 
_attr_hibernate)))
-   goto subsys_unregister;
+   dev_root = bus_get_dev_root(_subsys);
+   if (dev_root) {
+   rc = device_create_file(dev_root, _attr_hibernate);
+   put_device(dev_root);
+   if (rc)
+   goto subsys_unregister;
+   }
 
return 0;
 
-- 
2.39.2