lkml.org 
[lkml]   [2008]   [Apr]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: [PATCH 6/11] arm: convert to generic helpers for IPI function calls
    From
    Date
    On Tue, 2008-04-22 at 09:57 +0200, Jens Axboe wrote:
    > This converts arm to use the new helpers for smp_call_function() and
    > friends, and adds support for smp_call_function_single(). Not tested
    > at all, not even compiled.

    With the minor fixes below, it compiles and seems to run OK on RealView
    EB + ARM11MPCore (4 CPUs):

    diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
    index 9c85329..6344466 100644
    --- a/arch/arm/kernel/smp.c
    +++ b/arch/arm/kernel/smp.c
    @@ -484,7 +484,7 @@ asmlinkage void __exception do_IPI(struct pt_regs *regs)
    generic_smp_call_function_interrupt();
    break;

    - case IPI_CALL_FUNC:
    + case IPI_CALL_FUNC_SINGLE:
    generic_smp_call_function_single_interrupt();
    break;

    @@ -536,14 +536,13 @@ int setup_profiling_timer(unsigned int multiplier)
    }

    static int
    -on_each_cpu_mask(void (*func)(void *), void *info, int retry, int wait,
    - cpumask_t mask)
    +on_each_cpu_mask(void (*func)(void *), void *info, int wait, cpumask_t mask)
    {
    int ret = 0;

    preempt_disable();

    - ret = smp_call_function_mask(mask, func, info, retry, wait);
    + ret = smp_call_function_mask(mask, func, info, wait);
    if (cpu_isset(smp_processor_id(), mask))
    func(info);

    @@ -612,7 +611,7 @@ void flush_tlb_mm(struct mm_struct *mm)
    {
    cpumask_t mask = mm->cpu_vm_mask;

    - on_each_cpu_mask(ipi_flush_tlb_mm, mm, 1, 1, mask);
    + on_each_cpu_mask(ipi_flush_tlb_mm, mm, 1, mask);
    }

    void flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr)
    @@ -623,7 +622,7 @@ void flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr)
    ta.ta_vma = vma;
    ta.ta_start = uaddr;

    - on_each_cpu_mask(ipi_flush_tlb_page, &ta, 1, 1, mask);
    + on_each_cpu_mask(ipi_flush_tlb_page, &ta, 1, mask);
    }

    void flush_tlb_kernel_page(unsigned long kaddr)
    @@ -645,7 +644,7 @@ void flush_tlb_range(struct vm_area_struct *vma,
    ta.ta_start = start;
    ta.ta_end = end;

    - on_each_cpu_mask(ipi_flush_tlb_range, &ta, 1, 1, mask);
    + on_each_cpu_mask(ipi_flush_tlb_range, &ta, 1, mask);
    }

    void flush_tlb_kernel_range(unsigned long start, unsigned long end)

    --
    Catalin



    \
     
     \ /
      Last update: 2008-04-22 17:25    [W:2.866 / U:0.588 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site