third_party/linux: increase maximum CPUs to 512

Server CPUs with more than 64 cores are very common, so we need to bump
this. Linux technically supports up to 8192 cores (x86_64) or 4096 cores
(arm64), but only with offstack CPU masks. These have some known
functional and performance issues and thus should only be enabled when
needed. For arbitrary reasons [1] this limit is 256 on ARM64 and 512 on
x86_64. Since we need a 512 limit on all architectures this places us in
the unfortunate situation of needing to enable offstack for ARM64 but
not for x86_64. This aligns with other distros like Google's COS and
Clear Linux, but is unfortunate. We do not increase the ARM64 limit
further as despite offstack being selected, some drivers (like mlx5) do
still keep these structures on the stack [2].

[1] https://lore.kernel.org/linux-arm-kernel/ZfiFMr8s68cf2uac@arm.com/T/#t
[2] https://lore.kernel.org/all/20250620111010.3364606-1-arnd@kernel.org/

Change-Id: I78a8b3b886ddb15f8bdd919c3806a3416e5cf943
Reviewed-on: https://review.monogon.dev/c/monogon/+/4396
Reviewed-by: Jan Schär <jan@monogon.tech>
Tested-by: Jenkins CI
2 files changed
tree: 7d622c8d6d58877d35134300b917c6cdf983e3dc
  1. .github/
  2. .vscode/
  3. build/
  4. cloud/
  5. go/
  6. intellij/
  7. metropolis/
  8. osbase/
  9. third_party/
  10. tools/
  11. version/
  12. .bazelignore
  13. .bazelproject
  14. .bazelrc
  15. .bazelrc.ci
  16. .bazelrc.sandboxroot
  17. .bazelversion
  18. .git-ignore-revs
  19. .gitignore
  20. BUILD.bazel
  21. CODING_STANDARDS.md
  22. go.mod
  23. go.sum
  24. LICENSE
  25. MODULE.bazel
  26. MODULE.bazel.lock
  27. README.md
  28. SETUP.md
  29. shell.nix
  30. WORKSPACE
README.md

Monogon Monorepo

This is the main repository containing the source code for the Monogon Platform.

This is pre-release software - take a look, and check back later! In the meantime, join us on Matrix (#monogon-os-community:matrix.org) or Discord.

Environment

Our build environment is self-contained and requires only minimal host dependencies:

  • A Linux machine or VM.
  • Bazelisk >= v1.15.0 (or a working Nix environment).
  • A reasonably recent kernel with user namespaces enabled.
  • Working KVM with access to /dev/kvm (if you want to run tests).

Our docs assume that Bazelisk is available as bazel on your PATH.

Refer to SETUP.md for detailed instructions.

Monogon OS

The source code lives in //metropolis (Metropolis is the codename of Monogon OS).

See the //metropolis/README.md for a developer quick start guide, or see the Monogon OS Handbook for user documentation.