From: Claudio Imbrenda <imbrenda@linux.ibm.com>
To: Janosch Frank <frankja@linux.ibm.com>
Cc: kvm@vger.kernel.org, linux-s390@vger.kernel.org,
borntraeger@de.ibm.com, schlameuss@linux.ibm.com,
david@redhat.com, willy@infradead.org, hca@linux.ibm.com,
svens@linux.ibm.com, agordeev@linux.ibm.com, gor@linux.ibm.com,
nrb@linux.ibm.com, nsg@linux.ibm.com
Subject: Re: [PATCH v1 13/13] KVM: s390: remove the last user of page->index
Date: Wed, 15 Jan 2025 13:23:49 +0100 [thread overview]
Message-ID: <20250115132349.6eeba98e@p-imbrenda> (raw)
In-Reply-To: <4175795f-9323-4a2c-acef-d387c104f8b3@linux.ibm.com>
On Wed, 15 Jan 2025 13:17:01 +0100
Janosch Frank <frankja@linux.ibm.com> wrote:
> On 1/8/25 7:14 PM, Claudio Imbrenda wrote:
> > Shadow page tables use page->index to keep the g2 address of the guest
> > page table being shadowed.
> >
> > Instead of keeping the information in page->index, split the address
> > and smear it over the 16-bit softbits areas of 4 PGSTEs.
> >
> > This removes the last s390 user of page->index.
> >
> > Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
> > ---
> > arch/s390/include/asm/gmap.h | 1 +
> > arch/s390/include/asm/pgtable.h | 15 +++++++++++++++
> > arch/s390/kvm/gaccess.c | 6 ++++--
> > arch/s390/mm/gmap.c | 22 ++++++++++++++++++++--
> > 4 files changed, 40 insertions(+), 4 deletions(-)
> >
> > diff --git a/arch/s390/include/asm/gmap.h b/arch/s390/include/asm/gmap.h
> > index 5ebc65ac78cc..28c5bf097268 100644
> > --- a/arch/s390/include/asm/gmap.h
> > +++ b/arch/s390/include/asm/gmap.h
> > @@ -177,4 +177,5 @@ static inline int s390_uv_destroy_range_interruptible(struct mm_struct *mm, unsi
> > {
> > return __s390_uv_destroy_range(mm, start, end, true);
> > }
> > +
>
> Stray \n
yep, I had already noticed it myself (of course _after_ sending the
series)
>
> > #endif /* _ASM_S390_GMAP_H */
> > diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h
> > index 151488bb9ed7..948100a8fa7e 100644
> > --- a/arch/s390/include/asm/pgtable.h
> > +++ b/arch/s390/include/asm/pgtable.h
> > @@ -419,6 +419,7 @@ static inline int is_module_addr(void *addr)
> > #define PGSTE_HC_BIT 0x0020000000000000UL
> > #define PGSTE_GR_BIT 0x0004000000000000UL
> > #define PGSTE_GC_BIT 0x0002000000000000UL
> > +#define PGSTE_ST2_MASK 0x0000ffff00000000UL
> > #define PGSTE_UC_BIT 0x0000000000008000UL /* user dirty (migration) */
> > #define PGSTE_IN_BIT 0x0000000000004000UL /* IPTE notify bit */
> > #define PGSTE_VSIE_BIT 0x0000000000002000UL /* ref'd in a shadow table */
> > @@ -2001,4 +2002,18 @@ extern void s390_reset_cmma(struct mm_struct *mm);
> > #define pmd_pgtable(pmd) \
> > ((pgtable_t)__va(pmd_val(pmd) & -sizeof(pte_t)*PTRS_PER_PTE))
> >
> > +static inline unsigned long gmap_pgste_get_index(unsigned long *pgt)
> > +{
> > + unsigned long *pgstes, res;
> > +
> > + pgstes = pgt + _PAGE_ENTRIES;
> > +
> > + res = (pgstes[0] & PGSTE_ST2_MASK) << 16;
> > + res |= pgstes[1] & PGSTE_ST2_MASK;
> > + res |= (pgstes[2] & PGSTE_ST2_MASK) >> 16;
> > + res |= (pgstes[3] & PGSTE_ST2_MASK) >> 32;
> > +
> > + return res;
> > +}
>
> I have to think about that change for a bit before I post an opinion.
it's not pretty, but it can (and will, in upcoming patches) be
generalized to hold arbitrary data in the PGSTEs (up to 512 bytes per
page table)
next prev parent reply other threads:[~2025-01-15 12:24 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-08 18:14 [PATCH v1 00/13] KVM: s390: Stop using page->index and other things Claudio Imbrenda
2025-01-08 18:14 ` [PATCH v1 01/13] KVM: s390: wrapper for KVM_BUG Claudio Imbrenda
2025-01-10 9:09 ` Christian Borntraeger
2025-01-10 13:13 ` Christoph Schlameuss
2025-01-08 18:14 ` [PATCH v1 02/13] KVM: s390: fake memslots for ucontrol VMs Claudio Imbrenda
2025-01-10 9:31 ` Christian Borntraeger
2025-01-10 11:47 ` Claudio Imbrenda
2025-01-10 16:22 ` Sean Christopherson
2025-01-10 17:02 ` Claudio Imbrenda
2025-01-10 17:34 ` Sean Christopherson
2025-01-10 17:43 ` Claudio Imbrenda
2025-01-10 15:40 ` Christoph Schlameuss
2025-01-10 16:18 ` Claudio Imbrenda
2025-01-08 18:14 ` [PATCH v1 03/13] KVM: s390: use __kvm_faultin_pfn() Claudio Imbrenda
2025-01-14 17:34 ` Christoph Schlameuss
2025-01-14 17:56 ` Claudio Imbrenda
2025-01-08 18:14 ` [PATCH v1 04/13] KVM: s390: move pv gmap functions into kvm Claudio Imbrenda
2025-01-09 17:42 ` kernel test robot
2025-01-15 12:48 ` Janosch Frank
2025-01-15 12:59 ` Claudio Imbrenda
2025-01-15 13:23 ` Janosch Frank
2025-01-08 18:14 ` [PATCH v1 05/13] KVM: s390: get rid of gmap_fault() Claudio Imbrenda
2025-01-08 18:14 ` [PATCH v1 06/13] KVM: s390: get rid of gmap_translate() Claudio Imbrenda
2025-01-08 18:14 ` [PATCH v1 07/13] KVM: s390: move some gmap shadowing functions away from mm/gmap.c Claudio Imbrenda
2025-01-15 8:56 ` Janosch Frank
2025-01-15 10:20 ` Claudio Imbrenda
2025-01-15 11:48 ` Janosch Frank
2025-01-08 18:14 ` [PATCH v1 08/13] KVM: s390: stop using page->index for non-shadow gmaps Claudio Imbrenda
2025-01-08 18:14 ` [PATCH v1 09/13] KVM: s390: stop using lists to keep track of used dat tables Claudio Imbrenda
2025-01-15 9:01 ` Janosch Frank
2025-01-08 18:14 ` [PATCH v1 10/13] KVM: s390: move gmap_shadow_pgt_lookup() into kvm Claudio Imbrenda
2025-01-08 18:14 ` [PATCH v1 11/13] KVM: s390: remove useless page->index usage Claudio Imbrenda
2025-01-08 18:14 ` [PATCH v1 12/13] KVM: s390: move PGSTE softbits Claudio Imbrenda
2025-01-08 18:14 ` [PATCH v1 13/13] KVM: s390: remove the last user of page->index Claudio Imbrenda
2025-01-15 12:17 ` Janosch Frank
2025-01-15 12:23 ` Claudio Imbrenda [this message]
2025-01-20 9:43 ` David Hildenbrand
2025-01-20 10:28 ` Claudio Imbrenda
2025-01-20 10:34 ` David Hildenbrand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250115132349.6eeba98e@p-imbrenda \
--to=imbrenda@linux.ibm.com \
--cc=agordeev@linux.ibm.com \
--cc=borntraeger@de.ibm.com \
--cc=david@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=nrb@linux.ibm.com \
--cc=nsg@linux.ibm.com \
--cc=schlameuss@linux.ibm.com \
--cc=svens@linux.ibm.com \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox