Commit 38c04887 authored by Joel Stanley's avatar Joel Stanley Committed by Michael Ellerman

powerpc/powernv: Silence SYSPARAM warning on boot

OpenPower BMC machines do not place any sysparams in the device tree, so
at every boot we get a warning:

 [    0.437176] SYSPARAM: Opal sysparam node not found

Remove the warning, and reorder the init so we don't peform allocations
when there is no sysparam node in the device tree.
Signed-off-by: default avatarJoel Stanley <joel@jms.id.au>
Acked-by: default avatarNeelesh Gupta <neelegup@linux.vnet.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent a14ab6b6
...@@ -162,10 +162,20 @@ void __init opal_sys_param_init(void) ...@@ -162,10 +162,20 @@ void __init opal_sys_param_init(void)
goto out; goto out;
} }
/* Some systems do not use sysparams; this is not an error */
sysparam = of_find_node_by_path("/ibm,opal/sysparams");
if (!sysparam)
goto out;
if (!of_device_is_compatible(sysparam, "ibm,opal-sysparams")) {
pr_err("SYSPARAM: Opal sysparam node not compatible\n");
goto out_node_put;
}
sysparam_kobj = kobject_create_and_add("sysparams", opal_kobj); sysparam_kobj = kobject_create_and_add("sysparams", opal_kobj);
if (!sysparam_kobj) { if (!sysparam_kobj) {
pr_err("SYSPARAM: Failed to create sysparam kobject\n"); pr_err("SYSPARAM: Failed to create sysparam kobject\n");
goto out; goto out_node_put;
} }
/* Allocate big enough buffer for any get/set transactions */ /* Allocate big enough buffer for any get/set transactions */
...@@ -176,30 +186,19 @@ void __init opal_sys_param_init(void) ...@@ -176,30 +186,19 @@ void __init opal_sys_param_init(void)
goto out_kobj_put; goto out_kobj_put;
} }
sysparam = of_find_node_by_path("/ibm,opal/sysparams");
if (!sysparam) {
pr_err("SYSPARAM: Opal sysparam node not found\n");
goto out_param_buf;
}
if (!of_device_is_compatible(sysparam, "ibm,opal-sysparams")) {
pr_err("SYSPARAM: Opal sysparam node not compatible\n");
goto out_node_put;
}
/* Number of parameters exposed through DT */ /* Number of parameters exposed through DT */
count = of_property_count_strings(sysparam, "param-name"); count = of_property_count_strings(sysparam, "param-name");
if (count < 0) { if (count < 0) {
pr_err("SYSPARAM: No string found of property param-name in " pr_err("SYSPARAM: No string found of property param-name in "
"the node %s\n", sysparam->name); "the node %s\n", sysparam->name);
goto out_node_put; goto out_param_buf;
} }
id = kzalloc(sizeof(*id) * count, GFP_KERNEL); id = kzalloc(sizeof(*id) * count, GFP_KERNEL);
if (!id) { if (!id) {
pr_err("SYSPARAM: Failed to allocate memory to read parameter " pr_err("SYSPARAM: Failed to allocate memory to read parameter "
"id\n"); "id\n");
goto out_node_put; goto out_param_buf;
} }
size = kzalloc(sizeof(*size) * count, GFP_KERNEL); size = kzalloc(sizeof(*size) * count, GFP_KERNEL);
...@@ -293,12 +292,12 @@ void __init opal_sys_param_init(void) ...@@ -293,12 +292,12 @@ void __init opal_sys_param_init(void)
kfree(size); kfree(size);
out_free_id: out_free_id:
kfree(id); kfree(id);
out_node_put:
of_node_put(sysparam);
out_param_buf: out_param_buf:
kfree(param_data_buf); kfree(param_data_buf);
out_kobj_put: out_kobj_put:
kobject_put(sysparam_kobj); kobject_put(sysparam_kobj);
out_node_put:
of_node_put(sysparam);
out: out:
return; return;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment