Message ID | 20230110130833.53474-1-yangyicong@huawei.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v2,1/2] hwtracing: hisi_ptt: Only add the supported devices to the filters list | expand |
On Tue, Jan 10, 2023 at 09:08:32PM +0800, Yicong Yang wrote: > From: Yicong Yang <yangyicong@hisilicon.com> > > 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. "So check when initializing the filters list."
Hi Bjorn, On 2023/1/10 23:05, Bjorn Helgaas wrote: > On Tue, Jan 10, 2023 at 09:08:32PM +0800, Yicong Yang wrote: >> From: Yicong Yang <yangyicong@hisilicon.com> >> >> 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. > > "So check when initializing the filters list." > . Thanks for the comment. Will reword this sentence as suggested. Thanks.
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