From 97ce2335b5db88b4fc8790384a4a6cef8dcf3543 Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Tue, 10 Mar 2009 22:31:03 +0100 Subject: [PATCH] --- yaml --- r: 132186 b: refs/heads/master c: 211b3d03c7400f48a781977a50104c9d12f4e229 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/x86/mm/pageattr.c | 11 +++++++++++ trunk/fs/fat/inode.c | 4 ++-- trunk/fs/proc/page.c | 2 +- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 9af88ab77f9b..0d01e6397420 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3a95ea1155c5d44aa58dde2f64f0ddafe27fd1fb +refs/heads/master: 211b3d03c7400f48a781977a50104c9d12f4e229 diff --git a/trunk/arch/x86/mm/pageattr.c b/trunk/arch/x86/mm/pageattr.c index 7be47d1a97e4..7233bd7e357b 100644 --- a/trunk/arch/x86/mm/pageattr.c +++ b/trunk/arch/x86/mm/pageattr.c @@ -515,6 +515,17 @@ static int split_large_page(pte_t *kpte, unsigned long address) * primary protection behavior: */ __set_pmd_pte(kpte, address, mk_pte(base, __pgprot(_KERNPG_TABLE))); + + /* + * Intel Atom errata AAH41 workaround. + * + * The real fix should be in hw or in a microcode update, but + * we also probabilistically try to reduce the window of having + * a large TLB mixed with 4K TLBs while instruction fetches are + * going on. + */ + __flush_tlb_all(); + base = NULL; out_unlock: diff --git a/trunk/fs/fat/inode.c b/trunk/fs/fat/inode.c index de0004fe6e00..6b74d09adbe5 100644 --- a/trunk/fs/fat/inode.c +++ b/trunk/fs/fat/inode.c @@ -202,9 +202,9 @@ static sector_t _fat_bmap(struct address_space *mapping, sector_t block) sector_t blocknr; /* fat_get_cluster() assumes the requested blocknr isn't truncated. */ - down_read(&mapping->host->i_alloc_sem); + mutex_lock(&mapping->host->i_mutex); blocknr = generic_block_bmap(mapping, block, fat_get_block); - up_read(&mapping->host->i_alloc_sem); + mutex_unlock(&mapping->host->i_mutex); return blocknr; } diff --git a/trunk/fs/proc/page.c b/trunk/fs/proc/page.c index e9983837d08d..2d1345112a42 100644 --- a/trunk/fs/proc/page.c +++ b/trunk/fs/proc/page.c @@ -80,7 +80,7 @@ static const struct file_operations proc_kpagecount_operations = { #define KPF_RECLAIM 9 #define KPF_BUDDY 10 -#define kpf_copy_bit(flags, dstpos, srcpos) (((flags >> srcpos) & 1) << dstpos) +#define kpf_copy_bit(flags, srcpos, dstpos) (((flags >> srcpos) & 1) << dstpos) static ssize_t kpageflags_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)