diff mbox

core/init: set firmware progress sensor only on bmc systems.

Message ID 1478156802-405-1-git-send-email-ppaidipe@linux.vnet.ibm.com
State Superseded
Headers show

Commit Message

ppaidipe Nov. 3, 2016, 7:06 a.m. UTC
From: Pridhiviraj Paidipeddi <ppaidipe@linux.vnet.ibm.com>

Currently Hostboot populates /bmc/sensors dt node and corresponding sensors
only for BMC platforms, And for FSP platforms hostboot is not populating any
fsp sensors(Management sensors) and also there is no firmware progress
sensor exist in fsp platforms. due to which OPAL incorrectly setting firmware
status on a sensor id "00" which is not at all exist.

On a FSP system:
 cat /sys/firmware/opal/msglog | grep -i setting
[   21.189204883,6] IPMI: setting fw progress sensor 00 to 07
[   21.189559121,6] IPMI: setting fw progress sensor 00 to 13
cat /sys/firmware/opal/msglog | grep -i skiboot
[   84.127416495,5] SkiBoot skiboot-5.4.0-rc3 starting...

On a BMC system:
cat /sys/firmware/opal/msglog | grep -i setting
[    3.166286901,6] IPMI: setting fw progress sensor 05 to 14
[   14.259153338,6] IPMI: setting fw progress sensor 05 to 07
[   14.469070593,5] IPMI: Resetting boot count on successful boot
[   15.001210324,6] IPMI: setting fw progress sensor 05 to 13

So this patch fixes this incorrect setting on a fsp system, and sets only for BMC
platforms.

After patch:
On a FSP system:
cat /sys/firmware/opal/msglog | grep -i setting

On a BMC system:
cat /sys/firmware/opal/msglog | grep -i setting
[    3.167498705,6] IPMI: setting fw progress sensor 05 to 14
[   15.395841913,6] IPMI: setting fw progress sensor 05 to 07
[   16.117858189,5] IPMI: Resetting boot count on successful boot
[   16.163131535,6] IPMI: setting fw progress sensor 05 to 13

Need to enable this for FSP platforms once OPAL recieves sensors dt node
and fsp implements corresponding firmware progress sensor type(0x0f).
And also ipmi_sensor_init is only doing for ast bmc platforms(astbmc_init), and hence
there are sensors array created for FSP platforms.

Signed-off-by: Pridhiviraj Paidipeddi <ppaidipe@linux.vnet.ibm.com>
---
 core/init.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

Comments

Joel Stanley Nov. 3, 2016, 10:29 a.m. UTC | #1
Hello Pridhiviraj,

On Thu, Nov 3, 2016 at 5:36 PM,  <ppaidipe@linux.vnet.ibm.com> wrote:
> From: Pridhiviraj Paidipeddi <ppaidipe@linux.vnet.ibm.com>
>
> Currently Hostboot populates /bmc/sensors dt node and corresponding sensors
> only for BMC platforms, And for FSP platforms hostboot is not populating any
> fsp sensors(Management sensors) and also there is no firmware progress
> sensor exist in fsp platforms. due to which OPAL incorrectly setting firmware
> status on a sensor id "00" which is not at all exist.

Nice catch. When we wrote this code the FSP lacked IPMI, so the check
in ipmi_set_fw_progress_sensor for ipmi_present() was enough to guard
against this.

Perhaps we should fix the checks inside the
ipmi_set_fw_progress_sensor for the presence of the sensor in the
device tree, instead of adding fsp_present() checks.

Cheers,

Joel

>
> On a FSP system:
>  cat /sys/firmware/opal/msglog | grep -i setting
> [   21.189204883,6] IPMI: setting fw progress sensor 00 to 07
> [   21.189559121,6] IPMI: setting fw progress sensor 00 to 13
> cat /sys/firmware/opal/msglog | grep -i skiboot
> [   84.127416495,5] SkiBoot skiboot-5.4.0-rc3 starting...
>
> On a BMC system:
> cat /sys/firmware/opal/msglog | grep -i setting
> [    3.166286901,6] IPMI: setting fw progress sensor 05 to 14
> [   14.259153338,6] IPMI: setting fw progress sensor 05 to 07
> [   14.469070593,5] IPMI: Resetting boot count on successful boot
> [   15.001210324,6] IPMI: setting fw progress sensor 05 to 13
>
> So this patch fixes this incorrect setting on a fsp system, and sets only for BMC
> platforms.
>
> After patch:
> On a FSP system:
> cat /sys/firmware/opal/msglog | grep -i setting
>
> On a BMC system:
> cat /sys/firmware/opal/msglog | grep -i setting
> [    3.167498705,6] IPMI: setting fw progress sensor 05 to 14
> [   15.395841913,6] IPMI: setting fw progress sensor 05 to 07
> [   16.117858189,5] IPMI: Resetting boot count on successful boot
> [   16.163131535,6] IPMI: setting fw progress sensor 05 to 13
>
> Need to enable this for FSP platforms once OPAL recieves sensors dt node
> and fsp implements corresponding firmware progress sensor type(0x0f).
> And also ipmi_sensor_init is only doing for ast bmc platforms(astbmc_init), and hence
> there are sensors array created for FSP platforms.
>
> Signed-off-by: Pridhiviraj Paidipeddi <ppaidipe@linux.vnet.ibm.com>
> ---
>  core/init.c | 15 +++++++++++++--
>  1 file changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/core/init.c b/core/init.c
> index 9d4ab60..4e9dcb8 100644
> --- a/core/init.c
> +++ b/core/init.c
> @@ -481,7 +481,14 @@ void __noreturn load_and_boot_kernel(bool is_reboot)
>
>         load_initramfs();
>
> -       ipmi_set_fw_progress_sensor(IPMI_FW_OS_BOOT);
> +       /* Currently hostboot populates only BMC IPMI sensors dt node
> +        * and corresponding sensors, it is not populating fsp sensors.
> +        * And also there is no firmware progress sensor available for fsp
> +        * platforms. Enable this for fsp platforms once OPAL has corresponding
> +        * dt node and corresponding sensor exist.
> +        */
> +        if (!fsp_present())
> +                ipmi_set_fw_progress_sensor(IPMI_FW_OS_BOOT);
>
>         if (!is_reboot) {
>                 /* We wait for the nvram read to complete here so we can
> @@ -930,7 +937,11 @@ void __noreturn __nomcount main_cpu_entry(const void *fdt)
>         /* Add OPAL timer related properties */
>         late_init_timers();
>
> -       ipmi_set_fw_progress_sensor(IPMI_FW_PCI_INIT);
> +       /* Enable this for fsp platforms once OPAL has corresponding
> +         * sensors dt node and corresponding firmware progress sensor exist.
> +         */
> +        if (!fsp_present())
> +                ipmi_set_fw_progress_sensor(IPMI_FW_PCI_INIT);
>
>         /*
>          * These last few things must be done as late as possible
> --
> 2.7.4
>
> _______________________________________________
> Skiboot mailing list
> Skiboot@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/skiboot
ppaidipe Nov. 3, 2016, 6:08 p.m. UTC | #2
On 2016-11-03 15:59, Joel Stanley wrote:
> Hello Pridhiviraj,
> 
> On Thu, Nov 3, 2016 at 5:36 PM,  <ppaidipe@linux.vnet.ibm.com> wrote:
>> From: Pridhiviraj Paidipeddi <ppaidipe@linux.vnet.ibm.com>
>> 
>> Currently Hostboot populates /bmc/sensors dt node and corresponding 
>> sensors
>> only for BMC platforms, And for FSP platforms hostboot is not 
>> populating any
>> fsp sensors(Management sensors) and also there is no firmware progress
>> sensor exist in fsp platforms. due to which OPAL incorrectly setting 
>> firmware
>> status on a sensor id "00" which is not at all exist.
> 
> Nice catch. When we wrote this code the FSP lacked IPMI, so the check
> in ipmi_set_fw_progress_sensor for ipmi_present() was enough to guard
> against this.
> 
> Perhaps we should fix the checks inside the
> ipmi_set_fw_progress_sensor for the presence of the sensor in the
> device tree, instead of adding fsp_present() checks.
> 
> Cheers,
> 
> Joel
> 

Thanks Joel.
Sent a V2 with our findings, added the necessary checks in 
ipmi_set_fw_progress_sensor
function itself.


>> 
>> On a FSP system:
>>  cat /sys/firmware/opal/msglog | grep -i setting
>> [   21.189204883,6] IPMI: setting fw progress sensor 00 to 07
>> [   21.189559121,6] IPMI: setting fw progress sensor 00 to 13
>> cat /sys/firmware/opal/msglog | grep -i skiboot
>> [   84.127416495,5] SkiBoot skiboot-5.4.0-rc3 starting...
>> 
>> On a BMC system:
>> cat /sys/firmware/opal/msglog | grep -i setting
>> [    3.166286901,6] IPMI: setting fw progress sensor 05 to 14
>> [   14.259153338,6] IPMI: setting fw progress sensor 05 to 07
>> [   14.469070593,5] IPMI: Resetting boot count on successful boot
>> [   15.001210324,6] IPMI: setting fw progress sensor 05 to 13
>> 
>> So this patch fixes this incorrect setting on a fsp system, and sets 
>> only for BMC
>> platforms.
>> 
>> After patch:
>> On a FSP system:
>> cat /sys/firmware/opal/msglog | grep -i setting
>> 
>> On a BMC system:
>> cat /sys/firmware/opal/msglog | grep -i setting
>> [    3.167498705,6] IPMI: setting fw progress sensor 05 to 14
>> [   15.395841913,6] IPMI: setting fw progress sensor 05 to 07
>> [   16.117858189,5] IPMI: Resetting boot count on successful boot
>> [   16.163131535,6] IPMI: setting fw progress sensor 05 to 13
>> 
>> Need to enable this for FSP platforms once OPAL recieves sensors dt 
>> node
>> and fsp implements corresponding firmware progress sensor type(0x0f).
>> And also ipmi_sensor_init is only doing for ast bmc 
>> platforms(astbmc_init), and hence
>> there are sensors array created for FSP platforms.
>> 
>> Signed-off-by: Pridhiviraj Paidipeddi <ppaidipe@linux.vnet.ibm.com>
>> ---
>>  core/init.c | 15 +++++++++++++--
>>  1 file changed, 13 insertions(+), 2 deletions(-)
>> 
>> diff --git a/core/init.c b/core/init.c
>> index 9d4ab60..4e9dcb8 100644
>> --- a/core/init.c
>> +++ b/core/init.c
>> @@ -481,7 +481,14 @@ void __noreturn load_and_boot_kernel(bool 
>> is_reboot)
>> 
>>         load_initramfs();
>> 
>> -       ipmi_set_fw_progress_sensor(IPMI_FW_OS_BOOT);
>> +       /* Currently hostboot populates only BMC IPMI sensors dt node
>> +        * and corresponding sensors, it is not populating fsp 
>> sensors.
>> +        * And also there is no firmware progress sensor available for 
>> fsp
>> +        * platforms. Enable this for fsp platforms once OPAL has 
>> corresponding
>> +        * dt node and corresponding sensor exist.
>> +        */
>> +        if (!fsp_present())
>> +                ipmi_set_fw_progress_sensor(IPMI_FW_OS_BOOT);
>> 
>>         if (!is_reboot) {
>>                 /* We wait for the nvram read to complete here so we 
>> can
>> @@ -930,7 +937,11 @@ void __noreturn __nomcount main_cpu_entry(const 
>> void *fdt)
>>         /* Add OPAL timer related properties */
>>         late_init_timers();
>> 
>> -       ipmi_set_fw_progress_sensor(IPMI_FW_PCI_INIT);
>> +       /* Enable this for fsp platforms once OPAL has corresponding
>> +         * sensors dt node and corresponding firmware progress sensor 
>> exist.
>> +         */
>> +        if (!fsp_present())
>> +                ipmi_set_fw_progress_sensor(IPMI_FW_PCI_INIT);
>> 
>>         /*
>>          * These last few things must be done as late as possible
>> --
>> 2.7.4
>> 
>> _______________________________________________
>> Skiboot mailing list
>> Skiboot@lists.ozlabs.org
>> https://lists.ozlabs.org/listinfo/skiboot
diff mbox

Patch

diff --git a/core/init.c b/core/init.c
index 9d4ab60..4e9dcb8 100644
--- a/core/init.c
+++ b/core/init.c
@@ -481,7 +481,14 @@  void __noreturn load_and_boot_kernel(bool is_reboot)
 
 	load_initramfs();
 
-	ipmi_set_fw_progress_sensor(IPMI_FW_OS_BOOT);
+	/* Currently hostboot populates only BMC IPMI sensors dt node
+	 * and corresponding sensors, it is not populating fsp sensors.
+	 * And also there is no firmware progress sensor available for fsp
+	 * platforms. Enable this for fsp platforms once OPAL has corresponding
+	 * dt node and corresponding sensor exist.
+	 */
+        if (!fsp_present())
+                ipmi_set_fw_progress_sensor(IPMI_FW_OS_BOOT);
 
 	if (!is_reboot) {
 		/* We wait for the nvram read to complete here so we can
@@ -930,7 +937,11 @@  void __noreturn __nomcount main_cpu_entry(const void *fdt)
 	/* Add OPAL timer related properties */
 	late_init_timers();
 
-	ipmi_set_fw_progress_sensor(IPMI_FW_PCI_INIT);
+	/* Enable this for fsp platforms once OPAL has corresponding
+         * sensors dt node and corresponding firmware progress sensor exist.
+         */
+        if (!fsp_present())
+                ipmi_set_fw_progress_sensor(IPMI_FW_PCI_INIT);
 
 	/*
 	 * These last few things must be done as late as possible