Message ID | 1370348465-31652-12-git-send-email-aik@ozlabs.ru |
---|---|
State | New |
Headers | show |
On Tue, Jun 04, 2013 at 10:21:03PM +1000, Alexey Kardashevskiy wrote: > Author: David Gibson <david@gibson.dropbear.id.au> > > This adds the necessary support for saving the state of the PAPR virtual > PCI host bridge (or host bridges). I think the PCI cleanup patches I was working on need to go in before this, to make sure the migration stream pieces for PCI have same paths from the beginning.
On 05.06.2013 20:00, David Gibson wrote: > On Tue, Jun 04, 2013 at 10:21:03PM +1000, Alexey Kardashevskiy wrote: >> Author: David Gibson <david@gibson.dropbear.id.au> >> >> This adds the necessary support for saving the state of the PAPR virtual >> PCI host bridge (or host bridges). > > I think the PCI cleanup patches I was working on need to go in before > this, to make sure the migration stream pieces for PCI have same paths > from the beginning. We really want migration to go upstream... Are any close to get PCI stuff upstream? I did not see updates for a while and could not find anything new in your git on github.
On Wed, Jun 05, 2013 at 08:57:29PM +1000, Alexey Kardashevskiy wrote: > On 05.06.2013 20:00, David Gibson wrote: > > On Tue, Jun 04, 2013 at 10:21:03PM +1000, Alexey Kardashevskiy wrote: > >> Author: David Gibson <david@gibson.dropbear.id.au> > >> > >> This adds the necessary support for saving the state of the PAPR virtual > >> PCI host bridge (or host bridges). > > > > I think the PCI cleanup patches I was working on need to go in before > > this, to make sure the migration stream pieces for PCI have same paths > > from the beginning. > > We really want migration to go upstream... Are any close to get PCI > stuff upstream? I did not see updates for a while and could not find > anything new in your git on github. I've been trying to find time to address Michael Tsirkin's remaining comments. I got a fair ways last night, so I hope I can repost these shortly.
diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 762db62..a50a45a 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -694,6 +694,54 @@ static Property spapr_phb_properties[] = { DEFINE_PROP_END_OF_LIST(), }; +static const VMStateDescription vmstate_spapr_pci_lsi = { + .name = "spapr_pci/lsi", + .version_id = 1, + .minimum_version_id = 1, + .minimum_version_id_old = 1, + .fields = (VMStateField []) { + VMSTATE_UINT32_EQUAL(irq, struct spapr_pci_lsi), + + VMSTATE_END_OF_LIST() + }, +}; + +static const VMStateDescription vmstate_spapr_pci_msi = { + .name = "spapr_pci/lsi", + .version_id = 1, + .minimum_version_id = 1, + .minimum_version_id_old = 1, + .fields = (VMStateField []) { + VMSTATE_UINT32(config_addr, struct spapr_pci_msi), + VMSTATE_UINT32(irq, struct spapr_pci_msi), + VMSTATE_UINT32(nvec, struct spapr_pci_msi), + + VMSTATE_END_OF_LIST() + }, +}; + +static const VMStateDescription vmstate_spapr_pci = { + .name = "spapr_pci", + .version_id = 1, + .minimum_version_id = 1, + .minimum_version_id_old = 1, + .fields = (VMStateField []) { + VMSTATE_UINT64_EQUAL(buid, sPAPRPHBState), + VMSTATE_UINT32_EQUAL(dma_liobn, sPAPRPHBState), + VMSTATE_UINT64_EQUAL(mem_win_addr, sPAPRPHBState), + VMSTATE_UINT64_EQUAL(mem_win_size, sPAPRPHBState), + VMSTATE_UINT64_EQUAL(io_win_addr, sPAPRPHBState), + VMSTATE_UINT64_EQUAL(io_win_size, sPAPRPHBState), + VMSTATE_UINT64_EQUAL(msi_win_addr, sPAPRPHBState), + VMSTATE_STRUCT_ARRAY(lsi_table, sPAPRPHBState, PCI_NUM_PINS, 0, + vmstate_spapr_pci_lsi, struct spapr_pci_lsi), + VMSTATE_STRUCT_ARRAY(msi_table, sPAPRPHBState, SPAPR_MSIX_MAX_DEVS, 0, + vmstate_spapr_pci_msi, struct spapr_pci_msi), + + VMSTATE_END_OF_LIST() + }, +}; + static void spapr_phb_class_init(ObjectClass *klass, void *data) { SysBusDeviceClass *sdc = SYS_BUS_DEVICE_CLASS(klass); @@ -702,6 +750,7 @@ static void spapr_phb_class_init(ObjectClass *klass, void *data) sdc->init = spapr_phb_init; dc->props = spapr_phb_properties; dc->reset = spapr_phb_reset; + dc->vmsd = &vmstate_spapr_pci; } static const TypeInfo spapr_phb_info = { diff --git a/include/hw/pci-host/spapr.h b/include/hw/pci-host/spapr.h index 1e23dbf..93f9511 100644 --- a/include/hw/pci-host/spapr.h +++ b/include/hw/pci-host/spapr.h @@ -52,14 +52,14 @@ typedef struct sPAPRPHBState { sPAPRTCETable *tcet; AddressSpace iommu_as; - struct { + struct spapr_pci_lsi { uint32_t irq; } lsi_table[PCI_NUM_PINS]; - struct { + struct spapr_pci_msi { uint32_t config_addr; uint32_t irq; - int nvec; + uint32_t nvec; } msi_table[SPAPR_MSIX_MAX_DEVS]; QLIST_ENTRY(sPAPRPHBState) list;