[roll] Roll fuchsia Reland "[kernel][vm] ZeroPagesLocked: Use markers more often"

This is a reland of commit ef7080f1dd438525528004b7ca8fe0959cd4b83b

The change was reverted because it caused the core.x64-stress CI/CQ bot
to fail.

It failed due to a corner case that wasn't represented in the `fx
core-tests`, related to ZeroPagesLocked trying to manipulate a hidden
parent with no content.

This CL relands the initial change. It also adds a fix and a regression
test (ZeroHiddenNoContent) for this failure.

The fix is to only call CloneCowContentAsZeroLocked if
parent_has_content in the zero_slot callback of ZeroPagesLocked.

Original change's description:
> [kernel][vm] ZeroPagesLocked: Use markers more often
>
> In ZeroPagesLocked, we sometimes have to choose between representing
> zero with a freshly allocated zero page and with a marker. This CL
> represents zero with markers whenever possible.
>
> The old policy was to try to "justify" markers by pointing to committed
> pages. This was believed to bound the total number of markers allocated.
> We measured the number of new un-"justified" markers, and found that
> this CL only increases the number of markers in rare scenarios.
>
> Original-Fixed: 458059877
> Original-Bug: 423017076
> Change-Id: Ic4fa179e2f26bfccc4df68bfeffb0cdb2d2d5f38
> Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1411519
> Reviewed-by: Adrian Danis <adanis@google.com>
> Commit-Queue: Ethan Williams <ethanws@google.com>

Original-Fixed: 458734268
Original-Fixed: 458059877
Original-Bug: 423017076
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1416958
Original-Revision: 5c3fd7a11b1518e8f2b94dd1e26912c187703ee0
GitOrigin-RevId: 20560e50d0a87e8c0093b7ed21ebcaa46e64bb50
Change-Id: If88eb36488e29dc809499355592569c4389b3925
1 file changed
tree: e701493778442c9e1dffe6a966484de98bbc8331
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. flower
  6. jiri.lock
  7. MILESTONE
  8. minimal
  9. prebuilts
  10. README.md
  11. stem
  12. test_durations
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance in one of the communication channels documented at get involved.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.