You've done quite a bit here.  You really want separate pieces of functionality to be in separate commits (which you probably did here, but I can't tell given teh commit names).  Even better, they should be in separate pull requests.  The work you did on RW page tables is very separate from the work on the mbox component.