All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Don Koch <dkoch@verizon.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [Bug 1187529] [PATCH] Update mappings after PCI bridge live migration or save-restore.
Date: Thu, 4 Jul 2013 11:57:18 +0300	[thread overview]
Message-ID: <20130704085718.GA2208@redhat.com> (raw)
In-Reply-To: <1372863856-19860-1-git-send-email-dkoch@terremark.com>

On Wed, Jul 03, 2013 at 11:04:16AM -0400, Don Koch wrote:
> 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.

Thanks, this looks good, but any bridge device would
need this fix, won't it?
Could we call this from get_pci_config_device instead?
This way all bridge devices would be fixed.


>  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);
> +
> +    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);
> -- 
> 1.7.11.7

  parent reply	other threads:[~2013-07-04  8:56 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
2013-07-08 17:02   ` Don Koch
2013-07-04  8:57 ` Michael S. Tsirkin [this message]
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=20130704085718.GA2208@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.