HomeFreeBSD

vmm: Fix AMD-vi using wrong rid range

Description

vmm: Fix AMD-vi using wrong rid range

The ACPI parsing code around rid range was wrong on assuming there is
only one pair of start/end device id range. Besides, ivhd_dev_parse()
never work as supposed. The start/end rid info was always zero.

Restructure the code to build dynamic-sized tables for each IOMMU softc
holding device entries. The device entries are enumerated to find a
suitable IOMMU unit. Operations on devices not governed (e.g. the IOMMU
unit itself) are no-op from now on. There are also a minor fix on wrong
%b formatting string usage.

Tested on my EPYC 7282.

Sponsored by: The FreeBSD Foundation
Reviewed by: grehan
Differential Revision: https://reviews.freebsd.org/D30827

Details

Provenance
khngAuthored on Jul 13 2021, 5:53 PM
Reviewer
grehan
Differential Revision
D30827: vmm: Fix AMD-vi using wrong rid range
Parents
rGca1a7e1021a9: tcp: TCP_LRO getting bad checksums and sending it in to TCP incorrectly.
Branches
Unknown
Tags
Unknown