2017-02-15 20:31:08

by Dave Jiang

[permalink] [raw]
Subject: [PATCH] mm,x86: fix SMP x86 32bit build for native_pud_clear()

The fix introduced by e4decc90 to fix the UP case for 32bit x86, however
that broke the SMP case that was working previously. Add ifdef so the dummy
function only show up for 32bit UP case only.

Fix: e4decc90 mm,x86: native_pud_clear missing on i386 build

Reported-by: Alexander Kapshuk <[email protected]>
Signed-off-by: Dave Jiang <[email protected]>
---
arch/x86/include/asm/pgtable-3level.h | 2 ++
1 file changed, 2 insertions(+)

diff --git a/arch/x86/include/asm/pgtable-3level.h b/arch/x86/include/asm/pgtable-3level.h
index 50d35e3..8f50fb3 100644
--- a/arch/x86/include/asm/pgtable-3level.h
+++ b/arch/x86/include/asm/pgtable-3level.h
@@ -121,9 +121,11 @@ static inline void native_pmd_clear(pmd_t *pmd)
*(tmp + 1) = 0;
}

+#ifndef CONFIG_SMP
static inline void native_pud_clear(pud_t *pudp)
{
}
+#endif

static inline void pud_clear(pud_t *pudp)
{

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>


2017-02-16 15:42:34

by Dave Hansen

[permalink] [raw]
Subject: Re: [PATCH] mm,x86: fix SMP x86 32bit build for native_pud_clear()

On 02/15/2017 12:31 PM, Dave Jiang wrote:
> The fix introduced by e4decc90 to fix the UP case for 32bit x86, however
> that broke the SMP case that was working previously. Add ifdef so the dummy
> function only show up for 32bit UP case only.

Could you elaborate a bit on how it broke things?

> Fix: e4decc90 mm,x86: native_pud_clear missing on i386 build

Which tree is that in, btw?

2017-02-16 16:27:52

by Dave Jiang

[permalink] [raw]
Subject: Re: [PATCH] mm,x86: fix SMP x86 32bit build for native_pud_clear()



On 02/16/2017 08:42 AM, Dave Hansen wrote:
> On 02/15/2017 12:31 PM, Dave Jiang wrote:
>> The fix introduced by e4decc90 to fix the UP case for 32bit x86, however
>> that broke the SMP case that was working previously. Add ifdef so the dummy
>> function only show up for 32bit UP case only.
>
> Could you elaborate a bit on how it broke things?

So originally 0-day build found that commit a10a1701 (mm, x86: add
support for PUD-sized transparent hugepages) is breaking 32bit x86 UP
config because native_pud_clear() was missing to satisfy
arch/x86/include/asm/pgtable.h. I added a dummy function to satisfy that
with commit e4decc90 (mm,x86: native_pud_clear missing on i386 build).
However in the process of doing that, I broke the 32bit x86 SMP config
that was working before.

>
>> Fix: e4decc90 mm,x86: native_pud_clear missing on i386 build
>
> Which tree is that in, btw?
>
linux-next-20170214 I believe

2017-02-27 18:31:05

by Laura Abbott

[permalink] [raw]
Subject: Re: [PATCH] mm,x86: fix SMP x86 32bit build for native_pud_clear()

On 02/15/2017 12:31 PM, Dave Jiang wrote:
> The fix introduced by e4decc90 to fix the UP case for 32bit x86, however
> that broke the SMP case that was working previously. Add ifdef so the dummy
> function only show up for 32bit UP case only.
>
> Fix: e4decc90 mm,x86: native_pud_clear missing on i386 build
>
> Reported-by: Alexander Kapshuk <[email protected]>
> Signed-off-by: Dave Jiang <[email protected]>
> ---
> arch/x86/include/asm/pgtable-3level.h | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/arch/x86/include/asm/pgtable-3level.h b/arch/x86/include/asm/pgtable-3level.h
> index 50d35e3..8f50fb3 100644
> --- a/arch/x86/include/asm/pgtable-3level.h
> +++ b/arch/x86/include/asm/pgtable-3level.h
> @@ -121,9 +121,11 @@ static inline void native_pmd_clear(pmd_t *pmd)
> *(tmp + 1) = 0;
> }
>
> +#ifndef CONFIG_SMP
> static inline void native_pud_clear(pud_t *pudp)
> {
> }
> +#endif
>
> static inline void pud_clear(pud_t *pudp)
> {
>
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to [email protected]. For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
>

This breaks one of the Fedora configurations as of
e5d56efc97f8240d0b5d66c03949382b6d7e5570

In file included from ./include/linux/mm.h:68:0,
from ./include/linux/highmem.h:7,
from ./include/linux/bio.h:21,
from ./include/linux/writeback.h:205,
from ./include/linux/memcontrol.h:30,
from ./include/linux/swap.h:8,
from ./include/linux/suspend.h:4,
from arch/x86/kernel/asm-offsets.c:12:
./arch/x86/include/asm/pgtable.h: In function 'native_local_pudp_get_and_clear':
./arch/x86/include/asm/pgtable.h:888:2: error: implicit declaration of function 'native_pud_clear';did you mean 'native_pmd_clear'? [-Werror=implicit-function-declaration]
native_pud_clear(pudp);
^~~~~~~~~~~~~~~~

Kernel configuration attached. I'm probably just going to revert
this part unless someone sends me a better fix.

Thanks,
Laura


Attachments:
kernel-4.11.0-i686-PAE.config (183.57 kB)