On Tue, 22 Nov 2022 20:02:08 +0800 Yicong Yang <yangyicong@xxxxxxxxxx> wrote: > From: Yicong Yang <yangyicong@xxxxxxxxxxxxx> > > The PTT device can only support the devices on the same PCIe core, > within BDF range [lower_bdf, upper_bdf]. It's not correct to assume > the devices on the root bus are from the same PCIe core, there are > cases that root ports from different PCIe core are sharing the same > bus. So add the checking when initialize the filters list. > > Fixes: ff0de066b463 ("hwtracing: hisi_ptt: Add trace function support for HiSilicon PCIe Tune and Trace device") > Signed-off-by: Yicong Yang <yangyicong@xxxxxxxxxxxxx> Make sense to me. Reviewed-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > --- > drivers/hwtracing/ptt/hisi_ptt.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/drivers/hwtracing/ptt/hisi_ptt.c b/drivers/hwtracing/ptt/hisi_ptt.c > index 5d5526aa60c4..30f1525639b5 100644 > --- a/drivers/hwtracing/ptt/hisi_ptt.c > +++ b/drivers/hwtracing/ptt/hisi_ptt.c > @@ -356,8 +356,18 @@ static int hisi_ptt_register_irq(struct hisi_ptt *hisi_ptt) > > static int hisi_ptt_init_filters(struct pci_dev *pdev, void *data) > { > + struct pci_dev *root_port = pcie_find_root_port(pdev); > struct hisi_ptt_filter_desc *filter; > struct hisi_ptt *hisi_ptt = data; > + u32 port_devid; > + > + if (!root_port) > + return 0; > + > + port_devid = PCI_DEVID(root_port->bus->number, root_port->devfn); > + if (port_devid < hisi_ptt->lower_bdf || > + port_devid > hisi_ptt->upper_bdf) > + return 0; > > /* > * We won't fail the probe if filter allocation failed here. The filters