2009-09-23 16:06:02

by Hugh Dickins

[permalink] [raw]
Subject: Re: Microblaze noMMU break - mm/nommu.h

Hi Michal,

On Wed, 23 Sep 2009, Michal Simek wrote:
>
> Your commit 58fa879e1e640a1856f736b418984ebeccee1c95 break noMMU Microblaze
> kernel.
>
> should contain different change in mm/internal.h. - patch is below

I would swear that I testbuilt that for nommu, but clearly I did not:
one fix to nommu.c in the patch below...

> Please fix it. If someone reported it, please ignore my email

Yours is the first I've heard: thanks a lot for your quick report,
and my apologies for the nuisance - I seem to have fallen into a
nasty habit of breaking one config or another with my patches.

>
> Your commit 03f6462a3ae78f36eb1f0ee8b4d5ae2f7859c1d5 moves
> highest_memmap_pfn from page_alloc.c to memory.c but memory.c is not
> compiled for noMMU kernels - which caused fault too.

And that one I just didn't think of nommu, more's the shame:
another fix to nommu.c in the patch below...

>
> I haven't seen that patches in linux-next which I test too. :-(

Thank you for testing linux-next, but these kind of inadvertent
breaks to CONFIG_NOMMU are probably most often caused by changes
coming in via Andrew's mmotm - where most (liable to break nomm)
mm development occurs.

linux-next was started really as a service to make Andrew's life
with mmotm slightly easier, but now, yes, he would like to move
over to getting his mm series into linux-next... but it's not a
trivial task to turn that around.

If it's possible for you to test mmotms, your input on breakages
would be much appreciated; but I can quite understand that linux-next
is enough work for you, and that I appear to be bleating at you to
do something different, when it's me who needs to learn to be more
careful and build more configs.

The patch below fixes both for me: if you're able to check it on
Microblaze now, please let us know if they're good for you; but
if not, I'll send direct to Linus in a few hours time, better
to have as narrow a gap of build breakage there as we can.

Thanks, and sorry,
Hugh


[PATCH] nommu: fix two build breakages

My 58fa879e1e640a1856f736b418984ebeccee1c95 "mm: FOLL flags for GUP flags"
broke CONFIG_NOMMU build by forgetting to update nommu.c foll_flags type:
mm/nommu.c:171: error: conflicting types for `__get_user_pages'
mm/internal.h:254: error: previous declaration of `__get_user_pages' was here
make[1]: *** [mm/nommu.o] Error 1

My 03f6462a3ae78f36eb1f0ee8b4d5ae2f7859c1d5 "mm: move highest_memmap_pfn"
broke CONFIG_NOMMU build by forgetting to add a nommu.c highest_memmap_pfn:
mm/built-in.o: In function `memmap_init_zone':
(.meminit.text+0x326): undefined reference to `highest_memmap_pfn'
mm/built-in.o: In function `memmap_init_zone':
(.meminit.text+0x32d): undefined reference to `highest_memmap_pfn'

Fix both breakages, and give myself 30 lashes (ouch!)

Reported-by: Michal Simek <[email protected]>
Signed-off-by: Hugh Dickins <[email protected]>
---

mm/nommu.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

--- 2.6.31-git/mm/nommu.c 2009-09-23 09:22:36.000000000 +0100
+++ linux/mm/nommu.c 2009-09-23 16:25:30.000000000 +0100
@@ -61,6 +61,7 @@ void *high_memory;
struct page *mem_map;
unsigned long max_mapnr;
unsigned long num_physpages;
+unsigned long highest_memmap_pfn;
struct percpu_counter vm_committed_as;
int sysctl_overcommit_memory = OVERCOMMIT_GUESS; /* heuristic overcommit */
int sysctl_overcommit_ratio = 50; /* default is 50% */
@@ -169,7 +170,7 @@ unsigned int kobjsize(const void *objp)
}

int __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
- unsigned long start, int nr_pages, int foll_flags,
+ unsigned long start, int nr_pages, unsigned int foll_flags,
struct page **pages, struct vm_area_struct **vmas)
{
struct vm_area_struct *vma;