Comment 1 for bug 1222863

Revision history for this message
Graeme Gregory (graeme-gregory) wrote :

The relevant code from osl.c

#ifndef CONFIG_IA64
#define should_use_kmap(pfn) page_is_ram(pfn)
#else
/* ioremap will take care of cache attributes */
#define should_use_kmap(pfn) 0
#endif

static void __iomem *acpi_map(acpi_physical_address pg_off, unsigned long pg_sz)
{
 unsigned long pfn;

 pfn = pg_off >> PAGE_SHIFT;
 if (should_use_kmap(pfn)) {
  if (pg_sz > PAGE_SIZE)
   return NULL;
  return (void __iomem __force *)kmap(pfn_to_page(pfn));
 } else
  return acpi_os_ioremap(pg_off, pg_sz);
}

static void acpi_unmap(acpi_physical_address pg_off, void __iomem *vaddr)
{
 unsigned long pfn;

 pfn = pg_off >> PAGE_SHIFT;
 if (should_use_kmap(pfn))
  kunmap(pfn_to_page(pfn));
 else
  iounmap(vaddr);
}