From: "Michael S. Tsirkin" <mst@redhat.com>
To: dkoch@verizon.com
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v2] [Bug 1187529] Update bridge mappings for migration/restore
Date: Mon, 15 Jul 2013 11:36:24 +0300 [thread overview]
Message-ID: <20130715083624.GA32386@redhat.com> (raw)
In-Reply-To: <1373384402-1984-1-git-send-email-dkoch@terremark.com>
On Tue, Jul 09, 2013 at 11:40:02AM -0400, dkoch@verizon.com wrote:
> From: Don Koch <dkoch@verizon.com>
>
> Fix for LP#1187529: Devices on PCI bridge stop working when
> live-migrated. Update bridge mappings for all PCI bridge
> devices in get_pci_config_device().
>
> Signed-off-by: Don Koch <dkoch@verizon.com>
Applied, thanks.
> ---
> Still using old cast method for PCIBridge since there currently is
> no macro for it; this way it will be easier to find and change when
> the macro is implemented.
>
> hw/pci/pci.c | 5 +++++
> hw/pci/pci_bridge.c | 2 +-
> include/hw/pci/pci_bridge.h | 1 +
> 3 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/hw/pci/pci.c b/hw/pci/pci.c
> index dcc85ef..68aebf9 100644
> --- a/hw/pci/pci.c
> +++ b/hw/pci/pci.c
> @@ -378,6 +378,8 @@ int pci_bus_num(PCIBus *s)
> static int get_pci_config_device(QEMUFile *f, void *pv, size_t size)
> {
> PCIDevice *s = container_of(pv, PCIDevice, config);
> + PCIBridge *b = container_of(s, PCIBridge, dev);
> + PCIDeviceClass *pc = PCI_DEVICE_GET_CLASS(s);
> uint8_t *config;
> int i;
>
> @@ -395,6 +397,9 @@ static int get_pci_config_device(QEMUFile *f, void *pv, size_t size)
> memcpy(s->config, config, size);
>
> pci_update_mappings(s);
> + if (pc->is_bridge) {
> + pci_bridge_update_mappings(b);
> + }
>
> memory_region_set_enabled(&s->bus_master_enable_region,
> pci_get_word(s->config + PCI_COMMAND)
> diff --git a/hw/pci/pci_bridge.c b/hw/pci/pci_bridge.c
> index ecdeab0..02a396b 100644
> --- a/hw/pci/pci_bridge.c
> +++ b/hw/pci/pci_bridge.c
> @@ -224,7 +224,7 @@ static void pci_bridge_region_cleanup(PCIBridge *br, PCIBridgeWindows *w)
> g_free(w);
> }
>
> -static void pci_bridge_update_mappings(PCIBridge *br)
> +void pci_bridge_update_mappings(PCIBridge *br)
> {
> PCIBridgeWindows *w = br->windows;
>
> diff --git a/include/hw/pci/pci_bridge.h b/include/hw/pci/pci_bridge.h
> index 1868f7a..1d8f997 100644
> --- a/include/hw/pci/pci_bridge.h
> +++ b/include/hw/pci/pci_bridge.h
> @@ -37,6 +37,7 @@ PCIBus *pci_bridge_get_sec_bus(PCIBridge *br);
> pcibus_t pci_bridge_get_base(const PCIDevice *bridge, uint8_t type);
> pcibus_t pci_bridge_get_limit(const PCIDevice *bridge, uint8_t type);
>
> +void pci_bridge_update_mappings(PCIBridge *br);
> void pci_bridge_write_config(PCIDevice *d,
> uint32_t address, uint32_t val, int len);
> void pci_bridge_disable_base_limit(PCIDevice *dev);
> --
> 1.7.11.7
prev parent reply other threads:[~2013-07-15 8:35 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-09 15:40 [Qemu-devel] [PATCH v2] [Bug 1187529] Update bridge mappings for migration/restore dkoch
2013-07-10 9:39 ` Michael S. Tsirkin
2013-07-15 8:36 ` Michael S. Tsirkin [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=20130715083624.GA32386@redhat.com \
--to=mst@redhat.com \
--cc=dkoch@verizon.com \
--cc=qemu-devel@nongnu.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.