• Luben Tuikov's avatar
    drm/amdgpu: Optimize EEPROM RAS table I/O · 63d4c081
    Luben Tuikov authored
    Split functionality between read and write, which
    simplifies the code and exposes areas of
    optimization and more or less complexity, and take
    advantage of that.
    
    Read and write the table in one go; use a separate
    stage to decode or encode the data, as opposed to
    on the fly, which keeps the I2C bus busy. Use a
    single read/write to read/write the table or at
    most two if the number of records we're
    reading/writing wraps around.
    
    Check the check-sum of a table in EEPROM on init.
    
    Update the checksum at the same time as when
    updating the table header signature, when the
    threshold was increased on boot.
    
    Take advantage of arithmetic modulo 256, that is,
    use a byte!, to greatly simplify checksum
    arithmetic.
    
    Cc: Alexander Deucher <Alexander.Deucher@amd.com>
    Cc: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com>
    Signed-off-by: default avatarLuben Tuikov <luben.tuikov@amd.com>
    Acked-by: default avatarAlexander Deucher <Alexander.Deucher@amd.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    63d4c081
amdgpu_ras_eeprom.c 24.1 KB