• John Harrison's avatar
    drm/i915/uc: Enhancements to firmware table validation · edba7789
    John Harrison authored
    The validation of the firmware table was being done inside the code
    for scanning the table for the next available firmware blob. Which is
    unnecessary. So pull it out into a separate function that is only
    called once per blob type at init time.
    
    Also, drop the CONFIG_SELFTEST requirement and make errors terminal.
    It was mentioned that potential issues with backports would not be
    caught by regular pre-merge CI as that only occurs on tip not stable
    branches. Making the validation unconditional and failing driver load
    on detecting of a problem ensures that such backports will also be
    validated correctly.
    
    This requires adding a firmware global flag to indicate an issue with
    any of the per firmware tables. This is done rather than adding a new
    state enum as a new enum value would be a much more invasive change -
    lots of places would need updating to support the new error state.
    
    Note also that this change means that a table error will cause the
    driver to wedge even on platforms that don't require firmware files.
    This is intentional as per the above backport concern - someone doing
    backports is not guaranteed to test on every platform that they may
    potential affect. So forcing a failure on all platforms ensures that
    the problem will be noticed and corrected immediately.
    
    v2: Change to unconditionally fail module load on a validation error
    (review feedback/discussion with Daniele).
    v3: Add a new flag to track table validation errors (review
    feedback/discussion with Daniele).
    Signed-off-by: default avatarJohn Harrison <John.C.Harrison@Intel.com>
    Reviewed-by: default avatarDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230502234007.1762014-5-John.C.Harrison@Intel.com
    edba7789
intel_uc.c 18.7 KB