On 04/27/2014 07:13 AM, Muhammad Irshad wrote: > fatal error: boost/algorithm/string.hpp: No such file or directory|
Error doing what? Why hpp? This is plain C, not C++. What is your GCC version? Or it is not GCC at all? > 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 >> ******************************************** >> > -- Alexey