> Er, use the result of the get_children_props() call only if it _failed_?
> I suspect that wasn't your intention. This makes my G5 boot again:

Here's an alternate fix for the ppc64 crash during boot.  This corrects
the offending function to use more conventional error codes.  I'll
follow up with return code cleanups for the entire module, and for RTAS
code, since these are probably too big for 2.6.11.

Please apply, if appropriate.

Thanks-
John

Signed-off-by: John Rose <[EMAIL PROTECTED]>

diff -puN drivers/pci/hotplug/rpaphp_core.c~01_rpaphp_is_php_fix 
drivers/pci/hotplug/rpaphp_core.c
--- 2_6_linus/drivers/pci/hotplug/rpaphp_core.c~01_rpaphp_is_php_fix    
2005-02-07 18:06:29.000000000 -0600
+++ 2_6_linus-johnrose/drivers/pci/hotplug/rpaphp_core.c        2005-02-07 
18:10:15.000000000 -0600
@@ -224,7 +224,7 @@ static int get_children_props(struct dev
 
        if (!indexes || !names || !types || !domains) {
                /* Slot does not have dynamically-removable children */
-               return 1;
+               return -EINVAL;
        }
        if (drc_indexes)
                *drc_indexes = indexes;
@@ -260,7 +260,7 @@ int rpaphp_get_drc_props(struct device_n
        }
 
        rc = get_children_props(dn->parent, &indexes, &names, &types, &domains);
-       if (rc) {
+       if (rc < 0) {
                return 1;
        }
 
@@ -307,7 +307,7 @@ static int is_php_dn(struct device_node 
        int rc;
 
        rc = get_children_props(dn, indexes, names, &drc_types, power_domains);
-       if (rc) {
+       if (rc >= 0) {
                if (is_php_type((char *) &drc_types[1])) {
                        *types = drc_types;
                        return 1;
@@ -331,7 +331,7 @@ static int is_dr_dn(struct device_node *
 
        rc = get_children_props(dn->parent, indexes, names, types,
                                power_domains);
-       return (rc == 0);
+       return (rc >= 0);
 }
 
 static inline int is_vdevice_root(struct device_node *dn)

_

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to