• P
    virt: Suppress external aborts on virt-2.10 and earlier · 846690de
    Peter Maydell 提交于
    In commit c79c0a31 we enabled emulation of external aborts
    when the guest attempts to access a physical address with no
    mapped device. In commit 4672cbd7 we suppress this for
    most legacy boards to prevent breakage of previously working
    guests, but we didn't suppress it in the 'virt' board, with
    the rationale "we know that guests won't try to prod devices
    that we don't describe in the device tree or ACPI tables". This
    is mostly true, but we've had a report of a Linux guest image
    that this did break. The problem seems to be that the guest
    is (incorrectly) configured with a DEBUG_UART_PHYS value that
    tells it there is a uart at 0x10009000 (which is true for
    vexpress but not for virt), so in early bootup the kernel
    probes this bogus address.
    
    This is a misconfigured guest, so we don't need to worry
    about it too much, but we can arrange that guests that ran
    on QEMU v2.10 (before c79c0a31) will still run on
    the "virt-2.10" board model, by suppressing external aborts
    only for that version and earlier. This seems a reasonable
    compromise: "virt-2.10" is supposed to behave the same way
    that "virt" did in the 2.10 release, and making it do that
    provides a usable workaround for guests with bugs like this.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
    Message-id: 20180925144127.31965-1-peter.maydell@linaro.org
    Reviewed-by: NPhilippe Mathieu-Daudé <philmd@redhat.com>
    846690de
virt.c 74.0 KB