···8383 preempt_check_resched();8484}85858686+/*8787+ * This is the same as kmap_atomic() but can map memory that doesn't8888+ * have a struct page associated with it.8989+ */9090+void *kmap_atomic_pfn(unsigned long pfn, enum km_type type)9191+{9292+ enum fixed_addresses idx;9393+ unsigned long vaddr;9494+9595+ inc_preempt_count();9696+9797+ idx = type + KM_TYPE_NR*smp_processor_id();9898+ vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);9999+ set_pte(kmap_pte-idx, pfn_pte(pfn, kmap_prot));100100+ flush_tlb_one(vaddr);101101+102102+ return (void*) vaddr;103103+}104104+86105struct page *__kmap_atomic_to_page(void *ptr)87106{88107 unsigned long idx, vaddr = (unsigned long)ptr;