• D
    NUMA: Enable adding NUMA node implicitly · 7b8be49d
    Dou Liyang 提交于
    Linux and Windows need ACPI SRAT table to make memory hotplug work properly,
    however currently QEMU doesn't create SRAT table if numa options aren't present
    on CLI.
    
    Which breaks both linux and windows guests in certain conditions:
     * Windows: won't enable memory hotplug without SRAT table at all
     * Linux: if QEMU is started with initial memory all below 4Gb and no SRAT table
       present, guest kernel will use nommu DMA ops, which breaks 32bit hw drivers
       when memory is hotplugged and guest tries to use it with that drivers.
    
    Fix above issues by automatically creating a numa node when QEMU is started with
    memory hotplug enabled but without '-numa' options on CLI.
    (PS: auto-create numa node only for new machine types so not to break migration).
    
    Which would provide SRAT table to guests without explicit -numa options on CLI
    and would allow:
     * Windows: to enable memory hotplug
     * Linux: switch to SWIOTLB DMA ops, to bounce DMA transfers to 32bit allocated
       buffers that legacy drivers/hw can handle.
    
    [Rewritten by Igor]
    Reported-by: NThadeu Lima de Souza Cascardo <cascardo@canonical.com>
    Suggested-by: NIgor Mammedov <imammedo@redhat.com>
    Signed-off-by: NDou Liyang <douly.fnst@cn.fujitsu.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Richard Henderson <rth@twiddle.net>
    Cc: Eduardo Habkost <ehabkost@redhat.com>
    Cc: "Michael S. Tsirkin" <mst@redhat.com>
    Cc: Marcel Apfelbaum <marcel@redhat.com>
    Cc: Igor Mammedov <imammedo@redhat.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Thomas Huth <thuth@redhat.com>
    Cc: Alistair Francis <alistair23@gmail.com>
    Cc: Takao Indoh <indou.takao@jp.fujitsu.com>
    Cc: Izumi Taku <izumi.taku@jp.fujitsu.com>
    Reviewed-by: NIgor Mammedov <imammedo@redhat.com>
    Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
    Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
    7b8be49d
boards.h 10.7 KB