Re: [RFC][PATCH] PCI / PCIe: Ask BIOS for control of all native services simultaneously

Rafael J. Wysocki
2010-07-28T10:51:47Z

On Wednesday, July 28, 2010, Hidetoshi Seto wrote:
> Hi,
>
> (2010/07/25 8:05), Rafael J. Wysocki wrote:
> > It turns out that asking ACPI BIOS, through _OSC, for control of each
> > PCIe port native service individually sometimes confuses the BIOS if
> > one sevice is requested while the others are not (eg. requesting
> > control of the native PCIe PME without requesting control of the
> > native PCIe hot-plug at the same time leads to interrupt storms on
> > some systems).
>
> Then why not invent quirks or something for such systems?
>
> IMHO it sounds like a BIOS bug since it should grant PME control to
> OS only when both of PME and pciehp (plus PCIe caps) are requested
> at same time.
>
> Did you confirm that the system also confuses when pciehp is requested
> without requesting PME?
> e.g. assume that some BIOS might behave:
> _OSC(pciehp) => OK
> _OSC(PME) => NG (bugs on shared interrupt?)
> _OSC(pciehp|PME) => OK
> _OSC(SHPC) => OK
> _OSC(pciehp|SHPC) => NG (must choose one, not both)
> _OSC(AER|SHPC) => OK

The problem is the PCIe capability structure that is requested by each of
them (except for SHPC). After granting it, the BIOS can't legitimately write
to the PCIe standard config registers, so it's reasonable to assume the kernel
will configure them from its perspective.

> I don't doubt that handling of _OSC needs some improvement...

Good. :-)

Rafael