Hi Rafael,
Thank you for your explanation.
(2014/09/03 6:29), Rafael J. Wysocki wrote:
On Tuesday, September 02, 2014 10:53:09 AM Yasuaki Ishimatsu wrote:
Hi Rafael,
Hi,
Why is _SUN method decoded and the sun sysfs created even if _STA reports
that the device is not present and not functional?
sun sysfs is created for stuff that has _SUN. It should be empty for devices
that aren't present, though, apparently.
By this commit, "202317a : ACPI / scan: Add acpi_device objects for all
device nodes in the namespace", all device nodes in the namespace are
shown under /sys/bus/acpi/devices direcotry even if the devices are not
present and not functional.
But ACPI specification says against return value information of _STA:
A device can only decode its hardware resources if both bits 0 and 1 are set.
If the device is not present (bit 0 cleared) or not enabled (bit 1 cleared),
then the device must not decode its resources.
But _SUN is not about hardware resources, is it?
I think so. But ACPI spec does not define what the hardware resources are.
So someone says _SUN is about hardware resrouces.
In my understanding, when the device is not present and not functional,
_SUN of the device must not be decoded. Is my understanding worng?
If my understanding of the _INI section of the spec is correct, you have a
point, but the dependency is rather indirect as far as I can say. If the
device is not present, we are not supposed to execute _INI for it and _SUN
can only be executed after _INI.
I know the spec. According to the _INI section of the spec, it says:
"If the _STA method indicates that the device is not present and is not
functional, OSPM will not run the _INI and will not examine the children
of the device for _INI methods."
In my understanding, if a device has both _SUN and _INI method, and _STA
method indicates that the deviceis not present and is not functional,
_SUN method cannot be executed.
If a device has _SUN method and does not have _INI method, and _STA
method indicates that the deviceis not present and is not functional,
can we execute _SUN method?
In our box, when the device is not present and not functional, _SUN method
of the device returns wrong value. And the values is cached to
acpi_device->pnp.sun. So when hot adding the device and changing _SUN value,
the information is not reflected to acpi_device->pnp.sun.
I see.
I think the issue is solved by not caching sun value. But at first, I want
to know whether current implementation is correct or not.
No, it isn't, but there are two ways to fix it.
A short term fix would be to evaluate _STA and print an empty string in
acpi_device_sun_show() if we don't like the return value. If we do like it,
evaluate _SUN and print the result.
I will create a shot term fix soon.
Thanks,
Yasuaki Ishimatsu
A long term fix would require us to track the execution of _INI and decide
what to print on this basis (and probably avoid to execute some other methods
too if _INI has not been executed). I'll try to do something along these lines,
but I can't promise any particular time frame, sorry about that.
KR,
Rafael
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html