On Wed, Jun 8, 2011 at 6:19 PM, Greg Ungerer <gerg@xxxxxxxxxxxx> wrote: > > Hi Bob, > > On 08/06/11 17:18, Bob Liu wrote: >> >> Hi, Greg >> >> On Wed, Jun 8, 2011 at 12:47 PM, Greg Ungerer<gerg@xxxxxxxxxxxx> Âwrote: >>> >>> Hi Bob, >>> >>> On 07/06/11 16:19, Bob Liu wrote: >>>> >>>> On Fri, Jun 3, 2011 at 2:37 PM, Greg Ungerer<gerg@xxxxxxxxxxxx> >>>> ÂÃÂwrote: >>>>> >>>>> Hi Bob, >>>>> >>>>> On 06/05/11 16:03, Bob Liu wrote: >>>>>> >>>>>> Currently on nommu arch mmap(),mremap() and munmap() doesn't do >>>>>> page_align() >>>>>> which isn't consist with mmu arch and cause some issues. >>>>>> >>>>>> First, some drivers' mmap() function depends on vma->vm_end - >>>>>> vma->start >>>>>> is >>>>>> page aligned which is true on mmu arch but not on nommu. eg: uvc >>>>>> camera >>>>>> driver. >>>>>> >>>>>> Second munmap() may return -EINVAL[split file] error in cases when end >>>>>> is >>>>>> not >>>>>> page aligned(passed into from userspace) but vma->vm_end is aligned >>>>>> dure >>>>>> to >>>>>> split or driver's mmap() ops. >>>>>> >>>>>> This patch add page align to fix those issues. >>>>> >>>>> This is actually causing me problems on head at the moment. >>>>> git bisected to this patch as the cause. >>>>> >>>>> When booting on a ColdFire (m68knommu) target the init process (or >>>>> there abouts at least) fails. Last console messages are: >>>>> >>>>> ÃâÅÃÂ... >>>>> ÃâÅÃÂVFS: Mounted root (romfs filesystem) readonly on device 31:0. >>>>> ÃâÅÃÂFreeing unused kernel memory: 52k freed (0x401aa000 - 0x401b6000) >>>>> ÃâÅÃÂUnable to mmap process text, errno 22 >>>>> >>>> >>>> Oh, bad news. I will try to reproduce it on my board. >>>> If you are free please enable debug in nommu.c and then we can see what >>>> caused the problem. >>> >>> Yep, with debug on: >>> >>> ÃÂ... >>> ÃÂVFS: Mounted root (romfs filesystem) readonly on device 31:0. >>> ÃÂFreeing unused kernel memory: 52k freed (0x4018c000 - 0x40198000) >>> ÃÂ==> Âdo_mmap_pgoff(,0,6780,5,1002,0) >>> ÃÂ<== do_mmap_pgoff() = -22 >>> ÃÂUnable to mmap process text, errno 22 >>> >> >> Since I can't reproduce this problem, could you please attach the >> whole dmesg log with nommu debug on or >> you can step into to see why errno 22 is returned, is it returned by >> do_mmap_private()? > > There was no other debug messages with debug turned on in nommu.c. > (I can give you the boot msgs before this if you want, but there > was no nommu.c debug in it). > > But I did trace it into do_mmap_pgoff() to see what was failing. > It fails based on the return value from: > >     Âaddr = file->f_op->get_unmapped_area(file, addr, len, >                           Âpgoff, flags); > Thanks for this information. But it's a callback function. I still can't know what's the problem maybe. Would you do me a favor to do more trace to see where it callback to, fs or some driver etc..? > > Theres only one call of this inside do_mmap_pgoff() so you its > easy to find. > > Regards > Greg > > > >>> I can confirm that the PAGE_ALIGN(len) change in do_mmap_pgoff() >>> is enough to cause this too. >>> >>> Regards >>> Greg >>> >>> >>> >>> >>>>> I haven't really debugged it any further yet. But that error message >>>>> comes from fs/binfmt_flat.c, it is reporting a failed do_mmap() call. >>>>> >>>>> Reverting that this patch and no more problem. >>>>> >>>>> Regards >>>>> Greg >>>>> -- Regards, --Bob -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href