On 07/18/2011 03:36 PM, Benjamin Herrenschmidt wrote: > On Mon, 2011-07-18 at 15:26 +0800, Shan Hai wrote: >> I am sorry I hadn't tried your newer patch, I tried it but it still >> could not work in my test environment, I will dig into and tell you >> why that failed later. > Ok, please let me know what you find ! > >> Yep, I know holding lots of ifdef's everywhere is not so good, >> but if we have some other way(I don't know how till now) to >> figure out the arch has the need to fixup up the write permission >> we could eradicate the ugly ifdef's here. >> >> I think the handle_mm_fault could do all dirty/young tracking, >> because the purpose of making follow_page return NULL to >> its caller is that want to the handle_mm_fault to be called >> on write permission protection fault. > I see your point. Rather than factoring the fixup code out, we could > force gup to call handle_mm_fault()... that makes sense. > > However, I don't think we should special case archs. There's plenty of > cases where we don't care about this fixup even on archs that do SW > tracking of dirty and young. For example when gup is using for > subsequent DMA. > > Only the (rare ?) cases where it's used as a mean to fixup a failing > "atomic" user access are relevant. > > So I believe we should still pass an explicit flag to __get_user_pages() > as I propose to activate that behaviour. > > At this point, since we have isolated the special case callers, I think > we are pretty much in a situation where there's no point trying to > optimize the x86 case more, it's a fairly slow path anyway, and so no > ifdef should be needed (and x86 already #define out the TLB flush for > spurious faults in handle_pte_fault today). > > We don't even need to change follow_page()... we just don't call it the > first time around. > > I'll cook up another patch later but first we need to find out why the > one you have doesn't work. There might be another problem lurking (or I > just made a stupid mistake). > > BTW. Can you give me some details about how you reproduce the problem ? > I should setup something on a booke machine here to verify things. > Please get the test case code from the thread "[PATCH 0/1] Fixup write permission of TLB on powerpc e500 core"'s attachment, simply compile it and do the following, - run the test case on the board - run 'top' on the other terminal, you should observe almost 100% CPU system usage I also attached the kernel config file. Best regards Shan Hai > Cheers, > Ben. >