Re: [PATCH v3 1/10] x86/vdso32: Define PGTABLE_LEVELS to 32bit VDSO
On Thu, 2015-08-20 at 17:04 -0600, Toshi Kani wrote: > On 8/20/2015 1:46 PM, Thomas Gleixner wrote: > > On Wed, 5 Aug 2015, Toshi Kani wrote: > > > > > In case of CONFIG_X86_64, vdso32/vclock_gettime.c fakes a 32bit > > > kernel configuration by re-defining it to CONFIG_X86_32. However, > > > it does not re-define CONFIG_PGTABLE_LEVELS leaving it as 4 levels. > > > Fix it by re-defining CONFIG_PGTABLE_LEVELS to 2 as X86_PAE is not > > > set. > > You fail to explain WHY this is required. I have not yet spotted any > > code in vclock_gettime.c which is affected by this. > > Sorry about that. Without this patch 01, applying patch 02 & 03 causes > the following compile errors in vclock_gettime.c. This is because it > includes pgtable_type.h (see blow), which now requires PUD_SHIFT and > PMD_SHIFT defined properly. In case of X86_32, pgtable_type.h includes > pgtable_nopud.h and pgtable-nopmd.h, which define these SHIFTs when > CONFIG_PGTABLE_LEVEL is set to 2 (or 3 if PAE is also defined). > : Attached is patch 01/10 with updated descriptions. The rest of the patchset still applies cleanly. Please let me know if you have any further comments. Thanks, -Toshi Subject: [PATCH v3 UPDATE 1/10] x86/vdso32: Define PGTABLE_LEVELS to 32bit VDSO In case of CONFIG_X86_64, vdso32/vclock_gettime.c fakes a 32-bit non-PAE kernel configuration by re-defining it to CONFIG_X86_32. However, it does not re-define CONFIG_PGTABLE_LEVELS leaving it as 4 levels. This mismatch leads to NOT include and , which will cause compile errors when a later patch enhances to use PUD_SHIFT and PMD_SHIFT. These -nopud & -nopmd headers define these SHIFTs for the 32-bit non-PAE kernel. Fix it by re-defining CONFIG_PGTABLE_LEVELS to 2 levels. Signed-off-by: Toshi Kani Cc: Juergen Gross Cc: Thomas Gleixner Cc: H. Peter Anvin Cc: Ingo Molnar Cc: Borislav Petkov --- arch/x86/entry/vdso/vdso32/vclock_gettime.c |2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/x86/entry/vdso/vdso32/vclock_gettime.c b/arch/x86/entry/vdso/vdso32/vclock_gettime.c index 175cc72..87a86e0 100644 --- a/arch/x86/entry/vdso/vdso32/vclock_gettime.c +++ b/arch/x86/entry/vdso/vdso32/vclock_gettime.c @@ -14,11 +14,13 @@ */ #undef CONFIG_64BIT #undef CONFIG_X86_64 +#undef CONFIG_PGTABLE_LEVELS #undef CONFIG_ILLEGAL_POINTER_VALUE #undef CONFIG_SPARSEMEM_VMEMMAP #undef CONFIG_NR_CPUS #define CONFIG_X86_32 1 +#define CONFIG_PGTABLE_LEVELS 2 #define CONFIG_PAGE_OFFSET 0 #define CONFIG_ILLEGAL_POINTER_VALUE 0 #define CONFIG_NR_CPUS 1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v3 1/10] x86/vdso32: Define PGTABLE_LEVELS to 32bit VDSO
On Thu, 2015-08-20 at 17:04 -0600, Toshi Kani wrote: On 8/20/2015 1:46 PM, Thomas Gleixner wrote: On Wed, 5 Aug 2015, Toshi Kani wrote: In case of CONFIG_X86_64, vdso32/vclock_gettime.c fakes a 32bit kernel configuration by re-defining it to CONFIG_X86_32. However, it does not re-define CONFIG_PGTABLE_LEVELS leaving it as 4 levels. Fix it by re-defining CONFIG_PGTABLE_LEVELS to 2 as X86_PAE is not set. You fail to explain WHY this is required. I have not yet spotted any code in vclock_gettime.c which is affected by this. Sorry about that. Without this patch 01, applying patch 02 03 causes the following compile errors in vclock_gettime.c. This is because it includes pgtable_type.h (see blow), which now requires PUD_SHIFT and PMD_SHIFT defined properly. In case of X86_32, pgtable_type.h includes pgtable_nopud.h and pgtable-nopmd.h, which define these SHIFTs when CONFIG_PGTABLE_LEVEL is set to 2 (or 3 if PAE is also defined). : Attached is patch 01/10 with updated descriptions. The rest of the patchset still applies cleanly. Please let me know if you have any further comments. Thanks, -Toshi Subject: [PATCH v3 UPDATE 1/10] x86/vdso32: Define PGTABLE_LEVELS to 32bit VDSO In case of CONFIG_X86_64, vdso32/vclock_gettime.c fakes a 32-bit non-PAE kernel configuration by re-defining it to CONFIG_X86_32. However, it does not re-define CONFIG_PGTABLE_LEVELS leaving it as 4 levels. This mismatch leads asm/pgtable_type.h to NOT include asm-generic/ pgtable-nopud.h and asm-generic/pgtable-nopmd.h, which will cause compile errors when a later patch enhances asm/pgtable_type.h to use PUD_SHIFT and PMD_SHIFT. These -nopud -nopmd headers define these SHIFTs for the 32-bit non-PAE kernel. Fix it by re-defining CONFIG_PGTABLE_LEVELS to 2 levels. Signed-off-by: Toshi Kani toshi.k...@hp.com Cc: Juergen Gross jgr...@suse.com Cc: Thomas Gleixner t...@linutronix.de Cc: H. Peter Anvin h...@zytor.com Cc: Ingo Molnar mi...@redhat.com Cc: Borislav Petkov b...@alien8.de --- arch/x86/entry/vdso/vdso32/vclock_gettime.c |2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/x86/entry/vdso/vdso32/vclock_gettime.c b/arch/x86/entry/vdso/vdso32/vclock_gettime.c index 175cc72..87a86e0 100644 --- a/arch/x86/entry/vdso/vdso32/vclock_gettime.c +++ b/arch/x86/entry/vdso/vdso32/vclock_gettime.c @@ -14,11 +14,13 @@ */ #undef CONFIG_64BIT #undef CONFIG_X86_64 +#undef CONFIG_PGTABLE_LEVELS #undef CONFIG_ILLEGAL_POINTER_VALUE #undef CONFIG_SPARSEMEM_VMEMMAP #undef CONFIG_NR_CPUS #define CONFIG_X86_32 1 +#define CONFIG_PGTABLE_LEVELS 2 #define CONFIG_PAGE_OFFSET 0 #define CONFIG_ILLEGAL_POINTER_VALUE 0 #define CONFIG_NR_CPUS 1 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v3 1/10] x86/vdso32: Define PGTABLE_LEVELS to 32bit VDSO
On 8/20/2015 1:46 PM, Thomas Gleixner wrote: On Wed, 5 Aug 2015, Toshi Kani wrote: In case of CONFIG_X86_64, vdso32/vclock_gettime.c fakes a 32bit kernel configuration by re-defining it to CONFIG_X86_32. However, it does not re-define CONFIG_PGTABLE_LEVELS leaving it as 4 levels. Fix it by re-defining CONFIG_PGTABLE_LEVELS to 2 as X86_PAE is not set. You fail to explain WHY this is required. I have not yet spotted any code in vclock_gettime.c which is affected by this. Sorry about that. Without this patch 01, applying patch 02 & 03 causes the following compile errors in vclock_gettime.c. This is because it includes pgtable_type.h (see blow), which now requires PUD_SHIFT and PMD_SHIFT defined properly. In case of X86_32, pgtable_type.h includes pgtable_nopud.h and pgtable-nopmd.h, which define these SHIFTs when CONFIG_PGTABLE_LEVEL is set to 2 (or 3 if PAE is also defined). In file included from ./arch/x86/include/asm/paravirt_types.h:44:0, from ./arch/x86/include/asm/ptrace.h:71, from ./arch/x86/include/asm/alternative.h:8, from ./arch/x86/include/asm/bitops.h:16, from include/linux/bitops.h:36, from include/linux/kernel.h:10, from include/linux/list.h:8, from include/linux/preempt.h:10, from include/linux/spinlock.h:50, from include/linux/seqlock.h:35, from include/linux/time.h:5, from include/uapi/linux/timex.h:56, from include/linux/timex.h:56, from include/linux/clocksource.h:12, from ./arch/x86/include/asm/vgtod.h:5, from arch/x86/entry/vdso/vdso32/../vclock_gettime.c:15, from arch/x86/entry/vdso/vdso32/vclock_gettime.c:30: ./arch/x86/include/asm/pgtable_types.h: In function pud_pfn_mask・ ./arch/x86/include/asm/pgtable_types.h:282:23: error: PUD_SHIFT・ undeclared (first use in this function) return PUD_PAGE_MASK & PHYSICAL_PAGE_MASK; ^ ./arch/x86/include/asm/pgtable_types.h:282:23: note: each undeclared identifier is reported only once for each function it appears in ./arch/x86/include/asm/pgtable_types.h: In function pud_flags_mask・ ./arch/x86/include/asm/pgtable_types.h:290:25: error: PUD_SHIFT・ undeclared (first use in this function) return ~(PUD_PAGE_MASK & (pudval_t)PHYSICAL_PAGE_MASK); ^ ./arch/x86/include/asm/pgtable_types.h: In function pmd_pfn_mask・ ./arch/x86/include/asm/pgtable_types.h:303:23: error: PMD_SHIFT・ undeclared (first use in this function) return PMD_PAGE_MASK & PHYSICAL_PAGE_MASK; ^ ./arch/x86/include/asm/pgtable_types.h: In function pmd_flags_mask・ ./arch/x86/include/asm/pgtable_types.h:311:25: error: PMD_SHIFT・ undeclared (first use in this function) return ~(PMD_PAGE_MASK & (pmdval_t)PHYSICAL_PAGE_MASK); ^ scripts/Makefile.build:258: recipe for target 'arch/x86/entry/vdso/vdso32/vclock_gettime.o' failed make[3]: *** [arch/x86/entry/vdso/vdso32/vclock_gettime.o] Error 1 make[3]: *** Waiting for unfinished jobs Thanks, -Toshi -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v3 1/10] x86/vdso32: Define PGTABLE_LEVELS to 32bit VDSO
On Wed, 5 Aug 2015, Toshi Kani wrote: > In case of CONFIG_X86_64, vdso32/vclock_gettime.c fakes a 32bit > kernel configuration by re-defining it to CONFIG_X86_32. However, > it does not re-define CONFIG_PGTABLE_LEVELS leaving it as 4 levels. > Fix it by re-defining CONFIG_PGTABLE_LEVELS to 2 as X86_PAE is not > set. You fail to explain WHY this is required. I have not yet spotted any code in vclock_gettime.c which is affected by this. Thanks, tglx -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v3 1/10] x86/vdso32: Define PGTABLE_LEVELS to 32bit VDSO
On 8/20/2015 1:46 PM, Thomas Gleixner wrote: On Wed, 5 Aug 2015, Toshi Kani wrote: In case of CONFIG_X86_64, vdso32/vclock_gettime.c fakes a 32bit kernel configuration by re-defining it to CONFIG_X86_32. However, it does not re-define CONFIG_PGTABLE_LEVELS leaving it as 4 levels. Fix it by re-defining CONFIG_PGTABLE_LEVELS to 2 as X86_PAE is not set. You fail to explain WHY this is required. I have not yet spotted any code in vclock_gettime.c which is affected by this. Sorry about that. Without this patch 01, applying patch 02 03 causes the following compile errors in vclock_gettime.c. This is because it includes pgtable_type.h (see blow), which now requires PUD_SHIFT and PMD_SHIFT defined properly. In case of X86_32, pgtable_type.h includes pgtable_nopud.h and pgtable-nopmd.h, which define these SHIFTs when CONFIG_PGTABLE_LEVEL is set to 2 (or 3 if PAE is also defined). In file included from ./arch/x86/include/asm/paravirt_types.h:44:0, from ./arch/x86/include/asm/ptrace.h:71, from ./arch/x86/include/asm/alternative.h:8, from ./arch/x86/include/asm/bitops.h:16, from include/linux/bitops.h:36, from include/linux/kernel.h:10, from include/linux/list.h:8, from include/linux/preempt.h:10, from include/linux/spinlock.h:50, from include/linux/seqlock.h:35, from include/linux/time.h:5, from include/uapi/linux/timex.h:56, from include/linux/timex.h:56, from include/linux/clocksource.h:12, from ./arch/x86/include/asm/vgtod.h:5, from arch/x86/entry/vdso/vdso32/../vclock_gettime.c:15, from arch/x86/entry/vdso/vdso32/vclock_gettime.c:30: ./arch/x86/include/asm/pgtable_types.h: In function pud_pfn_mask・ ./arch/x86/include/asm/pgtable_types.h:282:23: error: PUD_SHIFT・ undeclared (first use in this function) return PUD_PAGE_MASK PHYSICAL_PAGE_MASK; ^ ./arch/x86/include/asm/pgtable_types.h:282:23: note: each undeclared identifier is reported only once for each function it appears in ./arch/x86/include/asm/pgtable_types.h: In function pud_flags_mask・ ./arch/x86/include/asm/pgtable_types.h:290:25: error: PUD_SHIFT・ undeclared (first use in this function) return ~(PUD_PAGE_MASK (pudval_t)PHYSICAL_PAGE_MASK); ^ ./arch/x86/include/asm/pgtable_types.h: In function pmd_pfn_mask・ ./arch/x86/include/asm/pgtable_types.h:303:23: error: PMD_SHIFT・ undeclared (first use in this function) return PMD_PAGE_MASK PHYSICAL_PAGE_MASK; ^ ./arch/x86/include/asm/pgtable_types.h: In function pmd_flags_mask・ ./arch/x86/include/asm/pgtable_types.h:311:25: error: PMD_SHIFT・ undeclared (first use in this function) return ~(PMD_PAGE_MASK (pmdval_t)PHYSICAL_PAGE_MASK); ^ scripts/Makefile.build:258: recipe for target 'arch/x86/entry/vdso/vdso32/vclock_gettime.o' failed make[3]: *** [arch/x86/entry/vdso/vdso32/vclock_gettime.o] Error 1 make[3]: *** Waiting for unfinished jobs Thanks, -Toshi -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH v3 1/10] x86/vdso32: Define PGTABLE_LEVELS to 32bit VDSO
On Wed, 5 Aug 2015, Toshi Kani wrote: In case of CONFIG_X86_64, vdso32/vclock_gettime.c fakes a 32bit kernel configuration by re-defining it to CONFIG_X86_32. However, it does not re-define CONFIG_PGTABLE_LEVELS leaving it as 4 levels. Fix it by re-defining CONFIG_PGTABLE_LEVELS to 2 as X86_PAE is not set. You fail to explain WHY this is required. I have not yet spotted any code in vclock_gettime.c which is affected by this. Thanks, tglx -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH v3 1/10] x86/vdso32: Define PGTABLE_LEVELS to 32bit VDSO
In case of CONFIG_X86_64, vdso32/vclock_gettime.c fakes a 32bit kernel configuration by re-defining it to CONFIG_X86_32. However, it does not re-define CONFIG_PGTABLE_LEVELS leaving it as 4 levels. Fix it by re-defining CONFIG_PGTABLE_LEVELS to 2 as X86_PAE is not set. Signed-off-by: Toshi Kani Cc: Juergen Gross Cc: Thomas Gleixner Cc: H. Peter Anvin Cc: Ingo Molnar Cc: Borislav Petkov --- arch/x86/entry/vdso/vdso32/vclock_gettime.c |2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/x86/entry/vdso/vdso32/vclock_gettime.c b/arch/x86/entry/vdso/vdso32/vclock_gettime.c index 175cc72..87a86e0 100644 --- a/arch/x86/entry/vdso/vdso32/vclock_gettime.c +++ b/arch/x86/entry/vdso/vdso32/vclock_gettime.c @@ -14,11 +14,13 @@ */ #undef CONFIG_64BIT #undef CONFIG_X86_64 +#undef CONFIG_PGTABLE_LEVELS #undef CONFIG_ILLEGAL_POINTER_VALUE #undef CONFIG_SPARSEMEM_VMEMMAP #undef CONFIG_NR_CPUS #define CONFIG_X86_32 1 +#define CONFIG_PGTABLE_LEVELS 2 #define CONFIG_PAGE_OFFSET 0 #define CONFIG_ILLEGAL_POINTER_VALUE 0 #define CONFIG_NR_CPUS 1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH v3 1/10] x86/vdso32: Define PGTABLE_LEVELS to 32bit VDSO
In case of CONFIG_X86_64, vdso32/vclock_gettime.c fakes a 32bit kernel configuration by re-defining it to CONFIG_X86_32. However, it does not re-define CONFIG_PGTABLE_LEVELS leaving it as 4 levels. Fix it by re-defining CONFIG_PGTABLE_LEVELS to 2 as X86_PAE is not set. Signed-off-by: Toshi Kani toshi.k...@hp.com Cc: Juergen Gross jgr...@suse.com Cc: Thomas Gleixner t...@linutronix.de Cc: H. Peter Anvin h...@zytor.com Cc: Ingo Molnar mi...@redhat.com Cc: Borislav Petkov b...@alien8.de --- arch/x86/entry/vdso/vdso32/vclock_gettime.c |2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/x86/entry/vdso/vdso32/vclock_gettime.c b/arch/x86/entry/vdso/vdso32/vclock_gettime.c index 175cc72..87a86e0 100644 --- a/arch/x86/entry/vdso/vdso32/vclock_gettime.c +++ b/arch/x86/entry/vdso/vdso32/vclock_gettime.c @@ -14,11 +14,13 @@ */ #undef CONFIG_64BIT #undef CONFIG_X86_64 +#undef CONFIG_PGTABLE_LEVELS #undef CONFIG_ILLEGAL_POINTER_VALUE #undef CONFIG_SPARSEMEM_VMEMMAP #undef CONFIG_NR_CPUS #define CONFIG_X86_32 1 +#define CONFIG_PGTABLE_LEVELS 2 #define CONFIG_PAGE_OFFSET 0 #define CONFIG_ILLEGAL_POINTER_VALUE 0 #define CONFIG_NR_CPUS 1 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/