I started a 32bit HVM which memory is 512, so the max gfn should be 0x1ffff. But the result of "xm dmesg" showed gfn->mfn mapping until 0xfffff.
Output looked like below:
(XEN) gfn: fc012 mfn: 179e6
(XEN) gfn: fc013 mfn: 179e5
(XEN) gfn: fee00 mfn: 2e8
(XEN) gfn: feffb mfn: 178fd
(XEN) gfn: feffc mfn: 178fc
(XEN) gfn: feffd mfn: 178fb
(XEN) gfn: feffe mfn: 178fa
(XEN) gfn: fefff mfn: 178f9
(XEN) gfn: fffff mfn: 2eb
What I think is every HVM has one EPT table and the table maps the allocated memory like from 0 to 0x1ffff, why does the HVM ept map all the 4G space?
Isn't it unneccessary and waste of memory?
Second, I want to copy the system ept and used the copy for later translation. Since the HVM is 512M, so I need one PML4 pointed by eptp, one PDP pointed by PML4 entry[0], one PD pointed by PDP entry[0], 512 PT's pointed by all PD entries. After all settings are done, I'v got gfn->mfn mapping of 1G memory. I think it should be working, but not. Where am I wrong? What would I pay attention to?
Looking forward to your help,
Yao