• O
    iommu/amd: Fix accounting of device_state · 1c51099a
    Oded Gabbay 提交于
    This patch fixes a bug in the accounting of the
    device_state.  In the current code, the device_state was put
    (decremented) too many times, which sometimes lead to the
    driver getting stuck permanently in put_device_state_wait().
    That happen because the device_state->count would go below
    zero, which is never supposed to happen.
    
    The root cause is that the device_state was decremented in
    put_pasid_state() and put_pasid_state_wait() but also in all
    the functions that call those functions. Therefore, the
    device_state was decremented twice in each of these code
    paths.
    
    The fix is to decouple the device_state accounting from the
    pasid_state accounting - remove the call to
    put_device_state() from the put_pasid_state() and the
    put_pasid_state_wait())
    Signed-off-by: NOded Gabbay <oded.gabbay@amd.com>
    Signed-off-by: NJoerg Roedel <jroedel@suse.de>
    1c51099a
amd_iommu_v2.c 22.3 KB