Re: [Qemu-devel] error kvm: virtio: trying to map MMIO memory

2011-07-20 Thread Stéphanie Ouillon

Thank you for your help, I have been able to see where was the bug !
Indeed, I was losing some address values along the way in a callback 
function whereas I thought they were kept memorized.



Regards

Stéphanie



Re: [Qemu-devel] error kvm: virtio: trying to map MMIO memory

2011-07-18 Thread Stefan Hajnoczi
2011/7/17 Stéphanie Ouillon steph.ouil...@gmail.com:
 I have been facing a problem for 3-4 days with my virtio network device
 driver in qemu: when I load the driver, I get the following error:
 kvm: virtio: trying to map MMIO memory
[...]
 Would anybody have a clue about what kind of bug would provoke this error in
 qemu ?

It means a descriptor has an addr field that is not a bus address
backed by RAM.  Instead the incorrect address is to a MMIO memory
region.  Normally all buffers that you pass via virtio are guest
physical RAM addresses, hardware mapped registers (MMIO) should not be
passed over virtio and there's usually really no reason to do that.

This suggests you are setting an incorrect address in the guest driver
or are forgetting to set the address field thereby causing a stale
value to be read by QEMU.

I suggest adding the following to qemu/hw/virtio.c:virtqueue_map_sg()
right before the if statement that checks for failed memory map:
fprintf(stderr, addr  TARGET_FMT_plx  len  TARGET_FMT_plx 
is_write %d\n, addr[i], len, is_write);

Compare the addresses that QEMU is seeing with those you have given to
virtio in the guest kernel.

It should be possible to correlate the buffers that the guest wants to
give the host with what QEMU sees.  Let us know if you need any more
help debugging.

Stefan



[Qemu-devel] error kvm: virtio: trying to map MMIO memory

2011-07-17 Thread Stéphanie Ouillon

Hello,

I am porting virtio device drivers for DragonFly BSD for a GSoC project. [1]

I have been facing a problem for 3-4 days with my virtio network device 
driver in qemu: when I load the driver, I get the following error:

kvm: virtio: trying to map MMIO memory

And then the machine crashes immediately (I started the vm in a screen 
to see this message).


It seems to be linked with the call of a bus_space_write_2 function [2] 
inside a virtio_enqueue_commit function in virtio.c [3]. But without 
more information about this type of error message (I found some patches 
or bug reports on the net, but I am not sure they match in my case), I 
found it difficult to locate it.


Would anybody have a clue about what kind of bug would provoke this 
error in qemu ?



Thank you !


Stéphanie Ouillon


[1] http://github.com/arroway/virtio_DragonFlyBSD/tree/dev-net/net
[2] source code in DragonFly BSD 
http://fxr.watson.org/fxr/source/cpu/i386/include/bus_at386.h?v=DFBSD;im=bigexcerpts#L887
[3] at l.465: 
http://github.com/arroway/virtio_DragonFlyBSD/blob/dev-net/virtio.c