Bug 64861

Summary: Dell R820. Fail to match "ipmi_si" driver if both PNP0c01 and IPI0001 were marked for the local BMC
Product: Drivers Reporter: eddy (bewantbe)
Component: PNPAssignee: Adam Belay (ambx1)
Status: NEW ---    
Severity: normal CC: morgoth6, pmenzel+bugzilla.kernel.org
Priority: P1    
Hardware: x86-64   
OS: Linux   
Kernel Version: 3.10.11 Subsystem:
Regression: No Bisected commit-id:
Attachments: dmesg log and acpi table (acpidump)
Patch mentioned in comment

Description eddy 2013-11-12 15:47:59 UTC
Created attachment 114371 [details]
dmesg log and acpi table (acpidump)

The boot log show:

# cat /var/log/dmesg | grep 'ACPI Error:'
[    5.250713] ACPI Error: No handler for Region [SYSI] (ffff8810790cb540) [IPMI] (20130328/evregion-161)
[    5.250722] ACPI Error: Region IPMI (ID=7) has no handler (20130328/exfldio-305)
[    5.250727] ACPI Error: Method parse/execution failed [\_SB_.PMI0._GHL] (Node ffff8830794b4740), AE_NOT_EXIST (20130328/psparse-537)
[    5.250738] ACPI Error: Method parse/execution failed [\_SB_.PMI0._PMC] (Node ffff8830794b4718), AE_NOT_EXIST (20130328/psparse-537)

It was discussed in this bug: https://bugzilla.kernel.org/show_bug.cgi?id=46741
But the patches there does not fix it in this case(not a ACPI or IPMI bug). And the maintainer of that bug kindly advise me to report this bug:

> As your problem is related to the PNP0c01, not IPI0001 (so it shouldn't be
> an ACPI bug or IPMI bug, your case is a PnP bug or a driver core bug), I
> suggest you to start another thread to report the following issue:
> 
> If both PNP0c01 and IPI0001 were marked for the local BMC, Linux could not
> automatically match the "ipmi_si" driver (drivers/char/ipmi/ipmi_si_intf.c)
> but match the "system" driver (drivers/pnp/system.c) for the device instead.
>     Device (NIPM)
>     {
>         Name (_HID, EisaId ("IPI0001"))  // _HID: Hardware ID
>                              ^^^^^^^
>         Name (_CID, EisaId ("PNP0C01"))  // _CID: Compatible ID
>                              ^^^^^^^
> I checked all of the PNPIDs related to PNP0c01 and IPI0001, got the
> following proof:
>   system 00:07: Plug and Play ACPI device, IDs IPI0001 PNP0c01 (active)
>   ^^^^^^                                       ^^^^^^^ ^^^^^^^
> The "system" driver gets higher precedence to be matched for your IPMI local
> BMC.
>     static const struct pnp_device_id pnp_dev_table[] = {
>         /* General ID for reserving resources */
>         {"PNP0c02", 0},
>         /* memory controller */
>         {"PNP0c01", 0},
>           ^^^^^^^
>         {"", 0}
>     };
> 
> It looks to me like the "system" driver is a wrong approach or Linux driver
> core need to be improved.  This is another issue and I'm not a PnP expert,
> so you need to ask PnP guys to check if drivers/pnp/system.c can be changed
> from a PnP driver to a functional module to reserve resources.
> 


$ uname -a
Linux dell-JM3Q 3.10-0.bpo.3-amd64 #1 SMP Debian 3.10.11-1~bpo70+1 (2013-09-24) x86_64 GNU/Linux
Comment 1 Marcin Kurek 2024-03-20 18:30:45 UTC
Not sure how correct this is, but with this hint I was able to load power monitor module without any errors and it registered in hwmon! System: PowerEdge R730. 

--------
Adapter: ACPI interface
power1:      313.00 W  (interval =   2.00 s)
--------

This is weird as this bug plagues all my Dell servers and if I remember correctly I saw it in one HP for years now.

Patch attached.
Comment 2 Marcin Kurek 2024-03-20 18:32:08 UTC
Created attachment 306012 [details]
Patch mentioned in comment