i5100_edac: probe for device 19 function 0
Probe and store the device handle for the device 19 function 0 during driver initialization. The device is used during fault injection. Signed-off-by: Niklas Söderlund <niklas.soderlund@ericsson.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
e7100478fa
commit
52608ba205
@ -338,6 +338,7 @@ struct i5100_priv {
|
|||||||
unsigned ranksperchan; /* number of ranks per channel */
|
unsigned ranksperchan; /* number of ranks per channel */
|
||||||
|
|
||||||
struct pci_dev *mc; /* device 16 func 1 */
|
struct pci_dev *mc; /* device 16 func 1 */
|
||||||
|
struct pci_dev *einj; /* device 19 func 0 */
|
||||||
struct pci_dev *ch0mm; /* device 21 func 0 */
|
struct pci_dev *ch0mm; /* device 21 func 0 */
|
||||||
struct pci_dev *ch1mm; /* device 22 func 0 */
|
struct pci_dev *ch1mm; /* device 22 func 0 */
|
||||||
|
|
||||||
@ -869,7 +870,7 @@ static int i5100_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||||||
struct mem_ctl_info *mci;
|
struct mem_ctl_info *mci;
|
||||||
struct edac_mc_layer layers[2];
|
struct edac_mc_layer layers[2];
|
||||||
struct i5100_priv *priv;
|
struct i5100_priv *priv;
|
||||||
struct pci_dev *ch0mm, *ch1mm;
|
struct pci_dev *ch0mm, *ch1mm, *einj;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
u32 dw;
|
u32 dw;
|
||||||
int ranksperch;
|
int ranksperch;
|
||||||
@ -941,6 +942,22 @@ static int i5100_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||||||
goto bail_disable_ch1;
|
goto bail_disable_ch1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* device 19, func 0, Error injection */
|
||||||
|
einj = pci_get_device_func(PCI_VENDOR_ID_INTEL,
|
||||||
|
PCI_DEVICE_ID_INTEL_5100_19, 0);
|
||||||
|
if (!einj) {
|
||||||
|
ret = -ENODEV;
|
||||||
|
goto bail_einj;
|
||||||
|
}
|
||||||
|
|
||||||
|
rc = pci_enable_device(einj);
|
||||||
|
if (rc < 0) {
|
||||||
|
ret = rc;
|
||||||
|
goto bail_disable_einj;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
mci->pdev = &pdev->dev;
|
mci->pdev = &pdev->dev;
|
||||||
|
|
||||||
priv = mci->pvt_info;
|
priv = mci->pvt_info;
|
||||||
@ -948,6 +965,7 @@ static int i5100_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||||||
priv->mc = pdev;
|
priv->mc = pdev;
|
||||||
priv->ch0mm = ch0mm;
|
priv->ch0mm = ch0mm;
|
||||||
priv->ch1mm = ch1mm;
|
priv->ch1mm = ch1mm;
|
||||||
|
priv->einj = einj;
|
||||||
|
|
||||||
INIT_DELAYED_WORK(&(priv->i5100_scrubbing), i5100_refresh_scrubbing);
|
INIT_DELAYED_WORK(&(priv->i5100_scrubbing), i5100_refresh_scrubbing);
|
||||||
|
|
||||||
@ -999,6 +1017,12 @@ bail_scrub:
|
|||||||
cancel_delayed_work_sync(&(priv->i5100_scrubbing));
|
cancel_delayed_work_sync(&(priv->i5100_scrubbing));
|
||||||
edac_mc_free(mci);
|
edac_mc_free(mci);
|
||||||
|
|
||||||
|
bail_disable_einj:
|
||||||
|
pci_disable_device(einj);
|
||||||
|
|
||||||
|
bail_einj:
|
||||||
|
pci_dev_put(einj);
|
||||||
|
|
||||||
bail_disable_ch1:
|
bail_disable_ch1:
|
||||||
pci_disable_device(ch1mm);
|
pci_disable_device(ch1mm);
|
||||||
|
|
||||||
@ -1036,8 +1060,10 @@ static void i5100_remove_one(struct pci_dev *pdev)
|
|||||||
pci_disable_device(pdev);
|
pci_disable_device(pdev);
|
||||||
pci_disable_device(priv->ch0mm);
|
pci_disable_device(priv->ch0mm);
|
||||||
pci_disable_device(priv->ch1mm);
|
pci_disable_device(priv->ch1mm);
|
||||||
|
pci_disable_device(priv->einj);
|
||||||
pci_dev_put(priv->ch0mm);
|
pci_dev_put(priv->ch0mm);
|
||||||
pci_dev_put(priv->ch1mm);
|
pci_dev_put(priv->ch1mm);
|
||||||
|
pci_dev_put(priv->einj);
|
||||||
|
|
||||||
edac_mc_free(mci);
|
edac_mc_free(mci);
|
||||||
}
|
}
|
||||||
|
@ -2776,6 +2776,7 @@
|
|||||||
#define PCI_DEVICE_ID_INTEL_JAKETOWN_UBOX 0x3ce0
|
#define PCI_DEVICE_ID_INTEL_JAKETOWN_UBOX 0x3ce0
|
||||||
#define PCI_DEVICE_ID_INTEL_IOAT_SNB 0x402f
|
#define PCI_DEVICE_ID_INTEL_IOAT_SNB 0x402f
|
||||||
#define PCI_DEVICE_ID_INTEL_5100_16 0x65f0
|
#define PCI_DEVICE_ID_INTEL_5100_16 0x65f0
|
||||||
|
#define PCI_DEVICE_ID_INTEL_5100_19 0x65f3
|
||||||
#define PCI_DEVICE_ID_INTEL_5100_21 0x65f5
|
#define PCI_DEVICE_ID_INTEL_5100_21 0x65f5
|
||||||
#define PCI_DEVICE_ID_INTEL_5100_22 0x65f6
|
#define PCI_DEVICE_ID_INTEL_5100_22 0x65f6
|
||||||
#define PCI_DEVICE_ID_INTEL_5400_ERR 0x4030
|
#define PCI_DEVICE_ID_INTEL_5400_ERR 0x4030
|
||||||
|
Loading…
Reference in New Issue
Block a user