From: Marcel Apfelbaum <marcel@redhat.com>
To: Aleksandr Bezzubikov <zuban32s@gmail.com>, qemu-devel@nongnu.org
Cc: mst@redhat.com
Subject: Re: [Qemu-devel] [PATCH] hw/pci-bridge/pcie_pci_bridge: properly handle MSI unavailability case
Date: Thu, 21 Sep 2017 13:16:39 +0300 [thread overview]
Message-ID: <f5dbe1a3-bb18-28ff-515b-e8a9ef924835@redhat.com> (raw)
In-Reply-To: <1505942471-11260-1-git-send-email-zuban32s@gmail.com>
Hi Aleksandr,
On 21/09/2017 0:21, Aleksandr Bezzubikov wrote:
> Signed-off-by: Aleksandr Bezzubikov <zuban32s@gmail.com>
> ---
> hw/pci-bridge/pcie_pci_bridge.c | 24 ++++++++++++++++++------
> 1 file changed, 18 insertions(+), 6 deletions(-)
>
Please add Eduardo's Reported-by tag and the
actual failure in the commit message.
You might even explain in the commit message that you
moved msi prop to ON_OFF_AUTO_AUTO.
> diff --git a/hw/pci-bridge/pcie_pci_bridge.c b/hw/pci-bridge/pcie_pci_bridge.c
> index 9aa5cc3..da562fe 100644
> --- a/hw/pci-bridge/pcie_pci_bridge.c
> +++ b/hw/pci-bridge/pcie_pci_bridge.c
> @@ -65,10 +65,18 @@ static void pcie_pci_bridge_realize(PCIDevice *d, Error **errp)
> goto aer_error;
> }
>
> + Error *local_err = NULL;
> if (pcie_br->msi != ON_OFF_AUTO_OFF) {
> - rc = msi_init(d, 0, 1, true, true, errp);
> + rc = msi_init(d, 0, 1, true, true, &local_err);
> if (rc < 0) {
> - goto msi_error;
> + assert(rc == -ENOTSUP);
> + if (pcie_br->msi != ON_OFF_AUTO_ON) {
> + error_free(local_err);
In that case it will fallback to legacy INTx, right?
Thanks,
Marcel
> + } else {
> + /* failed to satisfy user's explicit request for MSI */
> + error_propagate(errp, local_err);
> + goto msi_error;
> + }
> }
> }
> pci_register_bar(d, 0, PCI_BASE_ADDRESS_SPACE_MEMORY |
> @@ -81,7 +89,7 @@ aer_error:
> pm_error:
> pcie_cap_exit(d);
> cap_error:
> - shpc_free(d);
> + shpc_cleanup(d, &pcie_br->shpc_bar);
> error:
> pci_bridge_exitfn(d);
> }
> @@ -98,7 +106,9 @@ static void pcie_pci_bridge_reset(DeviceState *qdev)
> {
> PCIDevice *d = PCI_DEVICE(qdev);
> pci_bridge_reset(qdev);
> - msi_reset(d);
> + if (msi_present(d)) {
> + msi_reset(d);
> + }
> shpc_reset(d);
> }
>
> @@ -106,12 +116,14 @@ static void pcie_pci_bridge_write_config(PCIDevice *d,
> uint32_t address, uint32_t val, int len)
> {
> pci_bridge_write_config(d, address, val, len);
> - msi_write_config(d, address, val, len);
> + if (msi_present(d)) {
> + msi_write_config(d, address, val, len);
> + }
> shpc_cap_write_config(d, address, val, len);
> }
>
> static Property pcie_pci_bridge_dev_properties[] = {
> - DEFINE_PROP_ON_OFF_AUTO("msi", PCIEPCIBridge, msi, ON_OFF_AUTO_ON),
> + DEFINE_PROP_ON_OFF_AUTO("msi", PCIEPCIBridge, msi, ON_OFF_AUTO_AUTO),
> DEFINE_PROP_END_OF_LIST(),
> };
>
>
next prev parent reply other threads:[~2017-09-21 10:16 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-20 21:21 [Qemu-devel] [PATCH] hw/pci-bridge/pcie_pci_bridge: properly handle MSI unavailability case Aleksandr Bezzubikov
2017-09-21 10:16 ` Marcel Apfelbaum [this message]
2017-09-21 18:12 ` Aleksandr Bezzubikov
2017-09-22 6:42 ` Marcel Apfelbaum
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=f5dbe1a3-bb18-28ff-515b-e8a9ef924835@redhat.com \
--to=marcel@redhat.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=zuban32s@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).