lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 23 Sep 2016 14:52:48 +0300 From: Sergei Shtylyov <sergei.shtylyov@...entembedded.com> To: Jeff Kirsher <jeffrey.t.kirsher@...el.com>, davem@...emloft.net, bhelgaas@...gle.com Cc: Sasha Neftin <sasha.neftin@...el.com>, netdev@...r.kernel.org, nhorman@...hat.com, sassmann@...hat.com, jogreene@...hat.com, guru.anbalagane@...cle.com, linux-pci@...r.kernel.org Subject: Re: [net-next 5/5] PCI: disable FLR for 82579 device Hello. On 9/23/2016 9:39 AM, Jeff Kirsher wrote: > From: Sasha Neftin <sasha.neftin@...el.com> > > 82579 has a problem reattaching itself after the device is detached. > The bug was reported by Redhat. The suggested fix is to disable > FLR capability in PCIe configuration space. > > Reproduction: > Attach the device to a VM, then detach and try to attach again. > > Fix: > Disable FLR capability to prevent the 82579 from hanging. > > Signed-off-by: Sasha Neftin <sasha.neftin@...el.com> > Tested-by: Aaron Brown <aaron.f.brown@...el.com> > Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@...el.com> > --- > drivers/pci/quirks.c | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c > index 44e0ff3..59fba6e 100644 > --- a/drivers/pci/quirks.c > +++ b/drivers/pci/quirks.c > @@ -4431,3 +4431,24 @@ static void quirk_intel_qat_vf_cap(struct pci_dev *pdev) > } > } > DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x443, quirk_intel_qat_vf_cap); > +/* > + * Workaround FLR issues for 82579 > + * This code disables the FLR (Function Level Reset) via PCIe, in order > + * to workaround a bug found while using device passthrough, where the > + * interface would become non-responsive. > + * NOTE: the FLR bit is Read/Write Once (RWO) in config space, so if > + * the BIOS or kernel writes this register * then this workaround will ^ That asterisk shouldn't be there. > + * not work. > + */ > +static void quirk_intel_flr_cap_dis(struct pci_dev *dev) > +{ > + int pos = pci_find_capability(dev, PCI_CAP_ID_AF); Should be an empty line here... > + if (pos) { > + u8 cap; And here... > + pci_read_config_byte(dev, pos + PCI_AF_CAP, &cap); > + cap = cap & (~PCI_AF_CAP_FLR); () not needed. > + pci_write_config_byte(dev, pos + PCI_AF_CAP, cap); > + } > +} > +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1502, quirk_intel_flr_cap_dis); > +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1503, quirk_intel_flr_cap_dis); MBR, Sergei
Powered by blists - more mailing lists