diff mbox

[v3,0/3] kvm: Use huge pages for DAX-backed files

Message ID 20190404202345.133553-1-brho@google.com (mailing list archive)
State New, archived
Headers show

Commit Message

Barret Rhoden April 4, 2019, 8:23 p.m. UTC
This patch series depends on DAX pages not being PageReserved.  Once
that is in place, these changes will let KVM use huge pages with
DAX-backed files.

From previous discussions[1], it sounds like DAX might not need to keep
the PageReserved bit, but that it hadn't been sorted out yet.

Without the PageReserved change, KVM and DAX still work with these
patches, simply without huge pages - which is the current situation.

If you want to test the huge-page functionality as if DAX pages weren't
PageReserved for KVM, this hack does the trick:

------------------
------------------

Perhaps if we are going to leave DAX pages marked PageReserved, then I
can make that hack into a proper commit and have KVM alone treat DAX
pages as if they are not reserved.

v2 -> v3:
v2: https://lore.kernel.org/lkml/20181114215155.259978-1-brho@google.com/
- Updated Acks/Reviewed-by
- Rebased onto linux-next

v1 -> v2:
https://lore.kernel.org/lkml/20181109203921.178363-1-brho@google.com/
- Updated Acks/Reviewed-by
- Minor touchups
- Added patch to remove redundant PageReserved() check
- Rebased onto linux-next

RFC/discussion thread:
https://lore.kernel.org/lkml/20181029210716.212159-1-brho@google.com/

[1] https://lore.kernel.org/lkml/ee8cc068-903c-d87e-f418-ade46786249e@redhat.com/

Barret Rhoden (3):
  mm: make dev_pagemap_mapping_shift() externally visible
  kvm: Use huge pages for DAX-backed files
  kvm: remove redundant PageReserved() check

 arch/x86/kvm/mmu.c  | 33 +++++++++++++++++++++++++++++++--
 include/linux/mm.h  |  3 +++
 mm/memory-failure.c | 38 +++-----------------------------------
 mm/util.c           | 34 ++++++++++++++++++++++++++++++++++
 virt/kvm/kvm_main.c |  8 ++------
 5 files changed, 73 insertions(+), 43 deletions(-)

Comments

Barret Rhoden April 4, 2019, 8:28 p.m. UTC | #1
-yi.z.zhang@intel.com (Bad email address / failure)

Sorry about that.

On 4/4/19 4:23 PM, Barret Rhoden wrote:
> This patch series depends on DAX pages not being PageReserved.  Once
> that is in place, these changes will let KVM use huge pages with
> DAX-backed files.
> 
>  From previous discussions[1], it sounds like DAX might not need to keep
> the PageReserved bit, but that it hadn't been sorted out yet.
> 
> Without the PageReserved change, KVM and DAX still work with these
> patches, simply without huge pages - which is the current situation.
> 
> If you want to test the huge-page functionality as if DAX pages weren't
> PageReserved for KVM, this hack does the trick:
> 
> ------------------
> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
> index c44985375e7f..ee539eec1fb8 100644
> --- a/virt/kvm/kvm_main.c
> +++ b/virt/kvm/kvm_main.c
> @@ -153,6 +153,10 @@ __weak int kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
>   
>   bool kvm_is_reserved_pfn(kvm_pfn_t pfn)
>   {
> +       // XXX hack
> +       if (is_zone_device_page(pfn_to_page(pfn)))
> +               return false;
> +
>          if (pfn_valid(pfn))
>                  return PageReserved(pfn_to_page(pfn));
>   
> ------------------
> 
> Perhaps if we are going to leave DAX pages marked PageReserved, then I
> can make that hack into a proper commit and have KVM alone treat DAX
> pages as if they are not reserved.
> 
> v2 -> v3:
> v2: https://lore.kernel.org/lkml/20181114215155.259978-1-brho@google.com/
> - Updated Acks/Reviewed-by
> - Rebased onto linux-next
> 
> v1 -> v2:
> https://lore.kernel.org/lkml/20181109203921.178363-1-brho@google.com/
> - Updated Acks/Reviewed-by
> - Minor touchups
> - Added patch to remove redundant PageReserved() check
> - Rebased onto linux-next
> 
> RFC/discussion thread:
> https://lore.kernel.org/lkml/20181029210716.212159-1-brho@google.com/
> 
> [1] https://lore.kernel.org/lkml/ee8cc068-903c-d87e-f418-ade46786249e@redhat.com/
> 
> Barret Rhoden (3):
>    mm: make dev_pagemap_mapping_shift() externally visible
>    kvm: Use huge pages for DAX-backed files
>    kvm: remove redundant PageReserved() check
> 
>   arch/x86/kvm/mmu.c  | 33 +++++++++++++++++++++++++++++++--
>   include/linux/mm.h  |  3 +++
>   mm/memory-failure.c | 38 +++-----------------------------------
>   mm/util.c           | 34 ++++++++++++++++++++++++++++++++++
>   virt/kvm/kvm_main.c |  8 ++------
>   5 files changed, 73 insertions(+), 43 deletions(-)
>
diff mbox

Patch

diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index c44985375e7f..ee539eec1fb8 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -153,6 +153,10 @@  __weak int kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
 
 bool kvm_is_reserved_pfn(kvm_pfn_t pfn)
 {
+       // XXX hack
+       if (is_zone_device_page(pfn_to_page(pfn)))
+               return false;
+
        if (pfn_valid(pfn))
                return PageReserved(pfn_to_page(pfn));