Page MenuHomeFreeBSD

arm64: Handle 1GB mappings in pmap_enter_quick_locked()
ClosedPublic

Authored by markj on Sep 25 2022, 2:51 PM.
Tags
None
Referenced Files
Unknown Object (File)
Tue, Sep 8, 3:38 PM
Unknown Object (File)
Sat, Sep 5, 9:02 PM
Unknown Object (File)
Sat, Sep 5, 3:13 PM
Unknown Object (File)
Sat, Sep 5, 12:40 PM
Unknown Object (File)
Sat, Sep 5, 9:59 AM
Unknown Object (File)
Fri, Sep 4, 4:28 AM
Unknown Object (File)
Thu, Sep 3, 5:28 PM
Unknown Object (File)
Thu, Sep 3, 11:20 AM
Subscribers

Diff Detail

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

Event Timeline

markj requested review of this revision.Sep 25 2022, 2:51 PM
alc added inline comments.
sys/arm64/arm64/pmap.c
4598–4611

I wish we had pmap_X_to_X+1() variants that returned the PTE value rather than its address so that we didn't repeatedly pmap_load() afterwards.

This revision is now accepted and ready to land.Sep 25 2022, 5:55 PM
sys/arm64/arm64/pmap.c
4598–4611

Maybe something following this example?

pd_entry_t
pmap_l1e_to_l2e(pdp_entry_t l1e, vm_offset_t va)
{
    pd_entry_t *l2;

    l2 = (pd_entry_t *)PHYS_TO_DMAP(l1e & ~ATTR_MASK);
    return (l2[pmap_l2_index(va)]);
}

On the other hand, I'm not really sure why the arm64 pmap uses pmap_load() to begin with.

sys/arm64/arm64/pmap.c
4598–4611

Yes, something like that.