* local TLB.
         */
        cpu = smp_processor_id();
-       if (!ctx_valid || !cpu_isset(cpu, mm->cpu_vm_mask)) {
-               cpu_set(cpu, mm->cpu_vm_mask);
+       if (!ctx_valid || !cpumask_test_cpu(cpu, mm_cpumask(mm))) {
+               cpumask_set_cpu(cpu, mm_cpumask(mm));
                __flush_tlb_mm(CTX_HWBITS(mm->context),
                               SECONDARY_CONTEXT);
        }
        if (!CTX_VALID(mm->context))
                get_new_mmu_context(mm);
        cpu = smp_processor_id();
-       if (!cpu_isset(cpu, mm->cpu_vm_mask))
-               cpu_set(cpu, mm->cpu_vm_mask);
+       if (!cpumask_test_cpu(cpu, mm_cpumask(mm)))
+               cpumask_set_cpu(cpu, mm_cpumask(mm));
 
        load_secondary_context(mm);
        __flush_tlb_mm(CTX_HWBITS(mm->context), SECONDARY_CONTEXT);
 
 void smp_flush_cache_mm(struct mm_struct *mm)
 {
        if(mm->context != NO_CONTEXT) {
-               cpumask_t cpu_mask = mm->cpu_vm_mask;
+               cpumask_t cpu_mask = *mm_cpumask(mm);
                cpu_clear(smp_processor_id(), cpu_mask);
                if (!cpus_empty(cpu_mask))
                        xc1((smpfunc_t) BTFIXUP_CALL(local_flush_cache_mm), (unsigned long) mm);
 void smp_flush_tlb_mm(struct mm_struct *mm)
 {
        if(mm->context != NO_CONTEXT) {
-               cpumask_t cpu_mask = mm->cpu_vm_mask;
+               cpumask_t cpu_mask = *mm_cpumask(mm);
                cpu_clear(smp_processor_id(), cpu_mask);
                if (!cpus_empty(cpu_mask)) {
                        xc1((smpfunc_t) BTFIXUP_CALL(local_flush_tlb_mm), (unsigned long) mm);
                        if(atomic_read(&mm->mm_users) == 1 && current->active_mm == mm)
-                               mm->cpu_vm_mask = cpumask_of_cpu(smp_processor_id());
+                               cpumask_copy(mm_cpumask(mm),
+                                            cpumask_of(smp_processor_id()));
                }
                local_flush_tlb_mm(mm);
        }
        struct mm_struct *mm = vma->vm_mm;
 
        if (mm->context != NO_CONTEXT) {
-               cpumask_t cpu_mask = mm->cpu_vm_mask;
+               cpumask_t cpu_mask = *mm_cpumask(mm);
                cpu_clear(smp_processor_id(), cpu_mask);
                if (!cpus_empty(cpu_mask))
                        xc3((smpfunc_t) BTFIXUP_CALL(local_flush_cache_range), (unsigned long) vma, start, end);
        struct mm_struct *mm = vma->vm_mm;
 
        if (mm->context != NO_CONTEXT) {
-               cpumask_t cpu_mask = mm->cpu_vm_mask;
+               cpumask_t cpu_mask = *mm_cpumask(mm);
                cpu_clear(smp_processor_id(), cpu_mask);
                if (!cpus_empty(cpu_mask))
                        xc3((smpfunc_t) BTFIXUP_CALL(local_flush_tlb_range), (unsigned long) vma, start, end);
        struct mm_struct *mm = vma->vm_mm;
 
        if(mm->context != NO_CONTEXT) {
-               cpumask_t cpu_mask = mm->cpu_vm_mask;
+               cpumask_t cpu_mask = *mm_cpumask(mm);
                cpu_clear(smp_processor_id(), cpu_mask);
                if (!cpus_empty(cpu_mask))
                        xc2((smpfunc_t) BTFIXUP_CALL(local_flush_cache_page), (unsigned long) vma, page);
        struct mm_struct *mm = vma->vm_mm;
 
        if(mm->context != NO_CONTEXT) {
-               cpumask_t cpu_mask = mm->cpu_vm_mask;
+               cpumask_t cpu_mask = *mm_cpumask(mm);
                cpu_clear(smp_processor_id(), cpu_mask);
                if (!cpus_empty(cpu_mask))
                        xc2((smpfunc_t) BTFIXUP_CALL(local_flush_tlb_page), (unsigned long) vma, page);
 
 void smp_flush_sig_insns(struct mm_struct *mm, unsigned long insn_addr)
 {
-       cpumask_t cpu_mask = mm->cpu_vm_mask;
+       cpumask_t cpu_mask = *mm_cpumask(mm);
        cpu_clear(smp_processor_id(), cpu_mask);
        if (!cpus_empty(cpu_mask))
                xc2((smpfunc_t) BTFIXUP_CALL(local_flush_sig_insns), (unsigned long) mm, insn_addr);
 
 
 void smp_tsb_sync(struct mm_struct *mm)
 {
-       smp_call_function_many(&mm->cpu_vm_mask, tsb_sync, mm, 1);
+       smp_call_function_many(mm_cpumask(mm), tsb_sync, mm, 1);
 }
 
 extern unsigned long xcall_flush_tlb_mm;
        int cpu = get_cpu();
 
        if (atomic_read(&mm->mm_users) == 1) {
-               mm->cpu_vm_mask = cpumask_of_cpu(cpu);
+               cpumask_copy(mm_cpumask(mm), cpumask_of(cpu));
                goto local_flush_and_out;
        }
 
        smp_cross_call_masked(&xcall_flush_tlb_mm,
                              ctx, 0, 0,
-                             &mm->cpu_vm_mask);
+                             mm_cpumask(mm));
 
 local_flush_and_out:
        __flush_tlb_mm(ctx, SECONDARY_CONTEXT);
        int cpu = get_cpu();
 
        if (mm == current->active_mm && atomic_read(&mm->mm_users) == 1)
-               mm->cpu_vm_mask = cpumask_of_cpu(cpu);
+               cpumask_copy(mm_cpumask(mm), cpumask_of(cpu));
        else
                smp_cross_call_masked(&xcall_flush_tlb_pending,
                                      ctx, nr, (unsigned long) vaddrs,
-                                     &mm->cpu_vm_mask);
+                                     mm_cpumask(mm));
 
        __flush_tlb_pending(ctx, nr, vaddrs);