11 Jan, 2012

1 commit

  • lib: use generic pci_iomap on all architectures

    Many architectures don't want to pull in iomap.c,
    so they ended up duplicating pci_iomap from that file.
    That function isn't trivial, and we are going to modify it
    https://lkml.org/lkml/2011/11/14/183
    so the duplication hurts.

    This reduces the scope of the problem significantly,
    by moving pci_iomap to a separate file and
    referencing that from all architectures.

    * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
    alpha: drop pci_iomap/pci_iounmap from pci-noop.c
    mn10300: switch to GENERIC_PCI_IOMAP
    mn10300: add missing __iomap markers
    frv: switch to GENERIC_PCI_IOMAP
    tile: switch to GENERIC_PCI_IOMAP
    tile: don't panic on iomap
    sparc: switch to GENERIC_PCI_IOMAP
    sh: switch to GENERIC_PCI_IOMAP
    powerpc: switch to GENERIC_PCI_IOMAP
    parisc: switch to GENERIC_PCI_IOMAP
    mips: switch to GENERIC_PCI_IOMAP
    microblaze: switch to GENERIC_PCI_IOMAP
    arm: switch to GENERIC_PCI_IOMAP
    alpha: switch to GENERIC_PCI_IOMAP
    lib: add GENERIC_PCI_IOMAP
    lib: move GENERIC_IOMAP to lib/Kconfig

    Fix up trivial conflicts due to changes nearby in arch/{m68k,score}/Kconfig

    Linus Torvalds
     

10 Jan, 2012

1 commit


30 Dec, 2011

1 commit

  • While chasing following warning from kconfig I noticed that the
    kconfig preemption model symbols were all dependent on sparc64.

    warning: (PREEMPT && DEBUG_ATOMIC_SLEEP) selects PREEMPT_COUNT which has unmet direct dependencies (SPARC64)

    >From arch/sparc/Kconfig:

    if SPARC64
    source "kernel/Kconfig.preempt"
    endif

    But looking a bit closer I see nothing obvious why
    sparc32 should not support the various preemption models.
    Drop the "if SPARC64" conditional to enable selection of
    preemption model on sparc32 too.

    Build-tested - but not run-time tested all three models.

    Signed-off-by: Sam Ravnborg
    Signed-off-by: David S. Miller

    Sam Ravnborg
     

28 Dec, 2011

1 commit

  • There is no-one that really require atomic64_t support on sparc32.
    But several drivers fails to build without proper atomic64 support.
    And for an allyesconfig build for sparc32 this is annoying.

    Include the generic atomic64_t support for sparc32.
    This has a text footprint cost:

    $size vmlinux (before atomic64_t support)
    text data bss dec hex filename
    3578860 134260 108781 3821901 3a514d vmlinux

    $size vmlinux (after atomic64_t support)
    text data bss dec hex filename
    3579892 130684 108781 3819357 3a475d vmlinux

    text increase (3579892 - 3578860) = 1032 bytes

    data decreases - but I fail to explain why!
    I have rebuild twice to check my numbers.

    Signed-off-by: Sam Ravnborg
    Signed-off-by: David S. Miller

    Sam Ravnborg
     

09 Dec, 2011

2 commits

  • Now all ARCH_POPULATES_NODE_MAP archs select HAVE_MEBLOCK_NODE_MAP -
    there's no user of early_node_map[] left. Kill early_node_map[] and
    replace ARCH_POPULATES_NODE_MAP with HAVE_MEMBLOCK_NODE_MAP. Also,
    relocate for_each_mem_pfn_range() and helper from mm.h to memblock.h
    as page_alloc.c would no longer host an alternative implementation.

    This change is ultimately one to one mapping and shouldn't cause any
    observable difference; however, after the recent changes, there are
    some functions which now would fit memblock.c better than page_alloc.c
    and dependency on HAVE_MEMBLOCK_NODE_MAP instead of HAVE_MEMBLOCK
    doesn't make much sense on some of them. Further cleanups for
    functions inside HAVE_MEMBLOCK_NODE_MAP in mm.h would be nice.

    -v2: Fix compile bug introduced by mis-spelling
    CONFIG_HAVE_MEMBLOCK_NODE_MAP to CONFIG_MEMBLOCK_HAVE_NODE_MAP in
    mmzone.h. Reported by Stephen Rothwell.

    Signed-off-by: Tejun Heo
    Cc: Stephen Rothwell
    Cc: Benjamin Herrenschmidt
    Cc: Yinghai Lu
    Cc: Tony Luck
    Cc: Ralf Baechle
    Cc: Martin Schwidefsky
    Cc: Chen Liqin
    Cc: Paul Mundt
    Cc: "David S. Miller"
    Cc: "H. Peter Anvin"

    Tejun Heo
     
  • sparc doesn't access early_node_map[] directly and enabling
    HAVE_MEMBLOCK_NODE_MAP is trivial - replacing add_active_range() calls
    with memblock_set_node() and selecting HAVE_MEMBLOCK_NODE_MAP is
    enough.

    -v2: Use select in Kconfig instead as suggested by Sam Ravnborg.

    Signed-off-by: Tejun Heo
    Acked-by: "David S. Miller"
    Cc: Sam Ravnborg
    Cc: sparclinux@vger.kernel.org

    Tejun Heo
     

04 Dec, 2011

1 commit


07 Nov, 2011

1 commit

  • * 'trivial' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
    scsi: drop unused Kconfig symbol
    pci: drop unused Kconfig symbol
    stmmac: drop unused Kconfig symbol
    x86: drop unused Kconfig symbol
    powerpc: drop unused Kconfig symbols
    powerpc: 40x: drop unused Kconfig symbol
    mips: drop unused Kconfig symbols
    openrisc: drop unused Kconfig symbols
    arm: at91: drop unused Kconfig symbol
    samples: drop unused Kconfig symbol
    m32r: drop unused Kconfig symbol
    score: drop unused Kconfig symbols
    sh: drop unused Kconfig symbol
    um: drop unused Kconfig symbol
    sparc: drop unused Kconfig symbol
    alpha: drop unused Kconfig symbol

    Fix up trivial conflict in drivers/net/ethernet/stmicro/stmmac/Kconfig
    as per Michal: the STMMAC_DUAL_MAC config variable is still unused and
    should be deleted.

    Linus Torvalds
     

01 Nov, 2011

1 commit


16 Aug, 2011

1 commit


03 Aug, 2011

2 commits

  • Some trivial conflicts due to other various merges
    adding to the end of common lists sooner than this one.

    arch/ia64/Kconfig
    arch/powerpc/Kconfig
    arch/x86/Kconfig
    lib/Kconfig
    lib/Makefile

    Signed-off-by: Len Brown

    Len Brown
     
  • cmpxchg() is widely used by lockless code, including NMI-safe lockless
    code. But on some architectures, the cmpxchg() implementation is not
    NMI-safe, on these architectures the lockless code may need a
    spin_trylock_irqsave() based implementation.

    This patch adds a Kconfig option: ARCH_HAVE_NMI_SAFE_CMPXCHG, so that
    NMI-safe lockless code can depend on it or provide different
    implementation according to it.

    On many architectures, cmpxchg is only NMI-safe for several specific
    operand sizes. So, ARCH_HAVE_NMI_SAFE_CMPXCHG define in this patch
    only guarantees cmpxchg is NMI-safe for sizeof(unsigned long).

    Signed-off-by: Huang Ying
    Acked-by: Mike Frysinger
    Acked-by: Paul Mundt
    Acked-by: Hans-Christian Egtvedt
    Acked-by: Benjamin Herrenschmidt
    Acked-by: Chris Metcalf
    Acked-by: Richard Henderson
    CC: Mikael Starvik
    Acked-by: David Howells
    CC: Yoshinori Sato
    CC: Tony Luck
    CC: Hirokazu Takata
    CC: Geert Uytterhoeven
    CC: Michal Simek
    Acked-by: Ralf Baechle
    CC: Kyle McMartin
    CC: Martin Schwidefsky
    CC: Chen Liqin
    CC: "David S. Miller"
    CC: Ingo Molnar
    CC: Chris Zankel
    Signed-off-by: Len Brown

    Huang Ying
     

26 Jul, 2011

2 commits

  • Make use of the generic RCU page table freeing on Sparc64, doing so allows
    for race-free software page-table walkers like gup_fast().

    Signed-off-by: David S. Miller
    Signed-off-by: Peter Zijlstra
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David S. Miller
     
  • With the recent mmu_gather changes that included generic RCU freeing of
    page-tables, it is now quite straightforward to implement gup_fast() on
    sparc64.

    This patch:

    Remove the page table quicklists. They are pointless and make it harder
    to use RCU page table freeing and share code with other architectures.

    BTW, this is the second time this has happened, see commit 3c936465249f
    ("[SPARC64]: Kill pgtable quicklists and use SLAB.")

    Signed-off-by: David S. Miller
    Signed-off-by: Peter Zijlstra
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David S. Miller
     

03 Jun, 2011

5 commits

  • Reported-by: Stephen Rothwell
    Signed-off-by: David S. Miller

    David S. Miller
     
  • Config option GENERIC_HARDIRQS_NO_DEPRECATED was removed in commit
    78c89825649a9a5ed526c507603196f467d781a5 ("genirq: Remove the now obsolete
    config options and select statements"), but the select was accidentally
    reintroduced in commit 6baa9b20a68a88c2fd751cbe8d7652009379351b
    ("sparc32: genirq support")

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: David S. Miller

    Geert Uytterhoeven
     
  • The DMA region must be accessible in order for PCI peripheral
    drivers to work, the sparc32 has DMA in the normal memory
    zone which requires the GRPCI2 to PCI target BARs so that all
    kernel low mem (192MB) can be mapped 1:1 to PCI address
    space. The GRPCI2 has resizeable target BARs, by default the
    first is made 256MB and all other BARs are disabled.

    I/O space are always located on 0x1000-0x10000, but accessed
    through the GRPCI2 PCI I/O Window memory mapped to virtual
    address space.

    Configuration space is accessed through the 64KB GRPCI2 PCI
    CFG Window using LDA bypassing the MMU.

    The GRPCI2 has a single PCI Window for prefetchable and non-
    prefetchable address space, it is up to the AHB master
    requesting PCI data to determine access type. Memory space
    is mapped 1:1.

    The GRPCI2 core can be configured in 4 different IRQ modes,
    where PCI Interrupt, Error Interrupt and DMA Interrupt are
    shared on a single IRQ line or at most 5 IRQs are used. The
    GRPCI2 can mask/unmask PCI interrupts, Err and DMA in the control
    and check status bits which tells us which IRQ really happended.
    The GENIRQ layer is used to unmask/mask each individual IRQ
    source by creating virtual IRQs and implementing a IRQ chip.

    The optional DMA functionality of the GRPCI2 is not supported
    by this patch.

    Signed-off-by: Daniel Hellstrom
    Signed-off-by: David S. Miller

    Daniel Hellstrom
     
  • The LEON architecture does not have a BIOS or bootloader that
    initializes PCI for us, instead Linux generic PCI layer is used
    to set up resources and IRQ.

    Signed-off-by: Daniel Hellstrom
    Signed-off-by: David S. Miller

    Daniel Hellstrom
     
  • Signed-off-by: Daniel Hellstrom
    Signed-off-by: David S. Miller

    Daniel Hellstrom
     

27 May, 2011

1 commit

  • By the previous style change, CONFIG_GENERIC_FIND_NEXT_BIT,
    CONFIG_GENERIC_FIND_BIT_LE, and CONFIG_GENERIC_FIND_LAST_BIT are not used
    to test for existence of find bitops anymore.

    Signed-off-by: Akinobu Mita
    Acked-by: Greg Ungerer
    Cc: Arnd Bergmann
    Cc: Russell King
    Cc: Martin Schwidefsky
    Cc: Heiko Carstens
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     

17 May, 2011

1 commit

  • The current sparc32 SMP IPI generation is implemented the
    cross call function. The cross call function uses IRQ15 the
    NMI, this is has the effect that IPIs will interrupt IRQ
    critical areas and hang the system. Typically on/after
    spin_lock_irqsave calls can be aborted.

    The cross call functionality must still exist to flush
    cache/TLBS.

    This patch provides CPU models a custom way to implement
    generation of IPIs on the generic code's request. The
    typical approach is to generate an IRQ for each IPI case.

    After this patch each sparc32 SMP CPU model needs to
    implement IPIs in order to function properly.

    Signed-off-by: Daniel Hellstrom
    Signed-off-by: David S. Miller

    Daniel Hellstrom
     

20 Apr, 2011

1 commit

  • The conversion of sparc32 to genirq is based on original work done
    by David S. Miller.
    Daniel Hellstrom has helped in the conversion and implemented
    the shutdowm functionality.
    Marcel van Nies has tested this on Sparc Station 20

    Test status:
    sun4c - not tested
    sun4m,pci - not tested
    sun4m,sbus - tested (Sparc Classic, Sparc Station 5, Sparc Station 20)
    sun4d - not tested
    leon - tested on various combinations of leon boards,
    including SMP variants

    generic
    Introduce use of GENERIC_HARDIRQS and GENERIC_IRQ_SHOW
    Allocate 64 IRQs - which is enough even for SS2000
    Use a table of irq_bucket to maintain uses IRQs
    irq_bucket is also used to chain several irq's that
    must be called when the same intrrupt is asserted
    Use irq_link to link a interrupt source to the irq
    All plafforms must now supply their own build_device_irq method
    handler_irq rewriten to use generic irq support

    floppy
    Read FLOPPY_IRQ from platform device
    Use generic request_irq to register the floppy interrupt
    Rewrote sparc_floppy_irq to use the generic irq support

    pcic:
    Introduce irq_chip
    Store mask in chip_data for use in mask/unmask functions
    Add build_device_irq for pcic
    Use pcic_build_device_irq in pci_time_init
    allocate virtual irqs in pcic_fill_irq

    sun4c:
    Introduce irq_chip
    Store mask in chip_data for use in mask/unmask functions
    Add build_device_irq for sun4c
    Use sun4c_build_device_irq in sun4c_init_timers

    sun4m:
    Introduce irq_chip
    Introduce dedicated mask/unmask methods
    Introduce sun4m_handler_data that allow easy access to necessary
    data in the mask/unmask functions
    Add a helper method to enable profile_timer (used from smp)
    Added sun4m_build_device_irq
    Use sun4m_build_device_irq in sun4m_init_timers

    TODO:
    There is no replacement for smp_rotate that always scheduled
    next CPU as interrupt target upon an interrupt

    sun4d:
    Introduce irq_chip
    Introduce dedicated mask/unmask methods
    Introduce sun4d_handler_data that allow easy access to
    necessary data in mask/unmask fuctions
    Rewrote sun4d_handler_irq to use generic irq support

    TODO:
    The original implmentation of enable/disable had:

    if (irq < NR_IRQS)
    return;

    The new implmentation does not distingush between SBUS and cpu
    interrupts.
    I am no sure what is right here. I assume we need to do
    something for the cpu interrupts.

    I have not succeeded booting my sun4d box (with or without this patch)
    and my understanding of this platfrom is limited.
    So I would be a bit suprised if this works.

    leon:
    Introduce irq_chip
    Store mask in chip_data for use in mask/unmask functions
    Add build_device_irq for leon
    Use leon_build_device_irq in leon_init_timers

    Signed-off-by: Sam Ravnborg
    Acked-by: Daniel Hellstrom
    Tested-by: Daniel Hellstrom
    Tested-by: Marcel van Nies
    Cc: Thomas Gleixner
    Signed-off-by: David S. Miller

    Sam Ravnborg
     

30 Mar, 2011

1 commit


29 Mar, 2011

2 commits

  • Signed-off-by: Thomas Gleixner
    Cc: sparclinux@vger.kernel.org

    Thomas Gleixner
     
  • Make use of the new features in genirq:

    1) Set the chip flag IRCHIP_EOI_IF_HANDLED, which ensures in the
    core code that irq_eoi() is only called when the interrupt was
    handled. That removes the extra status check in the callback.

    2) Use the preflow handler, which is called from the fasteoi core code
    before the device handler. That avoids another status check and the
    open coded handler redirection.

    Signed-off-by: Thomas Gleixner
    Cc: sparclinux@vger.kernel.org

    Thomas Gleixner
     

24 Mar, 2011

1 commit

  • This introduces CONFIG_GENERIC_FIND_BIT_LE to tell whether to use generic
    implementation of find_*_bit_le() in lib/find_next_bit.c or not.

    For now we select CONFIG_GENERIC_FIND_BIT_LE for all architectures which
    enable CONFIG_GENERIC_FIND_NEXT_BIT.

    But m68knommu wants to define own faster find_next_zero_bit_le() and
    continues using generic find_next_{,zero_}bit().
    (CONFIG_GENERIC_FIND_NEXT_BIT and !CONFIG_GENERIC_FIND_BIT_LE)

    Signed-off-by: Akinobu Mita
    Cc: Greg Ungerer
    Cc: Arnd Bergmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     

17 Mar, 2011

2 commits


21 Jan, 2011

2 commits

  • No functional change.

    Signed-off-by: Thomas Gleixner
    Acked-by: "David S. Miller"

    Thomas Gleixner
     
  • All architectures are finally converted. Remove the cruft.

    Signed-off-by: Thomas Gleixner
    Cc: Richard Henderson
    Cc: Mike Frysinger
    Cc: David Howells
    Cc: Tony Luck
    Cc: Greg Ungerer
    Cc: Michal Simek
    Acked-by: David Howells
    Cc: Kyle McMartin
    Acked-by: Benjamin Herrenschmidt
    Cc: Chen Liqin
    Cc: "David S. Miller"
    Cc: Chris Metcalf
    Cc: Jeff Dike

    Thomas Gleixner
     

29 Oct, 2010

2 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
    kbuild: add ARCH=sparc32 target
    sparc32: fix build failure on CONFIG_SPARC_LEON
    sparc: Fixed random SPARC/LEON SMP CPU Stuck problem.
    sparc32: remove CONFIG_HAVE_PERF_EVENTS option
    sparc: don't #include asm/system.h in asm/jump_label.h
    sparc32: Fix unaligned stack handling on trap return.
    sparc: keep calling do_signal() as long as pending signals remain

    Linus Torvalds
     
  • * 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6: (38 commits)
    kbuild: convert `arch/tile' to the kconfig mainmenu upgrade
    README: cite nconfig
    Revert "kconfig: Temporarily disable dependency warnings"
    kconfig: Use PATH_MAX instead of 128 for path buffer sizes.
    kconfig: Fix realloc usage()
    kconfig: Propagate const
    kconfig: Don't go out from read config loop when you read new symbol
    kconfig: fix menuconfig on debian lenny
    kbuild: migrate all arch to the kconfig mainmenu upgrade
    kconfig: expand file names
    kconfig: use the file's name of sourced file
    kconfig: constify file name
    kconfig: don't emit warning upon rootmenu's prompt redefinition
    kconfig: replace KERNELVERSION usage by the mainmenu's prompt
    kconfig: delay gconf window initialization
    kconfig: expand by default the rootmenu's prompt
    kconfig: add a symbol string expansion helper
    kconfig: regen parser
    kconfig: implement the `mainmenu' directive
    kconfig: allow PACKAGE to be defined on the compiler's command-line
    ...

    Fix up trivial conflict in arch/mn10300/Kconfig

    Linus Torvalds
     

27 Oct, 2010

1 commit

  • Remove HAVE_PERF_EVENTS and PERF_USE_VMALLOC under config
    SPARC because they're under SPARC64 too. Supporting
    perf_event needs atomic64 operations but AFAIK sparc32
    doesn't provide them, CMIIW. ;-) Also removes redundant
    HAVE_IRQ_WORK line.

    Signed-off-by: Namhyung Kim
    Signed-off-by: David S. Miller

    Namhyung Kim
     

25 Oct, 2010

1 commit

  • * 'next-devicetree' of git://git.secretlab.ca/git/linux-2.6:
    mtd/m25p80: add support to parse the partitions by OF node
    of/irq: of_irq.c needs to include linux/irq.h
    of/mips: Cleanup some include directives/files.
    of/mips: Add device tree support to MIPS
    of/flattree: Eliminate need to provide early_init_dt_scan_chosen_arch
    of/device: Rework to use common platform_device_alloc() for allocating devices
    of/xsysace: Fix OF probing on little-endian systems
    of: use __be32 types for big-endian device tree data
    of/irq: remove references to NO_IRQ in drivers/of/platform.c
    of/promtree: add package-to-path support to pdt
    of/promtree: add of_pdt namespace to pdt code
    of/promtree: no longer call prom_ functions directly; use an ops structure
    of/promtree: make drivers/of/pdt.c no longer sparc-only
    sparc: break out some PROM device-tree building code out into drivers/of
    of/sparc: convert various prom_* functions to use phandle
    sparc: stop exporting openprom.h header
    powerpc, of_serial: Endianness issues setting up the serial ports
    of: MTD: Fix OF probing on little-endian systems
    of: GPIO: Fix OF probing on little-endian systems

    Linus Torvalds
     

19 Oct, 2010

1 commit

  • Provide a mechanism that allows running code in IRQ context. It is
    most useful for NMI code that needs to interact with the rest of the
    system -- like wakeup a task to drain buffers.

    Perf currently has such a mechanism, so extract that and provide it as
    a generic feature, independent of perf so that others may also
    benefit.

    The IRQ context callback is generated through self-IPIs where
    possible, or on architectures like powerpc the decrementer (the
    built-in timer facility) is set to generate an interrupt immediately.

    Architectures that don't have anything like this get to do with a
    callback from the timer tick. These architectures can call
    irq_work_run() at the tail of any IRQ handlers that might enqueue such
    work (like the perf IRQ handler) to avoid undue latencies in
    processing the work.

    Signed-off-by: Peter Zijlstra
    Acked-by: Kyle McMartin
    Acked-by: Martin Schwidefsky
    [ various fixes ]
    Signed-off-by: Huang Ying
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     

12 Oct, 2010

1 commit


11 Oct, 2010

1 commit


23 Sep, 2010

2 commits


20 Sep, 2010

1 commit