Bug 153881

Summary: pci 0000:ff:1e.3: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
Product: Drivers Reporter: Paul Menzel (pmenzel+bugzilla.kernel.org)
Component: PCIAssignee: Bjorn Helgaas (bjorn)
Status: RESOLVED CODE_FIX    
Severity: normal CC: bjorn, charles_rose, myron.stowe
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 4.7.2 Subsystem:
Regression: No Bisected commit-id:
Attachments: Output of dmesg: `dmesg > 20160824--dell-precision-tower-5810--dmesg.log`
Quirk to silence message

Description Paul Menzel 2016-08-24 13:20:27 UTC
Created attachment 230041 [details]
Output of dmesg: `dmesg > 20160824--dell-precision-tower-5810--dmesg.log`

Linux 4.7.2 (and before) shows the following error on the Dell Precision Tower 5810/0K240Y.

```
$ dmesg | grep "invalid BAR"
pci 0000:ff:1e.3: [Firmware Bug]: reg 0x10: invalid BAR (can't size)
```

Here is some output from lspci.

```
$ sudo lspci -xxx -s 00:00.0
00:00.0 Host bridge: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DMI2 (rev 02)
00: 86 80 00 2f 00 04 10 00 02 00 00 06 00 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 28 10 17 06
30: 00 00 00 00 90 00 00 00 00 00 00 00 00 01 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 00 e0 ff fb 00 00 00 00 00 00 00 00 00 00 00 00
60: 05 90 02 01 00 00 00 00 00 00 00 00 00 00 00 00
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90: 10 e0 42 00 00 80 00 00 00 00 00 00 41 38 79 00
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 00 00 00 9e 13 00 00 00 00 00 00 06 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 01 00 03 00 08 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 00 09 00 00 00 00 00 00 00

$ sudo lspci -xxx -s ff:1e.3
ff:1e.3 System peripheral: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 Power Control Unit (rev 02)
00: 86 80 c0 2f 00 00 00 00 02 00 80 08 00 00 80 00
10: 23 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 c0 2f
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40: 00 03 00 00 0c 03 00 00 0c 03 00 00 0c 03 00 00
50: 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70: 60 04 20 00 00 00 94 00 00 00 00 00 00 00 94 00
80: 09 00 20 01 05 81 18 00 83 02 00 20 00 00 a0 7f
90: 00 08 92 00 01 84 03 34 77 00 00 00 77 00 00 40
a0: 00 00 1e 00 00 00 00 00 00 00 00 00 00 00 00 00
b0: 00 03 00 01 3f 00 00 00 3f 00 00 00 00 00 00 00
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 21 00 00 00
f0: 00 00 00 80 00 10 00 00 58 01 00 00 00 00 00 00
```

Please find all Linux messages attached.

Should I just update the firmware, and see if it’s fixed there, or should Linux better handle this case?
Comment 1 Bjorn Helgaas 2016-08-24 18:59:48 UTC
Created attachment 230071 [details]
Quirk to silence message

I don't think updating firmware will make any difference.

That device ([8086:2fc0]) put a device-specific register (CONFIG_TDP_NOMINAL_CSR) at offset 0x10, which is supposed to be a BAR.  This is erratum, HSE43 in http://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/xeon-e5-v3-spec-update.pdf

I think Linux already handles this correctly: we just ignore that BAR.  But we probably should do that silently to avoid the alarming message.  Can you try this patch?
Comment 2 Myron Stowe 2016-08-24 21:19:10 UTC
Yes, per Intel:

  ".. it is an uncore function in the CPU, and yes, it's read-only, with a fixed value, ..."

  "You might discuss this issue with the platform provider.  Device 30, function 3 should be hidden by the platform BIOS."

Bjorn already provided the errata - HSE43 entry - in Comment 1.

Myron
Comment 3 Paul Menzel 2016-09-19 15:15:25 UTC
Thank you very much for the prompt replies, and I am sorry for my late one.

I confirm that the message is indeed gone with Linux 4.8-rc8.

```
$ uname -r
4.8.0-rc7.mx64.104
$ dmesg | grep -i firmware
[    1.005182] ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
```

I am therefore setting the status to *RESOLVED/CODE_FIX*. Thank you again.