Page MenuHomeFreeBSD

arm64: Add a cmap page to pmap
ClosedPublic

Authored by andrew on Wed, Apr 8, 12:59 PM.
Tags
None
Referenced Files
F153131825: D56306.id175102.diff
Sun, Apr 19, 9:32 AM
F153111200: D56306.id175226.diff
Sun, Apr 19, 5:51 AM
F153108828: D56306.id175226.diff
Sun, Apr 19, 5:31 AM
F153086160: D56306.id175102.diff
Sun, Apr 19, 1:20 AM
Unknown Object (File)
Sat, Apr 18, 9:47 PM
Unknown Object (File)
Sat, Apr 18, 7:30 PM
Unknown Object (File)
Sat, Apr 18, 5:54 PM
Unknown Object (File)
Sat, Apr 18, 5:37 PM
Subscribers

Details

Summary

When modifying mappings in pmap we may need to perform a
break-before-make sequence. This creates an invalid mapping, then
recreates it with the changes.

When modifying DMAP mappings we may be changing the mapping that
contains its own page table then after breaking the old entry we are
unable to create the new entry.

To fix this create a map that can be used & won't be affected by the
break-before-make sequence.

Sponsored by: Arm Ltd

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

This revision is now accepted and ready to land.Wed, Apr 8, 4:39 PM

I only have one question, why this cmap needs to be per-cpu? I do not think that it is high-contention resource.

sys/arm64/arm64/pmap.c
1427

Isn't this the same as VIRTUAL_MAX_KERNEL_ADDRESS - PMAP_MAPDEV_EARLY_SIZE, which we already bootstrapped above?

1442

Extra newline.

1469
This revision now requires review to proceed.Fri, Apr 10, 2:10 PM
This revision is now accepted and ready to land.Fri, Apr 10, 2:32 PM
This revision was automatically updated to reflect the committed changes.