Skip to content

Commit

Permalink
x86: change ioremap() to default to uncached
Browse files Browse the repository at this point in the history
Prepare ioremap() to default to uncached. This will be the
safest - but first we have to fix CPA.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
  • Loading branch information
Ingo Molnar committed Jan 30, 2008
1 parent 5a96f4a commit 6371b49
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 9 deletions.
15 changes: 12 additions & 3 deletions include/asm-x86/io_32.h
Original file line number Diff line number Diff line change
Expand Up @@ -111,18 +111,27 @@ extern void __iomem * __ioremap(unsigned long offset, unsigned long size, unsign
* make bus memory CPU accessible via the readb/readw/readl/writeb/
* writew/writel functions and the other mmio helpers. The returned
* address is not guaranteed to be usable directly as a virtual
* address.
* address.
*
* If the area you are trying to map is a PCI BAR you should have a
* look at pci_iomap().
*/
extern void __iomem * ioremap_nocache(unsigned long offset, unsigned long size);

static inline void __iomem * ioremap(unsigned long offset, unsigned long size)
static inline void __iomem *
ioremap_cache(unsigned long offset, unsigned long size)
{
return __ioremap(offset, size, 0);
}

extern void __iomem * ioremap_nocache(unsigned long offset, unsigned long size);
/*
* The default ioremap() behavior is non-cached:
*/
static inline void __iomem * ioremap(unsigned long offset, unsigned long size)
{
return ioremap_nocache(offset, size);
}

extern void iounmap(volatile void __iomem *addr);

/*
Expand Down
23 changes: 17 additions & 6 deletions include/asm-x86/io_64.h
Original file line number Diff line number Diff line change
Expand Up @@ -152,11 +152,6 @@ static inline void * phys_to_virt(unsigned long address)

extern void __iomem *__ioremap(unsigned long offset, unsigned long size, unsigned long flags);

static inline void __iomem * ioremap (unsigned long offset, unsigned long size)
{
return __ioremap(offset, size, 0);
}

extern void *early_ioremap(unsigned long addr, unsigned long size);
extern void early_iounmap(void *addr, unsigned long size);

Expand All @@ -165,8 +160,24 @@ extern void early_iounmap(void *addr, unsigned long size);
* it's useful if some control registers are in such an area and write combining
* or read caching is not desirable:
*/
extern void __iomem * ioremap_nocache (unsigned long offset, unsigned long size);
extern void __iomem * ioremap_nocache(unsigned long offset, unsigned long size);

static inline void __iomem *
ioremap_cache(unsigned long offset, unsigned long size)
{
return __ioremap(offset, size, 0);
}

/*
* The default ioremap() behavior is non-cached:
*/
static inline void __iomem * ioremap(unsigned long offset, unsigned long size)
{
return ioremap_cache(offset, size);
}

extern void iounmap(volatile void __iomem *addr);

extern void __iomem *fix_ioremap(unsigned idx, unsigned long phys);

/*
Expand Down

0 comments on commit 6371b49

Please sign in to comment.