• Jan Vesely's avatar
    drm/nouveau/bios: fix fetching from acpi on certain systems · 4195f406
    Jan Vesely authored
    nvbios_extend() returns 1 to indicate "extended the array" and 0 to
    indicate the array is already big enough.  This is used by the core
    shadowing code to prevent re-fetching chunks of the image that have
    already been shadowed.
    
    The ACPI fetching code may possibly need to extend this further due
    to requiring fetches to happen in 4KiB chunks.
    
    Under certain circumstances (that happen if the total image size is
    a multiple of 4KiB), the memory allocated to store the shadow will
    already be big enough, causing the ACPI code's nvbios_extend() call
    to return 0, which is misinterpreted as a failure.
    
    The fix is simple, accept >= 0 as a successful condition here.  The
    core will have already made sure that we're not re-fetching data we
    already have.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89047
    
    v2 (Ben Skeggs):
    - dropped hunk which would cause unnecessary re-fetching
    - more descriptive explanation
    Signed-off-by: default avatarJan Vesely <jano.vesely@gmail.com>
    Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
    4195f406
shadowacpi.c 3.11 KB