diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-15 12:19:38 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-15 12:19:38 -0400 |
commit | 227423904c709a8e60245c97081bbeb4fb500655 (patch) | |
tree | 97db1b8df1e4518334aea2fdf60363e0a691eb1e /include | |
parent | 1aaf2e59135fd67321f47c11c64a54aac27014e9 (diff) | |
parent | fa526d0d641b5365676a1fb821ce359e217c9b85 (diff) |
Merge branch 'x86-pat-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'x86-pat-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
x86, pat: Fix cacheflush address in change_page_attr_set_clr()
mm: remove !NUMA condition from PAGEFLAGS_EXTENDED condition set
x86: Fix earlyprintk=dbgp for machines without NX
x86, pat: Sanity check remap_pfn_range for RAM region
x86, pat: Lookup the protection from memtype list on vm_insert_pfn()
x86, pat: Add lookup_memtype to get the current memtype of a paddr
x86, pat: Use page flags to track memtypes of RAM pages
x86, pat: Generalize the use of page flag PG_uncached
x86, pat: Add rbtree to do quick lookup in memtype tracking
x86, pat: Add PAT reserve free to io_mapping* APIs
x86, pat: New i/f for driver to request memtype for IO regions
x86, pat: ioremap to follow same PAT restrictions as other PAT users
x86, pat: Keep identity maps consistent with mmaps even when pat_disabled
x86, mtrr: make mtrr_aps_delayed_init static bool
x86, pat/mtrr: Rendezvous all the cpus for MTRR/PAT init
generic-ipi: Allow cpus not yet online to call smp_call_function with irqs disabled
x86: Fix an incorrect argument of reserve_bootmem()
x86: Fix system crash when loading with "reservetop" parameter
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/io-mapping.h | 17 | ||||
-rw-r--r-- | include/linux/page-flags.h | 4 |
2 files changed, 14 insertions, 7 deletions
diff --git a/include/linux/io-mapping.h b/include/linux/io-mapping.h index 0adb0f91568c..97eb928b4924 100644 --- a/include/linux/io-mapping.h +++ b/include/linux/io-mapping.h | |||
@@ -49,23 +49,30 @@ static inline struct io_mapping * | |||
49 | io_mapping_create_wc(resource_size_t base, unsigned long size) | 49 | io_mapping_create_wc(resource_size_t base, unsigned long size) |
50 | { | 50 | { |
51 | struct io_mapping *iomap; | 51 | struct io_mapping *iomap; |
52 | 52 | pgprot_t prot; | |
53 | if (!is_io_mapping_possible(base, size)) | ||
54 | return NULL; | ||
55 | 53 | ||
56 | iomap = kmalloc(sizeof(*iomap), GFP_KERNEL); | 54 | iomap = kmalloc(sizeof(*iomap), GFP_KERNEL); |
57 | if (!iomap) | 55 | if (!iomap) |
58 | return NULL; | 56 | goto out_err; |
57 | |||
58 | if (iomap_create_wc(base, size, &prot)) | ||
59 | goto out_free; | ||
59 | 60 | ||
60 | iomap->base = base; | 61 | iomap->base = base; |
61 | iomap->size = size; | 62 | iomap->size = size; |
62 | iomap->prot = pgprot_writecombine(__pgprot(__PAGE_KERNEL)); | 63 | iomap->prot = prot; |
63 | return iomap; | 64 | return iomap; |
65 | |||
66 | out_free: | ||
67 | kfree(iomap); | ||
68 | out_err: | ||
69 | return NULL; | ||
64 | } | 70 | } |
65 | 71 | ||
66 | static inline void | 72 | static inline void |
67 | io_mapping_free(struct io_mapping *mapping) | 73 | io_mapping_free(struct io_mapping *mapping) |
68 | { | 74 | { |
75 | iomap_free(mapping->base, mapping->size); | ||
69 | kfree(mapping); | 76 | kfree(mapping); |
70 | } | 77 | } |
71 | 78 | ||
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index e2e5ce543595..2b87acfc5f87 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h | |||
@@ -99,7 +99,7 @@ enum pageflags { | |||
99 | #ifdef CONFIG_HAVE_MLOCKED_PAGE_BIT | 99 | #ifdef CONFIG_HAVE_MLOCKED_PAGE_BIT |
100 | PG_mlocked, /* Page is vma mlocked */ | 100 | PG_mlocked, /* Page is vma mlocked */ |
101 | #endif | 101 | #endif |
102 | #ifdef CONFIG_IA64_UNCACHED_ALLOCATOR | 102 | #ifdef CONFIG_ARCH_USES_PG_UNCACHED |
103 | PG_uncached, /* Page has been mapped as uncached */ | 103 | PG_uncached, /* Page has been mapped as uncached */ |
104 | #endif | 104 | #endif |
105 | __NR_PAGEFLAGS, | 105 | __NR_PAGEFLAGS, |
@@ -257,7 +257,7 @@ PAGEFLAG_FALSE(Mlocked) | |||
257 | SETPAGEFLAG_NOOP(Mlocked) TESTCLEARFLAG_FALSE(Mlocked) | 257 | SETPAGEFLAG_NOOP(Mlocked) TESTCLEARFLAG_FALSE(Mlocked) |
258 | #endif | 258 | #endif |
259 | 259 | ||
260 | #ifdef CONFIG_IA64_UNCACHED_ALLOCATOR | 260 | #ifdef CONFIG_ARCH_USES_PG_UNCACHED |
261 | PAGEFLAG(Uncached, uncached) | 261 | PAGEFLAG(Uncached, uncached) |
262 | #else | 262 | #else |
263 | PAGEFLAG_FALSE(Uncached) | 263 | PAGEFLAG_FALSE(Uncached) |