Re: [PATCH v2] PCI/MSI: Don't touch MSI bits when the PCI device is disconnected
From: Alex_Gagniuc
Date: Tue Nov 13 2018 - 17:39:28 EST
On 11/12/2018 11:02 PM, Bjorn Helgaas wrote:
>
> [EXTERNAL EMAIL]
> Please report any suspicious attachments, links, or requests for sensitive information.
>
>
> [+cc Jon, for related VMD firmware-first error enable issue]
>
> On Mon, Nov 12, 2018 at 08:05:41PM +0000, Alex_Gagniuc@xxxxxxxxxxxx wrote:
>> On 11/11/2018 11:50 PM, Oliver O'Halloran wrote:
>>> On Thu, 2018-11-08 at 23:06 +0000, Alex_Gagniuc@xxxxxxxxxxxx wrote:
>
>>>> But it's not the firmware that crashes. It's linux as a result of a
>>>> fatal error message from the firmware. And we can't fix that because FFS
>>>> handling requires that the system reboots [1].
>>>
>>> Do we know the exact circumsances that result in firmware requesting a
>>> reboot? If it happen on any PCIe error I don't see what we can do to
>>> prevent that beyond masking UEs entirely (are we even allowed to do
>>> that on FFS systems?).
>>
>> Pull a drive out at an angle, push two drives in at the same time, pull
>> out a drive really slow. If an error is even reported to the OS depends
>> on PD state, and proprietary mechanisms and logic in the HW and FW. OS
>> is not supposed to mask errors (touch AER bits) on FFS.
>
> PD?
Presence Detect
> Do you think Linux observes the rule about not touching AER bits on
> FFS? I'm not sure it does. I'm not even sure what section of the
> spec is relevant.
I haven't found any place where linux breaks this rule. I'm very
confident that, unless otherwise instructed, we follow this rule.
> The whole issue of firmware-first, the mechanism by which firmware
> gets control, the System Error enables in Root Port Root Control
> registers, etc., is very murky to me. Jon has a sort of similar issue
> with VMD where he needs to leave System Errors enabled instead of
> disabling them as we currently do.
Well, OS gets control via _OSC method, and based on that it should
touch/not touch the AER bits. The bits that get set/cleared come from
_HPX method, and there's a more about the FFS described in ACPI spec. It
seems that if platform, wants to enable VMD, it should pass the correct
bits via _HPX. I'm curious to know in what new twisted way FFS doesn't
work as intended.
Alex
> Bjorn
>
> [1] https://lore.kernel.org/linux-pci/20181029210651.GB13681@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
>