lkml.org 
[lkml]   [2014]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[Patch v7 02/18] x86, intel-mid: Create IRQs for APB timers and RTC timers
    Date
    Intel MID platforms has no legacy interrupts, so no IRQ descriptors
    preallocated. We need to call mp_map_gsi_to_irq() to create IRQ
    descriptors for APB timers and RTC timers, otherwise it may cause
    invalid memory access as:
    [ 0.116839] BUG: unable to handle kernel NULL pointer dereference at
    0000003a
    [ 0.123803] IP: [<c1071c0e>] setup_irq+0xf/0x4d

    Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
    Tested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: <stable@vger.kernel.org> # 3.17
    ---
    arch/x86/kernel/apb_timer.c | 2 --
    arch/x86/platform/intel-mid/sfi.c | 2 ++
    2 files changed, 2 insertions(+), 2 deletions(-)

    diff --git a/arch/x86/kernel/apb_timer.c b/arch/x86/kernel/apb_timer.c
    index 5972b108f15a..b708738d016e 100644
    --- a/arch/x86/kernel/apb_timer.c
    +++ b/arch/x86/kernel/apb_timer.c
    @@ -185,8 +185,6 @@ static void apbt_setup_irq(struct apbt_dev *adev)

    irq_modify_status(adev->irq, 0, IRQ_MOVE_PCNTXT);
    irq_set_affinity(adev->irq, cpumask_of(adev->cpu));
    - /* APB timer irqs are set up as mp_irqs, timer is edge type */
    - __irq_set_handler(adev->irq, handle_edge_irq, 0, "edge");
    }

    /* Should be called with per cpu */
    diff --git a/arch/x86/platform/intel-mid/sfi.c b/arch/x86/platform/intel-mid/sfi.c
    index 3c53a90fdb18..c14ad34776c4 100644
    --- a/arch/x86/platform/intel-mid/sfi.c
    +++ b/arch/x86/platform/intel-mid/sfi.c
    @@ -106,6 +106,7 @@ int __init sfi_parse_mtmr(struct sfi_table_header *table)
    mp_irq.dstapic = MP_APIC_ALL;
    mp_irq.dstirq = pentry->irq;
    mp_save_irq(&mp_irq);
    + mp_map_gsi_to_irq(pentry->irq, IOAPIC_MAP_ALLOC);
    }

    return 0;
    @@ -176,6 +177,7 @@ int __init sfi_parse_mrtc(struct sfi_table_header *table)
    mp_irq.dstapic = MP_APIC_ALL;
    mp_irq.dstirq = pentry->irq;
    mp_save_irq(&mp_irq);
    + mp_map_gsi_to_irq(pentry->irq, IOAPIC_MAP_ALLOC);
    }
    return 0;
    }
    --
    1.7.10.4


    \
     
     \ /
      Last update: 2014-10-27 07:01    [W:4.071 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site