Skip to content

[Task]: Refactor Large Page Splitting To Not Temporarily Unmap Large Page #116

@os-d

Description

@os-d

Is there an existing issue for this?

  • I have searched existing issues

Current Behavior

Today when a large page is split, it is temporarily unmapped, the new page table is filled out (remapping the large page). This can cause issues if the split fails and this was say, the SerialIo region and all prints and exceptions (which try to print) cause a triple fault (or recursive exceptions) as was the case in one bug.

This was implemented this way because we need to use the self map address, which doesn't exist for the new page table until it is mapped in the self map.

Expected Behavior

By using the zero VA range that has 512 GB of unused space, we can stage the new page table there, fill it out, then do an atomic swap; the large page is never unmapped this way.

Steps To Reproduce

n/a

Build Environment

- OS(s):
- Tool Chain(s):
- Targets Impacted:

Version Information

top of tree

Urgency

Low

Are you going to fix this?

I will fix it

Do you need maintainer feedback?

No maintainer feedback needed

Anything else?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    state:needs-triageNeeds to triaged to determine next stepstype:bugSomething isn't working

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions