Re: [PATCH part1 1/4] PCI, pciehp: Turn on link again after power off the slot

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

 



On Thu, Sep 6, 2012 at 11:30 AM, Yinghai Lu <yinghai@xxxxxxxxxx> wrote:
> On Thu, Sep 6, 2012 at 7:34 AM, Prarit Bhargava <prarit@xxxxxxxxxx> wrote:
>> Signed-off-by: Yinghai Lu <yinghai@xxxxxxxxxx>
>> Cc: Kenji Kaneshige <kaneshige.kenji@xxxxxxxxxxxxxx>
>> Cc: stable@xxxxxxxxxxxxxxx
>>
>>>diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c
>>>index 13b2eaf..7cee8db 100644
>>>--- a/drivers/pci/hotplug/pciehp_hpc.c
>>>+++ b/drivers/pci/hotplug/pciehp_hpc.c
>>>@@ -631,6 +631,8 @@ int pciehp_power_off_slot(struct slot * slot)
>>>       slot_cmd = POWER_OFF;
>>>       cmd_mask = PCI_EXP_SLTCTL_PCC;
>>>       retval = pcie_write_cmd(ctrl, slot_cmd, cmd_mask);
>>>+      /* need to enable link again for present bit report */
>>>+      pciehp_link_enable(ctrl);
>>
>> You're not checking the return value of pciehp_link_enable().  I wonder if
>> enabling the link is the only way to get the present bit to report correctly...
>
> that is silicon problem. and no one noticed that before.
>
>>
>> Also, should the pciehp_link_enable() be called in pciehp_power_on_slot() if
>> we already reenable it on the power off?
>
> we call that in pciehp_power_on_slot for another case:
> BIOS could have link disable on pcie slot if there is no card plugged
> in that slot.

So now we have two situations that should be the same, but they're not:

  1) Slot is empty at boot, and BIOS leaves link disabled.  Link
remains disabled until pciehp_power_on_slot() enables it.
  2) We hot-remove a card, so the slot is now empty, but
pciehp_power_off_slot() leaves the link enabled.  Link stays *enabled*
until another disable/enable sequence in pciehp_power_off_slot().

Why should these be different?  In both cases the slot is empty, but
in case 1 the link is disabled, while in case 2 it is enabled.  If we
can detect a hot-add in case 1, why can't we detect it after a
hot-remove even if the link is disabled?

Or maybe case 1 is broken on this box, and hot-add to that slot
doesn't work correctly either?
--
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


[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