i386/acpi-build: fix PXB workarounds for unsupported BIOSes
commit4ebc736e9938a7e88ecc785734b17145bf802a56
authorLaszlo Ersek <lersek@redhat.com>
Thu, 11 Jun 2015 00:37:59 +0000 (11 02:37 +0200)
committerMichael S. Tsirkin <mst@redhat.com>
Thu, 11 Jun 2015 10:40:30 +0000 (11 12:40 +0200)
tree7fb191353036df4b1021a4095a36135287b90c98
parentc96d9286a6d70452e5fa4f1e3f840715e325be95
i386/acpi-build: fix PXB workarounds for unsupported BIOSes

The patch

  apci: fix PXB behaviour if used with unsupported BIOS

uses the following condition to see if a "PXB mem/IO chunk" has *not* been
configured by the BIOS:

  (!range_base || range_base > range_limit)

When this condition evaluates to true, said patch *omits* the
corresponding entry from the _CRS.

Later on the patch checks for the opposite condition (with the intent of
*adding* entries to the _CRS if the "PXB mem/IO chunks" *have* been
configured). Unfortunately, the condition was negated incorrectly: only
the first ! operator was removed, which led to the nonsensical expression

  (range_base || range_base > range_limit)

leading to bogus entries in the _CRS, and causing BSOD in Windows Server
2012 R2 when it runs on OVMF.

The correct negative of the condition seen at the top is

  (range_base && range_base <= range_limit)

Fix the expressions.

Cc: Marcel Apfelbaum <marcel@redhat.com>
Cc: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
hw/i386/acpi-build.c