On 07/19/2013 11:05 PM, Alexey Kardashevskiy wrote: > On 07/19/2013 11:03 PM, Paolo Bonzini wrote: >> Il 19/07/2013 14:58, Alexey Kardashevskiy ha scritto: >>> On 07/19/2013 10:50 PM, Paolo Bonzini wrote: >>>> Il 14/06/2013 12:32, Nikunj A Dadhania ha scritto: >>>>> Nikunj A Dadhania <nik...@linux.vnet.ibm.com> writes: >>>>>> commit 08521e28c7e6e8cc1f53424a0f845f58d2ed9546 >>>>>> Author: Paolo Bonzini <pbonz...@redhat.com> >>>>>> Date: Fri May 24 12:54:01 2013 +0200 >>>>>> >>>>>> memory: add big endian support to access_with_adjusted_size >>>>>> >>>>>> This will be used to split 8-byte access down to two four-byte >>>>>> accesses. >>>>>> >>>>>> Reviewed-by: Richard Henderson <r...@twiddle.net> >>>>>> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> >>>>>> >>>>>> >>>>>> If I hack the above funniness in my USB EHCI driver, somewhere down the >>>>>> qemu crashes at code introduced by this patch: >>>>>> >>>>>> Program received signal SIGSEGV, Segmentation fault. >>>>>> 0x0000000000000000 in ?? () >>>>>> (gdb) bt >>>>>> #0 0x0000000000000000 in ?? () >>>>>> #1 0x00005555557a0ea4 in access_with_adjusted_size (addr=addr@entry=12, >>>>>> value=value@entry=0x7fffd5a86680, size=size@entry=1, >>>>>> access_size_min=<optimized out>, access_size_max=<optimized out>, >>>>>> access=0x5555557a1f80 <memory_region_oldmmio_write_accessor>, >>>>>> opaque=0x5555567f8ab8) at /home/nikunj/work/power/code/qemu/memory.c:396 >>>>>> #2 0x00005555557a5ebb in memory_region_dispatch_write (size=1, data=0, >>>>>> addr=12, mr=0x5555567f8ab8) at >>>>>> /home/nikunj/work/power/code/qemu/memory.c:998 >>>>>> >>>>>> Reverting this, I can safely boot using a usb-storage device put on ehci >>>>>> controller. >>>>> >>>>> Just reverting this patch does not help though, i will need to figure >>>>> which all commits are bad. >>>> >>>> Hi Nikunj, >>>> >>>> can you try the attached patch? >>>> >>>> Alexey, with some luck it may even fix virtio-blk too. >>> >>> >>> Heh. Bad luck. The behaviour has changed slightly but it still does not >>> work. >> >> How changed? > > > See below. I am trying to debug :)
Fails here. io_mem_unassigned. Are you on any IRC? (gdb) bt #0 memory_region_access_valid (mr=0x10aee190 <io_mem_unassigned>, addr=0xd0fb0000802, size=0x2, is_write=0x0) at /home/alexey/pcipassthru/qemu-impreza/memory.c:931 #1 0x00000000103838c0 in memory_region_dispatch_read (mr=0x10aee190 <io_mem_unassigned>, addr=0xd0fb0000802, pval=0x3fffffffdd30, size=0x2) at /home/alexey/pcipassthru/qemu-impreza/memory.c:962 #2 0x0000000010387038 in io_mem_read (mr=0x10aee190 <io_mem_unassigned>, addr=0xd0fb0000802, pval=0x3fffffffdd30, size=0x2) at /home/alexey/pcipassthru/qemu-impreza/memory.c:1740 #3 0x00000000102ebde0 in lduw_phys_internal (addr=0xd0fb0000802, endian=DEVICE_NATIVE_ENDIAN) at /home/alexey/pcipassthru/qemu-impreza/exec.c:2390 #4 0x00000000102ebed8 in lduw_phys (addr=0xd0fb0000802) at /home/alexey/pcipassthru/qemu-impreza/exec.c:2422 #5 0x000000001037387c in vring_avail_idx (vq=0x10c16e30) at /home/alexey/pcipassthru/qemu-impreza/hw/virtio/virtio.c:138 #6 0x000000001037429c in virtqueue_num_heads (vq=0x10c16e30, idx=0x0) at /home/alexey/pcipassthru/qemu-impreza/hw/virtio/virtio.c:285 #7 0x0000000010374a74 in virtqueue_pop (vq=0x10c16e30, elem=0x10c34c08) at /home/alexey/pcipassthru/qemu-impreza/hw/virtio/virtio.c:441 #8 0x000000001030c1bc in virtio_blk_get_request (s=0x10c1c2f8) at /home/alexey/pcipassthru/qemu-impreza/hw/block/virtio-blk.c:118 #9 0x000000001030cfb8 in virtio_blk_handle_output (vdev=0x10c1c2f8, vq=0x10c16e30) at /home/alexey/pcipassthru/qemu-impreza/hw/block/virtio-blk.c:411 #10 0x0000000010375c48 in virtio_queue_notify_vq (vq=0x10c16e30) at /home/alexey/pcipassthru/qemu-impreza/hw/virtio/virtio.c:687 #11 0x000000001037776c in virtio_queue_host_notifier_read (n=0x10c16e80) at /home/alexey/pcipassthru/qemu-impreza/hw/virtio/virtio.c:1071 #12 0x000000001020fe74 in qemu_iohandler_poll (pollfds=0x10bb1a00, ret=0x2) at /home/alexey/pcipassthru/qemu-impreza/iohandler.c:143 #13 0x0000000010210c4c in main_loop_wait (nonblocking=0x0) at /home/alexey/pcipassthru/qemu-impreza/main-loop.c:466 #14 0x00000000102c97d4 in main_loop () at /home/alexey/pcipassthru/qemu-impreza/vl.c:2090 #15 0x00000000102d2c80 in main (argc=0x16, argv=0x3ffffffff1b8, envp=0x3ffffffff270) at /home/alexey/pcipassthru/qemu-impreza/vl.c:4432 > > SLOF ********************************************************************** > QEMU Starting > Build Date = Apr 30 2013 14:04:00 > FW Version = git-8cfdfc43f4c4c8c8 > Press "s" to enter Open Firmware. > > Populating /vdevice methods > Populating /vdevice/nvram@71000000 > > NVRAM: size=65536, fetch=200E, store=200F > Populating /vdevice/vty@71000001 > Populating /pci@800000020000000 > Adapters on 0800000020000000 > 00 0000 (D) : 1af4 1001 virtio [ block ] > No NVRAM common partition, re-initializing... > claim failed! > Using default console: /vdevice/vty@71000001 > > Welcome to Open Firmware > > Copyright (c) 2004, 2011 IBM Corporation All rights reserved. > This program and the accompanying materials are made available > under the terms of the BSD License available at > http://www.opensource.org/licenses/bsd-license.php > > > Trying to load: from: disk ... qemu-system-ppc64: Guest moved used index > from 0 to 65535 > > > -- Alexey