[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2] hw/pci-host/q35: Ignore write of reserved PCIEXBAR LENGTH
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH v2] hw/pci-host/q35: Ignore write of reserved PCIEXBAR LENGTH field |
Date: |
Mon, 14 Jun 2021 13:14:51 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 |
ping?
On 5/26/21 4:24 PM, Philippe Mathieu-Daudé wrote:
> libFuzzer triggered the following assertion:
>
> cat << EOF | qemu-system-i386 -M pc-q35-5.0 \
> -nographic -monitor none -serial none \
> -qtest stdio -d guest_errors -trace pci\*
> outl 0xcf8 0xf2000060
> outl 0xcfc 0x8400056e
> EOF
> pci_cfg_write mch 00:0 @0x60 <- 0x8400056e
> Aborted (core dumped)
>
> This is because guest wrote MCH_HOST_BRIDGE_PCIEXBAR_LENGTH_RVD
> (reserved value) to the PCIE XBAR register.
>
> There is no indication on the datasheet about what occurs when
> this value is written. Simply ignore it on QEMU (and report an
> guest error):
>
> pci_cfg_write mch 00:0 @0x60 <- 0x8400056e
> Q35: Reserved PCIEXBAR LENGTH
> pci_cfg_read mch 00:0 @0x0 -> 0x8086
> pci_cfg_read mch 00:0 @0x0 -> 0x29c08086
> ...
>
> Cc: qemu-stable@nongnu.org
> Reported-by: Alexander Bulekov <alxndr@bu.edu>
> BugLink: https://bugs.launchpad.net/qemu/+bug/1878641
> Fixes: df2d8b3ed4 ("q35: Introduce q35 pc based chipset emulator")
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> v2: Do not remove default case (rth)
> ---
> hw/pci-host/q35.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/hw/pci-host/q35.c b/hw/pci-host/q35.c
> index 2eb729dff58..0f37cf056a9 100644
> --- a/hw/pci-host/q35.c
> +++ b/hw/pci-host/q35.c
> @@ -29,6 +29,7 @@
> */
>
> #include "qemu/osdep.h"
> +#include "qemu/log.h"
> #include "hw/i386/pc.h"
> #include "hw/pci-host/q35.h"
> #include "hw/qdev-properties.h"
> @@ -318,6 +319,8 @@ static void mch_update_pciexbar(MCHPCIState *mch)
> addr_mask |= MCH_HOST_BRIDGE_PCIEXBAR_64ADMSK;
> break;
> case MCH_HOST_BRIDGE_PCIEXBAR_LENGTH_RVD:
> + qemu_log_mask(LOG_GUEST_ERROR, "Q35: Reserved PCIEXBAR LENGTH\n");
> + return;
> default:
> abort();
> }
>
- Re: [PATCH v2] hw/pci-host/q35: Ignore write of reserved PCIEXBAR LENGTH field,
Philippe Mathieu-Daudé <=