From: Gavin Shan <gwshan@linux.vnet.ibm.com>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: Gavin Shan <gwshan@linux.vnet.ibm.com>,
clsoto@us.ibm.com, benh@kernel.crashing.org,
linux-pci@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
mpe@ellerman.id.au
Subject: Re: [PATCH v4 4/7] PCI: Don't update VF BARs while VF memory space is enabled
Date: Tue, 29 Nov 2016 15:57:47 +1100 [thread overview]
Message-ID: <20161129045747.GA22347@gwshan> (raw)
In-Reply-To: <20161129041521.21453.33146.stgit@bhelgaas-glaptop.roam.corp.google.com>
On Mon, Nov 28, 2016 at 10:15:21PM -0600, Bjorn Helgaas wrote:
>If we update a VF BAR while it's enabled, there are two potential problems:
>
> 1) Any driver that's using the VF has a cached BAR value that is stale
> after the update, and
>
> 2) We can't update 64-bit BARs atomically, so the intermediate state
> (new lower dword with old upper dword) may conflict with another
> device, and an access by a driver unrelated to the VF may cause a bus
> error.
>
>Warn about attempts to update VF BARs while they are enabled. This is a
>programming error, so use dev_WARN() to get a backtrace.
>
>Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
>---
> drivers/pci/iov.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
>diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
>index d00ed5c..a800ba2 100644
>--- a/drivers/pci/iov.c
>+++ b/drivers/pci/iov.c
>@@ -584,6 +584,7 @@ void pci_iov_update_resource(struct pci_dev *dev, int resno)
> struct resource *res = dev->resource + resno;
> int vf_bar = resno - PCI_IOV_RESOURCES;
> struct pci_bus_region region;
>+ u16 cmd;
> u32 new;
> int reg;
>
>@@ -595,6 +596,13 @@ void pci_iov_update_resource(struct pci_dev *dev, int resno)
> if (!iov)
> return;
>
>+ pci_read_config_word(dev, iov->pos + PCI_SRIOV_CTRL, &cmd);
>+ if ((cmd & PCI_SRIOV_CTRL_VFE) && (cmd & PCI_SRIOV_CTRL_MSE)) {
>+ dev_WARN(&dev->dev, "can't update enabled VF BAR%d %pR\n",
>+ vf_bar, res);
>+ return;
>+ }
>+
> /*
> * Ignore unimplemented BARs, unused resource slots for 64-bit
> * BARs, and non-movable resources, e.g., those described via
>
>--
>To unsubscribe from this list: send the line "unsubscribe linux-pci" in
>the body of a message to majordomo@vger.kernel.org
>More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2016-11-29 4:56 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-29 4:13 [PATCH v4 0/7] Disable VF's memory space on updating IOV BARs Bjorn Helgaas
2016-11-29 4:14 ` [PATCH v4 1/7] PCI: Do any VF BAR updates before enabling the BARs Bjorn Helgaas
2016-11-29 4:14 ` [PATCH v4 2/7] PCI: Ignore BAR updates on virtual functions Bjorn Helgaas
2016-11-29 4:45 ` Gavin Shan
2016-11-29 4:15 ` [PATCH v4 3/7] PCI: Separate VF BAR updates from standard BAR updates Bjorn Helgaas
2016-11-29 4:55 ` Gavin Shan
2016-11-29 14:48 ` Bjorn Helgaas
2016-11-29 23:20 ` Gavin Shan
2016-11-30 0:06 ` Bjorn Helgaas
2016-11-30 23:02 ` Gavin Shan
2016-11-30 23:45 ` Bjorn Helgaas
2016-12-01 0:00 ` Gavin Shan
2016-11-29 4:15 ` [PATCH v4 4/7] PCI: Don't update VF BARs while VF memory space is enabled Bjorn Helgaas
2016-11-29 4:57 ` Gavin Shan [this message]
2016-11-30 17:56 ` David Laight
2016-11-30 18:52 ` Bjorn Helgaas
2016-11-29 4:15 ` [PATCH v4 5/7] PCI: Remove pci_resource_bar() and pci_iov_resource_bar() Bjorn Helgaas
2016-11-29 5:02 ` Gavin Shan
2016-11-29 4:16 ` [PATCH v4 6/7] PCI: Decouple IORESOURCE_ROM_ENABLE and PCI_ROM_ADDRESS_ENABLE Bjorn Helgaas
2016-11-29 5:03 ` Gavin Shan
2016-11-29 4:16 ` [PATCH v4 7/7] PCI: Add comments about ROM BAR updating Bjorn Helgaas
2016-11-29 5:05 ` Gavin Shan
2016-12-01 22:21 ` [PATCH v4 0/7] Disable VF's memory space on updating IOV BARs Bjorn Helgaas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20161129045747.GA22347@gwshan \
--to=gwshan@linux.vnet.ibm.com \
--cc=benh@kernel.crashing.org \
--cc=bhelgaas@google.com \
--cc=clsoto@us.ibm.com \
--cc=linux-pci@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.