[PATCH] PCI/TPH: Restore TPH Requester Enable correctly

Robin Murphy posted 1 patch 10 months, 1 week ago
drivers/pci/tph.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] PCI/TPH: Restore TPH Requester Enable correctly
Posted by Robin Murphy 10 months, 1 week ago
When we reenable TPH after changing a Steering Tag value, we need the
actual TPH Requester Enable value, not the ST Mode (which only happens
to work out by chance for non-extended TPH in interrupt vector mode).

Fixes: d2e8a34876ce ("PCI/TPH: Add Steering Tag support")
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
---
Spotted by inspection.
---
 drivers/pci/tph.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/pci/tph.c b/drivers/pci/tph.c
index 1e604fbbda65..07de59ca2ebf 100644
--- a/drivers/pci/tph.c
+++ b/drivers/pci/tph.c
@@ -360,7 +360,7 @@ int pcie_tph_set_st_entry(struct pci_dev *pdev, unsigned int index, u16 tag)
 		return err;
 	}
 
-	set_ctrl_reg_req_en(pdev, pdev->tph_mode);
+	set_ctrl_reg_req_en(pdev, pdev->tph_req_type);
 
 	pci_dbg(pdev, "set steering tag: %s table, index=%d, tag=%#04x\n",
 		(loc == PCI_TPH_LOC_MSIX) ? "MSI-X" : "ST", index, tag);
-- 
2.39.2.101.g768bb238c484.dirty
Re: [PATCH] PCI/TPH: Restore TPH Requester Enable correctly
Posted by Wei Huang 10 months, 1 week ago

On 2/5/25 6:52 AM, Robin Murphy wrote:
> When we reenable TPH after changing a Steering Tag value, we need the
> actual TPH Requester Enable value, not the ST Mode (which only happens
> to work out by chance for non-extended TPH in interrupt vector mode).
> 
> Fixes: d2e8a34876ce ("PCI/TPH: Add Steering Tag support")
> Signed-off-by: Robin Murphy <robin.murphy@arm.com>

Reviewed-by: Wei Huang <wei.huang2@amd.com>

> ---
> Spotted by inspection.
> ---
>   drivers/pci/tph.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/pci/tph.c b/drivers/pci/tph.c
> index 1e604fbbda65..07de59ca2ebf 100644
> --- a/drivers/pci/tph.c
> +++ b/drivers/pci/tph.c
> @@ -360,7 +360,7 @@ int pcie_tph_set_st_entry(struct pci_dev *pdev, unsigned int index, u16 tag)
>   		return err;
>   	}
>   
> -	set_ctrl_reg_req_en(pdev, pdev->tph_mode);
> +	set_ctrl_reg_req_en(pdev, pdev->tph_req_type);

Per prior discussion, this register needs to be set with tph_req_type.

>   
>   	pci_dbg(pdev, "set steering tag: %s table, index=%d, tag=%#04x\n",
>   		(loc == PCI_TPH_LOC_MSIX) ? "MSI-X" : "ST", index, tag);