• L
    i386/acpi-build: fix PXB workarounds for unsupported BIOSes · 4ebc736e
    Laszlo Ersek 提交于
    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: NLaszlo Ersek <lersek@redhat.com>
    Reviewed-by: NMarcel Apfelbaum <marcel@redhat.com>
    Reviewed-by: NMichael S. Tsirkin <mst@redhat.com>
    Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
    4ebc736e
acpi-build.c 67.2 KB