Page MenuHomeFreeBSD

Support the arm64 pmap_remove_write for stage 2
ClosedPublic

Authored by andrew on Nov 15 2022, 6:06 PM.
Tags
None
Referenced Files
F114441422: D37399.diff
Sat, Apr 12, 2:27 PM
Unknown Object (File)
Sat, Apr 5, 5:27 AM
Unknown Object (File)
Fri, Mar 14, 6:13 PM
Unknown Object (File)
Mar 11 2025, 1:00 PM
Unknown Object (File)
Mar 7 2025, 8:34 AM
Unknown Object (File)
Feb 28 2025, 12:47 PM
Unknown Object (File)
Feb 25 2025, 1:28 AM
Unknown Object (File)
Feb 5 2025, 4:21 AM
Subscribers

Details

Summary

The fields we need to adjust are different in stage 1 and stage 2
tables. Handle this by adding variables to hold the bits to check,
set, and clear.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 48370
Build 45256: arc lint + arc unit

Event Timeline

You might take a look at PG_RW/PG_V, pmap_valid_bit()/pmap_rw_bit() in amd64 pmap.

This revision is now accepted and ready to land.Nov 16 2022, 5:25 AM
sys/arm64/arm64/pmap.c
5771

This is incorrect. ATTR_S1_AP(ATTR_S1_AP_RW) is equal to 0. So, the original code calls vm_page_dirty() if (oldpte & ATTR_S1_AP_RW_BIT) == 0.

Fix the check before calling vm_page_dirty

This revision now requires review to proceed.Nov 17 2022, 12:17 PM
This revision is now accepted and ready to land.Nov 20 2022, 1:16 AM