From 4395a27dde93752031d94224488df71d3be17cd2 Mon Sep 17 00:00:00 2001 From: Gary King Date: Thu, 29 Jul 2010 17:37:20 +0100 Subject: [PATCH] --- yaml --- r: 201385 b: refs/heads/master c: 831e8047eb2af310184a9d4d9e749f3de119ae39 h: refs/heads/master i: 201383: a6b9d3d6cec745f72a77a72ce87a6092b217caca v: v3 --- [refs] | 2 +- trunk/arch/arm/mm/highmem.c | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 42ccf9f16d42..19ccae06e2ef 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b92b3612134faff171981fad4f0adb33f485e02e +refs/heads/master: 831e8047eb2af310184a9d4d9e749f3de119ae39 diff --git a/trunk/arch/arm/mm/highmem.c b/trunk/arch/arm/mm/highmem.c index 086816b205b8..6ab244062b4a 100644 --- a/trunk/arch/arm/mm/highmem.c +++ b/trunk/arch/arm/mm/highmem.c @@ -163,19 +163,22 @@ static DEFINE_PER_CPU(int, kmap_high_l1_vipt_depth); void *kmap_high_l1_vipt(struct page *page, pte_t *saved_pte) { - unsigned int idx, cpu = smp_processor_id(); - int *depth = &per_cpu(kmap_high_l1_vipt_depth, cpu); + unsigned int idx, cpu; + int *depth; unsigned long vaddr, flags; pte_t pte, *ptep; + if (!in_interrupt()) + preempt_disable(); + + cpu = smp_processor_id(); + depth = &per_cpu(kmap_high_l1_vipt_depth, cpu); + idx = KM_L1_CACHE + KM_TYPE_NR * cpu; vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); ptep = TOP_PTE(vaddr); pte = mk_pte(page, kmap_prot); - if (!in_interrupt()) - preempt_disable(); - raw_local_irq_save(flags); (*depth)++; if (pte_val(*ptep) == pte_val(pte)) {