HomeFreeBSD

x86: handle domains with no CPUs usable for intr delivery

Description

x86: handle domains with no CPUs usable for intr delivery

We can end up with a domain having no CPUs capable of receiving I/O
interrupts. This can occur, for example, when all APIC IDs in a given
domain are 256 or greater, and we have no IOMMU.

In this case disable per-domain interrupt support, effectively reverting
to the behaviour before commit a48de40bcc09 ("Only use CPUs in the
domain the device is attached to for default"). This has a performance
impact but at least allows the system to be functional. It is a stop-
gap until we can rely on the presence of an IOMMU on all x86 platforms.

Thanks to AMD for providing the high-thread-count machine I used for
testing this change, and to cperciva for testing on other hardware.

Reviewed by: jhb
Tested by: cperciva, emaste
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D41501

Details

Provenance
emasteAuthored on Aug 18 2023, 3:29 AM
Reviewer
jhb
Differential Revision
D41501: x86: handle domain with no CPUs usable for intr delivery
Parents
rGb404e0300706: share/man/man7/simd.7: document new amd64 memcmp/bcmp baseline routines
Branches
Unknown
Tags
Unknown