View | Details | Raw Unified | Return to bug 202055 | Differences between
and this patch

Collapse All | Expand All

(-)a/drivers/pci/pci.c (-1 / +1 lines)
Lines 4608-4614 int pci_bridge_secondary_bus_reset(struct pci_dev *dev) Link Here
4608
}
4608
}
4609
EXPORT_SYMBOL_GPL(pci_bridge_secondary_bus_reset);
4609
EXPORT_SYMBOL_GPL(pci_bridge_secondary_bus_reset);
4610
4610
4611
static int pci_parent_bus_reset(struct pci_dev *dev, int probe)
4611
int pci_parent_bus_reset(struct pci_dev *dev, int probe)
4612
{
4612
{
4613
	struct pci_dev *pdev;
4613
	struct pci_dev *pdev;
4614
4614
(-)a/drivers/pci/pci.h (+1 lines)
Lines 35-40 int pci_mmap_fits(struct pci_dev *pdev, int resno, struct vm_area_struct *vmai, Link Here
35
35
36
int pci_probe_reset_function(struct pci_dev *dev);
36
int pci_probe_reset_function(struct pci_dev *dev);
37
int pci_bridge_secondary_bus_reset(struct pci_dev *dev);
37
int pci_bridge_secondary_bus_reset(struct pci_dev *dev);
38
int pci_parent_bus_reset(struct pci_dev *dev, int probe);
38
int pci_bus_error_reset(struct pci_dev *dev);
39
int pci_bus_error_reset(struct pci_dev *dev);
39
40
40
/**
41
/**
(-)a/drivers/pci/quirks.c (+22 lines)
Lines 3783-3788 static int delay_250ms_after_flr(struct pci_dev *dev, int probe) Link Here
3783
	return 0;
3783
	return 0;
3784
}
3784
}
3785
3785
3786
/*
3787
 * Intel 760p Series NVMe (8086:f1a6) makes use of a Silicon Motion SM2262
3788
 * controller, which generates a bogus MSI-X capability after FLR (PBA offset
3789
 * from the vector table only allows for 16 entries (0x100 offset) but after
3790
 * FLR the MSI-X capability reports 22 entries).  As this is a single function
3791
 * device, a bus reset should offer no significant loss of functionality
3792
 * versus FLR on this device.  Downstream ports blacklisting bus reset via
3793
 * PCI_DEV_FLAGS_NO_BUS_RESET will fall back to FLR as we have no workaround
3794
 * for them.
3795
 *
3796
 * Link: https://bugzilla.kernel.org/show_bug.cgi?id=202055
3797
 *
3798
 * The above link references a forum thread where the Mushkin Pilot
3799
 * (MKNSSDPL250GB-D8) is also implicated as having the same controller and
3800
 * same issue but the vendor:device IDs are not available in the report.
3801
 */
3802
static int prefer_bus_reset(struct pci_dev *dev, int probe)
3803
{
3804
	return pci_parent_bus_reset(dev, probe);
3805
}
3806
3786
static const struct pci_dev_reset_methods pci_dev_reset_methods[] = {
3807
static const struct pci_dev_reset_methods pci_dev_reset_methods[] = {
3787
	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82599_SFP_VF,
3808
	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82599_SFP_VF,
3788
		 reset_intel_82599_sfp_virtfn },
3809
		 reset_intel_82599_sfp_virtfn },
Lines 3792-3797 static const struct pci_dev_reset_methods pci_dev_reset_methods[] = { Link Here
3792
		reset_ivb_igd },
3813
		reset_ivb_igd },
3793
	{ PCI_VENDOR_ID_SAMSUNG, 0xa804, nvme_disable_and_flr },
3814
	{ PCI_VENDOR_ID_SAMSUNG, 0xa804, nvme_disable_and_flr },
3794
	{ PCI_VENDOR_ID_INTEL, 0x0953, delay_250ms_after_flr },
3815
	{ PCI_VENDOR_ID_INTEL, 0x0953, delay_250ms_after_flr },
3816
	{ PCI_VENDOR_ID_INTEL, 0xf1a6, prefer_bus_reset },
3795
	{ PCI_VENDOR_ID_CHELSIO, PCI_ANY_ID,
3817
	{ PCI_VENDOR_ID_CHELSIO, PCI_ANY_ID,
3796
		reset_chelsio_generic_dev },
3818
		reset_chelsio_generic_dev },
3797
	{ 0 }
3819
	{ 0 }

Return to bug 202055