lkml.org 
[lkml]   [2021]   [Nov]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH] PCI: pciehp: clear cmd_busy bit when Command Completed in polling mode
    From
    Hi Bjorn & Lukas & Kuppuswamy & Amey,

    Gentle ping! Any comments on this patch?


    在 2021/11/11 13:42, Liguang Zhang 写道:
    > This patch fixes this problem that on driver probe from system startup,
    > pciehp checks the Presence Detect State bit in the Slot Status register
    > to bring up an occupied slot or bring down an unoccupied slot. If empty
    > slot's power status is on, turn power off. The Hot-Plug interrupt isn't
    > requested yet, so avoid triggering a notification by calling
    > pcie_disable_notification().
    >
    > Both the CCIE and HPIE bits are masked in pcie_disable_notification(),
    > when we issue a hotplug command, pcie_wait_cmd() will polling the
    > Command Completed bit instead of waiting for an interrupt. But cmd_busy
    > bit was not cleared when Command Completed which results in timeouts
    > like this in pciehp_power_off_slot() and pcie_init_notification():
    >
    > pcieport 0000:00:03.0: pciehp: Timeout on hotplug command 0x01c0
    > (issued 2264 msec ago)
    > pcieport 0000:00:03.0: pciehp: Timeout on hotplug command 0x05c0
    > (issued 2288 msec ago)
    >
    > Signed-off-by: Liguang Zhang <zhangliguang@linux.alibaba.com>
    > ---
    > drivers/pci/hotplug/pciehp_hpc.c | 2 ++
    > 1 file changed, 2 insertions(+)
    >
    > diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c
    > index 83a0fa119cae..8698aefc6041 100644
    > --- a/drivers/pci/hotplug/pciehp_hpc.c
    > +++ b/drivers/pci/hotplug/pciehp_hpc.c
    > @@ -98,6 +98,8 @@ static int pcie_poll_cmd(struct controller *ctrl, int timeout)
    > if (slot_status & PCI_EXP_SLTSTA_CC) {
    > pcie_capability_write_word(pdev, PCI_EXP_SLTSTA,
    > PCI_EXP_SLTSTA_CC);
    > + ctrl->cmd_busy = 0;
    > + smp_mb();
    > return 1;
    > }
    > msleep(10);

    \
     
     \ /
      Last update: 2021-11-18 12:01    [W:4.705 / U:2.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site