Re: [PATCH RFC v4 00/13] virtio-mem: paravirtualized memory

From: David Hildenbrand
Date: Fri Jun 05 2020 - 05:09:18 EST


On 05.06.20 10:55, Alex Shi wrote:
>
>
> å 2020/1/9 äå9:48, David Hildenbrand åé:
>> Ping,
>>
>> I'd love to get some feedback on
>>
>> a) The remaining MM bits from MM folks (especially, patch #6 and #8).
>> b) The general virtio infrastructure (esp. uapi in patch #2) from virtio
>> folks.
>>
>> I'm planning to send a proper v1 (!RFC) once I have all necessary MM
>> acks. In the meanwhile, I will do more testing and minor reworks (e.g.,
>> fix !CONFIG_NUMA compilation).
>
>
> Hi David,
>
> Thanks for your work!
>
> I am trying your https://github.com/davidhildenbrand/linux.git virtio-mem-v5
> which works fine for me, but just a 'DMA error' happens when a vm start with
> less than 2GB memory, Do I missed sth?

Please use the virtio-mem-v4 branch for now, v5 is still under
construction (and might be scrapped completely if v4 goes upstream as is).

Looks like a DMA issue. Your're hotplugging 1GB, which should not really
eat too much memory. There was a similar issue reported by Hui in [1],
which boiled down to wrong usage of the swiotlb parameter.

In such cases you should always try to reproduce with hotplug of a
sam-sized DIMM. E.g., hotplugging a 1GB DIMM should result in the same
issue.

What does your .config specify for CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE?

I'll try to reproduce with v4 briefly.

[1]
https://lkml.kernel.org/r/9708F43A-9BD2-4377-8EE8-7FB1D95C6F69@xxxxxxxxxxxxxxxxx

>
> Thanks
> Alex
>
>
> (qemu) qom-set vm0 requested-size 1g
> (qemu) [ 26.560026] virtio_mem virtio0: plugged size: 0x0
> [ 26.560648] virtio_mem virtio0: requested size: 0x40000000
> [ 26.561730] systemd-journald[167]: no db file to read /run/udev/data/+virtio:virtio0: No such file or directory
> [ 26.563138] systemd-journald[167]: no db file to read /run/udev/data/+virtio:virtio0: No such file or directory
> [ 26.569122] Built 1 zonelists, mobility grouping on. Total pages: 513141
> [ 26.570039] Policy zone: Normal
>
> (qemu) [ 32.175838] e1000 0000:00:03.0: swiotlb buffer is full (sz: 81 bytes), total 0 (slots), used 0 (slots)
> [ 32.176922] e1000 0000:00:03.0: TX DMA map failed
> [ 32.177488] e1000 0000:00:03.0: swiotlb buffer is full (sz: 81 bytes), total 0 (slots), used 0 (slots)
> [ 32.178535] e1000 0000:00:03.0: TX DMA map failed
>
> my qemu command is like this:
> qemu-system-x86_64 --enable-kvm \
> -m 2G,maxmem=16G -kernel /root/linux-next/$1/arch/x86/boot/bzImage \
> -smp 4 \
> -append "earlyprintk=ttyS0 root=/dev/sda1 console=ttyS0 debug psi=1 nokaslr ignore_loglevel" \
> -hda /root/CentOS-7-x86_64-Azure-1703.qcow2 \
> -net user,hostfwd=tcp::2222-:22 -net nic -s \
> -object memory-backend-ram,id=mem0,size=3G \
> -device virtio-mem-pci,id=vm0,memdev=mem0,node=0,requested-size=0M \
> --nographic
>
>


--
Thanks,

David / dhildenb