04 Mar, 2013

7 commits

  • Pull Xen bug-fixes from Konrad Rzeszutek Wilk:
    - Update the Xen ACPI memory and CPU hotplug locking mechanism.
    - Fix PAT issues wherein various applications would not start
    - Fix handling of multiple MSI as AHCI now does it.
    - Fix ARM compile failures.

    * tag 'stable/for-linus-3.9-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
    xenbus: fix compile failure on ARM with Xen enabled
    xen/pci: We don't do multiple MSI's.
    xen/pat: Disable PAT using pat_enabled value.
    xen/acpi: xen cpu hotplug minor updates
    xen/acpi: xen memory hotplug minor updates

    Linus Torvalds
     
  • Pull more VFS bits from Al Viro:
    "Unfortunately, it looks like xattr series will have to wait until the
    next cycle ;-/

    This pile contains 9p cleanups and fixes (races in v9fs_fid_add()
    etc), fixup for nommu breakage in shmem.c, several cleanups and a bit
    more file_inode() work"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    constify path_get/path_put and fs_struct.c stuff
    fix nommu breakage in shmem.c
    cache the value of file_inode() in struct file
    9p: if v9fs_fid_lookup() gets to asking server, it'd better have hashed dentry
    9p: make sure ->lookup() adds fid to the right dentry
    9p: untangle ->lookup() a bit
    9p: double iput() in ->lookup() if d_materialise_unique() fails
    9p: v9fs_fid_add() can't fail now
    v9fs: get rid of v9fs_dentry
    9p: turn fid->dlist into hlist
    9p: don't bother with private lock in ->d_fsdata; dentry->d_lock will do just fine
    more file_inode() open-coded instances
    selinux: opened file can't have NULL or negative ->f_path.dentry

    (In the meantime, the hlist traversal macros have changed, so this
    required a semantic conflict fixup for the newly hlistified fid->dlist)

    Linus Torvalds
     
  • Pull second set of s390 patches from Martin Schwidefsky:
    "The main part of this merge are Heikos uaccess patches. Together with
    commit 09884964335e ("mm: do not grow the stack vma just because of an
    overrun on preceding vma") the user string access is hopefully fixed
    for good.

    In addition some bug fixes and two cleanup patches."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
    s390/module: fix compile warning
    qdio: remove unused parameters
    s390/uaccess: fix kernel ds access for page table walk
    s390/uaccess: fix strncpy_from_user string length check
    input: disable i8042 PC Keyboard controller for s390
    s390/dis: Fix invalid array size
    s390/uaccess: remove pointless access_ok() checks
    s390/uaccess: fix strncpy_from_user/strnlen_user zero maxlen case
    s390/uaccess: shorten strncpy_from_user/strnlen_user
    s390/dasd: fix unresponsive device after all channel paths were lost
    s390/mm: ignore change bit for vmemmap
    s390/page table dumper: add support for change-recording override bit

    Linus Torvalds
     
  • …/git/deller/parisc-linux

    Pull second round of PARISC updates from Helge Deller:
    "The most important fix in this branch is the switch of io_setup,
    io_getevents and io_submit syscalls to use the available compat
    syscalls when running 32bit userspace on 64bit kernel. Other than
    that it's mostly removal of compile warnings."

    * 'fixes-for-3.9-latest' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
    parisc: fix redefinition of SET_PERSONALITY
    parisc: do not install modules when installing kernel
    parisc: fix compile warnings triggered by atomic_sub(sizeof(),v)
    parisc: check return value of down_interruptible() in hp_sdc_rtc.c
    parisc: avoid unitialized variable warning in pa_memcpy()
    parisc: remove unused variable 'compat_val'
    parisc: switch to compat_functions of io_setup, io_getevents and io_submit
    parisc: select ARCH_WANT_FRAME_POINTERS

    Linus Torvalds
     
  • Pull new ImgTec Meta architecture from James Hogan:
    "This adds core architecture support for Imagination's Meta processor
    cores, followed by some later miscellaneous arch/metag cleanups and
    fixes which I kept separate to ease review:

    - Support for basic Meta 1 (ATP) and Meta 2 (HTP) core architecture
    - A few fixes all over, particularly for symbol prefixes
    - A few privilege protection fixes
    - Several cleanups (setup.c includes, split out a lot of
    metag_ksyms.c)
    - Fix some missing exports
    - Convert hugetlb to use vm_unmapped_area()
    - Copy device tree to non-init memory
    - Provide dma_get_sgtable()"

    * tag 'metag-v3.9-rc1-v4' of git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/metag: (61 commits)
    metag: Provide dma_get_sgtable()
    metag: prom.h: remove declaration of metag_dt_memblock_reserve()
    metag: copy devicetree to non-init memory
    metag: cleanup metag_ksyms.c includes
    metag: move mm/init.c exports out of metag_ksyms.c
    metag: move usercopy.c exports out of metag_ksyms.c
    metag: move setup.c exports out of metag_ksyms.c
    metag: move kick.c exports out of metag_ksyms.c
    metag: move traps.c exports out of metag_ksyms.c
    metag: move irq enable out of irqflags.h on SMP
    genksyms: fix metag symbol prefix on crc symbols
    metag: hugetlb: convert to vm_unmapped_area()
    metag: export clear_page and copy_page
    metag: export metag_code_cache_flush_all
    metag: protect more non-MMU memory regions
    metag: make TXPRIVEXT bits explicit
    metag: kernel/setup.c: sort includes
    perf: Enable building perf tools for Meta
    metag: add boot time LNKGET/LNKSET check
    metag: add __init to metag_cache_probe()
    ...

    Linus Torvalds
     
  • Pull late ARM updates from Russell King:
    "Here is the late set of ARM updates for this merge window; in here is:

    - The ARM parts of the broadcast timer support, core parts merged
    through tglx's tree. This was left over from the previous merge to
    allow the dependency on tglx's tree to be resolved.

    - A fix to the VFP code which shows up on Raspberry Pi's, as well as
    fixing the fallout from a previous commit in this area.

    - A number of smaller fixes scattered throughout the ARM tree"

    * 'for-linus' of git://git.linaro.org/people/rmk/linux-arm:
    ARM: Fix broken commit 0cc41e4a21d43 corrupting kernel messages
    ARM: fix scheduling while atomic warning in alignment handling code
    ARM: VFP: fix emulation of second VFP instruction
    ARM: 7656/1: uImage: Error out on build of multiplatform without LOADADDR
    ARM: 7640/1: memory: tegra_ahb_enable_smmu() depends on TEGRA_IOMMU_SMMU
    ARM: 7654/1: Preserve L_PTE_VALID in pte_modify()
    ARM: 7653/2: do not scale loops_per_jiffy when using a constant delay clock
    ARM: 7651/1: remove unused smp_timer_broadcast #define

    Linus Torvalds
     
  • Pull watchdog updates from Wim Van Sebroeck:
    "This contains:
    - fixes and improvements
    - devicetree bindings
    - conversion to watchdog generic framework of the following drivers:
    - booke_wdt
    - bcm47xx_wdt.c
    - at91sam9_wdt
    - Removal of old STMP3xxx driver
    - Addition of following new drivers:
    - new driver for STMP3xxx and i.MX23/28
    - Retu watchdog driver"

    * git://www.linux-watchdog.org/linux-watchdog: (30 commits)
    watchdog: sp805_wdt depends on ARM
    watchdog: davinci_wdt: update to devm_* API
    watchdog: davinci_wdt: use devm managed clk get
    watchdog: at91rm9200: add DT support
    watchdog: add timeout-sec property binding
    watchdog: at91sam9_wdt: Convert to use the watchdog framework
    watchdog: omap_wdt: Add option nowayout
    watchdog: core: dt: add support for the timeout-sec dt property
    watchdog: bcm47xx_wdt.c: add hard timer
    watchdog: bcm47xx_wdt.c: rename wdt_time to timeout
    watchdog: bcm47xx_wdt.c: rename ops methods
    watchdog: bcm47xx_wdt.c: use platform device
    watchdog: bcm47xx_wdt.c: convert to watchdog core api
    watchdog: Convert BookE watchdog driver to watchdog infrastructure
    watchdog: s3c2410_wdt: Use devm_* functions
    watchdog: remove old STMP3xxx driver
    watchdog: add new driver for STMP3xxx and i.MX23/28
    rtc: stmp3xxx: add wdt-accessor function
    watchdog: introduce retu_wdt driver
    watchdog: intel_scu_watchdog: fix Kconfig dependency
    ...

    Linus Torvalds
     

03 Mar, 2013

33 commits

  • Russell King
     
  • metag/allmodconfig:

    drivers/media/v4l2-core/videobuf2-dma-contig.c: In function 'vb2_dc_get_base_sgt':
    drivers/media/v4l2-core/videobuf2-dma-contig.c:387: error: implicit declaration of function 'dma_get_sgtable'

    For architectures using dma_map_ops, dma_get_sgtable() is provided in
    .

    Metag does not use dma_map_ops yet, hence it should implement it as an
    inline stub using dma_common_get_sgtable().

    Signed-off-by: James Hogan
    Cc: Geert Uytterhoeven
    Acked-by: Marek Szyprowski

    James Hogan
     
  • Metag doesn't have a metag_dt_memblock_reserve() function so remove the
    declaration from asm/prom.h.

    Signed-off-by: James Hogan

    James Hogan
     
  • Make a copy of the device tree blob in non-init memory. It is required
    when using built-in device tree files that the platform code copies the
    blob to non-init memory prior to calling unflatten_device_tree(),
    otherwise the strings that the device tree refer to will get poisoned
    and potentially reused, breaking later reading of the device tree
    post-init (such as compatible matching in modules, debugfs, and the
    procfs interface).

    Signed-off-by: James Hogan
    Reviewed-by: Vineet Gupta

    James Hogan
     
  • Minimise metag_ksyms.c includes to directly include the files
    that declare a particular symbol, and not include any unnecessary ones.

    Signed-off-by: James Hogan

    James Hogan
     
  • It's less error prone to have function symbols exported immediately
    after the function rather than in metag_ksyms.c. Move each EXPORT_SYMBOL
    in metag_ksyms.c for symbols defined in mm/init.c into mm/init.c.

    Signed-off-by: James Hogan

    James Hogan
     
  • It's less error prone to have function symbols exported immediately
    after the function rather than in metag_ksyms.c. Move each EXPORT_SYMBOL
    in metag_ksyms.c for symbols defined in usercopy.c into usercopy.c

    Signed-off-by: James Hogan

    James Hogan
     
  • It's less error prone to have function symbols exported immediately
    after the function rather than in metag_ksyms.c. Move each EXPORT_SYMBOL
    in metag_ksyms.c for symbols defined in setup.c into setup.c

    Signed-off-by: James Hogan

    James Hogan
     
  • It's less error prone to have function symbols exported immediately
    after the function rather than in metag_ksyms.c. Move each EXPORT_SYMBOL
    in metag_ksyms.c for symbols defined in kick.c into kick.c

    Signed-off-by: James Hogan

    James Hogan
     
  • It's less error prone to have function symbols exported immediately
    after the function rather than in metag_ksyms.c. Move each EXPORT_SYMBOL
    in metag_ksyms.c for symbols defined in traps.c into traps.c

    Signed-off-by: James Hogan

    James Hogan
     
  • The SMP version of arch_local_irq_enable() uses preempt_disable(), but
    doesn't include causing the following
    errors on SMP when pstore/ftrace is enabled (caught by buildbot smp
    allyesconfig):

    In file included from include/linux/irqflags.h:15,
    from fs/pstore/ftrace.c:16:
    arch/metag/include/asm/irqflags.h: In function 'arch_local_irq_enable':
    arch/metag/include/asm/irqflags.h:84: error: implicit declaration of function 'preempt_disable'
    arch/metag/include/asm/irqflags.h:86: error: implicit declaration of function 'preempt_enable_no_resched'

    However cannot be easily included from
    as it can cause circular include dependencies in the
    !SMP case, and potentially in the SMP case in the future. Therefore move
    the SMP implementation of arch_local_irq_enable() into traps.c and use
    an inline version of get_trigger_mask() which is also defined in traps.c
    for SMP.

    This adds an extra layer of function call / stack push when
    preempt_disable needs to call other functions, however in the
    non-preemptive SMP case it should be about as fast, as it was already
    calling the get_trigger_mask() function which is now used inline.

    Signed-off-by: James Hogan

    James Hogan
     
  • Convert hugetlb_get_unmapped_area_new_pmd() to use vm_unmapped_area()
    rather than searching the virtual address space itself. This fixes the
    following errors in linux-next due to the specified members being
    removed after other architectures have already been converted:

    arch/metag/mm/hugetlbpage.c: In function 'hugetlb_get_unmapped_area_new_pmd':
    arch/metag/mm/hugetlbpage.c:199: error: 'struct mm_struct' has no member named 'cached_hole_size'
    arch/metag/mm/hugetlbpage.c:200: error: 'struct mm_struct' has no member named 'free_area_cache'
    arch/metag/mm/hugetlbpage.c:215: error: 'struct mm_struct' has no member named 'cached_hole_size'

    Signed-off-by: James Hogan
    Acked-by: Michel Lespinasse

    James Hogan
     
  • Various file systems use clear_page() and copy_page(), so when they're
    built as modules we get build errors like the following:

    ERROR: "clear_page" [fs/ntfs/ntfs.ko] undefined!
    ERROR: "copy_page" [fs/nilfs2/nilfs2.ko] undefined!

    Therefore export these functions to modules from metag_ksyms.c to fix
    the errors. This was hit by a randconfig build.

    Signed-off-by: James Hogan

    James Hogan
     
  • Various file systems indirectly use metag_code_cache_flush_all(), so
    when they're built as modules we get build errors like the following:

    ERROR: "metag_code_cache_flush_all" [fs/xfs/xfs.ko] undefined!

    Therefore export this function to modules to fix the errors. This was
    hit by a randconfig build.

    Signed-off-by: James Hogan

    James Hogan
     
  • Rename setup_txprivext() to setup_priv() and add initialisation of some
    more per-thread privilege protection registers:

    - TxPRIVSYSR: 0x04400000-0x047fffff
    0x05000000-0x07ffffff
    0x84000000-0x87ffffff
    - TxPIOREG: 0x02000000-0x02ffffff
    0x04800000-0x048fffff
    - TxSYREG: 0x04000000-0x04000fff (except write fetch system event)

    Signed-off-by: James Hogan

    James Hogan
     
  • Define PRIV_BITS using explicit constants from rather
    than with a hard coded value. This also adds a couple of missing
    definitions for the TXPRIVEXT priv bits for protecting writes to TXTIMER
    and the trace registers.

    Signed-off-by: James Hogan

    James Hogan
     
  • Sort includes in kernel/setup.c.

    Signed-off-by: James Hogan

    James Hogan
     
  • Add boot time check for whether LNKGET/LNKSET go through or around the
    cache. Depending on the configuration an info message (no harm), warning
    (technically wrong but no harm), or big WARN (expect failure in either
    kernel or userland) may be emitted if the behaviour is not as expected:

    Configuration Hardware Response
    ------------------------------------------ -------- --------
    AROUND_CACHE through pr_info
    !AROUND_CACHE && ATOMICITY_LNKGET around WARN (kernel)
    " && !ATOMICITY_LNKGET && SMP around WARN (user)
    " " && !SMP around pr_warn

    Signed-off-by: James Hogan

    James Hogan
     
  • metag_cache_probe() is only called from setup_arch(), so add the __init
    attribute to it.

    Signed-off-by: James Hogan

    James Hogan
     
  • Add basic JTAG Debug Adapter (DA) support so that drivers which
    communicate with the DA can detect whether one is actually present
    (otherwise the target will halt indefinitely).

    This allows the metag_da TTY driver and imgdafs filesystem driver to be
    built, updates defconfigs, and sets up the metag_da console early if
    it's configured in.

    Signed-off-by: James Hogan

    James Hogan
     
  • Add ftrace support for metag.

    Signed-off-by: James Hogan
    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Reviewed-by: Steven Rostedt

    James Hogan
     
  • Add Perf support for metag.

    Signed-off-by: James Hogan
    Cc: Peter Zijlstra
    Cc: Paul Mackerras
    Cc: Ingo Molnar
    Cc: Arnaldo Carvalho de Melo

    James Hogan
     
  • Add metag build infrastructure.

    Signed-off-by: James Hogan

    James Hogan
     
  • Add the remaining metag header files:
    - byteorder.h, swab.h (byte order and swapping)
    - barrier.h, cpu.h. hwthread.h, processor.h (hardware thread related)
    - bug.h, elf.h, gpio.h, linkage.h, resource.h (other)

    Signed-off-by: James Hogan

    James Hogan
     
  • Add stack unwinding support for metag.

    Signed-off-by: James Hogan

    James Hogan
     
  • Add optimised library functions for metag.

    Signed-off-by: James Hogan

    James Hogan
     
  • Add DMA mapping code.

    Signed-off-by: James Hogan

    James Hogan
     
  • Add SMP support for metag. This allows Linux to take control of multiple
    hardware threads on a single Meta core, treating them as separate Linux
    CPUs.

    Signed-off-by: James Hogan

    James Hogan
     
  • Add header files to implement Meta hardware thread locks (used by some
    other atomic operations), atomics, spinlocks, and bitops.

    There are 2 main types of atomic primitives for metag (in addition to
    IRQs off on UP):
    - LOCK instructions provide locking between hardware threads.
    - LNKGET/LNKSET instructions provide load-linked/store-conditional
    operations allowing for lighter weight atomics on Meta2

    LOCK instructions allow for hardware threads to acquire voluntary or
    exclusive hardware thread locks:
    - LOCK0 releases exclusive and voluntary lock from the running hardware
    thread.
    - LOCK1 acquires the voluntary hardware lock, blocking until it becomes
    available.
    - LOCK2 implies LOCK1, and additionally acquires the exclusive hardware
    lock, blocking all other hardware threads from executing.

    Signed-off-by: James Hogan

    James Hogan
     
  • Signed-off-by: James Hogan

    James Hogan
     
  • Signed-off-by: James Hogan

    James Hogan
     
  • Add metag system call and gateway page interfaces. The metag
    architecture port uses the generic system call numbers from
    asm-generic/unistd.h, as well as a user gateway page mapped at
    0x6ffff000 which contains fast atomic primitives (depending on SMP) and
    a fast method of accessing TLS data.

    System calls use the SWITCH instruction with the immediate 0x440001 to
    signal a system call.

    Signed-off-by: James Hogan

    James Hogan
     
  • Meta core internal interrupts (from HWSTATMETA and friends) are vectored
    onto the TR1 core trigger for the current thread. This is demultiplexed
    in irq-metag.c to individual Linux IRQs for each internal interrupt.

    External SoC interrupts (from HWSTATEXT and friends) are vectored onto
    the TR2 core trigger for the current thread. This is demultiplexed in
    irq-metag-ext.c to individual Linux IRQs for each external SoC interrupt.
    The external irqchip has devicetree bindings for configuring the number
    of irq banks and the type of masking available.

    Signed-off-by: James Hogan
    Cc: Arnd Bergmann
    Cc: Grant Likely
    Cc: Rob Herring
    Cc: Rob Landley
    Cc: Dom Cobley
    Cc: Simon Arlott
    Cc: Viresh Kumar
    Cc: Maxime Ripard
    Cc: devicetree-discuss@lists.ozlabs.org
    Cc: linux-doc@vger.kernel.org

    James Hogan