12 Jan, 2012

1 commit

  • * 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci: (80 commits)
    x86/PCI: Expand the x86_msi_ops to have a restore MSIs.
    PCI: Increase resource array mask bit size in pcim_iomap_regions()
    PCI: DEVICE_COUNT_RESOURCE should be equal to PCI_NUM_RESOURCES
    PCI: pci_ids: add device ids for STA2X11 device (aka ConneXT)
    PNP: work around Dell 1536/1546 BIOS MMCONFIG bug that breaks USB
    x86/PCI: amd: factor out MMCONFIG discovery
    PCI: Enable ATS at the device state restore
    PCI: msi: fix imbalanced refcount of msi irq sysfs objects
    PCI: kconfig: English typo in pci/pcie/Kconfig
    PCI/PM/Runtime: make PCI traces quieter
    PCI: remove pci_create_bus()
    xtensa/PCI: convert to pci_scan_root_bus() for correct root bus resources
    x86/PCI: convert to pci_create_root_bus() and pci_scan_root_bus()
    x86/PCI: use pci_scan_bus() instead of pci_scan_bus_parented()
    x86/PCI: read Broadcom CNB20LE host bridge info before PCI scan
    sparc32, leon/PCI: convert to pci_scan_root_bus() for correct root bus resources
    sparc/PCI: convert to pci_create_root_bus()
    sh/PCI: convert to pci_scan_root_bus() for correct root bus resources
    powerpc/PCI: convert to pci_create_root_bus()
    powerpc/PCI: split PHB part out of pcibios_map_io_space()
    ...

    Fix up conflicts in drivers/pci/msi.c and include/linux/pci_regs.h due
    to the same patches being applied in other branches.

    Linus Torvalds
     

07 Jan, 2012

2 commits

  • Convert from pci_scan_bus() to pci_scan_root_bus() and remove root bus
    resource fixups. This fixes the problem of "early" and "header" quirks
    seeing incorrect root bus resources.

    CC: Russell King
    Signed-off-by: Bjorn Helgaas
    Signed-off-by: Jesse Barnes

    Bjorn Helgaas
     
  • This patch converts ARM's architecture-specific inlined
    'pcibios_set_master()' routine to a non-inlined function. This will
    allow follow on patches to create a generic 'pcibios_set_master()'
    function using the '__weak' attribute which can be used by all
    architectures as a default which, if necessary, can then be over-
    ridden by architecture-specific code.

    Converting 'pci_bios_set_master()' to a non-inlined function will allow
    ARM's 'pcibios_set_master()' implementation to remain architecture-
    specific after the generic version is introduced and thus, not change
    current behavior.

    Note that ARM also has a non-inlined 'pcibios_set_master()' that is
    used if CONFIG_PCI_HOST_ITE8152 is defined. This patch does not
    change any behavior here either.

    No functional change.

    Signed-off-by: Myron Stowe
    Signed-off-by: Jesse Barnes

    Myron Stowe
     

05 Jan, 2012

2 commits


03 Jan, 2012

2 commits

  • Now that irq_domain_simple_ops are available for non-DT users, use them
    in the VIC driver so that we don't get a NULL dereference in
    irq_domain_to_irq() when registering the domain.

    Cc: Linus Walleij
    Signed-off-by: Jamie Iles
    Signed-off-by: Russell King

    Jamie Iles
     
  • When a request has finished successfully and we are about to call its
    callback, remove its pointer from the corresponding pl330_thread .
    This prevents the core driver from calling its callback again if
    pl330_release_channel() is called without first flushing the device.
    When pl330_update() returns, the driver is allowed to free the pointer
    to pl330_req so the core driver shouldn't be able to access it again.

    Reference:

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

    Javi Merino
     

24 Dec, 2011

2 commits

  • 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
     
  • This removes the hardcoded shift value and lets the clockevent core
    come up with suitable mult and div factors. Tested on the
    Integrator/CP.

    Signed-off-by: Linus Walleij
    Signed-off-by: Russell King

    Linus Walleij
     

11 Dec, 2011

1 commit


06 Dec, 2011

1 commit


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
     

16 Nov, 2011

6 commits

  • Now that all platforms are converted to MULTI_IRQ_HANDLER, remove the
    legacy support.

    Tested-by: Thomas Abraham
    Signed-off-by: Jamie Iles

    Jamie Iles
     
  • Add a handler for the VIC that is suitable for MULTI_IRQ_HANDLER
    platforms. This can replace the ASM entry macros for platforms that use
    the VIC.

    v4: - rebase ontop of move __exception and friends to
    asm/exception.h
    - rework polling loop to handle as many irqs as possible in one go
    v3: - simplify irq handling loop as suggested by Grant
    - service interrupts from msb->lsb order
    v2: - allow the handler be used for !CONFIG_OF
    - use irq_domain_to_irq()

    Cc: Rob Herring
    Acked-by: Grant Likely
    Acked-by: Linus Walleij
    Tested-by: Thomas Abraham
    Signed-off-by: Jamie Iles

    Jamie Iles
     
  • This adds a device tree binding for the VIC based on the of_irq_init()
    support. This adds an irqdomain to the vic and always registers all
    vics in the static vic array rather than for pm only to keep track of
    the irq domain. struct irq_data::hwirq is used where appropriate rather
    than runtime masking.

    v3: - include linux/export.h for THIS_MODULE
    v2: - use irq_domain_simple_ops
    - remove stub implementation of vic_of_init for !CONFIG_OF
    - Make VIC select IRQ_DOMAIN

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

    Jamie Iles
     
  • Now that MULTI_IRQ_HANDLER is selected by all the in-tree
    GIC users, make it mandatory and remove the unused macros.

    Signed-off-by: Marc Zyngier

    Marc Zyngier
     
  • Provide the GIC code with a low level handler that can be used
    by platforms using CONFIG_MULTI_IRQ_HANDLER.

    Signed-off-by: Marc Zyngier

    Marc Zyngier
     
  • The GIC support code is heavily using the fact that hardware
    implementations are exposing banked registers. Unfortunately, it
    looks like at least one GIC implementation (EXYNOS) offers both
    the distributor and the CPU interfaces at different addresses,
    depending on the CPU.

    This problem is solved by allowing the distributor and CPU interface
    addresses to be per-cpu variables for the platforms that require it.
    The EXYNOS code is updated not to mess with the GIC internals while
    handling interrupts, and struct gic_chip_data is back to being private.
    The DT binding for the gic is updated to allow an optional "cpu-offset"
    value, which is used to compute the various base addresses.

    Finally, a new config option (GIC_NON_BANKED) is used to control this
    feature, so the overhead is only present on kernels compiled with
    support for EXYNOS.

    Tested on Origen (EXYNOS4) and Panda (OMAP4).

    Cc: Kukjin Kim
    Cc: Will Deacon
    Cc: Thomas Abraham
    Acked-by: Rob Herring
    Signed-off-by: Marc Zyngier

    Marc Zyngier
     

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