amd_iommu: Fix Device ID decoding for INVALIDATE_IOTLB_PAGES command
The DeviceID bits are extracted using an incorrect offset in the call to amdvi_iotlb_remove_page(). This field is read (correctly) earlier, so use the value already retrieved for devid. Cc: qemu-stable@nongnu.org Fixes:d29a09ca68("hw/i386: Introduce AMD IOMMU") Signed-off-by: Alejandro Jimenez <alejandro.j.jimenez@oracle.com> Reviewed-by: Vasant Hegde <vasant.hegde@amd.com> Message-Id: <20250617150427.20585-3-alejandro.j.jimenez@oracle.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> (cherry picked from commitc63b8d1425) Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
This commit is contained in:
parent
10a9eedc20
commit
1ca9d2e0c2
1 changed files with 2 additions and 2 deletions
|
|
@ -508,7 +508,7 @@ static void amdvi_inval_inttable(AMDVIState *s, uint64_t *cmd)
|
|||
static void iommu_inval_iotlb(AMDVIState *s, uint64_t *cmd)
|
||||
{
|
||||
|
||||
uint16_t devid = extract64(cmd[0], 0, 16);
|
||||
uint16_t devid = cpu_to_le16(extract64(cmd[0], 0, 16));
|
||||
if (extract64(cmd[1], 1, 1) || extract64(cmd[1], 3, 1) ||
|
||||
extract64(cmd[1], 6, 6)) {
|
||||
amdvi_log_illegalcom_error(s, extract64(cmd[0], 60, 4),
|
||||
|
|
@ -521,7 +521,7 @@ static void iommu_inval_iotlb(AMDVIState *s, uint64_t *cmd)
|
|||
&devid);
|
||||
} else {
|
||||
amdvi_iotlb_remove_page(s, cpu_to_le64(extract64(cmd[1], 12, 52)) << 12,
|
||||
cpu_to_le16(extract64(cmd[1], 0, 16)));
|
||||
devid);
|
||||
}
|
||||
trace_amdvi_iotlb_inval();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue