From: "Andreas Färber" <afaerber@suse.de>
To: Don Koch <dkoch@verizon.com>
Cc: Peter Crosthwaite <peter.crosthwaite@xilinx.com>,
qemu-devel@nongnu.org, mst@redhat.com
Subject: Re: [Qemu-devel] [Bug 1187529] [PATCH] Update mappings after PCI bridge live migration or save-restore.
Date: Wed, 03 Jul 2013 18:15:32 +0200 [thread overview]
Message-ID: <51D44E24.7000304@suse.de> (raw)
In-Reply-To: <1372863856-19860-1-git-send-email-dkoch@terremark.com>
Am 03.07.2013 17:04, schrieb Don Koch:
> From: Don Koch <dkoch@verizon.com>
>
> Update mappings for PCI bridge after live migration.
>
> Signed-off-by: Don Koch <dkoch@verizon.com>
> ---
> This fixes bug 1187529: devices on a PCI bridge stop working after migration.
Feel free to reference this as LP#1187529 in the commit message if this
is from QEMU's Launchpad bug tracker.
>
> hw/pci-bridge/pci_bridge_dev.c | 9 +++++++++
> hw/pci/pci_bridge.c | 2 +-
> include/hw/pci/pci_bridge.h | 1 +
> 3 files changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/hw/pci-bridge/pci_bridge_dev.c b/hw/pci-bridge/pci_bridge_dev.c
> index 971b432..9e5062e 100644
> --- a/hw/pci-bridge/pci_bridge_dev.c
> +++ b/hw/pci-bridge/pci_bridge_dev.c
> @@ -110,6 +110,14 @@ static void qdev_pci_bridge_dev_reset(DeviceState *qdev)
> shpc_reset(dev);
> }
>
> +static int pci_bridge_dev_post_load(void *opaque, int ver) {
> + PCIDevice *d = opaque;
> + PCIBridge *s = container_of(d, PCIBridge, dev);
Casting should no longer be done that way. It seems there is no
PCI_BRIDGE() cast macro in upstream yet, but it doesn't seem necessary
either. You can just use:
PCIBridge *s = opaque;
for simplicity.
Functional change looks sensible to me.
Regards,
Andreas
> +
> + pci_bridge_update_mappings(s);
> + return 0;
> +}
> +
> static Property pci_bridge_dev_properties[] = {
> /* Note: 0 is not a legal chassis number. */
> DEFINE_PROP_UINT8("chassis_nr", PCIBridgeDev, chassis_nr, 0),
> @@ -119,6 +127,7 @@ static Property pci_bridge_dev_properties[] = {
>
> static const VMStateDescription pci_bridge_dev_vmstate = {
> .name = "pci_bridge",
> + .post_load = pci_bridge_dev_post_load,
> .fields = (VMStateField[]) {
> VMSTATE_PCI_DEVICE(bridge.dev, PCIBridgeDev),
> SHPC_VMSTATE(bridge.dev.shpc, PCIBridgeDev),
> diff --git a/hw/pci/pci_bridge.c b/hw/pci/pci_bridge.c
> index 24be6c5..3897bd8 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);
>
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
next prev parent reply other threads:[~2013-07-03 16:15 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-03 15:04 [Qemu-devel] [Bug 1187529] [PATCH] Update mappings after PCI bridge live migration or save-restore Don Koch
2013-07-03 16:15 ` Andreas Färber [this message]
2013-07-08 17:02 ` Don Koch
2013-07-04 8:57 ` Michael S. Tsirkin
2013-07-08 17:30 ` Don Koch
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=51D44E24.7000304@suse.de \
--to=afaerber@suse.de \
--cc=dkoch@verizon.com \
--cc=mst@redhat.com \
--cc=peter.crosthwaite@xilinx.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.