diff mbox

arm64: Add missing linux/bug.h include in asm/pgtable.h

Message ID 1450109244-20122-1-git-send-email-julien.grall@citrix.com (mailing list archive)
State New, archived
Headers show

Commit Message

Julien Grall Dec. 14, 2015, 4:07 p.m. UTC
Linux 4.4-rc5 doesn't build for arm64 with CONFIG_XEN=y enabled:

In file included from linux/arch/arm64/include/asm/pgtable.h:60:0,
                 from linux/arch/arm64/include/../../arm/include/asm/xen/page.h:5,
                 from linux/arch/arm64/include/asm/xen/page.h:1,
                 from linux/include/xen/page.h:28,
                 from linux/arch/arm64/xen/../../arm/xen/grant-table.c:33:
linux/arch/arm64/include/asm/pgtable.h: In function 'set_pte_at':
linux/include/linux/mmdebug.h:49:39: error: implicit declaration of function 'BUILD_BUG_ON_INVALID' [-Werror=implicit-function-declaration]
 #define VM_WARN_ONCE(cond, format...) BUILD_BUG_ON_INVALID(cond)
                                       ^
linux/arch/arm64/include/asm/pgtable.h:281:3: note: in expansion of macro 'VM_WARN_ONCE'
   VM_WARN_ONCE(!pte_young(pte),
   ^

This has been introduced by commit 82d340081b6f71237373d1452e3573a5a122794c
"arm64: Improve error reporting on set_pte_at() checks". This is because
mmdebug.h relies on the includer to properly include the dependencies.

Signed-off-by: Julien Grall <julien.grall@citrix.com>

---
Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>

    I was tempted to add the missing include in linux/mmdebug.h but I'm
    not sure about the policy for headers inclusion in Linux.

    Also, I'm not sure why the compiler error only happen with CONFIG_XEN=y.
---
 arch/arm64/include/asm/pgtable.h | 1 +
 1 file changed, 1 insertion(+)

Comments

Catalin Marinas Dec. 14, 2015, 4:22 p.m. UTC | #1
On Mon, Dec 14, 2015 at 04:07:24PM +0000, Julien Grall wrote:
> Linux 4.4-rc5 doesn't build for arm64 with CONFIG_XEN=y enabled:
> 
> In file included from linux/arch/arm64/include/asm/pgtable.h:60:0,
>                  from linux/arch/arm64/include/../../arm/include/asm/xen/page.h:5,
>                  from linux/arch/arm64/include/asm/xen/page.h:1,
>                  from linux/include/xen/page.h:28,
>                  from linux/arch/arm64/xen/../../arm/xen/grant-table.c:33:
> linux/arch/arm64/include/asm/pgtable.h: In function 'set_pte_at':
> linux/include/linux/mmdebug.h:49:39: error: implicit declaration of function 'BUILD_BUG_ON_INVALID' [-Werror=implicit-function-declaration]
>  #define VM_WARN_ONCE(cond, format...) BUILD_BUG_ON_INVALID(cond)
>                                        ^
> linux/arch/arm64/include/asm/pgtable.h:281:3: note: in expansion of macro 'VM_WARN_ONCE'
>    VM_WARN_ONCE(!pte_young(pte),
>    ^
> 
> This has been introduced by commit 82d340081b6f71237373d1452e3573a5a122794c
> "arm64: Improve error reporting on set_pte_at() checks". This is because
> mmdebug.h relies on the includer to properly include the dependencies.
> 
> Signed-off-by: Julien Grall <julien.grall@citrix.com>
> 
> ---
> Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will.deacon@arm.com>
> 
>     I was tempted to add the missing include in linux/mmdebug.h but I'm
>     not sure about the policy for headers inclusion in Linux.

Normally, I would say that mmdebug.h should include whichever headers it
needs but for a quicker fix, I'm fine with including linux/bug.h (and
probably removing the asm/bug.h include in asm/pgtable.h).
Julien Grall Dec. 14, 2015, 4:26 p.m. UTC | #2
Hi Catalin,

On 14/12/15 16:22, Catalin Marinas wrote:
> On Mon, Dec 14, 2015 at 04:07:24PM +0000, Julien Grall wrote:
>> Linux 4.4-rc5 doesn't build for arm64 with CONFIG_XEN=y enabled:
>>
>> In file included from linux/arch/arm64/include/asm/pgtable.h:60:0,
>>                  from linux/arch/arm64/include/../../arm/include/asm/xen/page.h:5,
>>                  from linux/arch/arm64/include/asm/xen/page.h:1,
>>                  from linux/include/xen/page.h:28,
>>                  from linux/arch/arm64/xen/../../arm/xen/grant-table.c:33:
>> linux/arch/arm64/include/asm/pgtable.h: In function 'set_pte_at':
>> linux/include/linux/mmdebug.h:49:39: error: implicit declaration of function 'BUILD_BUG_ON_INVALID' [-Werror=implicit-function-declaration]
>>  #define VM_WARN_ONCE(cond, format...) BUILD_BUG_ON_INVALID(cond)
>>                                        ^
>> linux/arch/arm64/include/asm/pgtable.h:281:3: note: in expansion of macro 'VM_WARN_ONCE'
>>    VM_WARN_ONCE(!pte_young(pte),
>>    ^
>>
>> This has been introduced by commit 82d340081b6f71237373d1452e3573a5a122794c
>> "arm64: Improve error reporting on set_pte_at() checks". This is because
>> mmdebug.h relies on the includer to properly include the dependencies.
>>
>> Signed-off-by: Julien Grall <julien.grall@citrix.com>
>>
>> ---
>> Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
>> Cc: Catalin Marinas <catalin.marinas@arm.com>
>> Cc: Will Deacon <will.deacon@arm.com>
>>
>>     I was tempted to add the missing include in linux/mmdebug.h but I'm
>>     not sure about the policy for headers inclusion in Linux.
> 
> Normally, I would say that mmdebug.h should include whichever headers it
> needs but for a quicker fix, I'm fine with including linux/bug.h (and
> probably removing the asm/bug.h include in asm/pgtable.h).

The linux/bug.h will only be included when __ASSEMBLY__ is not defined
which asm/bug.h is included even for assembly file.

Note that it's not possible to include linux/bug.h for assembly file
because the headers is not correctly protected.

As I don't know if asm/bug.h is useful in pgtable.h, I've decided to
keep it.

Regards,
Catalin Marinas Dec. 14, 2015, 4:38 p.m. UTC | #3
On Mon, Dec 14, 2015 at 04:26:48PM +0000, Julien Grall wrote:
> On 14/12/15 16:22, Catalin Marinas wrote:
> > On Mon, Dec 14, 2015 at 04:07:24PM +0000, Julien Grall wrote:
> >> Linux 4.4-rc5 doesn't build for arm64 with CONFIG_XEN=y enabled:
> >>
> >> In file included from linux/arch/arm64/include/asm/pgtable.h:60:0,
> >>                  from linux/arch/arm64/include/../../arm/include/asm/xen/page.h:5,
> >>                  from linux/arch/arm64/include/asm/xen/page.h:1,
> >>                  from linux/include/xen/page.h:28,
> >>                  from linux/arch/arm64/xen/../../arm/xen/grant-table.c:33:
> >> linux/arch/arm64/include/asm/pgtable.h: In function 'set_pte_at':
> >> linux/include/linux/mmdebug.h:49:39: error: implicit declaration of function 'BUILD_BUG_ON_INVALID' [-Werror=implicit-function-declaration]
> >>  #define VM_WARN_ONCE(cond, format...) BUILD_BUG_ON_INVALID(cond)
> >>                                        ^
> >> linux/arch/arm64/include/asm/pgtable.h:281:3: note: in expansion of macro 'VM_WARN_ONCE'
> >>    VM_WARN_ONCE(!pte_young(pte),
> >>    ^
> >>
> >> This has been introduced by commit 82d340081b6f71237373d1452e3573a5a122794c
> >> "arm64: Improve error reporting on set_pte_at() checks". This is because
> >> mmdebug.h relies on the includer to properly include the dependencies.
> >>
> >> Signed-off-by: Julien Grall <julien.grall@citrix.com>
> >>
> >> ---
> >> Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> >> Cc: Catalin Marinas <catalin.marinas@arm.com>
> >> Cc: Will Deacon <will.deacon@arm.com>
> >>
> >>     I was tempted to add the missing include in linux/mmdebug.h but I'm
> >>     not sure about the policy for headers inclusion in Linux.
> > 
> > Normally, I would say that mmdebug.h should include whichever headers it
> > needs but for a quicker fix, I'm fine with including linux/bug.h (and
> > probably removing the asm/bug.h include in asm/pgtable.h).
> 
> The linux/bug.h will only be included when __ASSEMBLY__ is not defined
> which asm/bug.h is included even for assembly file.
> 
> Note that it's not possible to include linux/bug.h for assembly file
> because the headers is not correctly protected.
> 
> As I don't know if asm/bug.h is useful in pgtable.h, I've decided to
> keep it.

I don't know why it's there either. Anyway, I'll apply your patch and
try to remove asm/bug.h as well. If the build fails, I'll add it back.
James Morse Dec. 14, 2015, 4:47 p.m. UTC | #4
On 14/12/15 16:38, Catalin Marinas wrote:
> On Mon, Dec 14, 2015 at 04:26:48PM +0000, Julien Grall wrote:
>> On 14/12/15 16:22, Catalin Marinas wrote:
>>> On Mon, Dec 14, 2015 at 04:07:24PM +0000, Julien Grall wrote:
>>>> Linux 4.4-rc5 doesn't build for arm64 with CONFIG_XEN=y enabled:
>>>>
>>>> In file included from linux/arch/arm64/include/asm/pgtable.h:60:0,
>>>>                  from linux/arch/arm64/include/../../arm/include/asm/xen/page.h:5,
>>>>                  from linux/arch/arm64/include/asm/xen/page.h:1,
>>>>                  from linux/include/xen/page.h:28,
>>>>                  from linux/arch/arm64/xen/../../arm/xen/grant-table.c:33:
>>>> linux/arch/arm64/include/asm/pgtable.h: In function 'set_pte_at':
>>>> linux/include/linux/mmdebug.h:49:39: error: implicit declaration of function 'BUILD_BUG_ON_INVALID' [-Werror=implicit-function-declaration]
>>>>  #define VM_WARN_ONCE(cond, format...) BUILD_BUG_ON_INVALID(cond)
>>>>                                        ^
>>>> linux/arch/arm64/include/asm/pgtable.h:281:3: note: in expansion of macro 'VM_WARN_ONCE'
>>>>    VM_WARN_ONCE(!pte_young(pte),

I got bitten by this this morning, and had a patch to mmdebug.h I just
sent to the linux-mm list... sorry I should have copied everyone on this
thread (you don't get enough email already!).


Thanks,

James
Catalin Marinas Dec. 14, 2015, 5:07 p.m. UTC | #5
On Mon, Dec 14, 2015 at 04:47:07PM +0000, James Morse wrote:
> On 14/12/15 16:38, Catalin Marinas wrote:
> > On Mon, Dec 14, 2015 at 04:26:48PM +0000, Julien Grall wrote:
> >> On 14/12/15 16:22, Catalin Marinas wrote:
> >>> On Mon, Dec 14, 2015 at 04:07:24PM +0000, Julien Grall wrote:
> >>>> Linux 4.4-rc5 doesn't build for arm64 with CONFIG_XEN=y enabled:
> >>>>
> >>>> In file included from linux/arch/arm64/include/asm/pgtable.h:60:0,
> >>>>                  from linux/arch/arm64/include/../../arm/include/asm/xen/page.h:5,
> >>>>                  from linux/arch/arm64/include/asm/xen/page.h:1,
> >>>>                  from linux/include/xen/page.h:28,
> >>>>                  from linux/arch/arm64/xen/../../arm/xen/grant-table.c:33:
> >>>> linux/arch/arm64/include/asm/pgtable.h: In function 'set_pte_at':
> >>>> linux/include/linux/mmdebug.h:49:39: error: implicit declaration of function 'BUILD_BUG_ON_INVALID' [-Werror=implicit-function-declaration]
> >>>>  #define VM_WARN_ONCE(cond, format...) BUILD_BUG_ON_INVALID(cond)
> >>>>                                        ^
> >>>> linux/arch/arm64/include/asm/pgtable.h:281:3: note: in expansion of macro 'VM_WARN_ONCE'
> >>>>    VM_WARN_ONCE(!pte_young(pte),
> 
> I got bitten by this this morning, and had a patch to mmdebug.h I just
> sent to the linux-mm list... sorry I should have copied everyone on this
> thread (you don't get enough email already!).

If they take the mmdebug.h patch, it's even better. Please let us know
how that goes.

Thanks.
James Morse Dec. 15, 2015, 10:18 a.m. UTC | #6
On 14/12/15 17:07, Catalin Marinas wrote:
> If they take the mmdebug.h patch, it's even better. Please let us know
> how that goes.


Andrew Morton's Robot wrote:
> The patch titled
>      Subject: include/linux/mmdebug.h: should include linux/bug.h
> has been added to the -mm tree.  Its filename is
>      include-linux-mmdebugh-should-include-linux-bugh.patch
> 
> This patch should soon appear at
>     http://ozlabs.org/~akpm/mmots/broken-out/include-linux-mmdebugh-should-include-linux-bugh.patch
> and later at
>     http://ozlabs.org/~akpm/mmotm/broken-out/include-linux-mmdebugh-should-include-linux-bugh.patch
> 
> Before you just go and hit "reply", please:
>    a) Consider who else should be cc'ed
>    b) Prefer to cc a suitable mailing list as well
>    c) Ideally: find the original patch on the mailing list and do a
>       reply-to-all to that, adding suitable additional cc's
> 
> *** Remember to use Documentation/SubmitChecklist when testing your code ***
> 
> The -mm tree is included into linux-next and is updated
> there every 3-4 working days




Thanks,

James
diff mbox

Patch

diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
index 63f52b5..0dd96f3 100644
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
@@ -57,6 +57,7 @@ 
 
 #ifndef __ASSEMBLY__
 
+#include <linux/bug.h>
 #include <linux/mmdebug.h>
 
 extern void __pte_error(const char *file, int line, unsigned long val);