2023-09-18 19:55:06

by Dmitry Osipenko

[permalink] [raw]
Subject: Re: [PATCH v9 6/6] KVM: x86/mmu: Handle non-refcounted pages

On 9/11/23 05:16, David Stevens wrote:
> From: David Stevens <[email protected]>
>
> Handle non-refcounted pages in __kvm_faultin_pfn. This allows the host
> to map memory into the guest that is backed by non-refcounted struct
> pages - for example, the tail pages of higher order non-compound pages
> allocated by the amdgpu driver via ttm_pool_alloc_page.
>
> The bulk of this change is tracking the is_refcounted_page flag so that
> non-refcounted pages don't trigger page_count() == 0 warnings. This is
> done by storing the flag in an unused bit in the sptes. There are no
> bits available in PAE SPTEs, so non-refcounted pages can only be handled
> on TDP and x86-64.
>
> Signed-off-by: David Stevens <[email protected]>
> ---
> arch/x86/kvm/mmu/mmu.c | 52 +++++++++++++++++++++++----------
> arch/x86/kvm/mmu/mmu_internal.h | 1 +
> arch/x86/kvm/mmu/paging_tmpl.h | 8 +++--
> arch/x86/kvm/mmu/spte.c | 4 ++-
> arch/x86/kvm/mmu/spte.h | 12 +++++++-
> arch/x86/kvm/mmu/tdp_mmu.c | 22 ++++++++------
> include/linux/kvm_host.h | 3 ++
> virt/kvm/kvm_main.c | 6 ++--
> 8 files changed, 76 insertions(+), 32 deletions(-)

Could you please tell which kernel tree you used for the base of this
series? This patch #6 doesn't apply cleanly to stable/mainline/next/kvm

error: sha1 information is lacking or useless (arch/x86/kvm/mmu/mmu.c).
error: could not build fake ancestor

--
Best regards,
Dmitry


2023-09-19 05:36:20

by David Stevens

[permalink] [raw]
Subject: Re: [PATCH v9 6/6] KVM: x86/mmu: Handle non-refcounted pages

On Mon, Sep 18, 2023 at 6:58 PM Dmitry Osipenko
<[email protected]> wrote:
>
> On 9/11/23 05:16, David Stevens wrote:
> > From: David Stevens <[email protected]>
> >
> > Handle non-refcounted pages in __kvm_faultin_pfn. This allows the host
> > to map memory into the guest that is backed by non-refcounted struct
> > pages - for example, the tail pages of higher order non-compound pages
> > allocated by the amdgpu driver via ttm_pool_alloc_page.
> >
> > The bulk of this change is tracking the is_refcounted_page flag so that
> > non-refcounted pages don't trigger page_count() == 0 warnings. This is
> > done by storing the flag in an unused bit in the sptes. There are no
> > bits available in PAE SPTEs, so non-refcounted pages can only be handled
> > on TDP and x86-64.
> >
> > Signed-off-by: David Stevens <[email protected]>
> > ---
> > arch/x86/kvm/mmu/mmu.c | 52 +++++++++++++++++++++++----------
> > arch/x86/kvm/mmu/mmu_internal.h | 1 +
> > arch/x86/kvm/mmu/paging_tmpl.h | 8 +++--
> > arch/x86/kvm/mmu/spte.c | 4 ++-
> > arch/x86/kvm/mmu/spte.h | 12 +++++++-
> > arch/x86/kvm/mmu/tdp_mmu.c | 22 ++++++++------
> > include/linux/kvm_host.h | 3 ++
> > virt/kvm/kvm_main.c | 6 ++--
> > 8 files changed, 76 insertions(+), 32 deletions(-)
>
> Could you please tell which kernel tree you used for the base of this
> series? This patch #6 doesn't apply cleanly to stable/mainline/next/kvm
>
> error: sha1 information is lacking or useless (arch/x86/kvm/mmu/mmu.c).
> error: could not build fake ancestor

This series is based on the kvm next branch (i.e.
https://git.kernel.org/pub/scm/virt/kvm/kvm.git/log/?h=next). The
specific hash is d011151616e73de20c139580b73fa4c7042bd861.

-David

2023-09-22 00:28:18

by Dmitry Osipenko

[permalink] [raw]
Subject: Re: [PATCH v9 6/6] KVM: x86/mmu: Handle non-refcounted pages

On 9/19/23 05:31, David Stevens wrote:
> On Mon, Sep 18, 2023 at 6:58 PM Dmitry Osipenko
> <[email protected]> wrote:
>>
>> On 9/11/23 05:16, David Stevens wrote:
>>> From: David Stevens <[email protected]>
>>>
>>> Handle non-refcounted pages in __kvm_faultin_pfn. This allows the host
>>> to map memory into the guest that is backed by non-refcounted struct
>>> pages - for example, the tail pages of higher order non-compound pages
>>> allocated by the amdgpu driver via ttm_pool_alloc_page.
>>>
>>> The bulk of this change is tracking the is_refcounted_page flag so that
>>> non-refcounted pages don't trigger page_count() == 0 warnings. This is
>>> done by storing the flag in an unused bit in the sptes. There are no
>>> bits available in PAE SPTEs, so non-refcounted pages can only be handled
>>> on TDP and x86-64.
>>>
>>> Signed-off-by: David Stevens <[email protected]>
>>> ---
>>> arch/x86/kvm/mmu/mmu.c | 52 +++++++++++++++++++++++----------
>>> arch/x86/kvm/mmu/mmu_internal.h | 1 +
>>> arch/x86/kvm/mmu/paging_tmpl.h | 8 +++--
>>> arch/x86/kvm/mmu/spte.c | 4 ++-
>>> arch/x86/kvm/mmu/spte.h | 12 +++++++-
>>> arch/x86/kvm/mmu/tdp_mmu.c | 22 ++++++++------
>>> include/linux/kvm_host.h | 3 ++
>>> virt/kvm/kvm_main.c | 6 ++--
>>> 8 files changed, 76 insertions(+), 32 deletions(-)
>>
>> Could you please tell which kernel tree you used for the base of this
>> series? This patch #6 doesn't apply cleanly to stable/mainline/next/kvm
>>
>> error: sha1 information is lacking or useless (arch/x86/kvm/mmu/mmu.c).
>> error: could not build fake ancestor
>
> This series is based on the kvm next branch (i.e.
> https://git.kernel.org/pub/scm/virt/kvm/kvm.git/log/?h=next). The
> specific hash is d011151616e73de20c139580b73fa4c7042bd861.

Thanks, this tag works

--
Best regards,
Dmitry

2024-02-06 03:03:01

by Sean Christopherson

[permalink] [raw]
Subject: Re: [PATCH v9 6/6] KVM: x86/mmu: Handle non-refcounted pages

On Tue, Sep 19, 2023, David Stevens wrote:
> On Mon, Sep 18, 2023 at 6:58 PM Dmitry Osipenko
> <[email protected]> wrote:
> >
> > On 9/11/23 05:16, David Stevens wrote:
> > > From: David Stevens <[email protected]>
> > >
> > > Handle non-refcounted pages in __kvm_faultin_pfn. This allows the host
> > > to map memory into the guest that is backed by non-refcounted struct
> > > pages - for example, the tail pages of higher order non-compound pages
> > > allocated by the amdgpu driver via ttm_pool_alloc_page.
> > >
> > > The bulk of this change is tracking the is_refcounted_page flag so that
> > > non-refcounted pages don't trigger page_count() == 0 warnings. This is
> > > done by storing the flag in an unused bit in the sptes. There are no
> > > bits available in PAE SPTEs, so non-refcounted pages can only be handled
> > > on TDP and x86-64.
> > >
> > > Signed-off-by: David Stevens <[email protected]>
> > > ---
> > > arch/x86/kvm/mmu/mmu.c | 52 +++++++++++++++++++++++----------
> > > arch/x86/kvm/mmu/mmu_internal.h | 1 +
> > > arch/x86/kvm/mmu/paging_tmpl.h | 8 +++--
> > > arch/x86/kvm/mmu/spte.c | 4 ++-
> > > arch/x86/kvm/mmu/spte.h | 12 +++++++-
> > > arch/x86/kvm/mmu/tdp_mmu.c | 22 ++++++++------
> > > include/linux/kvm_host.h | 3 ++
> > > virt/kvm/kvm_main.c | 6 ++--
> > > 8 files changed, 76 insertions(+), 32 deletions(-)
> >
> > Could you please tell which kernel tree you used for the base of this
> > series? This patch #6 doesn't apply cleanly to stable/mainline/next/kvm
> >
> > error: sha1 information is lacking or useless (arch/x86/kvm/mmu/mmu.c).
> > error: could not build fake ancestor
>
> This series is based on the kvm next branch (i.e.
> https://git.kernel.org/pub/scm/virt/kvm/kvm.git/log/?h=next). The
> specific hash is d011151616e73de20c139580b73fa4c7042bd861.

Drat, found this too late. Please use --base so that git appends the exact base
commit. From Documentation/process/maintainer-kvm-x86.rst:

Git Base
~~~~~~~~
If you are using git version 2.9.0 or later (Googlers, this is all of you!),
use ``git format-patch`` with the ``--base`` flag to automatically include the
base tree information in the generated patches.

Note, ``--base=auto`` works as expected if and only if a branch's upstream is
set to the base topic branch, e.g. it will do the wrong thing if your upstream
is set to your personal repository for backup purposes. An alternative "auto"
solution is to derive the names of your development branches based on their
KVM x86 topic, and feed that into ``--base``. E.g. ``x86/pmu/my_branch_name``,
and then write a small wrapper to extract ``pmu`` from the current branch name
to yield ``--base=x/pmu``, where ``x`` is whatever name your repository uses to
track the KVM x86 remote.