Skip to content

Commit

Permalink
smmu: Clear SMMUPciBus pointer cache when system reset
Browse files Browse the repository at this point in the history
s->smmu_pcibus_by_bus_num is a SMMUPciBus pointer cache indexed
by bus number, bus number may not always be a fixed value,
i.e., guest reboot to different kernel which set bus number with
different algorithm.

This could lead to smmu_iommu_mr() providing the wrong iommu MR.

Suggested-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Message-Id: <20240125073706.339369-3-zhenzhong.duan@intel.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
(cherry picked from commit 8a6b3f4)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
  • Loading branch information
duanzhenzhong authored and Michael Tokarev committed Feb 15, 2024
1 parent 10981da commit 3004edc
Showing 1 changed file with 2 additions and 0 deletions.
2 changes: 2 additions & 0 deletions hw/arm/smmu-common.c
Original file line number Diff line number Diff line change
Expand Up @@ -529,6 +529,8 @@ static void smmu_base_reset(DeviceState *dev)
{
SMMUState *s = ARM_SMMU(dev);

memset(s->smmu_pcibus_by_bus_num, 0, sizeof(s->smmu_pcibus_by_bus_num));

g_hash_table_remove_all(s->configs);
g_hash_table_remove_all(s->iotlb);
}
Expand Down

0 comments on commit 3004edc

Please sign in to comment.