fatal error: boost/algorithm/string.hpp: No such file or directory| Mahwish
On Sat, Apr 26, 2014 at 12:00 PM, <qemu-devel-requ...@nongnu.org> wrote: > Send Qemu-devel mailing list submissions to > qemu-devel@nongnu.org > > To subscribe or unsubscribe via the World Wide Web, visit > https://lists.nongnu.org/mailman/listinfo/qemu-devel > or, via email, send a message with subject or body 'help' to > qemu-devel-requ...@nongnu.org > > You can reach the person managing the list at > qemu-devel-ow...@nongnu.org > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of Qemu-devel digest..." > > > Today's Topics: > > 1. Re: [PATCH v2] usb-ohci: Add vmstate descriptor > (Alexey Kardashevskiy) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Sat, 26 Apr 2014 23:02:47 +1000 > From: Alexey Kardashevskiy <a...@ozlabs.ru> > To: qemu-devel@nongnu.org > Cc: Peter Maydell <peter.mayd...@linaro.org>, Gerd Hoffmann > <kra...@redhat.com> > Subject: Re: [Qemu-devel] [PATCH v2] usb-ohci: Add vmstate descriptor > Message-ID: <535bae77.2090...@ozlabs.ru> > Content-Type: text/plain; charset=KOI8-R > > On 04/13/2014 08:42 PM, Alexey Kardashevskiy wrote: > > This adds migration support for OHCI. > > > > This defines a descriptor for OHCIState. > > This changes some OHCIState field types to be migration compatible. > > This adds a descriptor for OHCIPort. > > This migrates the EOF timer if the USB was started at the time of > > migration. > > > > Cc: Gerd Hoffmann <kra...@redhat.com> > > Cc: Peter Maydell <peter.mayd...@linaro.org> > > Signed-off-by: Alexey Kardashevskiy <a...@ozlabs.ru> > > Ping, anyone, please? Is it bad/good/ugly? Thanks. > > > > --- > > Changes: > > v2: > > * added OHCIState migration (previously only PCI state was migrated). > > > > To test this patch, the guest booted from USB disk on a OHCI bus was > > migrated from one physical host to another (with another patch to > > correctly migrate timebase on POWERPC). The disk image was on > > an NFS share. The guest was executing "fdisk -l" in a loop. Without > > the patch, this was happening (other disk-related commands failed too): > > [root@localhost ~]# fdisk -l > > usb-ohci: HCCA read error at 0 > > ohci_die: DMA error > > > > This is the QEMU command line from the test: > > /home/aik/qemu-system-ppc64 \ > > -enable-kvm \ > > -m 1024 \ > > -machine pseries \ > > -nographic \ > > -vga none \ > > -device pci-ohci,id=id0 \ > > -drive id=id1,if=none,readonly=off,werror=stop,rerror=stop,\ > > discard=on,file=ka1/fc19_16GB.qcow2,format=qcow2 \ > > -device usb-storage,id=id2,drive=id1 \ > > > > > > > > As I am lacking knowledge of USB, please comment, especially the EOF > timer part. > > Thanks! > > > > > > --- > > hw/usb/hcd-ohci.c | 119 > ++++++++++++++++++++++++++++++++++++++++++++++++++---- > > 1 file changed, 111 insertions(+), 8 deletions(-) > > > > diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c > > index 93f186f..cd87074 100644 > > --- a/hw/usb/hcd-ohci.c > > +++ b/hw/usb/hcd-ohci.c > > @@ -80,13 +80,13 @@ typedef struct { > > uint32_t bulk_head, bulk_cur; > > uint32_t per_cur; > > uint32_t done; > > - int done_count; > > + int32_t done_count; > > > > /* Frame counter partition */ > > - uint32_t fsmps:15; > > - uint32_t fit:1; > > - uint32_t fi:14; > > - uint32_t frt:1; > > + uint16_t fsmps; > > + uint8_t fit; > > + uint16_t fi; > > + uint8_t frt; > > uint16_t frame_number; > > uint16_t padding; > > uint32_t pstart; > > @@ -111,7 +111,7 @@ typedef struct { > > USBPacket usb_packet; > > uint8_t usb_buf[8192]; > > uint32_t async_td; > > - int async_complete; > > + bool async_complete; > > > > } OHCIState; > > > > @@ -693,7 +693,7 @@ static void ohci_async_complete_packet(USBPort > *port, USBPacket *packet) > > #ifdef DEBUG_PACKET > > DPRINTF("Async packet complete\n"); > > #endif > > - ohci->async_complete = 1; > > + ohci->async_complete = true; > > ohci_process_lists(ohci, 1); > > } > > > > @@ -1058,7 +1058,7 @@ static int ohci_service_td(OHCIState *ohci, struct > ohci_ed *ed) > > #endif > > if (completion) { > > ohci->async_td = 0; > > - ohci->async_complete = 0; > > + ohci->async_complete = false; > > } else { > > if (ohci->async_td) { > > /* ??? The hardware should allow one active packet per > > @@ -1984,6 +1984,108 @@ static Property ohci_pci_properties[] = { > > DEFINE_PROP_END_OF_LIST(), > > }; > > > > +static const VMStateDescription vmstate_ohci_state_port = { > > + .name = "ohci-core/port", > > + .version_id = 1, > > + .minimum_version_id = 1, > > + .minimum_version_id_old = 1, > > + .fields = (VMStateField []) { > > + VMSTATE_UINT32(ctrl, OHCIPort), > > + VMSTATE_END_OF_LIST() > > + }, > > +}; > > + > > +static bool ohci_eof_timer_needed(void *opaque) > > +{ > > + OHCIState *ohci = opaque; > > + > > + return ohci->eof_timer != NULL; > > +} > > + > > +static int ohci_eof_timer_pre_load(void *opaque) > > +{ > > + OHCIState *ohci = opaque; > > + > > + ohci_bus_start(ohci); > > + > > + return 0; > > +} > > + > > +static const VMStateDescription vmstate_ohci_eof_timer = { > > + .name = "ohci-core/eof-timer", > > + .version_id = 1, > > + .minimum_version_id = 1, > > + .minimum_version_id_old = 1, > > + .pre_load = ohci_eof_timer_pre_load, > > + .fields = (VMStateField []) { > > + VMSTATE_TIMER(eof_timer, OHCIState), > > + VMSTATE_END_OF_LIST() > > + }, > > +}; > > + > > +const VMStateDescription vmstate_ohci_state = { > > + .name = "ohci-core", > > + .version_id = 1, > > + .minimum_version_id = 1, > > + .fields = (VMStateField[]) { > > + VMSTATE_INT64(sof_time, OHCIState), > > + VMSTATE_UINT32(ctl, OHCIState), > > + VMSTATE_UINT32(status, OHCIState), > > + VMSTATE_UINT32(intr_status, OHCIState), > > + VMSTATE_UINT32(intr, OHCIState), > > + VMSTATE_UINT32(hcca, OHCIState), > > + VMSTATE_UINT32(ctrl_head, OHCIState), > > + VMSTATE_UINT32(ctrl_cur, OHCIState), > > + VMSTATE_UINT32(bulk_head, OHCIState), > > + VMSTATE_UINT32(bulk_cur, OHCIState), > > + VMSTATE_UINT32(per_cur, OHCIState), > > + VMSTATE_UINT32(done, OHCIState), > > + VMSTATE_INT32(done_count, OHCIState), > > + VMSTATE_UINT16(fsmps, OHCIState), > > + VMSTATE_UINT8(fit, OHCIState), > > + VMSTATE_UINT16(fi, OHCIState), > > + VMSTATE_UINT8(frt, OHCIState), > > + VMSTATE_UINT16(frame_number, OHCIState), > > + VMSTATE_UINT16(padding, OHCIState), > > + VMSTATE_UINT32(pstart, OHCIState), > > + VMSTATE_UINT32(lst, OHCIState), > > + VMSTATE_UINT32(rhdesc_a, OHCIState), > > + VMSTATE_UINT32(rhdesc_b, OHCIState), > > + VMSTATE_UINT32(rhstatus, OHCIState), > > + VMSTATE_STRUCT_ARRAY(rhport, OHCIState, OHCI_MAX_PORTS, 0, > > + vmstate_ohci_state_port, OHCIPort), > > + VMSTATE_UINT32(hstatus, OHCIState), > > + VMSTATE_UINT32(hmask, OHCIState), > > + VMSTATE_UINT32(hreset, OHCIState), > > + VMSTATE_UINT32(htest, OHCIState), > > + VMSTATE_UINT32(old_ctl, OHCIState), > > + VMSTATE_UINT8_ARRAY(usb_buf, OHCIState, 8192), > > + VMSTATE_UINT32(async_td, OHCIState), > > + VMSTATE_BOOL(async_complete, OHCIState), > > + VMSTATE_END_OF_LIST() > > + }, > > + .subsections = (VMStateSubsection []) { > > + { > > + .vmsd = &vmstate_ohci_eof_timer, > > + .needed = ohci_eof_timer_needed, > > + } , { > > + /* empty */ > > + } > > + } > > +}; > > + > > +static const VMStateDescription vmstate_ohci = { > > + .name = "ohci", > > + .version_id = 1, > > + .minimum_version_id = 1, > > + .minimum_version_id_old = 1, > > + .fields = (VMStateField[]) { > > + VMSTATE_PCI_DEVICE(parent_obj, OHCIPCIState), > > + VMSTATE_STRUCT(state, OHCIPCIState, 1, vmstate_ohci_state, > OHCIState), > > + VMSTATE_END_OF_LIST() > > + } > > +}; > > + > > static void ohci_pci_class_init(ObjectClass *klass, void *data) > > { > > DeviceClass *dc = DEVICE_CLASS(klass); > > @@ -1997,6 +2099,7 @@ static void ohci_pci_class_init(ObjectClass > *klass, void *data) > > dc->desc = "Apple USB Controller"; > > dc->props = ohci_pci_properties; > > dc->hotpluggable = false; > > + dc->vmsd = &vmstate_ohci; > > } > > > > static const TypeInfo ohci_pci_info = { > > > > > -- > Alexey > > > > ------------------------------ > > _______________________________________________ > Qemu-devel mailing list > Qemu-devel@nongnu.org > https://lists.nongnu.org/mailman/listinfo/qemu-devel > > > End of Qemu-devel Digest, Vol 133, Issue 739 > ******************************************** >