Re: [PATCH v3 1/10] x86/vdso32: Define PGTABLE_LEVELS to 32bit VDSO

2015-08-24 Thread Toshi Kani
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

2015-08-24 Thread Toshi Kani
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

2015-08-20 Thread Toshi Kani

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

2015-08-20 Thread Thomas Gleixner
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

2015-08-20 Thread Toshi Kani

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

2015-08-20 Thread Thomas Gleixner
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

2015-08-05 Thread Toshi Kani
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

2015-08-05 Thread Toshi Kani
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/