Messages in this thread | | | Date | Thu, 7 Jan 2010 12:23:04 +0900 | From | KAMEZAWA Hiroyuki <> | Subject | Re: [RFC][PATCH] vmalloc: simplify vread()/vwrite() |
| |
On Thu, 07 Jan 2010 11:15:41 +0800 Huang Ying <ying.huang@intel.com> wrote:
> > > > > > > The page_is_ram() check is necessary because kmap_atomic() is not > > > > designed to work with non-RAM pages. > > > > > > > I think page_is_ram() is not a complete method...on x86, it just check > > > e820's memory range. checking VM_IOREMAP is better, I think. > > > > (double check) Not complete or not safe? > > > > EFI seems to not update e820 table by default. Ying, do you know why? > > In EFI system, E820 table is constructed from EFI memory map in boot > loader, so I think you can rely on E820 table. > Yes, we can rely on. But concerns here is that we cannot get any information of ioremap via e820 map.
But yes, == ioremap() 140 for (pfn = phys_addr >> PAGE_SHIFT; 141 (pfn << PAGE_SHIFT) < (last_addr & PAGE_MASK); 142 pfn++) { 143 144 int is_ram = page_is_ram(pfn); 145 146 if (is_ram && pfn_valid(pfn) && !PageReserved(pfn_to_page(pfn))) 147 return NULL; 148 WARN_ON_ONCE(is_ram); 149 } == you'll get warned before access if "ram" area is remapped...
But, about this patch, it seems that page_is_ram() is not free from architecture dependecy.
Thanks, -Kame
| |