Re: [PATCH 02/16] debug_vm_pgtable/ppc64: Avoid setting top bits in radom value
On 8/12/20 1:42 PM, Anshuman Khandual wrote: On 08/12/2020 12:03 PM, Aneesh Kumar K.V wrote: ppc64 use bit 62 to indicate a pte entry (_PAGE_PTE). Avoid setting that bit in random value. Signed-off-by: Aneesh Kumar K.V --- mm/debug_vm_pgtable.c | 5 - 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mm/debug_vm_pgtable.c b/mm/debug_vm_pgtable.c index 086309fb9b6f..4c32063a8acf 100644 --- a/mm/debug_vm_pgtable.c +++ b/mm/debug_vm_pgtable.c @@ -45,9 +45,12 @@ * pxx_clear() because of how dynamic page table folding works on s390. So * while loading up the entries do not change the lower 4 bits. It does not * have affect any other platform. + * + * Also avoid the 62nd bit on ppc64 that is used to mark a pte entry. */ Please move and fold the above line with the existing paragraph. #define S390_MASK_BITS4 -#define RANDOM_ORVALUE GENMASK(BITS_PER_LONG - 1, S390_MASK_BITS) +#define PPC_MASK_BITS 2 s/PPC/PPC64/ +#define RANDOM_ORVALUE GENMASK(BITS_PER_LONG - 1 - PPC_MASK_BITS, S390_MASK_BITS) #define RANDOM_NZVALUEGENMASK(7, 0) static void __init pte_basic_tests(unsigned long pfn, pgprot_t prot) With this change, RANDOM_ORVALUE will be (0x3ff0) which discards both bit 63 and 62. If only bit 62 is to be avoided for ppc64 the mask should be (0xbff0) instead. The following change on this patch should do the trick. diff --git a/mm/debug_vm_pgtable.c b/mm/debug_vm_pgtable.c index eb059fef89c2..1499181fb0e9 100644 --- a/mm/debug_vm_pgtable.c +++ b/mm/debug_vm_pgtable.c @@ -45,13 +45,13 @@ * entry type. But these bits might affect the ability to clear entries with * pxx_clear() because of how dynamic page table folding works on s390. So * while loading up the entries do not change the lower 4 bits. It does not - * have affect any other platform. - * - * Also avoid the 62nd bit on ppc64 that is used to mark a pte entry. + * have affect any other platform. Also avoid the 62nd bit on ppc64 that is + * used to mark a pte entry. */ -#define S390_MASK_BITS 4 -#define PPC_MASK_BITS 2 -#define RANDOM_ORVALUE GENMASK(BITS_PER_LONG - 1 - PPC_MASK_BITS, S390_MASK_BITS) +#define S390_SKIP_MASK GENMASK(3, 0) +#define PPC64_SKIP_MASKGENMASK(62, 62) +#define ARCH_SKIP_MASK (S390_SKIP_MASK | PPC64_SKIP_MASK) +#define RANDOM_ORVALUE (GENMASK(BITS_PER_LONG - 1, 0) & ~ARCH_SKIP_MASK) #define RANDOM_NZVALUE GENMASK(7, 0) static void __init pte_basic_tests(unsigned long pfn, pgprot_t prot) I will switch to this. -aneesh
Re: [PATCH 02/16] debug_vm_pgtable/ppc64: Avoid setting top bits in radom value
On 08/12/2020 12:03 PM, Aneesh Kumar K.V wrote: > ppc64 use bit 62 to indicate a pte entry (_PAGE_PTE). Avoid setting that bit > in > random value. > > Signed-off-by: Aneesh Kumar K.V > --- > mm/debug_vm_pgtable.c | 5 - > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/mm/debug_vm_pgtable.c b/mm/debug_vm_pgtable.c > index 086309fb9b6f..4c32063a8acf 100644 > --- a/mm/debug_vm_pgtable.c > +++ b/mm/debug_vm_pgtable.c > @@ -45,9 +45,12 @@ > * pxx_clear() because of how dynamic page table folding works on s390. So > * while loading up the entries do not change the lower 4 bits. It does not > * have affect any other platform. > + * > + * Also avoid the 62nd bit on ppc64 that is used to mark a pte entry. > */ Please move and fold the above line with the existing paragraph. > #define S390_MASK_BITS 4 > -#define RANDOM_ORVALUE GENMASK(BITS_PER_LONG - 1, S390_MASK_BITS) > +#define PPC_MASK_BITS2 s/PPC/PPC64/ > +#define RANDOM_ORVALUE GENMASK(BITS_PER_LONG - 1 - PPC_MASK_BITS, > S390_MASK_BITS) > #define RANDOM_NZVALUE GENMASK(7, 0) > > static void __init pte_basic_tests(unsigned long pfn, pgprot_t prot) > With this change, RANDOM_ORVALUE will be (0x3ff0) which discards both bit 63 and 62. If only bit 62 is to be avoided for ppc64 the mask should be (0xbff0) instead. The following change on this patch should do the trick. diff --git a/mm/debug_vm_pgtable.c b/mm/debug_vm_pgtable.c index eb059fef89c2..1499181fb0e9 100644 --- a/mm/debug_vm_pgtable.c +++ b/mm/debug_vm_pgtable.c @@ -45,13 +45,13 @@ * entry type. But these bits might affect the ability to clear entries with * pxx_clear() because of how dynamic page table folding works on s390. So * while loading up the entries do not change the lower 4 bits. It does not - * have affect any other platform. - * - * Also avoid the 62nd bit on ppc64 that is used to mark a pte entry. + * have affect any other platform. Also avoid the 62nd bit on ppc64 that is + * used to mark a pte entry. */ -#define S390_MASK_BITS 4 -#define PPC_MASK_BITS 2 -#define RANDOM_ORVALUE GENMASK(BITS_PER_LONG - 1 - PPC_MASK_BITS, S390_MASK_BITS) +#define S390_SKIP_MASK GENMASK(3, 0) +#define PPC64_SKIP_MASKGENMASK(62, 62) +#define ARCH_SKIP_MASK (S390_SKIP_MASK | PPC64_SKIP_MASK) +#define RANDOM_ORVALUE (GENMASK(BITS_PER_LONG - 1, 0) & ~ARCH_SKIP_MASK) #define RANDOM_NZVALUE GENMASK(7, 0) static void __init pte_basic_tests(unsigned long pfn, pgprot_t prot)
Re: [PATCH 02/16] debug_vm_pgtable/ppc64: Avoid setting top bits in radom value
On 8/12/20 12:10 PM, Christophe Leroy wrote: Le 12/08/2020 à 08:33, Aneesh Kumar K.V a écrit : ppc64 use bit 62 to indicate a pte entry (_PAGE_PTE). Avoid setting that bit in random value. Signed-off-by: Aneesh Kumar K.V --- mm/debug_vm_pgtable.c | 5 - 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mm/debug_vm_pgtable.c b/mm/debug_vm_pgtable.c index 086309fb9b6f..4c32063a8acf 100644 --- a/mm/debug_vm_pgtable.c +++ b/mm/debug_vm_pgtable.c @@ -45,9 +45,12 @@ * pxx_clear() because of how dynamic page table folding works on s390. So * while loading up the entries do not change the lower 4 bits. It does not * have affect any other platform. + * + * Also avoid the 62nd bit on ppc64 that is used to mark a pte entry. */ #define S390_MASK_BITS 4 -#define RANDOM_ORVALUE GENMASK(BITS_PER_LONG - 1, S390_MASK_BITS) +#define PPC_MASK_BITS 2 +#define RANDOM_ORVALUE GENMASK(BITS_PER_LONG - 1 - PPC_MASK_BITS, S390_MASK_BITS) Do you mean: #define RANDOM_ORVALUE GENMASK(BITS_PER_LONG - 1, PPC_MASK_BITS | S390_MASK_BITS) IIUC GENMASK(hi, low) generate a mask from hi to low bits. Since i want to avoid bit 62, I am forcing it to generate bits from (61, 4) -aneesh
Re: [PATCH 02/16] debug_vm_pgtable/ppc64: Avoid setting top bits in radom value
Le 12/08/2020 à 08:33, Aneesh Kumar K.V a écrit : ppc64 use bit 62 to indicate a pte entry (_PAGE_PTE). Avoid setting that bit in random value. Signed-off-by: Aneesh Kumar K.V --- mm/debug_vm_pgtable.c | 5 - 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mm/debug_vm_pgtable.c b/mm/debug_vm_pgtable.c index 086309fb9b6f..4c32063a8acf 100644 --- a/mm/debug_vm_pgtable.c +++ b/mm/debug_vm_pgtable.c @@ -45,9 +45,12 @@ * pxx_clear() because of how dynamic page table folding works on s390. So * while loading up the entries do not change the lower 4 bits. It does not * have affect any other platform. + * + * Also avoid the 62nd bit on ppc64 that is used to mark a pte entry. */ #define S390_MASK_BITS4 -#define RANDOM_ORVALUE GENMASK(BITS_PER_LONG - 1, S390_MASK_BITS) +#define PPC_MASK_BITS 2 +#define RANDOM_ORVALUE GENMASK(BITS_PER_LONG - 1 - PPC_MASK_BITS, S390_MASK_BITS) Do you mean: #define RANDOM_ORVALUE GENMASK(BITS_PER_LONG - 1, PPC_MASK_BITS | S390_MASK_BITS) Christophe #define RANDOM_NZVALUEGENMASK(7, 0) static void __init pte_basic_tests(unsigned long pfn, pgprot_t prot)
[PATCH 02/16] debug_vm_pgtable/ppc64: Avoid setting top bits in radom value
ppc64 use bit 62 to indicate a pte entry (_PAGE_PTE). Avoid setting that bit in random value. Signed-off-by: Aneesh Kumar K.V --- mm/debug_vm_pgtable.c | 5 - 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mm/debug_vm_pgtable.c b/mm/debug_vm_pgtable.c index 086309fb9b6f..4c32063a8acf 100644 --- a/mm/debug_vm_pgtable.c +++ b/mm/debug_vm_pgtable.c @@ -45,9 +45,12 @@ * pxx_clear() because of how dynamic page table folding works on s390. So * while loading up the entries do not change the lower 4 bits. It does not * have affect any other platform. + * + * Also avoid the 62nd bit on ppc64 that is used to mark a pte entry. */ #define S390_MASK_BITS 4 -#define RANDOM_ORVALUE GENMASK(BITS_PER_LONG - 1, S390_MASK_BITS) +#define PPC_MASK_BITS 2 +#define RANDOM_ORVALUE GENMASK(BITS_PER_LONG - 1 - PPC_MASK_BITS, S390_MASK_BITS) #define RANDOM_NZVALUE GENMASK(7, 0) static void __init pte_basic_tests(unsigned long pfn, pgprot_t prot) -- 2.26.2