The register in question is the Advanced Error Capabilities and Control
register, at offset 0x18 in the Advanced Error Reporting capability,
which starts at 0x148 in the config space of device 80:02.0.

In the pre-boot value of 0x00a0, the following bits are set (per PCIe
spec r3.0, sec 7.10.7, these bits are read-only):

  PCI_ERR_CAP_ECRC_GENC  0x00000020      /* ECRC Generation Capable */
  PCI_ERR_CAP_ECRC_CHKC  0x00000080      /* ECRC Check Capable */

In the value of 0x01e0 after Linux boots, the following additional bits
are set:

  PCI_ERR_CAP_ECRC_GENE  0x00000040      /* ECRC Generation Enable */
  PCI_ERR_CAP_ECRC_CHKE  0x00000100      /* ECRC Check Enable */

Linux is setting these bits in program_hpp_type2() because there is
apparently an ACPI _HPX method that applies to this device, and it
returns a PCI Express setting record (ACPI spec 5.0, sec 6.2.8.3) with
an "Advanced Error Capabilities and Control Register OR Mask" that has
PCI_ERR_CAP_ECRC_GENE and PCI_ERR_CAP_ECRC_CHKE set.

Can you collect an ACPI dump to confirm that this is the case?

As I mentioned in the 1302fcf0d03e changelog, it's not completely clear
from the spec (ACPI 5.0, sec 6.2.8) when to apply these _HPX settings.
It says OSPM should use them to "configure devices not configured by the
platform firmware during initial system boot."  The question is how OSPM
can tell whether a device has been configured by platform firmware.

Since I don't know how to tell if a device has been configured by
platform firmware, I chose to apply the _HPX settings to *all* devices.

Any BIOS folks want to suggest a way to tell whether firmware has
configured a device?

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1571798

Title:
  Broadwell ECRC Support missing in Ubuntu

Status in linux package in Ubuntu:
  In Progress
Status in linux source package in Vivid:
  In Progress
Status in linux source package in Wily:
  In Progress
Status in linux source package in Xenial:
  In Progress
Status in linux source package in Yakkety:
  In Progress

Bug description:
  Here is the problem statement from the Dell team:

  When booting into Ubuntu 14.04.4 with a Broadwell CPU and an Intel
  Quick Assist Card, the memory location that corresponds to ECRC is set
  to 0x01e0, when the BIOS is setting this location 0x00a0 pre-OS boot.
  This causes the card to not function unless we implement the following
  workaround using setpci.

  “setpci –s AA:BB.C 160.w=0”, where AA:BB.C is the PCI Root Path for
  the Intel Quick Assit Card.

  We’ve verified the memory location is correct when booting to other
  OSes, such as RHEL 7.2 and Windows Server 2012 R2.

  If there is any information you can give as to why this may be
  occurring in Ubuntu or where we may start to debug when the memory is
  changed, we would appreciate it.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1571798/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to