[boot-mmu] Build driven boot page allocation

Instead of hard coding the value, the number of allocated pages
is determined based on the boot-mmu-config, which defines a preprocessor
symbol that is the upper bound on the kernel image size.

This allows to change this estimation based on different build
information, such as whether this is an instrumented build or not.

The values uses for the image size are obtained from the addressable
sizes that the current number of preallocatd pages can address. For
instrumentation we just used the value of riscv64 which caused failures
due to not having enough pages, and boosted it by 25% (20 -> 25MB).

As a first step, physboot will panic if the kernel size is bigger than
the max kernel image size. This allows having a direct cause to what
otherwise would have been observed as a hang from zircon.

Fixed: 339565993
Change-Id: I7fc5cf5d28616f89493ab2de6a83e23d5cb40587
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1045160
Commit-Queue: Gianfranco Valentino <gevalentino@google.com>
Reviewed-by: Travis Geiselbrecht <travisg@google.com>
Reviewed-by: Roland McGrath <mcgrathr@google.com>
6 files changed
tree: 23d64a487ab4d2270a85701235cc0c105d637e22
  1. boards/
  2. build/
  3. bundles/
  4. docs/
  5. examples/
  6. infra/
  7. products/
  8. scripts/
  9. sdk/
  10. src/
  11. third_party/
  12. tools/
  13. zircon/
  14. .clang-format
  15. .clang-tidy
  16. .editorconfig
  17. .git-blame-ignore-revs
  18. .gitattributes
  19. .gitignore
  20. .gitmodules
  21. .gn
  22. .ignore
  23. analysis_options.yaml
  24. AUTHORS
  25. BUILD.gn
  26. CODE_OF_CONDUCT.md
  27. CONTRIBUTING.md
  28. fuchsia.code-workspace
  29. LICENSE
  30. OWNERS
  31. PATENTS
  32. pyproject.toml
  33. pyrightconfig.json
  34. README.md
  35. rustfmt.toml
  36. shac.star
  37. shac.textproto
README.md

Fuchsia

What is Fuchsia?

Fuchsia is an open source, general purpose operating system supporting modern 64-bit Intel and ARM processors.

We expect everyone interacting with our project to respect our code of conduct.

Read more about Fuchsia's principles.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.