24 Dec, 2011

1 commit

  • Add a req_running field to the pl330_thread to track which request (if
    any) has been submitted to the DMA. This mechanism replaces the old
    one in which we tried to guess the same by looking at the PC of the
    DMA, which could prevent the driver from sending more requests if it
    didn't guess correctly.

    Reference:

    Signed-off-by: Javi Merino
    Acked-by: Jassi Brar
    Tested-by: Tushar Behera
    Signed-off-by: Russell King

    Javi Merino
     

27 Nov, 2011

2 commits

  • Commit 4294f8baa ("ARM: gic: add irq_domain support") defines irq_start
    as irq_start = (irq_start & ~31) + 16; On a platform with a GIC and a
    CPU without PPIs, this results in irq_start being off by 16.

    This patch fixes gic_init so that we only carve out a PPI space when
    PPIs exist for the GIC being initialised.

    Cc: Rob Herring
    Signed-off-by: Will Deacon
    Signed-off-by: Russell King

    Will Deacon
     
  • When multiple GICs exist on a platform (RealView PB1176/11MP),
    we must make sure the PM notifier block is only registered
    once, otherwise we end up corrupting the PM notifier list.

    The fix is to only register the notifier when initializing
    the first GIC, as the power management functions seem
    to iterate over all the registered GICs.

    Tested on PB11MP and PB1176.

    Reported-by: Will Deacon
    Tested-by: Will Deacon
    Cc: Colin Cross
    Signed-off-by: Marc Zyngier
    Signed-off-by: Russell King

    Marc Zyngier
     

21 Nov, 2011

2 commits

  • scctl should be shifted by CC_SRCCTRL_SHFT and dcctl by

    CC_DSTCCTRL_SHFT, not the other way round.

    Reference:

    Signed-off-by: Javi Merino
    Acked-by: Jassi Brar
    Signed-off-by: Russell King

    Javi Merino
     
  • When the manager is running non-secure, the only channels that can
    issue interrupts are the ones that have a 1 in their corresponding bit
    in Configuration Register 3. The other ones will generate an abort
    when trying to signal the end of the transaction so they are useless
    in non-secure mode.

    Reference:

    Signed-off-by: Javi Merino
    Acked-by: Jassi Brar
    Signed-off-by: Russell King

    Javi Merino
     

07 Nov, 2011

1 commit

  • * 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)
    Revert "tracing: Include module.h in define_trace.h"
    irq: don't put module.h into irq.h for tracking irqgen modules.
    bluetooth: macroize two small inlines to avoid module.h
    ip_vs.h: fix implicit use of module_get/module_put from module.h
    nf_conntrack.h: fix up fallout from implicit moduleparam.h presence
    include: replace linux/module.h with "struct module" wherever possible
    include: convert various register fcns to macros to avoid include chaining
    crypto.h: remove unused crypto_tfm_alg_modname() inline
    uwb.h: fix implicit use of asm/page.h for PAGE_SIZE
    pm_runtime.h: explicitly requires notifier.h
    linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h
    miscdevice.h: fix up implicit use of lists and types
    stop_machine.h: fix implicit use of smp.h for smp_processor_id
    of: fix implicit use of errno.h in include/linux/of.h
    of_platform.h: delete needless include
    acpi: remove module.h include from platform/aclinux.h
    miscdevice.h: delete unnecessary inclusion of module.h
    device_cgroup.h: delete needless include
    net: sch_generic remove redundant use of
    net: inet_timewait_sock doesnt need
    ...

    Fix up trivial conflicts (other header files, and removal of the ab3550 mfd driver) in
    - drivers/media/dvb/frontends/dibx000_common.c
    - drivers/media/video/{mt9m111.c,ov6650.c}
    - drivers/mfd/ab3550-core.c
    - include/linux/dmaengine.h

    Linus Torvalds
     

02 Nov, 2011

1 commit

  • * 'next/dt' of git://git.linaro.org/people/arnd/arm-soc:
    ARM: gic: use module.h instead of export.h
    ARM: gic: fix irq_alloc_descs handling for sparse irq
    ARM: gic: add OF based initialization
    ARM: gic: add irq_domain support
    irq: support domains with non-zero hwirq base
    of/irq: introduce of_irq_init
    ARM: at91: add at91sam9g20 and Calao USB A9G20 DT support
    ARM: at91: dt: at91sam9g45 family and board device tree files
    arm/mx5: add device tree support for imx51 babbage
    arm/mx5: add device tree support for imx53 boards
    ARM: msm: Add devicetree support for msm8660-surf
    msm_serial: Add devicetree support
    msm_serial: Use relative resources for iomem

    Fix up conflicts in arch/arm/mach-at91/{at91sam9260.c,at91sam9g45.c}

    Linus Torvalds
     

01 Nov, 2011

2 commits


31 Oct, 2011

4 commits

  • Conflicts:
    arch/arm/include/asm/localtimer.h
    arch/arm/mach-msm/board-msm8x60.c
    arch/arm/mach-omap2/board-generic.c

    Arnd Bergmann
     
  • Commit "ARM: gic: add irq_domain support" (b49b6ff) breaks SPARSE_IRQ
    on platforms with GIC. When SPARSE_IRQ is enabled, all NR_IRQS or
    mach_desc->nr_irqs will be allocated by arch_probe_nr_irqs(). This caused
    irq_alloc_descs to allocate irq_descs after the pre-allocated space.

    Make irq_alloc_descs search for an exact irq range and assume it has
    been pre-allocated on failure. For DT probing dynamic allocation is used.
    DT enabled platforms should set their nr_irqs to NR_IRQ_LEGACY and have all
    irq_chips allocate their irq_descs with irq_alloc_descs if SPARSE_IRQ is
    enabled.

    gic_init irq_start param is changed to be signed with negative meaning do
    dynamic Linux irq assigment.

    Signed-off-by: Rob Herring

    Rob Herring
     
  • This adds ARM gic interrupt controller initialization using device tree
    data.

    The initialization function is intended to be called by of_irq_init
    function like this:

    const static struct of_device_id irq_match[] = {
    { .compatible = "arm,cortex-a9-gic", .data = gic_of_init, },
    {}
    };

    static void __init init_irqs(void)
    {
    of_irq_init(irq_match);
    }

    Signed-off-by: Rob Herring
    Reviewed-by: Jamie Iles
    Tested-by: Thomas Abraham
    Acked-by: Grant Likely

    Rob Herring
     
  • Convert the gic interrupt controller to use irq domains in preparation
    for device-tree binding and MULTI_IRQ. This allows for translation between
    GIC interrupt IDs and Linux irq numbers.

    The meaning of irq_offset has changed. It now is just the number of skipped
    GIC interrupt IDs for the controller. It will be 16 for primary GIC and 32
    for secondary GICs.

    Signed-off-by: Rob Herring
    Cc: Marc Zyngier
    Reviewed-by: Jamie Iles
    Tested-by: Thomas Abraham
    Acked-by: Grant Likely

    Rob Herring
     

29 Oct, 2011

1 commit

  • …git-cur/linux-2.6-arm

    * 'devel-stable' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm: (178 commits)
    ARM: 7139/1: fix compilation with CONFIG_ARM_ATAG_DTB_COMPAT and large TEXT_OFFSET
    ARM: gic, local timers: use the request_percpu_irq() interface
    ARM: gic: consolidate PPI handling
    ARM: switch from NO_MACH_MEMORY_H to NEED_MACH_MEMORY_H
    ARM: mach-s5p64x0: remove mach/memory.h
    ARM: mach-s3c64xx: remove mach/memory.h
    ARM: plat-mxc: remove mach/memory.h
    ARM: mach-prima2: remove mach/memory.h
    ARM: mach-zynq: remove mach/memory.h
    ARM: mach-bcmring: remove mach/memory.h
    ARM: mach-davinci: remove mach/memory.h
    ARM: mach-pxa: remove mach/memory.h
    ARM: mach-ixp4xx: remove mach/memory.h
    ARM: mach-h720x: remove mach/memory.h
    ARM: mach-vt8500: remove mach/memory.h
    ARM: mach-s5pc100: remove mach/memory.h
    ARM: mach-tegra: remove mach/memory.h
    ARM: plat-tcc: remove mach/memory.h
    ARM: mach-mmp: remove mach/memory.h
    ARM: mach-cns3xxx: remove mach/memory.h
    ...

    Fix up mostly pretty trivial conflicts in:
    - arch/arm/Kconfig
    - arch/arm/include/asm/localtimer.h
    - arch/arm/kernel/Makefile
    - arch/arm/mach-shmobile/board-ap4evb.c
    - arch/arm/mach-u300/core.c
    - arch/arm/mm/dma-mapping.c
    - arch/arm/mm/proc-v7.S
    - arch/arm/plat-omap/Kconfig
    largely due to some CONFIG option renaming (ie CONFIG_PM_SLEEP ->
    CONFIG_ARM_CPU_SUSPEND for the arm-specific suspend code etc) and
    addition of NEED_MACH_MEMORY_H next to HAVE_IDE.

    Linus Torvalds
     

27 Oct, 2011

2 commits

  • * 'clk' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm:
    ARM: 7131/1: clkdev: Add Common Macro for clk_lookup
    clk: spi-pl022: convert to clk_prepare()/clk_unprepare()
    clk: timer-sp: convert to clk_prepare()/clk_unprepare()
    clk: sa1111: convert to clk_prepare()/clk_unprepare()
    clk: mmci: convert to clk_prepare()/clk_unprepare()
    clk: amba-pl011: convert to clk_prepare()/clk_unprepare()
    clk: amba-pl010: convert to clk_prepare()/clk_unprepare()
    clk: amba-clcd: convert to clk_prepare()/clk_unprepare()
    clk: amba bus: convert to clk_prepare()/clk_unprepare()
    clk: provide prepare/unprepare functions

    Linus Torvalds
     
  • * 'gpio' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm: (43 commits)
    ARM: 7135/1: ep93xx: bring back missing
    ARM: 7104/1: plat-pxa: break out GPIO driver specifics
    ARM: 7103/1: plat-pxa: move PXA GPIO driver to GPIO subsystem
    ARM: 7042/3: mach-ep93xx: break out GPIO driver specifics
    ARM: 7101/1: arm/tegra: Replace with
    ARM: 7094/1: arm/tegra: Move EN_VDD_1V05_GPIO to board-harmony.h
    ARM: 7083/1: rewrite U300 GPIO to use gpiolib
    ARM: 7074/1: gpio: davinci: eliminate unused variable warnings
    ARM: 7063/1: Orion: gpio: add missing include of linux/types.h
    ARM: 7055/1: arm/tegra: mach/gpio.h: include linux/types.h to fix build
    ARM: 7054/1: arm/tegra: Delete custom gpio_to_irq, and irq_to_gpio
    ARM: 7053/1: gpio/tegra: Implement gpio_chip.to_irq
    ARM: 7052/1: gpio/tegra: Remove use of irq_to_gpio
    ARM: 7057/1: mach-pnx4008: rename GPIO header
    ARM: 7056/1: plat-nomadik: kill off
    ARM: 7050/1: mach-sa1100: delete irq_to_gpio() function
    ARM: 7049/1: mach-sa1100: move SA1100 GPIO driver to GPIO subsystem
    ARM: 7045/1: mach-lpc32xx: break out GPIO driver specifics
    ARM: 7044/1: mach-lpc32xx: move LPC32XX GPIO driver to GPIO subsystem
    ARM: 7043/1: mach-ixp2000: rename GPIO header
    ...

    Fix up trivial conflicts in arch/arm/mach-u300/Kconfig manually

    Linus Torvalds
     

26 Oct, 2011

1 commit

  • * 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (27 commits)
    rtmutex: Add missing rcu_read_unlock() in debug_rt_mutex_print_deadlock()
    lockdep: Comment all warnings
    lib: atomic64: Change the type of local lock to raw_spinlock_t
    locking, lib/atomic64: Annotate atomic64_lock::lock as raw
    locking, x86, iommu: Annotate qi->q_lock as raw
    locking, x86, iommu: Annotate irq_2_ir_lock as raw
    locking, x86, iommu: Annotate iommu->register_lock as raw
    locking, dma, ipu: Annotate bank_lock as raw
    locking, ARM: Annotate low level hw locks as raw
    locking, drivers/dca: Annotate dca_lock as raw
    locking, powerpc: Annotate uic->lock as raw
    locking, x86: mce: Annotate cmci_discover_lock as raw
    locking, ACPI: Annotate c3_lock as raw
    locking, oprofile: Annotate oprofilefs lock as raw
    locking, video: Annotate vga console lock as raw
    locking, latencytop: Annotate latency_lock as raw
    locking, timer_stats: Annotate table_lock as raw
    locking, rwsem: Annotate inner lock as raw
    locking, semaphores: Annotate inner lock as raw
    locking, sched: Annotate thread_group_cputimer as raw
    ...

    Fix up conflicts in kernel/posix-cpu-timers.c manually: making
    cputimer->cputime a raw lock conflicted with the ABBA fix in commit
    bcd5cff7216f ("cputimer: Cure lock inversion").

    Linus Torvalds
     

25 Oct, 2011

2 commits


23 Oct, 2011

4 commits

  • Russell King
     
  • This patch remove the hardcoded link between local timers and PPIs,
    and convert the PPI users (TWD, MCT and MSM timers) to the new
    *_percpu_irq interface. Also some collateral cleanup
    (local_timer_ack() is gone, and the interrupt handler is strictly
    private to each driver).

    PPIs are now useable for more than just the local timers.

    Additional testing by David Brown (msm8250 and msm8660) and
    Shawn Guo (imx6q).

    Cc: David Brown
    Cc: Thomas Gleixner
    Acked-by: David Brown
    Tested-by: David Brown
    Tested-by: Shawn Guo
    Signed-off-by: Marc Zyngier

    Marc Zyngier
     
  • PPI handling is a bit of an odd beast. It uses its own low level
    handling code and is hardwired to the local timers (hence lacking
    a registration interface).

    Instead, switch the low handling to the normal SPI handling code.
    PPIs are handled by the handle_percpu_devid_irq flow.

    This also allows the removal of some duplicated code.

    Cc: Kukjin Kim
    Cc: David Brown
    Cc: Bryan Huntsman
    Cc: Tony Lindgren
    Cc: Paul Mundt
    Cc: Magnus Damm
    Cc: Thomas Gleixner
    Acked-by: David Brown
    Tested-by: David Brown
    Tested-by: Shawn Guo
    Signed-off-by: Marc Zyngier

    Marc Zyngier
     
  • If two requests have been submitted and one of them is running, if you
    call pl330_chan_ctrl(ch_id, PL330_OP_START), there's a window of time
    between the spin_lock_irqsave() and the _state() check in which the
    running transaction may finish. In that case, we don't receive the
    interrupt (because they are disabled), but _start() sees that the DMA
    is stopped, so it starts it. The problem is that it sends the
    transaction that has just finished again, because pl330_update()
    hasn't mark it as done yet.

    This patch fixes this race condition by not calling _start() if the
    DMA is already executing transactions. When interrupts are reenabled,
    pl330_update() will call _start().

    Reference:

    Signed-off-by: Javi Merino
    Acked-by: Jassi Brar
    Signed-off-by: Russell King

    Javi Merino
     

17 Oct, 2011

1 commit


15 Oct, 2011

1 commit


02 Oct, 2011

1 commit


27 Sep, 2011

2 commits


23 Sep, 2011

2 commits

  • Tegra can benefit from the IRQCHIP_MASK_ON_SUSPEND flag, allow it
    to be passed to the gic irq chip.

    Signed-off-by: Colin Cross
    Signed-off-by: Santosh Shilimkar
    Reviewed-by: Kevin Hilman
    Tested-and-Acked-by: Shawn Guo
    Tested-by: Vishwanath BS

    Colin Cross
     
  • When the cpu is powered down in a low power mode, the gic cpu
    interface may be reset, and when the cpu cluster is powered
    down, the gic distributor may also be reset.

    This patch uses CPU_PM_ENTER and CPU_PM_EXIT notifiers to save
    and restore the gic cpu interface registers, and the
    CPU_CLUSTER_PM_ENTER and CPU_CLUSTER_PM_EXIT notifiers to save
    and restore the gic distributor registers.

    Original-author: Gary King
    Signed-off-by: Colin Cross
    Signed-off-by: Santosh Shilimkar
    Tested-and-Acked-by: Shawn Guo
    Tested-by: Vishwanath BS

    Colin Cross
     

13 Sep, 2011

1 commit

  • Annotate the low level hardware locks which must not be preempted.

    In mainline this change documents the low level nature of
    the lock - otherwise there's no functional difference. Lockdep
    and Sparse checking will work as usual.

    Signed-off-by: Thomas Gleixner
    Cc: Russell King
    Signed-off-by: Ingo Molnar

    Thomas Gleixner
     

08 Aug, 2011

1 commit


30 Jul, 2011

1 commit

  • * 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6:
    PCI: remove printks about disabled bridge windows
    PCI: fold pci_calc_resource_flags() into decode_bar()
    PCI: treat mem BAR type "11" (reserved) as 32-bit, not 64-bit, BAR
    PCI: correct pcie_set_readrq write size
    PCI: pciehp: change wait time for valid configuration access
    x86/PCI: Preserve existing pci=bfsort whitelist for Dell systems
    PCI: ARI is a PCIe v2 feature
    x86/PCI: quirks: Use pci_dev->revision
    PCI: Make the struct pci_dev * argument of pci_fixup_irqs const.
    PCI hotplug: cpqphp: use pci_dev->vendor
    PCI hotplug: cpqphp: use pci_dev->subsystem_{vendor|device}
    x86/PCI: config space accessor functions should not ignore the segment argument
    PCI: Assign values to 'pci_obff_signal_type' enumeration constants
    x86/PCI: reduce severity of host bridge window conflict warnings
    PCI: enumerate the PCI device only removed out PCI hieratchy of OS when re-scanning PCI
    PCI: PCIe AER: add aer_recover_queue
    x86/PCI: select direct access mode for mmconfig option
    PCI hotplug: Rename is_ejectable which also exists in dock.c

    Linus Torvalds
     

27 Jul, 2011

1 commit

  • * 'next/devel' of ssh://master.kernel.org/pub/scm/linux/kernel/git/arm/linux-arm-soc: (128 commits)
    ARM: S5P64X0: External Interrupt Support
    ARM: EXYNOS4: Enable MFC on Samsung NURI
    ARM: EXYNOS4: Enable MFC on universal_c210
    ARM: S5PV210: Enable MFC on Goni
    ARM: S5P: Add support for MFC device
    ARM: EXYNOS4: Add support FIMD on SMDKC210
    ARM: EXYNOS4: Add platform device and helper functions for FIMD
    ARM: EXYNOS4: Add resource definition for FIMD
    ARM: EXYNOS4: Change devname for FIMD clkdev
    ARM: SAMSUNG: Add IRQ_I2S0 definition
    ARM: SAMSUNG: Add platform device for idma
    ARM: EXYNOS4: Add more registers to be saved and restored for PM
    ARM: EXYNOS4: Add more register addresses of CMU
    ARM: EXYNOS4: Add platform device for dwmci driver
    ARM: EXYNOS4: configure rtc-s3c on NURI
    ARM: EXYNOS4: configure MAX8903 secondary charger on NURI
    ARM: EXYNOS4: configure ADC on NURI
    ARM: EXYNOS4: configure MAX17042 fuel gauge on NURI
    ARM: EXYNOS4: configure regulators and PMIC(MAX8997) on NURI
    ARM: EXYNOS4: Increase NR_IRQS for devices with more IRQs
    ...

    Fix up tons of silly conflicts:
    - arch/arm/mach-davinci/include/mach/psc.h
    - arch/arm/mach-exynos4/Kconfig
    - arch/arm/mach-exynos4/mach-smdkc210.c
    - arch/arm/mach-exynos4/pm.c
    - arch/arm/mach-imx/mm-imx1.c
    - arch/arm/mach-imx/mm-imx21.c
    - arch/arm/mach-imx/mm-imx25.c
    - arch/arm/mach-imx/mm-imx27.c
    - arch/arm/mach-imx/mm-imx31.c
    - arch/arm/mach-imx/mm-imx35.c
    - arch/arm/mach-mx5/mm.c
    - arch/arm/mach-s5pv210/mach-goni.c
    - arch/arm/mm/Kconfig

    Linus Torvalds
     

26 Jul, 2011

1 commit

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (43 commits)
    fs: Merge split strings
    treewide: fix potentially dangerous trailing ';' in #defined values/expressions
    uwb: Fix misspelling of neighbourhood in comment
    net, netfilter: Remove redundant goto in ebt_ulog_packet
    trivial: don't touch files that are removed in the staging tree
    lib/vsprintf: replace link to Draft by final RFC number
    doc: Kconfig: `to be' -> `be'
    doc: Kconfig: Typo: square -> squared
    doc: Konfig: Documentation/power/{pm => apm-acpi}.txt
    drivers/net: static should be at beginning of declaration
    drivers/media: static should be at beginning of declaration
    drivers/i2c: static should be at beginning of declaration
    XTENSA: static should be at beginning of declaration
    SH: static should be at beginning of declaration
    MIPS: static should be at beginning of declaration
    ARM: static should be at beginning of declaration
    rcu: treewide: Do not use rcu_read_lock_held when calling rcu_dereference_check
    Update my e-mail address
    PCIe ASPM: forcedly -> forcibly
    gma500: push through device driver tree
    ...

    Fix up trivial conflicts:
    - arch/arm/mach-ep93xx/dma-m2p.c (deleted)
    - drivers/gpio/gpio-ep93xx.c (renamed and context nearby)
    - drivers/net/r8169.c (just context changes)

    Linus Torvalds
     

23 Jul, 2011

1 commit


22 Jul, 2011

1 commit

  • Aside of the usual motivation for constification, this function has a
    history of being abused a hook for interrupt and other fixups so I turned
    this function const ages ago in the MIPS code but it should be done
    treewide.

    Due to function pointer passing in varous places a few other functions
    had to be constified as well.

    Signed-off-by: Ralf Baechle
    To: Anton Vorontsov
    To: Chris Metcalf
    To: Colin Cross
    Acked-by: "David S. Miller"
    To: Eric Miao
    To: Erik Gilling
    Acked-by: Guan Xuetao
    To: "H. Peter Anvin"
    To: Imre Kaloz
    To: Ingo Molnar
    To: Ivan Kokshaysky
    To: Jesse Barnes
    To: Krzysztof Halasa
    To: Lennert Buytenhek
    To: Matt Turner
    To: Nicolas Pitre
    To: Olof Johansson
    Acked-by: Paul Mundt
    To: Richard Henderson
    To: Russell King
    To: Thomas Gleixner
    Cc: Andrew Morton
    Cc: linux-alpha@vger.kernel.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-mips@linux-mips.org
    Cc: linux-pci@vger.kernel.org
    Cc: linux-sh@vger.kernel.org
    Cc: linux-tegra@vger.kernel.org
    Cc: sparclinux@vger.kernel.org
    Cc: x86@kernel.org
    Signed-off-by: Jesse Barnes

    Ralf Baechle
     

21 Jul, 2011

2 commits

  • The irq_set_affinity() method can be called with masks which include
    offline CPUs. This allows offline CPUs to have interrupts routed to
    them by writing to /proc/irq/*/smp_affinity after hotplug has taken
    a CPU offline. Fix this by ensuring that we select a target CPU
    present in both the required affinity and the online CPU mask.

    Ensure that we return IRQ_SET_MASK_OK (which happens to be 0) on
    success to ensure generic code copies the new mask into the irq_data
    structure.

    Signed-off-by: Russell King

    Russell King
     
  • irqdesc's node member is supposed to mark the numa node number for the
    interrupt. Our use of it is non-standard. Remove this, replacing the
    functionality with a test of the affinity mask.

    Signed-off-by: Russell King

    Russell King
     

20 Jul, 2011

1 commit