From: Bjorn Helgaas <helgaas@kernel.org>
To: Heiner Kallweit <hkallweit1@gmail.com>
Cc: "linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>
Subject: Re: [PATCH] PCI: make pci_set_mwi a dummy for PCIe devices
Date: Wed, 30 Jan 2019 13:17:03 -0600 [thread overview]
Message-ID: <20190130191702.GI229773@google.com> (raw)
In-Reply-To: <0599e4ea-55ce-9aba-d5af-1625a3db0701@gmail.com>
On Sun, Oct 21, 2018 at 05:06:58PM +0200, Heiner Kallweit wrote:
> Memory-Write-Invalidate isn't applicable for PCIe devices, therefore
> make the MWI functions a dummy and don't even write to the (dummy)
> PCI config space registers.
>
> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
> ---
> drivers/pci/pci.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> index d068f11d0..fb63b3d89 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -4137,6 +4137,9 @@ int pci_set_mwi(struct pci_dev *dev)
> int rc;
> u16 cmd;
>
> + if (pci_is_pcie(dev))
> + return 0;
I don't think this works quite right for the case of a
PCIe-to-PCI/PCI-X bridge. That is a PCIe device (it has a PCIe
Capability, and pci_is_pcie() should return true), but the MWI bit is
writable and meaningful (it controls whether the bridge can convert a
PCIe Memory Write into a PCI Memory Write and Invalidate), so I don't
think it would be correct to just skip this.
I'm looking at the "PCI EXPRESS TO PCI/PCI-X BRIDGE" spec, r1.0, sec
5.1.1.1.
> rc = pci_set_cacheline_size(dev);
> if (rc)
> return rc;
> @@ -4203,6 +4206,9 @@ void pci_clear_mwi(struct pci_dev *dev)
> #ifndef PCI_DISABLE_MWI
> u16 cmd;
>
> + if (pci_is_pcie(dev))
> + return;
> +
> pci_read_config_word(dev, PCI_COMMAND, &cmd);
> if (cmd & PCI_COMMAND_INVALIDATE) {
> cmd &= ~PCI_COMMAND_INVALIDATE;
> --
> 2.19.1
>
prev parent reply other threads:[~2019-01-30 19:17 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-21 15:06 [PATCH] PCI: make pci_set_mwi a dummy for PCIe devices Heiner Kallweit
2019-01-30 19:17 ` Bjorn Helgaas [this message]
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=20190130191702.GI229773@google.com \
--to=helgaas@kernel.org \
--cc=hkallweit1@gmail.com \
--cc=linux-pci@vger.kernel.org \
/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.