Re: [PATCH V7 5/9] PCI/IOV: Enable 10-Bit tag support for PCIe VF devices
From: Bjorn Helgaas <helgaas@kernel.org>
Date: 2021-08-04 23:29:40
Also in:
linux-media, netdev
On Wed, Aug 04, 2021 at 09:47:04PM +0800, Dongdong Liu wrote:
Enable VF 10-Bit Tag Requester when it's upstream component support 10-bit Tag Completer.
s/it's/its/ s/support/supports/ I think "upstream component" here means the PF, doesn't it? I don't think the PF is really an *upstream* component; there's no routing like with a switch.
quoted hunk ↗ jump to hunk
Signed-off-by: Dongdong Liu <redacted> Reviewed-by: Christoph Hellwig <hch@lst.de> --- drivers/pci/iov.c | 8 ++++++++ 1 file changed, 8 insertions(+)diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c index dafdc65..0d0bed1 100644 --- a/drivers/pci/iov.c +++ b/drivers/pci/iov.c@@ -634,6 +634,10 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn) pci_iov_set_numvfs(dev, nr_virtfn); iov->ctrl |= PCI_SRIOV_CTRL_VFE | PCI_SRIOV_CTRL_MSE; + if ((iov->cap & PCI_SRIOV_CAP_VF_10BIT_TAG_REQ) && + dev->ext_10bit_tag) + iov->ctrl |= PCI_SRIOV_CTRL_VF_10BIT_TAG_REQ_EN; + pci_cfg_access_lock(dev); pci_write_config_word(dev, iov->pos + PCI_SRIOV_CTRL, iov->ctrl); msleep(100);@@ -650,6 +654,8 @@ static int sriov_enable(struct pci_dev *dev, int nr_virtfn) err_pcibios: iov->ctrl &= ~(PCI_SRIOV_CTRL_VFE | PCI_SRIOV_CTRL_MSE); + if (iov->ctrl & PCI_SRIOV_CTRL_VF_10BIT_TAG_REQ_EN) + iov->ctrl &= ~PCI_SRIOV_CTRL_VF_10BIT_TAG_REQ_EN; pci_cfg_access_lock(dev); pci_write_config_word(dev, iov->pos + PCI_SRIOV_CTRL, iov->ctrl); ssleep(1);@@ -682,6 +688,8 @@ static void sriov_disable(struct pci_dev *dev) sriov_del_vfs(dev); iov->ctrl &= ~(PCI_SRIOV_CTRL_VFE | PCI_SRIOV_CTRL_MSE); + if (iov->ctrl & PCI_SRIOV_CTRL_VF_10BIT_TAG_REQ_EN) + iov->ctrl &= ~PCI_SRIOV_CTRL_VF_10BIT_TAG_REQ_EN;
You can just clear PCI_SRIOV_CTRL_VF_10BIT_TAG_REQ_EN unconditionally, can't you? I know it wouldn't change anything, but removing the "if" makes the code prettier. You could just add it in the existing PCI_SRIOV_CTRL_VFE | PCI_SRIOV_CTRL_MSE mask.
pci_cfg_access_lock(dev); pci_write_config_word(dev, iov->pos + PCI_SRIOV_CTRL, iov->ctrl); ssleep(1); -- 2.7.4