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@xxxxxxxxx> > Acked-by: Ying, Huang <ying.huang@xxxxxxxxx> > --- > > 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@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- Andrew Patterson Hewlett-Packard -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html