On Thu, 2009-10-22 at 05:14 -0700, H. Peter Anvin wrote: > On 10/22/2009 09:08 PM, Thomas Schlichter wrote: > >> > >> I have couple of issues with this patchset still. pci_mmap_page_range() > >> doesn't get called for each fork(). So, we won't be ref counting the > >> mtrr usage properly. > > > > When forking, what happens with the "struct file"? If it is being copied, > > then the > > processes share the same private data which would be freed during the first > > release(). I think this would be a problem whereever file-private data are > > used. > > > > So I think it must be shared between the forked processes and some reference > > counting must exist. This reference counting must ensure that release() is > > only > > called when all processes did close() their file. > > > > And in that case (shared "struct file", one single release() call in the > > end) this > > implementation should be completely safe... > > > > struct file is shared between forked processes.
That is correct. But I am referring to the ref-count getting incremented in Thomas's patch only in the pci_mmap_page_range() which will be called only during first mmap. We need to keep track of the counts of later forks too. For PAT, we keep track of this ref counting in track_pfn_vma_copy(). We shouldn't use different tracking mechanisms for PAT and non-PAT. We should cleanly tap into track_pfn_vma_copy() or extend that to cover this case aswell. thanks, suresh ------------------------------------------------------------------------------ Come build with us! The BlackBerry(R) Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9 - 12, 2009. Register now! http://p.sf.net/sfu/devconference -- _______________________________________________ Dri-devel mailing list Dri-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/dri-devel