Page MenuHomeFreeBSD

amd64: Remove support for "nooptions SMP"
ClosedPublic

Authored by markj on Jul 18 2025, 1:35 AM.
Tags
None
Referenced Files
Unknown Object (File)
Sun, Aug 3, 10:18 PM
Unknown Object (File)
Mon, Jul 28, 8:14 PM
Unknown Object (File)
Mon, Jul 28, 6:42 PM
Unknown Object (File)
Mon, Jul 28, 5:43 PM
Unknown Object (File)
Mon, Jul 28, 4:45 PM
Unknown Object (File)
Mon, Jul 28, 4:42 PM
Unknown Object (File)
Mon, Jul 28, 3:45 PM
Unknown Object (File)
Mon, Jul 28, 2:58 PM

Details

Summary

It does not appear to get much, if any, testing, and doesn't seem to be
worth the maintenance overhead. Virtually all amd64 hardware has
multiple cores. The CPU and memory usage overhead of the SMP option in
single-vCPU VMs is very marginal and not worth maintaining.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 65569
Build 62452: arc lint + arc unit

Event Timeline

markj requested review of this revision.Jul 18 2025, 1:35 AM
kib added inline comments.
sys/amd64/amd64/trap.c
901

Do anybody understand this comment?

This revision is now accepted and ready to land.Jul 18 2025, 3:35 AM

I assume the pmap changes are implicitly included in the patches to be committed.

In D51403#1173721, @kib wrote:

I assume the pmap changes are implicitly included in the patches to be committed.

Yes. I'll commit this together with D51345.

sys/amd64/amd64/trap.c
901

My guess is that "separate" means "separate from the main printf(Fatal trap %d...)" above. This way we get some output if PCPU accesses trigger a recursive trap. There is a similar pattern in the double fault handler.

Remove the MINIMALUP kernel config too

This revision now requires review to proceed.Jul 18 2025, 8:02 PM
kib added inline comments.
sys/amd64/amd64/trap.c
901

From my reading, the sentence somehow emphases the 'two' prints part.

This revision is now accepted and ready to land.Jul 18 2025, 10:37 PM
This revision was automatically updated to reflect the committed changes.

Thus things i386 continue to disappear. I suspect AT PIC support should have been removed from AMD64 first. While some AMD64 systems may have working AT PICs, they're near-certain to have local-APICs even on single-processor systems. About the only reason to keep AT PIC building in AMD64 LINT builds is to flag source breakage sooner. I'm presently unable to do any sort of runtime testing of AT PIC since I was unable to get the driver to try loading under any formulation of Qemu.

rG:fa02551dc8a029a74eb374c418dbb5401d53c2db didn't get Phabricator to close D51345.

Thus things i386 continue to disappear. I suspect AT PIC support should have been removed from AMD64 first. While some AMD64 systems may have working AT PICs, they're near-certain to have local-APICs even on single-processor systems. About the only reason to keep AT PIC building in AMD64 LINT builds is to flag source breakage sooner. I'm presently unable to do any sort of runtime testing of AT PIC since I was unable to get the driver to try loading under any formulation of Qemu.

rG:fa02551dc8a029a74eb374c418dbb5401d53c2db didn't get Phabricator to close D51345.

You can test 8259A with bhyve, both with and without ACPI, but it's a bit of a PITA. (You might have to build a custom kernel for amd64 for some of the configurations IIRC.) However, i386 kernel support is definitely going away in 15.0 as has been clearly documented.