Page MenuHomeFreeBSD

Make pmap_kextract() operational over the large map.
ClosedPublic

Authored by kib on May 23 2019, 6:41 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sat, Oct 11, 6:23 AM
Unknown Object (File)
Tue, Oct 7, 12:00 PM
Unknown Object (File)
Sun, Oct 5, 12:10 PM
Unknown Object (File)
Sun, Oct 5, 6:15 AM
Unknown Object (File)
Thu, Oct 2, 7:06 AM
Unknown Object (File)
Wed, Oct 1, 6:10 AM
Unknown Object (File)
Tue, Sep 30, 8:48 PM
Unknown Object (File)
Tue, Sep 30, 8:08 AM
Subscribers

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 24445

Event Timeline

sys/amd64/amd64/pmap.c
2965

I think it should be va < LARGEMAP_MIN_ADDRESS + NBPML4 * lm_ents. pmap_large_unmap() seems to have the same bug in a kassert.

8799

Maybe call it PG_PS1G_FRAME or PG_PSPDP_FRAME? I do not insist on giving it a name at all.

Use symbolic name for 1G superpage frame mask.
Fix upper boundary check for large map.

markj added inline comments.
sys/amd64/amd64/pmap.c
8931

The expression now appears in three places, maybe rename LARGEMAP_MAX_ADDRESS to LARGEMAP_STATIC_MAX_ADDRESS or so, and add

#define LARGEMAP_MAX_ADDRESS() (LARGEMAP_MIN_ADDRESS + NBPML4 * (u_long)lm_ents
This revision is now accepted and ready to land.May 24 2019, 6:04 PM
kib marked an inline comment as done.

LARGEMAP_RT_MAX_ADDRESS

This revision now requires review to proceed.May 24 2019, 9:58 PM
sys/amd64/amd64/pmap.c
424–425

When I see LARGEMAP_RT_MAX_ADDRESS used, I'm going to think that it is a constant. Since it is not, I would suggest using a function-like name, e.g., pmap_large_map_<foo>().

sys/amd64/include/pmap.h
122 ↗(On Diff #57866)

I think that an '_' between the PS and PDP would help.

kib marked 2 inline comments as done.

PMAP_LARGEMAP_MAX_ADDRESS()
PG_PS_PDP_FRAME

This revision is now accepted and ready to land.May 24 2019, 10:51 PM
This revision was automatically updated to reflect the committed changes.