Re: [PATCH 1/2] hwtracing: hisi_ptt: Only add the supported devices to the filters list

From: Yicong Yang
Date: Tue Dec 06 2022 - 06:57:05 EST


On 2022/12/6 19:46, Suzuki K Poulose wrote:
> Hi Yicong Yang
>
> On 06/12/2022 11:34, Yicong Yang wrote:
>> Hi Mathieu,
>>
>> Do we still have a chance to catch this cycle for these 2 patches?
>
> Sorry, I have been handling the coresight tree this cycle (and will be
> going forward). I have already sent the pull request to Greg. I am
> afraid it is late for this cycle.
>
> I can queue it for the next cycle.
>

Thanks for the information.
It's ok, I'll resend in the next cycle.

Thanks,
Yicong

>>
>> Thanks!
>>
>> On 2022/11/22 20:02, Yicong Yang 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>
>>> ---
>>>   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
>>>
>
>
> .