summaryrefslogtreecommitdiffstats
path: root/virt/kvm
diff options
context:
space:
mode:
authorOded Gabbay <oded.gabbay@amd.com>2014-11-10 12:21:39 +0200
committerJoerg Roedel <jroedel@suse.de>2014-11-12 14:58:33 +0100
commit1c51099a427dc8bfee917b2d0e53ad3fafbb930d (patch)
treea53eb05b225c532e1e0b6da9b2db6c5e15cafafb /virt/kvm
parent206c5f60a3d902bc4b56dab2de3e88de5eb06108 (diff)
downloadlinux-1c51099a427dc8bfee917b2d0e53ad3fafbb930d.tar.bz2
iommu/amd: Fix accounting of device_state
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: Oded Gabbay <oded.gabbay@amd.com> Signed-off-by: Joerg Roedel <jroedel@suse.de>
Diffstat (limited to 'virt/kvm')
0 files changed, 0 insertions, 0 deletions