Loading Documentation/kvm/mmu.txt +23 −0 Original line number Diff line number Diff line Loading @@ -317,6 +317,29 @@ on fault type: (user write faults generate a #PF) Large pages =========== The mmu supports all combinations of large and small guest and host pages. Supported page sizes include 4k, 2M, 4M, and 1G. 4M pages are treated as two separate 2M pages, on both guest and host, since the mmu always uses PAE paging. To instantiate a large spte, four constraints must be satisfied: - the spte must point to a large host page - the guest pte must be a large pte of at least equivalent size (if tdp is enabled, there is no guest pte and this condition is satisified) - if the spte will be writeable, the large page frame may not overlap any write-protected pages - the guest page must be wholly contained by a single memory slot To check the last two conditions, the mmu maintains a ->write_count set of arrays for each memory slot and large page size. Every write protected page causes its write_count to be incremented, thus preventing instantiation of a large spte. The frames at the end of an unaligned memory slot have artificically inflated ->write_counts so they can never be instantiated. Further reading =============== Loading Loading
Documentation/kvm/mmu.txt +23 −0 Original line number Diff line number Diff line Loading @@ -317,6 +317,29 @@ on fault type: (user write faults generate a #PF) Large pages =========== The mmu supports all combinations of large and small guest and host pages. Supported page sizes include 4k, 2M, 4M, and 1G. 4M pages are treated as two separate 2M pages, on both guest and host, since the mmu always uses PAE paging. To instantiate a large spte, four constraints must be satisfied: - the spte must point to a large host page - the guest pte must be a large pte of at least equivalent size (if tdp is enabled, there is no guest pte and this condition is satisified) - if the spte will be writeable, the large page frame may not overlap any write-protected pages - the guest page must be wholly contained by a single memory slot To check the last two conditions, the mmu maintains a ->write_count set of arrays for each memory slot and large page size. Every write protected page causes its write_count to be incremented, thus preventing instantiation of a large spte. The frames at the end of an unaligned memory slot have artificically inflated ->write_counts so they can never be instantiated. Further reading =============== Loading