2009-12-15 23:21:53

by Steven King

[permalink] [raw]
Subject: [current HEAD] commit 5ad6468801d28c4d4ac9f48ec19297817c915f6a breaks the build on m68knommu

and I suspect on any nommu:

In file included from kernel/fork.c:52:
include/linux/ksm.h:129: warning: 'enum ttu_flags' declared inside parameter
list
include/linux/ksm.h:129: warning: its scope is only this definition or
declaration, which is probably not what you want
include/linux/ksm.h:129: error: parameter 2 ('flags') has incomplete type
make[1]: *** [kernel/fork.o] Error 1
make[1]: *** Waiting for unfinished jobs....

--
Steven King -- sfking at fdwdc dot com


2009-12-16 05:32:48

by Hugh Dickins

[permalink] [raw]
Subject: Re: [current HEAD] commit 5ad6468801d28c4d4ac9f48ec19297817c915f6a breaks the build on m68knommu

On Tue, 14 Dec 2009, Steven King wrote:

> and I suspect on any nommu:
>
> In file included from kernel/fork.c:52:
> include/linux/ksm.h:129: warning: 'enum ttu_flags' declared inside parameter
> list
> include/linux/ksm.h:129: warning: its scope is only this definition or
> declaration, which is probably not what you want
> include/linux/ksm.h:129: error: parameter 2 ('flags') has incomplete type
> make[1]: *** [kernel/fork.o] Error 1
> make[1]: *** Waiting for unfinished jobs....

Aargh, sorry about that: I've not built this on nommu, does it fix it?


[PATCH] fix CONFIG_KSM broke nommu build

Commit 5ad6468801d28c4d4ac9f48ec19297817c915f6a "ksm: let shared pages
be swappable" breaks the build on m68knommu and I suspect on any nommu:

In file included from kernel/fork.c:52:
include/linux/ksm.h:129: warning: 'enum ttu_flags' declared inside parameter
list
include/linux/ksm.h:129: warning: its scope is only this definition or
declaration, which is probably not what you want
include/linux/ksm.h:129: error: parameter 2 ('flags') has incomplete type
make[1]: *** [kernel/fork.o] Error 1
make[1]: *** Waiting for unfinished jobs....

Let's fix that with CONFIG_MMU around most of the !CONFIG_KSM declarations.

Reported-by: Steven King <[email protected]>
Signed-off-by: Hugh Dickins <[email protected]>
---

include/linux/ksm.h | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)

--- 2.6.32-git/include/linux/ksm.h.0 2009-12-16 04:59:25.000000000 +0000
+++ linux/include/linux/ksm.h 2009-12-16 05:14:40.000000000 +0000
@@ -94,12 +94,6 @@ void ksm_migrate_page(struct page *newpa

#else /* !CONFIG_KSM */

-static inline int ksm_madvise(struct vm_area_struct *vma, unsigned long start,
- unsigned long end, int advice, unsigned long *vm_flags)
-{
- return 0;
-}
-
static inline int ksm_fork(struct mm_struct *mm, struct mm_struct *oldmm)
{
return 0;
@@ -114,6 +108,13 @@ static inline int PageKsm(struct page *p
return 0;
}

+#ifdef CONFIG_MMU
+static inline int ksm_madvise(struct vm_area_struct *vma, unsigned long start,
+ unsigned long end, int advice, unsigned long *vm_flags)
+{
+ return 0;
+}
+
static inline struct page *ksm_might_need_to_copy(struct page *page,
struct vm_area_struct *vma, unsigned long address)
{
@@ -140,6 +141,7 @@ static inline int rmap_walk_ksm(struct p
static inline void ksm_migrate_page(struct page *newpage, struct page *oldpage)
{
}
+#endif /* CONFIG_MMU */
#endif /* !CONFIG_KSM */

#endif /* __LINUX_KSM_H */

2009-12-16 07:08:17

by Steven King

[permalink] [raw]
Subject: Re: [current HEAD] commit 5ad6468801d28c4d4ac9f48ec19297817c915f6a breaks the build on m68knommu

On Tuesday 15 December 2009 09:32:26 Hugh Dickins wrote:
> On Tue, 14 Dec 2009, Steven King wrote:
> > and I suspect on any nommu:
> >
> > In file included from kernel/fork.c:52:
> > include/linux/ksm.h:129: warning: 'enum ttu_flags' declared inside
> > parameter list
> > include/linux/ksm.h:129: warning: its scope is only this definition or
> > declaration, which is probably not what you want
> > include/linux/ksm.h:129: error: parameter 2 ('flags') has incomplete type
> > make[1]: *** [kernel/fork.o] Error 1
> > make[1]: *** Waiting for unfinished jobs....
>
> Aargh, sorry about that: I've not built this on nommu, does it fix it?

Yes,

thanks.


--
Steven King -- sfking at fdwdc dot com

2009-12-16 08:57:20

by Hugh Dickins

[permalink] [raw]
Subject: [PATCH] fix ksm.h breakage of nommu build

Commit 5ad6468801d28c4d4ac9f48ec19297817c915f6a "ksm: let shared pages
be swappable" breaks the build on m68knommu and I suspect on any nommu:

In file included from kernel/fork.c:52:
include/linux/ksm.h:129: warning: 'enum ttu_flags' declared inside parameter
list
include/linux/ksm.h:129: warning: its scope is only this definition or
declaration, which is probably not what you want
include/linux/ksm.h:129: error: parameter 2 ('flags') has incomplete type
make[1]: *** [kernel/fork.o] Error 1
make[1]: *** Waiting for unfinished jobs....

Let's fix that with CONFIG_MMU around most of the !CONFIG_KSM declarations.

Reported-by: Steven King <[email protected]>
Signed-off-by: Hugh Dickins <[email protected]>
Tested-by: Steven King <[email protected]>
---

include/linux/ksm.h | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)

--- 2.6.32-git/include/linux/ksm.h.0 2009-12-16 04:59:25.000000000 +0000
+++ linux/include/linux/ksm.h 2009-12-16 05:14:40.000000000 +0000
@@ -94,12 +94,6 @@ void ksm_migrate_page(struct page *newpa

#else /* !CONFIG_KSM */

-static inline int ksm_madvise(struct vm_area_struct *vma, unsigned long start,
- unsigned long end, int advice, unsigned long *vm_flags)
-{
- return 0;
-}
-
static inline int ksm_fork(struct mm_struct *mm, struct mm_struct *oldmm)
{
return 0;
@@ -114,6 +108,13 @@ static inline int PageKsm(struct page *p
return 0;
}

+#ifdef CONFIG_MMU
+static inline int ksm_madvise(struct vm_area_struct *vma, unsigned long start,
+ unsigned long end, int advice, unsigned long *vm_flags)
+{
+ return 0;
+}
+
static inline struct page *ksm_might_need_to_copy(struct page *page,
struct vm_area_struct *vma, unsigned long address)
{
@@ -140,6 +141,7 @@ static inline int rmap_walk_ksm(struct p
static inline void ksm_migrate_page(struct page *newpage, struct page *oldpage)
{
}
+#endif /* CONFIG_MMU */
#endif /* !CONFIG_KSM */

#endif /* __LINUX_KSM_H */