• Jorge Lopez's avatar
    platform/x86: hp-wmi: Resolve WMI query failures on some devices · dc6a6ab5
    Jorge Lopez authored
    WMI queries fail on some devices where the ACPI method HWMC
    unconditionally attempts to create Fields beyond the buffer
    if the buffer is too small, this breaks essential features
    such as power profiles:
    
             CreateByteField (Arg1, 0x10, D008)
             CreateByteField (Arg1, 0x11, D009)
             CreateByteField (Arg1, 0x12, D010)
             CreateDWordField (Arg1, 0x10, D032)
             CreateField (Arg1, 0x80, 0x0400, D128)
    
    In cases where args->data had zero length, ACPI BIOS Error
    (bug): AE_AML_BUFFER_LIMIT, Field [D008] at bit
    offset/length 128/8 exceeds size of target Buffer (128 bits)
    (20211217/dsopcode-198) was obtained.
    
    ACPI BIOS Error (bug): AE_AML_BUFFER_LIMIT, Field [D009] at bit
    offset/length 136/8 exceeds size of target Buffer (136bits)
    (20211217/dsopcode-198)
    
    The original code created a buffer size of 128 bytes regardless if
    the WMI call required a smaller buffer or not.  This particular
    behavior occurs in older BIOS and reproduced in OMEN laptops.  Newer
    BIOS handles buffer sizes properly and meets the latest specification
    requirements.  This is the reason why testing with a dynamically
    allocated buffer did not uncover any failures with the test systems at
    hand.
    
    This patch was tested on several OMEN, Elite, and Zbooks.  It was
    confirmed the patch resolves HPWMI_FAN GET/SET calls in an OMEN
    Laptop 15-ek0xxx.  No problems were reported when testing on several Elite
    and Zbooks notebooks.
    
    Fixes: 4b4967cb ("platform/x86: hp-wmi: Changing bios_args.data to be dynamically allocated")
    Signed-off-by: default avatarJorge Lopez <jorge.lopez2@hp.com>
    Reviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
    Link: https://lore.kernel.org/r/20220608212923.8585-2-jorge.lopez2@hp.comReviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    dc6a6ab5
hp-wmi.c 35.2 KB