Page MenuHomeFreeBSD

x86: avoid domains with no usable CPUs
AbandonedPublic

Authored by emaste on Aug 18 2023, 3:14 AM.
Tags
None
Referenced Files
F102662168: D41500.diff
Fri, Nov 15, 12:39 PM
Unknown Object (File)
Sep 26 2024, 7:38 AM
Unknown Object (File)
Sep 22 2024, 7:22 AM
Unknown Object (File)
Sep 21 2024, 6:03 PM
Unknown Object (File)
Sep 21 2024, 4:18 PM
Unknown Object (File)
Sep 21 2024, 3:53 PM
Unknown Object (File)
Sep 18 2024, 6:33 PM
Unknown Object (File)
Sep 18 2024, 5:03 PM
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.