Linux-S390 Archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/2] s390/pgtable: misc small improvements
@ 2024-04-26 12:04 Claudio Imbrenda
  2024-04-26 12:04 ` [PATCH v3 1/2] s390/pgtable: switch read and write softbits for puds Claudio Imbrenda
  2024-04-26 12:04 ` [PATCH v3 2/2] s390/pgtable: add missing hardware bits for puds, pmds Claudio Imbrenda
  0 siblings, 2 replies; 5+ messages in thread
From: Claudio Imbrenda @ 2024-04-26 12:04 UTC (permalink / raw
  To: linux-kernel, linux-s390
  Cc: hca, gor, agordeev, svens, gerald.schaefer, borntraeger

This series has two small improvements for the s390 page tables. they
fix some small inconsistencies and missing things.

The first aligns the layout of large puds with that of large pmds;
there is no reason for the large pud read and write softbits to be
swapped compared to large pmds.

The second adds a few bits to _SEGMENT_ENTRY_BITS,
_SEGMENT_ENTRY_HARDWARE_BITS and _SEGMENT_ENTRY_HARDWARE_BITS_LARGE;
those bits are supposed to always be zero, the current code was working
correctly since those bits were being ignored and always left set to
zero. The patch also introduces _REGION3_ENTRY_HARDWARE_BITS and
_REGION3_ENTRY_HARDWARE_BITS_LARGE, for completeness, which are the
bitmasks of the hardware bits for normal puds and large puds.

v3->v2
* update patch description for the second patch
v2->v1
* add the missing pmd bits and _REGION3_ENTRY_HARDWARE_BITS

Claudio Imbrenda (2):
  s390/pgtable: switch read and write softbits for puds
  s390/pgtable: add missing hardware bits for puds, pmds

 arch/s390/include/asm/pgtable.h | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

-- 
2.44.0


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v3 1/2] s390/pgtable: switch read and write softbits for puds
  2024-04-26 12:04 [PATCH v3 0/2] s390/pgtable: misc small improvements Claudio Imbrenda
@ 2024-04-26 12:04 ` Claudio Imbrenda
  2024-04-26 12:04 ` [PATCH v3 2/2] s390/pgtable: add missing hardware bits for puds, pmds Claudio Imbrenda
  1 sibling, 0 replies; 5+ messages in thread
From: Claudio Imbrenda @ 2024-04-26 12:04 UTC (permalink / raw
  To: linux-kernel, linux-s390
  Cc: hca, gor, agordeev, svens, gerald.schaefer, borntraeger

There is no reason for the read and write softbits to be swapped in the
puds compared to pmds. They are different only because the softbits for
puds were introduced at the same time when the softbits for pmds were
swapped.

The current implementation is not wrong per se, since the macros are
defined correctly; only the documentation does not reflect reality.

With this patch, the read and write softbits for large pmd and large
puds will have the same layout, and will match the existing
documentation.

Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
---
 arch/s390/include/asm/pgtable.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h
index 60950e7a25f5..3da2995fd196 100644
--- a/arch/s390/include/asm/pgtable.h
+++ b/arch/s390/include/asm/pgtable.h
@@ -266,8 +266,8 @@ static inline int is_module_addr(void *addr)
 #define _REGION3_ENTRY_DIRTY	0x2000	/* SW region dirty bit */
 #define _REGION3_ENTRY_YOUNG	0x1000	/* SW region young bit */
 #define _REGION3_ENTRY_LARGE	0x0400	/* RTTE-format control, large page  */
-#define _REGION3_ENTRY_READ	0x0002	/* SW region read bit */
-#define _REGION3_ENTRY_WRITE	0x0001	/* SW region write bit */
+#define _REGION3_ENTRY_WRITE	0x0002	/* SW region write bit */
+#define _REGION3_ENTRY_READ	0x0001	/* SW region read bit */
 
 #ifdef CONFIG_MEM_SOFT_DIRTY
 #define _REGION3_ENTRY_SOFT_DIRTY 0x4000 /* SW region soft dirty bit */
-- 
2.44.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v3 2/2] s390/pgtable: add missing hardware bits for puds, pmds
  2024-04-26 12:04 [PATCH v3 0/2] s390/pgtable: misc small improvements Claudio Imbrenda
  2024-04-26 12:04 ` [PATCH v3 1/2] s390/pgtable: switch read and write softbits for puds Claudio Imbrenda
@ 2024-04-26 12:04 ` Claudio Imbrenda
  2024-04-29 13:11   ` Heiko Carstens
  1 sibling, 1 reply; 5+ messages in thread
From: Claudio Imbrenda @ 2024-04-26 12:04 UTC (permalink / raw
  To: linux-kernel, linux-s390
  Cc: hca, gor, agordeev, svens, gerald.schaefer, borntraeger

Add the table type and ACCF validity bits to _SEGMENT_ENTRY_BITS and
_SEGMENT_ENTRY_HARDWARE_BITS{,_LARGE}.

For completeness, introduce _REGION3_ENTRY_HARDWARE_BITS_LARGE and
_REGION3_ENTRY_HARDWARE_BITS, containing the hardware bits used for
large puds and normal puds.

Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
---
 arch/s390/include/asm/pgtable.h | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h
index 3da2995fd196..e2f713fae9c9 100644
--- a/arch/s390/include/asm/pgtable.h
+++ b/arch/s390/include/asm/pgtable.h
@@ -262,6 +262,8 @@ static inline int is_module_addr(void *addr)
 #define _REGION3_ENTRY		(_REGION_ENTRY_TYPE_R3 | _REGION_ENTRY_LENGTH)
 #define _REGION3_ENTRY_EMPTY	(_REGION_ENTRY_TYPE_R3 | _REGION_ENTRY_INVALID)
 
+#define _REGION3_ENTRY_HARDWARE_BITS_LARGE	0xffffffff8001073cUL
+#define _REGION3_ENTRY_HARDWARE_BITS		0xfffffffffffff6ffUL
 #define _REGION3_ENTRY_ORIGIN_LARGE ~0x7fffffffUL /* large page address	     */
 #define _REGION3_ENTRY_DIRTY	0x2000	/* SW region dirty bit */
 #define _REGION3_ENTRY_YOUNG	0x1000	/* SW region young bit */
@@ -278,9 +280,9 @@ static inline int is_module_addr(void *addr)
 #define _REGION_ENTRY_BITS	 0xfffffffffffff22fUL
 
 /* Bits in the segment table entry */
-#define _SEGMENT_ENTRY_BITS			0xfffffffffffffe33UL
-#define _SEGMENT_ENTRY_HARDWARE_BITS		0xfffffffffffffe30UL
-#define _SEGMENT_ENTRY_HARDWARE_BITS_LARGE	0xfffffffffff00730UL
+#define _SEGMENT_ENTRY_BITS			0xfffffffffffffe3fUL
+#define _SEGMENT_ENTRY_HARDWARE_BITS		0xfffffffffffffe3cUL
+#define _SEGMENT_ENTRY_HARDWARE_BITS_LARGE	0xfffffffffff1073cUL
 #define _SEGMENT_ENTRY_ORIGIN_LARGE ~0xfffffUL /* large page address	    */
 #define _SEGMENT_ENTRY_ORIGIN	~0x7ffUL/* page table origin		    */
 #define _SEGMENT_ENTRY_PROTECT	0x200	/* segment protection bit	    */
-- 
2.44.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 2/2] s390/pgtable: add missing hardware bits for puds, pmds
  2024-04-26 12:04 ` [PATCH v3 2/2] s390/pgtable: add missing hardware bits for puds, pmds Claudio Imbrenda
@ 2024-04-29 13:11   ` Heiko Carstens
  2024-04-29 14:03     ` Claudio Imbrenda
  0 siblings, 1 reply; 5+ messages in thread
From: Heiko Carstens @ 2024-04-29 13:11 UTC (permalink / raw
  To: Claudio Imbrenda
  Cc: linux-kernel, linux-s390, gor, agordeev, svens, gerald.schaefer,
	borntraeger

On Fri, Apr 26, 2024 at 02:04:47PM +0200, Claudio Imbrenda wrote:
> Add the table type and ACCF validity bits to _SEGMENT_ENTRY_BITS and
> _SEGMENT_ENTRY_HARDWARE_BITS{,_LARGE}.
> 
> For completeness, introduce _REGION3_ENTRY_HARDWARE_BITS_LARGE and
> _REGION3_ENTRY_HARDWARE_BITS, containing the hardware bits used for
> large puds and normal puds.
> 
> Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
> ---
>  arch/s390/include/asm/pgtable.h | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)

...
> +#define _REGION3_ENTRY_HARDWARE_BITS_LARGE	0xffffffff8001073cUL
> +#define _REGION3_ENTRY_HARDWARE_BITS		0xfffffffffffff6ffUL
...
> +#define _SEGMENT_ENTRY_BITS			0xfffffffffffffe3fUL
> +#define _SEGMENT_ENTRY_HARDWARE_BITS		0xfffffffffffffe3cUL
> +#define _SEGMENT_ENTRY_HARDWARE_BITS_LARGE	0xfffffffffff1073cUL

Please resend and make sure the order (BITS, BITS_LARGE, ...) is the
same; then Alexander can pick this up.

For the definitions:
Reviewed-by: Heiko Carstens <hca@linux.ibm.com>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 2/2] s390/pgtable: add missing hardware bits for puds, pmds
  2024-04-29 13:11   ` Heiko Carstens
@ 2024-04-29 14:03     ` Claudio Imbrenda
  0 siblings, 0 replies; 5+ messages in thread
From: Claudio Imbrenda @ 2024-04-29 14:03 UTC (permalink / raw
  To: Heiko Carstens
  Cc: linux-kernel, linux-s390, gor, agordeev, svens, gerald.schaefer,
	borntraeger

On Mon, 29 Apr 2024 15:11:49 +0200
Heiko Carstens <hca@linux.ibm.com> wrote:

> On Fri, Apr 26, 2024 at 02:04:47PM +0200, Claudio Imbrenda wrote:
> > Add the table type and ACCF validity bits to _SEGMENT_ENTRY_BITS and
> > _SEGMENT_ENTRY_HARDWARE_BITS{,_LARGE}.
> > 
> > For completeness, introduce _REGION3_ENTRY_HARDWARE_BITS_LARGE and
> > _REGION3_ENTRY_HARDWARE_BITS, containing the hardware bits used for
> > large puds and normal puds.
> > 
> > Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
> > ---
> >  arch/s390/include/asm/pgtable.h | 8 +++++---
> >  1 file changed, 5 insertions(+), 3 deletions(-)  
> 
> ...
> > +#define _REGION3_ENTRY_HARDWARE_BITS_LARGE	0xffffffff8001073cUL
> > +#define _REGION3_ENTRY_HARDWARE_BITS		0xfffffffffffff6ffUL  
> ...
> > +#define _SEGMENT_ENTRY_BITS			0xfffffffffffffe3fUL
> > +#define _SEGMENT_ENTRY_HARDWARE_BITS		0xfffffffffffffe3cUL
> > +#define _SEGMENT_ENTRY_HARDWARE_BITS_LARGE	0xfffffffffff1073cUL  
> 
> Please resend and make sure the order (BITS, BITS_LARGE, ...) is the
> same; then Alexander can pick this up.

oops, will fix

> 
> For the definitions:
> Reviewed-by: Heiko Carstens <hca@linux.ibm.com>


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-04-29 14:04 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-26 12:04 [PATCH v3 0/2] s390/pgtable: misc small improvements Claudio Imbrenda
2024-04-26 12:04 ` [PATCH v3 1/2] s390/pgtable: switch read and write softbits for puds Claudio Imbrenda
2024-04-26 12:04 ` [PATCH v3 2/2] s390/pgtable: add missing hardware bits for puds, pmds Claudio Imbrenda
2024-04-29 13:11   ` Heiko Carstens
2024-04-29 14:03     ` Claudio Imbrenda

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).