linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] powerpc: fix compile error on 64K pages on 40x, 44x
@ 2017-09-28 18:32 Christian Lamparter
  2017-09-30  8:25 ` christophe leroy
  0 siblings, 1 reply; 3+ messages in thread
From: Christian Lamparter @ 2017-09-28 18:32 UTC (permalink / raw)
  To: linuxppc-dev
  Cc: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman,
	Christophe LEROY

The mmu context on the 40x, 44x does not define pte_frag
entry. This causes gcc abort the compilation due to:

setup-common.c: In function ‘setup_arch’:
setup-common.c:908: error: ‘mm_context_t’ has no ‘pte_frag’

This patch fixes the issue by adding additional guard
conditions, that limit the initialization to just
platforms that define the pte_frag variable in the
mmu context.

Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
---
 arch/powerpc/kernel/setup-common.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c
index 0ac741fae90e..4a22ec6b34de 100644
--- a/arch/powerpc/kernel/setup-common.c
+++ b/arch/powerpc/kernel/setup-common.c
@@ -904,7 +904,8 @@ void __init setup_arch(char **cmdline_p)
 #endif
 #endif
 
-#ifdef CONFIG_PPC_64K_PAGES
+#if defined(CONFIG_PPC_64K_PAGES) && \
+    (defined(CONFIG_PPC_BOOK3S_64) || defined(CONFIG_PPC_BOOK3E_MMU))
 	init_mm.context.pte_frag = NULL;
 #endif
 #ifdef CONFIG_SPAPR_TCE_IOMMU
-- 
2.14.2

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

* Re: [PATCH v2] powerpc: fix compile error on 64K pages on 40x, 44x
  2017-09-28 18:32 [PATCH v2] powerpc: fix compile error on 64K pages on 40x, 44x Christian Lamparter
@ 2017-09-30  8:25 ` christophe leroy
  2017-09-30 10:05   ` Christian Lamparter
  0 siblings, 1 reply; 3+ messages in thread
From: christophe leroy @ 2017-09-30  8:25 UTC (permalink / raw)
  To: Christian Lamparter, linuxppc-dev
  Cc: Benjamin Herrenschmidt, Paul Mackerras, Michael Ellerman



Le 28/09/2017 à 20:32, Christian Lamparter a écrit :
> The mmu context on the 40x, 44x does not define pte_frag
> entry. This causes gcc abort the compilation due to:
> 
> setup-common.c: In function ‘setup_arch’:
> setup-common.c:908: error: ‘mm_context_t’ has no ‘pte_frag’
> 
> This patch fixes the issue by adding additional guard
> conditions, that limit the initialization to just
> platforms that define the pte_frag variable in the
> mmu context.

Wouldn't it be better to amend mm_context_t with the following, just 
like other platforms, instead of a #ifdef in setup_arch() ?

#ifdef CONFIG_PPC_64K_PAGES
	/* for 4K PTE fragment support */
	void *pte_frag;
#endif

Otherwise, since init_mm is defined in BSS, is setting pte_frag to NULL 
needed at all ?
I think removing this line would be better.

Christophe

> 
> Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
> ---
>   arch/powerpc/kernel/setup-common.c | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c
> index 0ac741fae90e..4a22ec6b34de 100644
> --- a/arch/powerpc/kernel/setup-common.c
> +++ b/arch/powerpc/kernel/setup-common.c
> @@ -904,7 +904,8 @@ void __init setup_arch(char **cmdline_p)
>   #endif
>   #endif
>   
> -#ifdef CONFIG_PPC_64K_PAGES
> +#if defined(CONFIG_PPC_64K_PAGES) && \
> +    (defined(CONFIG_PPC_BOOK3S_64) || defined(CONFIG_PPC_BOOK3E_MMU))
>   	init_mm.context.pte_frag = NULL;
>   #endif
>   #ifdef CONFIG_SPAPR_TCE_IOMMU
> 

---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus

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

* Re: [PATCH v2] powerpc: fix compile error on 64K pages on 40x, 44x
  2017-09-30  8:25 ` christophe leroy
@ 2017-09-30 10:05   ` Christian Lamparter
  0 siblings, 0 replies; 3+ messages in thread
From: Christian Lamparter @ 2017-09-30 10:05 UTC (permalink / raw)
  To: christophe leroy
  Cc: linuxppc-dev, Benjamin Herrenschmidt, Paul Mackerras,
	Michael Ellerman

On Saturday, September 30, 2017 10:25:45 AM CEST christophe leroy wrote:
>=20
> Le 28/09/2017 =C3=A0 20:32, Christian Lamparter a =C3=A9crit :
> > The mmu context on the 40x, 44x does not define pte_frag
> > entry. This causes gcc abort the compilation due to:
> >=20
> > setup-common.c: In function =E2=80=98setup_arch=E2=80=99:
> > setup-common.c:908: error: =E2=80=98mm_context_t=E2=80=99 has no =E2=80=
=98pte_frag=E2=80=99
> >=20
> > This patch fixes the issue by adding additional guard
> > conditions, that limit the initialization to just
> > platforms that define the pte_frag variable in the
> > mmu context.
>=20
> Wouldn't it be better to amend mm_context_t with the following, just=20
> like other platforms, instead of a #ifdef in setup_arch() ?
>
> #ifdef CONFIG_PPC_64K_PAGES
> 	/* for 4K PTE fragment support */
> 	void *pte_frag;
> #endif

This would require to add this dead weight to the mm_context_t of
asm/mmu-40x.h, asm/mmu-44x.h and asm/mmu-8xx.h.=20
asm/mmu-book3e.h already has the pte_frag defined.
But it is not used by any mmu-book3e/mmu-32 code as far as I can tell.

> Otherwise, since init_mm is defined in BSS, is setting pte_frag to NULL=20
> needed at all ?
> I think removing this line would be better.
Yes, in fact it's guaranteed to be NULL by C99.
This is because init_mm is of external linkage and this makes it of "static=
=20
storage class" according to 6.2.4.3:
"An object whose identifier is declared with external or internal linkage,
or with the storage-class specifier static has static storage duration."

And C99 defines in 6.7.8.10 Initialization that: "
If an object that has static storage duration is not initialized explicitly,
then:
=E2=80=94 if it has pointer type, it is initialized to a null pointer;
[...]
"

so yes, init_mm.context.pte_frag =3D NULL; can be dropped.=20

The question is what to do with BOOK3E mmu.h? After all the
pte_frag serves no purpose there.

Regards,
Christian

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

end of thread, other threads:[~2017-09-30 10:05 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-28 18:32 [PATCH v2] powerpc: fix compile error on 64K pages on 40x, 44x Christian Lamparter
2017-09-30  8:25 ` christophe leroy
2017-09-30 10:05   ` Christian Lamparter

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 NNTP newsgroup(s).