Page MenuHomeFreeBSD

x86: avoid domains with no usable CPUs
AbandonedPublic

Authored by emaste on Aug 18 2023, 3:14 AM.
Tags
None
Referenced Files
Unknown Object (File)
Sat, Jan 4, 2:42 PM
Unknown Object (File)
Dec 5 2024, 4:32 AM
Unknown Object (File)
Nov 16 2024, 9:55 AM
Unknown Object (File)
Nov 16 2024, 9:29 AM
Unknown Object (File)
Nov 16 2024, 8:41 AM
Unknown Object (File)
Nov 16 2024, 6:25 AM
Unknown Object (File)
Nov 15 2024, 12:39 PM
Unknown Object (File)
Sep 26 2024, 7:38 AM
Subscribers
None

Details

Reviewers
jhb
markj
Summary

If we limit the CPUs which will receive interrupts we may have a domain with no usable CPUs. Allow any allowable CPU to be used when requesting a CPU for such a domain.

Diff Detail

Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

emaste created this revision.

I was thinking of adding a tunable to have set_interrupt_apic_ids skip APIC IDs > 255. However, this may result in a &cpuset[domain] that has no common entries with &intr_cpus, hence this review. Very happy to hear of other ideas for a usable workaround for this APIC ID > 255 issue.

Or maybe something simpler - if we find an unusable domain fall back to no per-domain lists. D41501

sys/x86/x86/intr_machdep.c
587

I think you can replace this loop with domain_usable[i] = CPU_OVERLAP(&cpuset_domain[i], &intr_cpus);.

589

Maybe "CPUs from domain %d cannot service interrupts"? "has no usable CPUs" sounds scary and might confuse users.

sys/x86/x86/intr_machdep.c
587

I think I prefer the D41501 approach, but will apply both of these comments there

oops updated wrong review - restore this diff

Hmm, my suggestion over in D41501 is a hybrid of both approaches I think.