> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On Behalf Of
> Rafael J. Wysocki
> Sent: Thursday, January 11, 2018 12:39 PM
> To: Ghannam, Yazen <[email protected]>
> Cc: ACPI Devel Maling List <[email protected]>; Linux Kernel Mailing
> List <[email protected]>; Linux PCI <[email protected]>;
> Rafael J. Wysocki <[email protected]>; Len Brown <[email protected]>; Bjorn
> Helgaas <[email protected]>; Borislav Petkov <[email protected]>
> Subject: Re: [PATCH] PCI/ACPI: Disable AER when _OSC control bit is clear.
> 
> On Thu, Jan 11, 2018 at 4:03 PM, Yazen Ghannam
> <[email protected]> wrote:
> > From: Yazen Ghannam <[email protected]>
> >
> > Currently, aer_service_init() checks if AER is available and that
> > Firmware First handling is not enabled. The _OSC request for AER is
> > not taken into account when deciding to enable AER in Linux.
> >
> > We should check that the _OSC control for AER is set. If it's not
> > then AER should be disabled.
> >
> > The _OSC control for AER is not requested when APEI Firmware First is
> > used, so the same condition applies.
> >
> > Mark AER as disabled if the _OSC request was not made or accepted.
> >
> > Remove redunant check for aer_acpi_firmware_first() when calling
> > aer_service_init(), since this is check is already included when
> > checking the _OSC control.
> >
> > Signed-off-by: Yazen Ghannam <[email protected]>
> > ---
> >  drivers/acpi/pci_root.c       | 3 +++
> >  drivers/pci/pcie/aer/aerdrv.c | 2 +-
> >  2 files changed, 4 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
> > index 6fc204a52493..19a625ed8de9 100644
> > --- a/drivers/acpi/pci_root.c
> > +++ b/drivers/acpi/pci_root.c
> > @@ -512,6 +512,9 @@ static void negotiate_os_control(struct
> acpi_pci_root *root, int *no_aspm)
> >                  */
> >                 *no_aspm = 1;
> >         }
> > +
> > +       if (!(requested & control & OSC_PCI_EXPRESS_AER_CONTROL))
> 
> One of the operators above needs to be a && I suppose?
> 

It's a 3-way bitwise AND to check that OSC_PCI_EXPRESS_AER_CONTROL is
set in both "requested" and "control".

IOW, we check if AER was requested by the OS and that the platform
granted the request.

Thanks,
Yazen

Reply via email to