Messages in this thread | | | Subject | Re: Query on remap_pfn_range compatibility | From | Mark_H_Johnson@raytheon ... | Date | Mon, 24 Jan 2005 13:05:44 -0600 |
| |
wli wrote... > On Mon, Jan 24, 2005 at 10:54:22AM -0600, Mark_H_Johnson@raytheon.com wrote: > > I read the messages on lkml from September 2004 about the introduction of > > remap_pfn_range and have a question related to coding for it. What do you > > recommend for driver coding to be compatible with these functions > > (remap_page_range, remap_pfn_range)? > > For example, I see at least two (or three) combination I need to address: > > - 2.4 (with remap_page_range) OR 2.6.x (with remap_page_range) > > - 2.6.x-mm (with remap_pfn_range) > > Is there some symbol or #ifdef value I can depend on to determine which > > function I should be calling (and the value to pass in)? > > Not sure. One on kernel version being <= 2.6.10 would probably serve > your purposes, though it's not particularly well thought of. I suspect > people would suggest splitting up the codebase instead of sharing it > between 2.4.x and 2.6.x, where I've no idea how well that sits with you.
I guess I could do that, but if a distribution picks up remap_pfn_range in an earlier kernel, that doesn't work either. If it gets back ported to 2.4 the conditional gets a little more complicated.
Splitting the code base is a pretty harsh solution.
I am also trying to avoid an ugly hack like the following:
VMA_PARAM_IN_REMAP=`grep remap_page_range $PATH_LINUX_INCLUDE/linux/mm.h|grep vma` if [ -z "$VMA_PARAM_IN_REMAP" ]; then export REMAP_PAGE_RANGE_PARAM="4" else export REMAP_PAGE_RANGE_PARAM="5" endif
in a build script which detects if remap_page_range() has 4 or 5 parameters and then pass an appropriate value into the code using gcc -D. [ugh]
Would it be acceptable to add a symbol like #define MM_VM_REMAP_PFN_RANGE in include/linux/mm.h or is that too much of a hack as well?
> I vaguely suspected something like this would happen, but there were > serious and legitimate concerns about new usage of the 32-bit unsafe > methods being reintroduced, so at some point the old hook had to go. I don't doubt the need to remove the old interface. But I see possible problem areas on > 4 Gbyte machines, such as virt_to_phys defined in linux/asm-i386/io.h, that are not getting fixed or do I misread the way that code works.
--Mark H Johnson <mailto:Mark_H_Johnson@raytheon.com>
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |