30 Oct, 2012

1 commit

  • Since CAM domain (ISS) has no module wake-up dependency
    with any other clock domain of the device and the dynamic
    dependency from L3_main_2 is always disabled, the domain
    needs to be in force wakeup in order to be able to access
    it for configure (sysconfig) it or use it.

    Also since there is no clock in the domain managed automatically
    by the hardware, there is no use to configure automatic
    clock domain transition. SW should keep the SW_WKUP domain
    transition as long as a module in the domain is required to
    be functional.

    Signed-off-by: Miguel Vadillo
    Signed-off-by: Benoit Cousson

    Miguel Vadillo
     

29 Oct, 2012

1 commit

  • Pull arm-soc fixes from Arnd Bergmann:
    "Bug fixes for a number of ARM platforms, mostly OMAP, imx and at91.

    These come a little later than I had hoped but unfortunately we had a
    few of these patches cause regressions themselves and had to work out
    how to deal with those in the meantime."

    * tag 'fixes-for-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (38 commits)
    Revert "ARM i.MX25: Fix PWM per clock lookups"
    ARM: versatile: fix versatile_defconfig
    ARM: mvebu: update defconfig with 3.7 changes
    ARM: at91: fix at91x40 build
    ARM: socfpga: Fix socfpga compilation with early_printk() enabled
    ARM: SPEAr: Remove unused empty files
    MAINTAINERS: Add arm-soc tree entry
    ARM: dts: mxs: add the "clock-names" for gpmi-nand
    ARM: ux500: Correct SDI5 address and add some format changes
    ARM: ux500: Specify AMBA Primecell IDs for Nomadik I2C in DT
    ARM: ux500: Fix build error relating to IRQCHIP_SKIP_SET_WAKE
    ARM: at91: drop duplicated config SOC_AT91SAM9 entry
    ARM: at91/i2c: change id to let i2c-at91 work
    ARM: at91/i2c: change id to let i2c-gpio work
    ARM: at91/dts: at91sam9g20ek_common: Fix typos in buttons labels.
    ARM: at91: fix external interrupt specification in board code
    ARM: at91: fix external interrupts in non-DT case
    ARM: at91: at91sam9g10: fix SOC type detection
    ARM: at91/tc: fix typo in the DT document
    ARM: AM33XX: Fix configuration of dmtimer parent clock by dmtimer driverDate:Wed, 17 Oct 2012 13:55:55 -0500
    ...

    Linus Torvalds
     

27 Oct, 2012

8 commits

  • This reverts commit 92063cee118655d25b50d04eb77b012f3287357a, it
    was applied prematurely, causing this build error for
    imx_v4_v5_defconfig:

    arch/arm/mach-imx/clk-imx25.c: In function 'mx25_clocks_init':
    arch/arm/mach-imx/clk-imx25.c:206:26: error: 'pwm_ipg_per' undeclared (first use in this function)
    arch/arm/mach-imx/clk-imx25.c:206:26: note: each undeclared identifier is reported only once for each function it appears in

    Sascha Hauer explains:
    > There are several gates missing in clk-imx25.c. I have a patch which
    > adds support for them and I seem to have missed that the above depends
    > on it.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • With the introduction of CONFIG_ARCH_MULTIPLATFORM, versatile is
    no longer the default platform, so we need to enable
    CONFIG_ARCH_VERSATILE explicitly in order for that to be selected
    rather than the multiplatform configuration.

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • The split of 370 and XP into two Kconfig options and the multiplatform
    kernel support has changed a few Kconfig symbols, so let's update the
    mvebu_defconfig file with the latest changes.

    Signed-off-by: Thomas Petazzoni
    Signed-off-by: Arnd Bergmann

    Thomas Petazzoni
     
  • patch 738a0fd7 "ARM: at91: fix external interrupts in non-DT case"
    fixed a run-time error on some at91 platforms but did not apply
    the same change to at91x40, which now doesn't build.

    This changes at91x40 in the same way that the other platforms
    were changed.

    Signed-off-by: Arnd Bergmann
    Acked-by: Jean-Christophe PLAGNIOL-VILLARD

    Arnd Bergmann
     
  • Pull serial fix from Greg Kroah-Hartman:
    "Here is one patch, a revert of a omap serial driver patch that was
    causing problems, for your 3.7-rc tree.

    Signed-off-by: Greg Kroah-Hartman "

    * tag 'tty-3.7-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
    Revert "serial: omap: fix software flow control"

    Linus Torvalds
     
  • Pull DMA-mapping revert from Marek Szyprowski:
    "Due to my mistake, my previous pull request (merged as commit
    cff7b8ba60e3: "Merge branch 'fixes_for_linus' ..") contained a patch
    which is aimed for v3.8 and lacks its dependences. This pull request
    reverts it and fixes build break of ARM architecture."

    * 'fixes_for_linus' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping:
    Revert "ARM: dma-mapping: support debug_dma_mapping_error"

    Linus Torvalds
     
  • Pull x86 fixes from Ingo Molnar:
    "This fixes a couple of nasty page table initialization bugs which were
    causing kdump regressions. A clean rearchitecturing of the code is in
    the works - meanwhile these are reverts that restore the
    best-known-working state of the kernel.

    There's also EFI fixes and other small fixes."

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86, mm: Undo incorrect revert in arch/x86/mm/init.c
    x86: efi: Turn off efi_enabled after setup on mixed fw/kernel
    x86, mm: Find_early_table_space based on ranges that are actually being mapped
    x86, mm: Use memblock memory loop instead of e820_RAM
    x86, mm: Trim memory in memblock to be page aligned
    x86/irq/ioapic: Check for valid irq_cfg pointer in smp_irq_move_cleanup_interrupt
    x86/efi: Fix oops caused by incorrect set_memory_uc() usage
    x86-64: Fix page table accounting
    Revert "x86/mm: Fix the size calculation of mapping tables"
    MAINTAINERS: Add EFI git repository location

    Linus Torvalds
     
  • Pull perf fixes from Ingo Molnar:
    "Most of the kernel diffstat relates to a group of Intel P6 and KNC
    (Xeon-Phi Knights Corner) PMU driver fixes, neither of which is in
    heavy use, so we took the fixes.

    The rest is diverse smallish fixes to the tooling and kernel side."

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf/x86: Remove unused variable in nhmex_rbox_alter_er()
    perf/x86: Enable overflow on Intel KNC with a custom knc_pmu_handle_irq()
    perf/x86: Remove cpuc->enable check on Intl KNC event enable/disable
    perf/x86: Make Intel KNC use full 40-bit width of counters
    perf/x86/uncore: Handle pci_read_config_dword() errors
    perf/x86: Remove P6 cpuc->enabled check
    perf/x86: Update/fix generic events on P6 PMU
    perf/x86: Fix P6 FP_ASSIST event constraint
    perf, cpu hotplug: Use cached value of smp_processor_id()
    perf, cpu hotplug: Run CPU_STARTING notifiers with irqs disabled
    x86/perf: Fix virtualization sanity check
    perf test: Fix exclude_guest parse events tests
    perf tools: do not flush maps on COMM for perf report
    perf help: Fix --help for builtins
    perf trace: Check if sample raw_data field is set
    perf trace: Validate syscall id before growing syscall table

    Linus Torvalds
     

26 Oct, 2012

8 commits

  • * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas:
    ARM: shmobile: r8a7779: I/O address abuse cleanup

    Arnd Bergmann
     
  • …/git/kgene/linux-samsung into fixes

    From Kukjin Kim <kgene.kim@samsung.com>:

    One is spi stuff for fix the device names for the different subtypes of
    the spi controller. And the other is adding missing .smp field for
    exynos4-dt and fixing memory sections for exynos4210-trats board.

    * 'v3.7-samsung-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung:
    ARM: EXYNOS: Set .smp field of machine descriptor for exynos4-dt
    ARM: dts: Split memory into 4 sections for exynos4210-trats
    ARM: SAMSUNG: Add naming of s3c64xx-spi devices

    Signed-off-by: Arnd Bergmann <arnd@arndb.de>

    Arnd Bergmann
     
  • …g/efi into x86/urgent

    Pull EFI fixes from Matt Fleming:

    "Fix oops with EFI variables on mixed 32/64-bit firmware/kernels and
    document EFI git repository location on kernel.org."

    Conflicts:
    arch/x86/include/asm/efi.h

    Signed-off-by: Ingo Molnar <mingo@kernel.org>

    Ingo Molnar
     
  • This reverts commit 871ae57adc5ed092c1341f411514d0e8482e2611, which is
    scheduled for v3.8 and accidently got into v3.7-rc series.

    Signed-off-by: Marek Szyprowski

    Marek Szyprowski
     
  • Pull ARM fixes from Russell King:
    "A random collection of various fixes, mainly from Arnd and a few other
    people. Not thing really stands out here."

    * 'fixes' of git://git.linaro.org/people/rmk/linux-arm:
    ARM: drop experimental status for hotplug and Thumb2
    ARM: 7560/1: SMP_TWD: use DIV_ROUND_CLOSEST() for periodic mode
    ARM: 7559/1: smp: switch away from the idmap before updating init_mm.mm_count
    ARM: 7556/1: perf: fix updated event period in response to PERF_EVENT_IOC_PERIOD
    ARM: 7555/1: kexec: fix segment memory addresses check
    ARM: warnings in arch/arm/include/asm/uaccess.h
    ARM: binfmt_flat: unused variable 'persistent'
    ARM: be really quiet when building with 'make -s'
    ARM: pass -marm to gcc by default for both C and assembler
    ARM: Xen: fix initial build problems
    ARM: export default read_current_timer
    ARM: Fix another build warning in arch/arm/mm/alignment.c
    ARM: export set_irq_flags
    ARM: kprobes: make more tests conditional

    Linus Torvalds
     
  • Pull CMA and DMA-mapping fixes from Marek Szyprowski:
    "This consists mainly of a set of one-liner fixes and cleanups for a
    few minor issues identified in both Contiguous Memory Allocator code
    and ARM DMA-mapping subsystem."

    * 'fixes_for_linus' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping:
    ARM: mm: Remove unused arm_vmregion priv field
    ARM: dma-mapping: fix build warning in __dma_alloc()
    ARM: dma-mapping: support debug_dma_mapping_error
    mm: cma: alloc_contig_range: return early for err path
    drivers: cma: Fix wrong CMA selected region size default value
    drivers: dma-coherent: Fix typo in dma_mmap_from_coherent documentation
    drivers: dma-contiguous: Don't redefine SZ_1M

    Linus Torvalds
     
  • Commit

    844ab6f9 x86, mm: Find_early_table_space based on ranges that are actually being mapped

    added back some lines back wrongly that has been removed in commit

    7b16bbf97 Revert "x86/mm: Fix the size calculation of mapping tables"

    remove them again.

    Signed-off-by: Yinghai Lu
    Link: http://lkml.kernel.org/r/CAE9FiQW_vuaYQbmagVnxT2DGsYc=9tNeAbdBq53sYkitPOwxSQ@mail.gmail.com
    Acked-by: Jacob Shin
    Signed-off-by: H. Peter Anvin

    Yinghai Lu
     
  • When 32-bit EFI is used with 64-bit kernel (or vice versa), turn off
    efi_enabled once setup is done. Beyond setup, it is normally used to
    determine if runtime services are available and we will have none.

    This will resolve issues stemming from efivars modprobe panicking on a
    32/64-bit setup, as well as some reboot issues on similar setups.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=45991

    Reported-by: Marko Kohtala
    Reported-by: Maxim Kammerer
    Signed-off-by: Olof Johansson
    Acked-by: Maarten Lankhorst
    Cc: stable@kernel.org # 3.4 - 3.6
    Cc: Matthew Garrett
    Signed-off-by: Matt Fleming

    Olof Johansson
     

25 Oct, 2012

21 commits

  • This fixes early_printk() compilation for
    socfpga. (senduart/busyuart/waituart were missing). It does that by
    making Picochip code generic.

    Signed-off-by: Pavel Machek
    Acked-by: Dinh Nguyen
    Acked-by: Jamie Iles
    Signed-off-by: Arnd Bergmann

    Pavel Machek
     
  • Few empty files (spear1310_misc_regs.h and spear1340_misc_regs.h) are created by
    commit b31e23726 "SPEAr13xx: Add header files".

    Don't know how they got added, obviously my fault :)
    But nobody could even catch them in reviews.

    Remove them.

    Signed-off-by: Viresh Kumar
    Signed-off-by: Arnd Bergmann

    Viresh Kumar
     
  • …/kernel/git/tmlind/linux-omap into fixes

    From Tony Lindgren <tony@atomide.com>:

    Timer fix for am33xx, runtime PM fix for UART, audio McBSP fixes,
    mux and pinctrl fixes, and Beagle OPP fix.

    * tag 'omap-for-v3.7-rc2/fixes-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
    ARM: AM33XX: Fix configuration of dmtimer parent clock by dmtimer driverDate:Wed, 17 Oct 2012 13:55:55 -0500
    ARM: OMAP3: Beagle: fix OPP customization and initcall ordering
    ARM: OMAP3: Fix 3430 legacy mux names for ssi1 signals.
    ARM: OMAP2+: Fix location of select PINCTRL
    ARM/dts: omap3: Fix mcbsp2/3 hwmods to be able to probe the drivers for audio
    ARM: OMAP2: UART: fix console UART mismatched runtime PM status
    ARM: OMAP3: PM: apply part of the erratum i582 workaround

    Signed-off-by: Arnd Bergmann <arnd@arndb.de>

    Arnd Bergmann
     
  • Patches from Sascha Hauer :

    ARM i.MX fixes for 3.7-rc

    * tag 'imx-fixes' of git://git.pengutronix.de/git/imx/linux-2.6:
    ARM i.MX25: Fix PWM per clock lookups
    ARM i.MX25 clk: Fix nfc_ipg_per parent
    ARM i.MX25: Fix lcdc_ipg_per parent clock
    ARM: mxc: platform-mxc-mmc: Fix register region size
    ARM: imx: clk-imx27: Fix divider width field
    ARM: imx: fix the return value check in imx_clk_busy_divider()
    ARM: imx_v6_v7_defconfig: Enable CONFIG_GPIO_MC9S08DZ60
    ARM: imx: fix return value check in imx3_init_l2x0()

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • * 'for-rcs-3.7' of git://git.linaro.org/people/ljones/linux-3.0-ux500:
    ARM: ux500: Correct SDI5 address and add some format changes
    ARM: ux500: Specify AMBA Primecell IDs for Nomadik I2C in DT
    ARM: ux500: Fix build error relating to IRQCHIP_SKIP_SET_WAKE

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • From Nicolas Ferre :

    A mix of typos and critical fixes.
    The most important ones are a duplicated definition of a Kconfig
    variable and the handling of external interrupts for non-DT case.
    The new at91sam9g10 was suffering a recognition issue due to an ID
    mis-interpreted: this was leading to a kernel panic.

    * tag 'at91-fixes' of git://github.com/at91linux/linux-at91: (257 commits)
    ARM: at91: drop duplicated config SOC_AT91SAM9 entry
    ARM: at91/i2c: change id to let i2c-at91 work
    ARM: at91/i2c: change id to let i2c-gpio work
    ARM: at91/dts: at91sam9g20ek_common: Fix typos in buttons labels.
    ARM: at91: fix external interrupt specification in board code
    ARM: at91: fix external interrupts in non-DT case
    ARM: at91: at91sam9g10: fix SOC type detection
    ARM: at91/tc: fix typo in the DT document

    Signed-off-by: Arnd Bergmann

    Arnd Bergmann
     
  • The current DT nodes for mx23/mx28 miss the `clocks-names` item for gpmi-nand.
    So the gpmi-nand driver could not find the proper clock.

    This patch fixes this issue.

    Signed-off-by: Huang Shijie
    Reviewed-by: Marek Vasut
    Acked-by: Shawn Guo
    Signed-off-by: Arnd Bergmann

    Huang Shijie
     
  • Here we fix a simple copy and paste error and bring some node
    spaces back into line with the remainder of the tree.

    Acked-by: Linus Walleij
    Signed-off-by: Lee Jones

    Lee Jones
     
  • Now the Nomadik I2C driver has been converted to an AMBA one, we
    are required to provide the Primecell IDs via platform code. When
    booting with DT enabled these have to be specified in the device
    nodes. We do that here.

    Acked-by: Linus Walleij
    Signed-off-by: Lee Jones

    Lee Jones
     
  • This patch fixes the build error below:

    arch/arm/mach-ux500/cpu.c: In function ‘ux500_init_irq’:
    arch/arm/mach-ux500/cpu.c:55:2: error: invalid use of undefined type ‘struct irq_chip’
    arch/arm/mach-ux500/cpu.c:55:24: error: ‘IRQCHIP_SKIP_SET_WAKE’ undeclared (first use in this function)
    arch/arm/mach-ux500/cpu.c:55:24: note: each undeclared identifier is reported only once for each function it appears in
    arch/arm/mach-ux500/cpu.c:55:48: error: ‘IRQCHIP_MASK_ON_SUSPEND’ undeclared (first use in this function)

    Acked-by: Linus Walleij
    Signed-off-by: Lee Jones

    Lee Jones
     
  • Current logic finds enough space for direct mapping page tables from 0
    to end. Instead, we only need to find enough space to cover mr[0].start
    to mr[nr_range].end -- the range that is actually being mapped by
    init_memory_mapping()

    This is needed after 1bbbbe779aabe1f0768c2bf8f8c0a5583679b54a, to address
    the panic reported here:

    https://lkml.org/lkml/2012/10/20/160
    https://lkml.org/lkml/2012/10/21/157

    Signed-off-by: Jacob Shin
    Link: http://lkml.kernel.org/r/20121024195311.GB11779@jshin-Toonie
    Tested-by: Tom Rini
    Signed-off-by: H. Peter Anvin

    Jacob Shin
     
  • This reverts commit 957ee7270d632245b43f6feb0e70d9a5e9ea6cf6
    (serial: omap: fix software flow control).

    As Russell has pointed out, that commit isn't fixing
    Software Flow Control at all, and it actually makes
    it even more broken.

    It was agreed to revert this commit and use Russell's
    latest UART patches instead.

    Cc: Russell King
    Signed-off-by: Felipe Balbi
    Acked-by: Tony Lindgren
    Signed-off-by: Greg Kroah-Hartman

    Felipe Balbi
     
  • We need to handle E820_RAM and E820_RESERVED_KERNEL at the same time.

    Also memblock has page aligned range for ram, so we could avoid mapping
    partial pages.

    Signed-off-by: Yinghai Lu
    Link: http://lkml.kernel.org/r/CAE9FiQVZirvaBMFYRfXMmWEcHbKSicQEHz4VAwUv0xFCk51ZNw@mail.gmail.com
    Acked-by: Jacob Shin
    Signed-off-by: H. Peter Anvin
    Cc:

    Yinghai Lu
     
  • We will not map partial pages, so need to make sure memblock
    allocation will not allocate those bytes out.

    Also we will use for_each_mem_pfn_range() to loop to map memory
    range to keep them consistent.

    Signed-off-by: Yinghai Lu
    Link: http://lkml.kernel.org/r/CAE9FiQVZirvaBMFYRfXMmWEcHbKSicQEHz4VAwUv0xFCk51ZNw@mail.gmail.com
    Acked-by: Jacob Shin
    Signed-off-by: H. Peter Anvin
    Cc:

    Yinghai Lu
     
  • Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD
    Acked-by: Nicolas Ferre

    Jean-Christophe PLAGNIOL-VILLARD
     
  • The i2c core driver will turn the platform device ID to busnum
    When using platfrom device ID as -1, it means dynamically assigned
    the busnum. When writing code, we need to make sure the busnum,
    and call i2c_register_board_info(int busnum, ...) to register device
    if using -1, we do not know the value of busnum

    In order to solve this issue, set the platform device ID as a fix number
    Here using 0 to match the busnum used in i2c_regsiter_board_info()

    Signed-off-by: Bo Shen
    Signed-off-by: Nicolas Ferre
    Acked-by: Jean-Christophe PLAGNIOL-VILLARD
    Acked-by: Ludovic Desroches

    Bo Shen
     
  • The i2c core driver will turn the platform device ID to busnum
    When using platfrom device ID as -1, it means dynamically assigned
    the busnum. When writing code, we need to make sure the busnum,
    and call i2c_register_board_info(int busnum, ...) to register device
    if using -1, we do not know the value of busnum

    In order to solve this issue, set the platform device ID as a fix number
    Here using 0 to match the busnum used in i2c_regsiter_board_info()

    Signed-off-by: Bo Shen
    Acked-by: Jean Delvare
    Signed-off-by: Nicolas Ferre
    Acked-by: Jean-Christophe PLAGNIOL-VILLARD
    Acked-by: Ludovic Desroches
    Cc: stable [very long time]

    Bo Shen
     
  • Signed-off-by: Marek Belisko
    Signed-off-by: Nicolas Ferre
    Acked-by: Jean-Christophe PLAGNIOL-VILLARD

    Marek BElisko
     
  • Since the switch to sparse irq, we have to add the NR_IRQS_LEGACY
    offset to static irq numbers. It has been forgotten on these
    SPI irq definitions in board code.

    Signed-off-by: Nicolas Ferre
    Acked-by: Jean-Christophe PLAGNIOL-VILLARD
    Acked-by: Ludovic Desroches
    Cc: stable [v3.6]

    Nicolas Ferre
     
  • Management of external interrupts has changed but the
    non-DT code has not integrated these changes.
    Add a mask to pass external irq specification from SoC
    specific code to the at91_aic_init() function.

    Signed-off-by: Nicolas Ferre
    Acked-by: Jean-Christophe PLAGNIOL-VILLARD
    Acked-by: Ludovic Desroches
    Cc: stable [v3.6]

    Nicolas Ferre
     
  • Newer at91sam9g10 SoC revision can't be detected, so the kernel can't boot with
    this kind of kernel panic:
    "AT91: Impossible to detect the SOC type"

    CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
    CPU: VIVT data cache, VIVT instruction cache
    Machine: Atmel AT91SAM9G10-EK
    Ignoring tag cmdline (using the default kernel command line)
    bootconsole [earlycon0] enabled
    Memory policy: ECC disabled, Data cache writeback
    Kernel panic - not syncing: AT91: Impossible to detect the SOC type
    [] (unwind_backtrace+0x0/0xe0) from [] (panic+0x78/0x1cc)
    [] (panic+0x78/0x1cc) from [] (at91_map_io+0x90/0xc8)
    [] (at91_map_io+0x90/0xc8) from [] (paging_init+0x564/0x6d0)
    [] (paging_init+0x564/0x6d0) from [] (setup_arch+0x464/0x704)
    [] (setup_arch+0x464/0x704) from [] (start_kernel+0x6c/0x2d4)
    [] (start_kernel+0x6c/0x2d4) from [] (0x20008040)

    The reason for this is that the Debug Unit Chip ID Register has changed between
    Engineering Sample and definitive revision of the SoC. Changing the check of
    cidr to socid will address the problem. We do not integrate this check to the
    list just above because we also have to make sure that the extended id is
    disregarded.

    Signed-off-by: Ivan Shugov
    [nicolas.ferre@atmel.com: change commit message]
    Signed-off-by: Nicolas Ferre
    Acked-by: Jean-Christophe PLAGNIOL-VILLARD
    Cc: stable [v3.1] # since commit 8c3583b6

    Ivan Shugov
     

24 Oct, 2012

1 commit

  • Posting this patch to fix an issue concerning sparse irq's that
    I raised a while back. There was discussion about adding
    refcounting to sparse irqs (to fix other potential race
    conditions), but that does not appear to have been addressed
    yet. This covers the only issue of this type that I've
    encountered in this area.

    A NULL pointer dereference can occur in
    smp_irq_move_cleanup_interrupt() if we haven't yet setup the
    irq_cfg pointer in the irq_desc.irq_data.chip_data.

    In create_irq_nr() there is a window where we have set
    vector_irq in __assign_irq_vector(), but not yet called
    irq_set_chip_data() to set the irq_cfg pointer.

    Should an IRQ_MOVE_CLEANUP_VECTOR hit the cpu in question during
    this time, smp_irq_move_cleanup_interrupt() will attempt to
    process the aforementioned irq, but panic when accessing
    irq_cfg.

    Only continue processing the irq if irq_cfg is non-NULL.

    Signed-off-by: Dimitri Sivanich
    Cc: Suresh Siddha
    Cc: Joerg Roedel
    Cc: Yinghai Lu
    Cc: Alexander Gordeev
    Link: http://lkml.kernel.org/r/20121016125021.GA22935@sgi.com
    Signed-off-by: Ingo Molnar

    Dimitri Sivanich