Messages in this thread | | | Subject | Re: [PATCH]PCIe AER: reject aer inject if hardware mask error reporting | From | Andrew Patterson <> | Date | Mon, 14 Dec 2009 17:29:14 -0700 |
| |
On Fri, 2009-12-11 at 18:48 -0500, Youquan,Song wrote: > Correcteable/Uncorrectable Error Mask Register are used by PCIe AER driver > which will controls the reporting of idividual errors to PCIe RC via PCIe > error messages. > > If hardware masks special error reporting to RC, the aer_inject driver should > not inject aer error. > > Signed-off-by: Youquan, Song <youquan.song@intel.com> > Acked-by: Ying, Huang <ying.huang@intel.com> > --- > > diff --git a/drivers/pci/pcie/aer/aer_inject.c b/drivers/pci/pcie/aer/aer_inject.c > index ad77f0c..fa2bc22 100644 > --- a/drivers/pci/pcie/aer/aer_inject.c > +++ b/drivers/pci/pcie/aer/aer_inject.c > @@ -302,7 +302,7 @@ static int aer_inject(struct aer_error_inj *einj) > unsigned long flags; > unsigned int devfn = PCI_DEVFN(einj->dev, einj->fn); > int pos_cap_err, rp_pos_cap_err; > - u32 sever; > + u32 sever, mask; > int ret = 0; > > dev = pci_get_bus_and_slot(einj->bus, devfn);
This does not apply. Please respin against latest linux-2.6 or pci-2.6.
> @@ -354,6 +354,22 @@ static int aer_inject(struct aer_error_inj *einj) > err->header_log2 = einj->header_log2; > err->header_log3 = einj->header_log3; > > + pci_read_config_dword(dev, pos_cap_err + PCI_ERR_COR_MASK, &mask); > + if (einj->cor_status && !(einj->cor_status & ~mask)) { > + ret = -EINVAL; > + printk(KERN_WARNING "The correctable error is masked by device\n");
You can inject multiple correctable errors with the aer-inject user-land tool, so perhaps this should be re-worded as:
"The correctable error(s) are masked by the device\n"
> + spin_unlock_irqrestore(&inject_lock, flags); > + goto out_put; > + } > + > + pci_read_config_dword(dev, pos_cap_err + PCI_ERR_UNCOR_MASK, &mask); > + if (einj->uncor_status && !(einj->uncor_status & ~mask)) { > + ret = -EINVAL; > + printk(KERN_WARNING "The uncorrectable error is masked by device\n");
Same as above
> + spin_unlock_irqrestore(&inject_lock, flags); > + goto out_put; > + } > +
You can also simultaneously inject correctable and uncorrectable errors, so I don't particularly like returning errors here. Perhaps you should just print the warning message out and just not inject the masked errors.
> rperr = __find_aer_error_by_dev(rpdev); > if (!rperr) { > rperr = rperr_alloc; > -- > To unsubscribe from this list: send the line "unsubscribe linux-pci" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >
-- Andrew Patterson Hewlett-Packard
| |