Re: [PATCH 1/2] pcie/dpc: Skip DPC event if device is not present

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 Hi Keith and Wes,

I wonder if getting an All 1’s read on the DPC status register is a valid scenario.   The DPC register is on the switch, why would the status register returns All 1’s even if the device is removed?

Thanks,
-Wei

--
wei zhang | software engineer | facebook
wzhang@xxxxxx | (408) 460-4803

On 4/29/17, 12:02 AM, "Keith Busch" <keith.busch@xxxxxxxxx> wrote:

    The DPC interupt may be executed on a device that is being removed. Skip
    queuing event handling if the status is all 1's, which should be seen
    only if the device is not present.
    
    Signed-off-by: Keith Busch <keith.busch@xxxxxxxxx>
    ---
     drivers/pci/pcie/pcie-dpc.c | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/drivers/pci/pcie/pcie-dpc.c b/drivers/pci/pcie/pcie-dpc.c
    index d4d70ef..fc2a4a7 100644
    --- a/drivers/pci/pcie/pcie-dpc.c
    +++ b/drivers/pci/pcie/pcie-dpc.c
    @@ -87,7 +87,7 @@ static irqreturn_t dpc_irq(int irq, void *context)
     	pci_read_config_word(pdev, dpc->cap_pos + PCI_EXP_DPC_STATUS, &status);
     	pci_read_config_word(pdev, dpc->cap_pos + PCI_EXP_DPC_SOURCE_ID,
     			     &source);
    -	if (!status)
    +	if (!status || status == (u16)(~0))
     		return IRQ_NONE;
     
     	dev_info(&dpc->dev->device, "DPC containment event, status:%#06x source:%#06x\n",
    -- 
    2.7.2
    
    





[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux