Skip to content

Commit

Permalink
Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/li…
Browse files Browse the repository at this point in the history
…nux/kernel/git/tip/linux-2.6-tip

* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  x86: fix /dev/mem compatibility under PAT
  • Loading branch information
Linus Torvalds committed Jul 10, 2008
2 parents 70ff055 + a361ee5 commit 9cc3089
Showing 1 changed file with 24 additions and 1 deletion.
25 changes: 24 additions & 1 deletion arch/x86/mm/ioremap.c
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,29 @@ void __iomem *ioremap_cache(resource_size_t phys_addr, unsigned long size)
}
EXPORT_SYMBOL(ioremap_cache);

static void __iomem *ioremap_default(resource_size_t phys_addr,
unsigned long size)
{
unsigned long flags;
void *ret;
int err;

/*
* - WB for WB-able memory and no other conflicting mappings
* - UC_MINUS for non-WB-able memory with no other conflicting mappings
* - Inherit from confliting mappings otherwise
*/
err = reserve_memtype(phys_addr, phys_addr + size, -1, &flags);
if (err < 0)
return NULL;

ret = (void *) __ioremap_caller(phys_addr, size, flags,
__builtin_return_address(0));

free_memtype(phys_addr, phys_addr + size);
return (void __iomem *)ret;
}

/**
* iounmap - Free a IO remapping
* @addr: virtual address from ioremap_*
Expand Down Expand Up @@ -365,7 +388,7 @@ void *xlate_dev_mem_ptr(unsigned long phys)
if (page_is_ram(start >> PAGE_SHIFT))
return __va(phys);

addr = (void *)ioremap(start, PAGE_SIZE);
addr = (void *)ioremap_default(start, PAGE_SIZE);
if (addr)
addr = (void *)((unsigned long)addr | (phys & ~PAGE_MASK));

Expand Down

0 comments on commit 9cc3089

Please sign in to comment.