On 5/28/2026 1:35 PM, Zhiping Zhang wrote:
> On Wed, May 27, 2026 at 1:53 PM Alex Williamson <[email protected]> wrote:
>>
>>>
>> On Tue, 26 May 2026 07:43:53 -0700
>> Zhiping Zhang <[email protected]> wrote:
>>
>>> Add pcie_tph_enabled_req_type() so drivers can query the enabled TPH
>>> requester mode without reaching into pci_dev internals.
>>>
>>> This keeps pci_dev::tph_req_type inside the PCI/TPH code and provides a
>>> !CONFIG_PCIE_TPH stub for callers.
>>>
>>> Signed-off-by: Zhiping Zhang <[email protected]>
>>> ---
>>> drivers/pci/tph.c | 12 ++++++++++++
>>> include/linux/pci-tph.h | 2 ++
>>> 2 files changed, 14 insertions(+)
>>>
>>> diff --git a/drivers/pci/tph.c b/drivers/pci/tph.c
>>> index 91145e8d9d95..6c4492075ae9 100644
>>> --- a/drivers/pci/tph.c
>>> +++ b/drivers/pci/tph.c
>>> @@ -174,6 +174,18 @@ u32 pcie_tph_get_st_table_loc(struct pci_dev *pdev)
>>> }
>>> EXPORT_SYMBOL(pcie_tph_get_st_table_loc);
>>>
>>> +/**
>>> + * pcie_tph_enabled_req_type - Return the device's enabled TPH requester
>>> type
>>> + * @pdev: PCI device to query
>>> + *
>>> + * Return: PCI_TPH_REQ_DISABLE, PCI_TPH_REQ_TPH_ONLY or
>>> PCI_TPH_REQ_EXT_TPH.
>>> + */
>>> +u8 pcie_tph_enabled_req_type(struct pci_dev *pdev)
>>> +{
>>> + return pdev->tph_req_type;
>>> +}
>>> +EXPORT_SYMBOL(pcie_tph_enabled_req_type);
>>> +
>>> /*
>>> * Return the size of ST table. If ST table is not in TPH Requester
>>> Extended
>>> * Capability space, return 0. Otherwise return the ST Table Size + 1.
>>> diff --git a/include/linux/pci-tph.h b/include/linux/pci-tph.h
>>> index be68cd17f2f8..fe572737b409 100644
>>> --- a/include/linux/pci-tph.h
>>> +++ b/include/linux/pci-tph.h
>>> @@ -30,6 +30,7 @@ void pcie_disable_tph(struct pci_dev *pdev);
>>> int pcie_enable_tph(struct pci_dev *pdev, int mode);
>>> u16 pcie_tph_get_st_table_size(struct pci_dev *pdev);
>>> u32 pcie_tph_get_st_table_loc(struct pci_dev *pdev);
>>> +u8 pcie_tph_enabled_req_type(struct pci_dev *pdev);
>>> #else
>>> static inline int pcie_tph_set_st_entry(struct pci_dev *pdev,
>>> unsigned int index, u16 tag)
>>> @@ -41,6 +42,7 @@ static inline int pcie_tph_get_cpu_st(struct pci_dev *dev,
>>> static inline void pcie_disable_tph(struct pci_dev *pdev) { }
>>> static inline int pcie_enable_tph(struct pci_dev *pdev, int mode)
>>> { return -EINVAL; }
>>> +static inline u8 pcie_tph_enabled_req_type(struct pci_dev *pdev) { return
>>> 0; }
>>
>> nit, s/0/PCI_TPH_REQ_DISABLE/ for consistency. Thanks,
It need add #include <linux/pci.h> at beginning too, else it will counter
compile error like this:
In file included from drivers/vdpa/mlx5/core/mr.c:8:
In file included from include/linux/mlx5/qp.h:36:
In file included from include/linux/mlx5/device.h:37:
In file included from include/rdma/ib_verbs.h:46:
>> include/linux/pci-tph.h:48:10: error: use of undeclared identifier
>> 'PCI_TPH_LOC_NONE'
48 | { return PCI_TPH_LOC_NONE; }
| ^
1 error generated.
>>
>> Alex
>>
> ack, will do.
>
> Thanks,
> Zhiping
>