All of lore.kernel.org
 help / color / mirror / Atom feed
* Showing signed sensor value when the command "ipmitool sel elist" is executed
@ 2019-10-28  6:41 Tony Lee (李文富)
  2019-10-28 17:16 ` James Feist
  0 siblings, 1 reply; 6+ messages in thread
From: Tony Lee (李文富) @ 2019-10-28  6:41 UTC (permalink / raw)
  To: jason.m.bills@linux.intel.com
  Cc: openbmc@lists.ozlabs.org, Buddy Huang (黃天鴻)

Hi Jason,

We know that when we execute the command "ipmitool sel elist", it will return something like the following,
"18 | 10/16/19 | 18:28:41 UTC | Temperature nvme0 | Upper Non-critical going high | Asserted | Reading 72 > Threshold 70 degrees C".

I met a problem that when the sensor value in the d-bus is negative, the current reading in "ipmitool sel elist" will be 0.
It seems that because the type of scaledValue is defined "uint32_t", there is always a none negative value even current value is a negative value obtained from the d-bus. In
https://github.com/openbmc/phosphor-sel-logger/blob/master/include/sensorutils.hpp#L159

Is this is an issue or I need to set it up somewhere?

Thanks
Best Regards,
Tony

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

* Re: Showing signed sensor value when the command "ipmitool sel elist" is executed
  2019-10-28  6:41 Showing signed sensor value when the command "ipmitool sel elist" is executed Tony Lee (李文富)
@ 2019-10-28 17:16 ` James Feist
  2019-10-29  6:40   ` Tony Lee (李文富)
  0 siblings, 1 reply; 6+ messages in thread
From: James Feist @ 2019-10-28 17:16 UTC (permalink / raw)
  To: Tony Lee (李文富),
	jason.m.bills@linux.intel.com
  Cc: openbmc@lists.ozlabs.org, Buddy Huang (黃天鴻)

On 10/27/19 11:41 PM, Tony Lee (李文富) wrote:
> Hi Jason,
> 
> We know that when we execute the command "ipmitool sel elist", it will return something like the following,
> "18 | 10/16/19 | 18:28:41 UTC | Temperature nvme0 | Upper Non-critical going high | Asserted | Reading 72 > Threshold 70 degrees C".
> 
> I met a problem that when the sensor value in the d-bus is negative, the current reading in "ipmitool sel elist" will be 0.
> It seems that because the type of scaledValue is defined "uint32_t", there is always a none negative value even current value is a negative value obtained from the d-bus. In
> https://github.com/openbmc/phosphor-sel-logger/blob/master/include/sensorutils.hpp#L159
> 
> Is this is an issue or I need to set it up somewhere?

If min is < 0, then this should work:

https://github.com/openbmc/phosphor-sel-logger/blob/6afe9560852c6431c43c8e79a28e2b7cb498e355/include/sensorutils.hpp#L61

https://github.com/openbmc/phosphor-dbus-interfaces/blob/12162be363f11b9dafa92b5379db671712b3523c/xyz/openbmc_project/Sensor/Value.interface.yaml#L28

It uses MinValue < 0 to determine if the sensor is signed or not.

Thanks,

-James

> 
> Thanks
> Best Regards,
> Tony
> 

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

* RE: Showing signed sensor value when the command "ipmitool sel elist" is executed
  2019-10-28 17:16 ` James Feist
@ 2019-10-29  6:40   ` Tony Lee (李文富)
  2019-10-29 16:18     ` James Feist
  0 siblings, 1 reply; 6+ messages in thread
From: Tony Lee (李文富) @ 2019-10-29  6:40 UTC (permalink / raw)
  To: James Feist, jason.m.bills@linux.intel.com
  Cc: openbmc@lists.ozlabs.org, Buddy Huang (黃天鴻)

> On 10/27/19 11:41 PM, Tony Lee (李文富) wrote:
> > Hi Jason,
> >
> > We know that when we execute the command "ipmitool sel elist", it will
> return something like the following,
> > "18 | 10/16/19 | 18:28:41 UTC | Temperature nvme0 | Upper Non-critical
> going high | Asserted | Reading 72 > Threshold 70 degrees C".
> >
> > I met a problem that when the sensor value in the d-bus is negative, the
> current reading in "ipmitool sel elist" will be 0.
> > It seems that because the type of scaledValue is defined "uint32_t", there is
> always a none negative value even current value is a negative value obtained
> from the d-bus. In
> >
> https://github.com/openbmc/phosphor-sel-logger/blob/master/include/sens
> orutils.hpp#L159
> >
> > Is this is an issue or I need to set it up somewhere?
> 
> If min is < 0, then this should work:
> 
> https://github.com/openbmc/phosphor-sel-logger/blob/6afe9560852c6431c4
> 3c8e79a28e2b7cb498e355/include/sensorutils.hpp#L61
> 
> https://github.com/openbmc/phosphor-dbus-interfaces/blob/12162be363f11
> b9dafa92b5379db671712b3523c/xyz/openbmc_project/Sensor/Value.interfac
> e.yaml#L28
> 
> It uses MinValue < 0 to determine if the sensor is signed or not.

Hi James,

Yes, My MinValue and min are < 0.
I understand that If min is < 0 then bSigned = true finally it will return static_cast<int8_t>(scaledValue)
then this should work. But, after 
https://github.com/openbmc/phosphor-sel-logger/blob/6afe9560852c6431c43c8e79a28e2b7cb498e355/include/sensorutils.hpp#L159
I got scaledValue = 0 and return 0 in the end.

There are another question that why is "scaledValue" defined as uint32_t?
Shouldn't it return a byte(uint8_t) after calculation?

Here is my settings and debug logs:
max = 127.000000
min = -128.000000
value = -1.000000
mValue = 1
rExp = 0
bValue = 0
bExp = 0
bSigned = true
scaledValue = 0

Thanks,
-Tony

> Thanks,
> 
> -James
> 
> >
> > Thanks
> > Best Regards,
> > Tony
> >

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

* Re: Showing signed sensor value when the command "ipmitool sel elist" is executed
  2019-10-29  6:40   ` Tony Lee (李文富)
@ 2019-10-29 16:18     ` James Feist
  2019-10-29 17:11       ` James Feist
  0 siblings, 1 reply; 6+ messages in thread
From: James Feist @ 2019-10-29 16:18 UTC (permalink / raw)
  To: Tony Lee (李文富),
	jason.m.bills@linux.intel.com
  Cc: openbmc@lists.ozlabs.org, Buddy Huang (黃天鴻)

On 10/28/19 11:40 PM, Tony Lee (李文富) wrote:
>> On 10/27/19 11:41 PM, Tony Lee (李文富) wrote:
>>> Hi Jason,
>>>
>>> We know that when we execute the command "ipmitool sel elist", it will
>> return something like the following,
>>> "18 | 10/16/19 | 18:28:41 UTC | Temperature nvme0 | Upper Non-critical
>> going high | Asserted | Reading 72 > Threshold 70 degrees C".
>>>
>>> I met a problem that when the sensor value in the d-bus is negative, the
>> current reading in "ipmitool sel elist" will be 0.
>>> It seems that because the type of scaledValue is defined "uint32_t", there is
>> always a none negative value even current value is a negative value obtained
>> from the d-bus. In
>>>
>> https://github.com/openbmc/phosphor-sel-logger/blob/master/include/sens
>> orutils.hpp#L159
>>>
>>> Is this is an issue or I need to set it up somewhere?
>>
>> If min is < 0, then this should work:
>>
>> https://github.com/openbmc/phosphor-sel-logger/blob/6afe9560852c6431c4
>> 3c8e79a28e2b7cb498e355/include/sensorutils.hpp#L61
>>
>> https://github.com/openbmc/phosphor-dbus-interfaces/blob/12162be363f11
>> b9dafa92b5379db671712b3523c/xyz/openbmc_project/Sensor/Value.interfac
>> e.yaml#L28
>>
>> It uses MinValue < 0 to determine if the sensor is signed or not.
> 
> Hi James,
> 
> Yes, My MinValue and min are < 0.
> I understand that If min is < 0 then bSigned = true finally it will return static_cast<int8_t>(scaledValue)
> then this should work. But, after
> https://github.com/openbmc/phosphor-sel-logger/blob/6afe9560852c6431c43c8e79a28e2b7cb498e355/include/sensorutils.hpp#L159
> I got scaledValue = 0 and return 0 in the end.
> 
> There are another question that why is "scaledValue" defined as uint32_t?
> Shouldn't it return a byte(uint8_t) after calculation?

The return value is an uint8_t (about 5 lines below where you linked). 
The point of it being a uint32_t is so you can check for overflow. That 
being said looking at the unit tests I don't believe we check for 
negative, and that might need to be a int32_t.

The tests are here: 
https://github.com/openbmc/intel-ipmi-oem/blob/master/tests/test_sensorcommands.cpp

I'll try to take a look in the next day or two and write a new test to 
see if that fixes it, but feel free to add a test yourself if you beat 
me to it.

-James

> 
> Here is my settings and debug logs:
> max = 127.000000
> min = -128.000000
> value = -1.000000
> mValue = 1
> rExp = 0
> bValue = 0
> bExp = 0
> bSigned = true
> scaledValue = 0
> 
> Thanks,
> -Tony
> 
>> Thanks,
>>
>> -James
>>
>>>
>>> Thanks
>>> Best Regards,
>>> Tony
>>>

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

* Re: Showing signed sensor value when the command "ipmitool sel elist" is executed
  2019-10-29 16:18     ` James Feist
@ 2019-10-29 17:11       ` James Feist
  2019-10-30  5:50         ` Tony Lee (李文富)
  0 siblings, 1 reply; 6+ messages in thread
From: James Feist @ 2019-10-29 17:11 UTC (permalink / raw)
  To: Tony Lee (李文富),
	jason.m.bills@linux.intel.com
  Cc: openbmc@lists.ozlabs.org, Buddy Huang (黃天鴻)

On 10/29/19 9:18 AM, James Feist wrote:
> On 10/28/19 11:40 PM, Tony Lee (李文富) wrote:
>>> On 10/27/19 11:41 PM, Tony Lee (李文富) wrote:
>>>> Hi Jason,
>>>>
>>>> We know that when we execute the command "ipmitool sel elist", it will
>>> return something like the following,
>>>> "18 | 10/16/19 | 18:28:41 UTC | Temperature nvme0 | Upper Non-critical
>>> going high | Asserted | Reading 72 > Threshold 70 degrees C".
>>>>
>>>> I met a problem that when the sensor value in the d-bus is negative, 
>>>> the
>>> current reading in "ipmitool sel elist" will be 0.
>>>> It seems that because the type of scaledValue is defined "uint32_t", 
>>>> there is
>>> always a none negative value even current value is a negative value 
>>> obtained
>>> from the d-bus. In
>>>>
>>> https://github.com/openbmc/phosphor-sel-logger/blob/master/include/sens
>>> orutils.hpp#L159
>>>>
>>>> Is this is an issue or I need to set it up somewhere?
>>>
>>> If min is < 0, then this should work:
>>>
>>> https://github.com/openbmc/phosphor-sel-logger/blob/6afe9560852c6431c4
>>> 3c8e79a28e2b7cb498e355/include/sensorutils.hpp#L61
>>>
>>> https://github.com/openbmc/phosphor-dbus-interfaces/blob/12162be363f11
>>> b9dafa92b5379db671712b3523c/xyz/openbmc_project/Sensor/Value.interfac
>>> e.yaml#L28
>>>
>>> It uses MinValue < 0 to determine if the sensor is signed or not.
>>
>> Hi James,
>>
>> Yes, My MinValue and min are < 0.
>> I understand that If min is < 0 then bSigned = true finally it will 
>> return static_cast<int8_t>(scaledValue)
>> then this should work. But, after
>> https://github.com/openbmc/phosphor-sel-logger/blob/6afe9560852c6431c43c8e79a28e2b7cb498e355/include/sensorutils.hpp#L159 
>>
>> I got scaledValue = 0 and return 0 in the end.
>>
>> There are another question that why is "scaledValue" defined as uint32_t?
>> Shouldn't it return a byte(uint8_t) after calculation?
> 
> The return value is an uint8_t (about 5 lines below where you linked). 
> The point of it being a uint32_t is so you can check for overflow. That 
> being said looking at the unit tests I don't believe we check for 
> negative, and that might need to be a int32_t.
> 
> The tests are here: 
> https://github.com/openbmc/intel-ipmi-oem/blob/master/tests/test_sensorcommands.cpp 
> 
> 
> I'll try to take a look in the next day or two and write a new test to 
> see if that fixes it, but feel free to add a test yourself if you beat 
> me to it.

Give this a shot: 
https://gerrit.openbmc-project.xyz/c/openbmc/intel-ipmi-oem/+/26664

It'll need to be ported to phosphor-sel-logger when review passes.

> 
> -James
> 
>>
>> Here is my settings and debug logs:
>> max = 127.000000
>> min = -128.000000
>> value = -1.000000
>> mValue = 1
>> rExp = 0
>> bValue = 0
>> bExp = 0
>> bSigned = true
>> scaledValue = 0
>>
>> Thanks,
>> -Tony
>>
>>> Thanks,
>>>
>>> -James
>>>
>>>>
>>>> Thanks
>>>> Best Regards,
>>>> Tony
>>>>

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

* RE: Showing signed sensor value when the command "ipmitool sel elist" is executed
  2019-10-29 17:11       ` James Feist
@ 2019-10-30  5:50         ` Tony Lee (李文富)
  0 siblings, 0 replies; 6+ messages in thread
From: Tony Lee (李文富) @ 2019-10-30  5:50 UTC (permalink / raw)
  To: James Feist, jason.m.bills@linux.intel.com
  Cc: openbmc@lists.ozlabs.org, Buddy Huang (黃天鴻)

> On 10/29/19 9:18 AM, James Feist wrote:
> > On 10/28/19 11:40 PM, Tony Lee (李文富) wrote:
> >>> On 10/27/19 11:41 PM, Tony Lee (李文富) wrote:
> >>>> Hi Jason,
> >>>>
> >>>> We know that when we execute the command "ipmitool sel elist", it
> >>>> will
> >>> return something like the following,
> >>>> "18 | 10/16/19 | 18:28:41 UTC | Temperature nvme0 | Upper
> >>>> Non-critical
> >>> going high | Asserted | Reading 72 > Threshold 70 degrees C".
> >>>>
> >>>> I met a problem that when the sensor value in the d-bus is
> >>>> negative, the
> >>> current reading in "ipmitool sel elist" will be 0.
> >>>> It seems that because the type of scaledValue is defined
> >>>> "uint32_t", there is
> >>> always a none negative value even current value is a negative value
> >>> obtained from the d-bus. In
> >>>>
> >>> https://github.com/openbmc/phosphor-sel-logger/blob/master/include/s
> >>> ens
> >>> orutils.hpp#L159
> >>>>
> >>>> Is this is an issue or I need to set it up somewhere?
> >>>
> >>> If min is < 0, then this should work:
> >>>
> >>>
> https://github.com/openbmc/phosphor-sel-logger/blob/6afe9560852c6431
> >>> c4
> >>> 3c8e79a28e2b7cb498e355/include/sensorutils.hpp#L61
> >>>
> >>>
> https://github.com/openbmc/phosphor-dbus-interfaces/blob/12162be363f
> >>> 11
> >>>
> b9dafa92b5379db671712b3523c/xyz/openbmc_project/Sensor/Value.interfa
> >>> c
> >>> e.yaml#L28
> >>>
> >>> It uses MinValue < 0 to determine if the sensor is signed or not.
> >>
> >> Hi James,
> >>
> >> Yes, My MinValue and min are < 0.
> >> I understand that If min is < 0 then bSigned = true finally it will
> >> return static_cast<int8_t>(scaledValue) then this should work. But,
> >> after
> >>
> https://github.com/openbmc/phosphor-sel-logger/blob/6afe9560852c6431c
> >> 43c8e79a28e2b7cb498e355/include/sensorutils.hpp#L159
> >>
> >> I got scaledValue = 0 and return 0 in the end.
> >>
> >> There are another question that why is "scaledValue" defined as uint32_t?
> >> Shouldn't it return a byte(uint8_t) after calculation?
> >
> > The return value is an uint8_t (about 5 lines below where you linked).
> > The point of it being a uint32_t is so you can check for overflow.
> > That being said looking at the unit tests I don't believe we check for
> > negative, and that might need to be a int32_t.
OK, I get it.

> > The tests are here:
> > https://github.com/openbmc/intel-ipmi-oem/blob/master/tests/test_senso
> > rcommands.cpp
> >
> >
> > I'll try to take a look in the next day or two and write a new test to
> > see if that fixes it, but feel free to add a test yourself if you beat
> > me to it.
> 
> Give this a shot:
> https://gerrit.openbmc-project.xyz/c/openbmc/intel-ipmi-oem/+/26664
Looks good to me, thanks for the help.

> It'll need to be ported to phosphor-sel-logger when review passes.
> 
> >
> > -James
> >
> >>
> >> Here is my settings and debug logs:
> >> max = 127.000000
> >> min = -128.000000
> >> value = -1.000000
> >> mValue = 1
> >> rExp = 0
> >> bValue = 0
> >> bExp = 0
> >> bSigned = true
> >> scaledValue = 0
> >>
> >> Thanks,
> >> -Tony
> >>
> >>> Thanks,
> >>>
> >>> -James
> >>>
> >>>>
> >>>> Thanks
> >>>> Best Regards,
> >>>> Tony
> >>>>

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

end of thread, other threads:[~2019-10-30  5:50 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-10-28  6:41 Showing signed sensor value when the command "ipmitool sel elist" is executed Tony Lee (李文富)
2019-10-28 17:16 ` James Feist
2019-10-29  6:40   ` Tony Lee (李文富)
2019-10-29 16:18     ` James Feist
2019-10-29 17:11       ` James Feist
2019-10-30  5:50         ` Tony Lee (李文富)

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.