On 3/20/19 6:14 AM, Lukas Wunner wrote: > > [EXTERNAL EMAIL] > > When booting a MacBookPro9,1, duplicate link downtraining messages are > logged for the devices directly attached to the two CPU-internal Root > Ports of the Core i7 3615QM: Once on device enumeration and once on > enablement of the bandwidth notification interrupt on the Root Ports. > > Duplicate messages do not occur with Root Ports on the PCH and Downstream > Ports on the Thunderbolt controller: Only a single message is logged for > these, namely on device enumeration. > > The reason for the duplicate messages is a stale interrupt in the Link > Status register of the 3615QM's internal Root Ports. Avoid by clearing > the interrupt before enabling it. > > An alternative approach would be to clear the interrupt already on device > enumeration or to report link downtraining only if the speed has changed. > That way, link downtraining occurring between device enumeration and > enablement of the bandwidth notification interrupt could be catched. > However clearing stale interrupts before enabling them is a standard > operating procedure for any driver and keeping the two steps in one place > makes the code easier to follow. > > Signed-off-by: Lukas Wunner <lukas@xxxxxxxxx> Reviewed-by: Alexandru Gagniuc <alex.gagniuc@xxxxxxxxxxxx> > --- > drivers/pci/pcie/bw_notification.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/pci/pcie/bw_notification.c b/drivers/pci/pcie/bw_notification.c > index 001d6253ad48..69e6ba2558bf 100644 > --- a/drivers/pci/pcie/bw_notification.c > +++ b/drivers/pci/pcie/bw_notification.c > @@ -30,6 +30,8 @@ static void pcie_enable_link_bandwidth_notification(struct pci_dev *dev) > { > u16 lnk_ctl; > > + pcie_capability_write_word(dev, PCI_EXP_LNKSTA, PCI_EXP_LNKSTA_LBMS); > + > pcie_capability_read_word(dev, PCI_EXP_LNKCTL, &lnk_ctl); > lnk_ctl |= PCI_EXP_LNKCTL_LBMIE; > pcie_capability_write_word(dev, PCI_EXP_LNKCTL, lnk_ctl); >