• Fenghua Yu's avatar
    dmaengine: idxd: Remove shadow Event Log head stored in idxd · ecec7c9f
    Fenghua Yu authored
    head is defined in idxd->evl as a shadow of head in the EVLSTATUS register.
    There are two issues related to the shadow head:
    
    1. Mismatch between the shadow head and the state of the EVLSTATUS
       register:
       If Event Log is supported, upon completion of the Enable Device command,
       the Event Log head in the variable idxd->evl->head should be cleared to
       match the state of the EVLSTATUS register. But the variable is not reset
       currently, leading mismatch between the variable and the register state.
       The mismatch causes incorrect processing of Event Log entries.
    
    2. Unnecessary shadow head definition:
       The shadow head is unnecessary as head can be read directly from the
       EVLSTATUS register. Reading head from the register incurs no additional
       cost because event log head and tail are always read together and
       tail is already read directly from the register as required by hardware.
    
    Remove the shadow Event Log head stored in idxd->evl to address the
    mentioned issues.
    
    Fixes: 244da66c ("dmaengine: idxd: setup event log configuration")
    Signed-off-by: default avatarFenghua Yu <fenghua.yu@intel.com>
    Reviewed-by: default avatarDave Jiang <dave.jiang@intel.com>
    Link: https://lore.kernel.org/r/20240215024931.1739621-1-fenghua.yu@intel.comSigned-off-by: default avatarVinod Koul <vkoul@kernel.org>
    ecec7c9f
cdev.c 16.1 KB