24 Oct, 2008

3 commits

  • This seems to have popped up after the recent merges:

    drivers/watchdog/w83697ug_wdt.c: In function ‘w83697ug_select_wd_register’:
    drivers/watchdog/w83697ug_wdt.c:105: warning: ‘return’ with a value, in function returning void

    Signed-off-by: Alan Cox
    Acked-by: Wim Van Sebroeck
    Signed-off-by: Linus Torvalds

    Alan Cox
     
  • - atomic operations which both modify the variable and return something imply
    full smp memory barriers before and after the memory operations involved
    (failing atomic_cmpxchg, atomic_add_unless, etc don't imply a barrier because
    they don't modify the target). See Documentation/atomic_ops.txt.
    So remove extra barriers and branches.

    - All architectures support atomic_cmpxchg. This has no relation to
    __HAVE_ARCH_CMPXCHG. We can just take the atomic_cmpxchg path unconditionally

    This reduces a simple single threaded fastpath lock+unlock test from 590 cycles
    to 203 cycles on a ppc970 system.

    Signed-off-by: Nick Piggin
    Signed-off-by: Linus Torvalds

    Nick Piggin
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/czankel/xtensa-2.6:
    xtensa: Add config files for Diamond 232L - Rev B processor variant
    xtensa: Fix io regions
    xtensa: Add support for the Sonic Ethernet device for the XT2000 board.
    xtensa: replace remaining __FUNCTION__ occurrences
    xtensa: use newer __SPIN_LOCK_UNLOCKED macro
    XTENSA: warn about including directly.

    Linus Torvalds
     

23 Oct, 2008

31 commits

  • page_cgroup_init() is called from mem_cgroup_init(). But at this
    point, we cannot call alloc_bootmem().
    (and this caused panic at boot.)

    This patch moves page_cgroup_init() to init/main.c.

    Time table is following:
    ==
    parse_args(). # we can trust mem_cgroup_subsys.disabled bit after this.
    ....
    cgroup_init_early() # "early" init of cgroup.
    ....
    setup_arch() # memmap is allocated.
    ...
    page_cgroup_init();
    mem_init(); # we cannot call alloc_bootmem after this.
    ....
    cgroup_init() # mem_cgroup is initialized.
    ==

    Before page_cgroup_init(), mem_map must be initialized. So,
    I added page_cgroup_init() to init/main.c directly.

    (*) maybe this is not very clean but
    - cgroup_init_early() is too early
    - in cgroup_init(), we have to use vmalloc instead of alloc_bootmem().
    use of vmalloc area in x86-32 is important and we should avoid very large
    vmalloc() in x86-32. So, we want to use alloc_bootmem() and added page_cgroup_init()
    directly to init/main.c

    [akpm@linux-foundation.org: remove unneeded/bad mem_cgroup_subsys declaration]
    [akpm@linux-foundation.org: fix build]
    Acked-by: Balbir Singh
    Tested-by: Balbir Singh
    Signed-off-by: KAMEZAWA Hiroyuki
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    KAMEZAWA Hiroyuki
     
  • The __log_wait_for_space function sits in a loop checkpointing
    transactions until there is sufficient space free in the journal.
    However, if there are no transactions to be processed (e.g. because the
    free space calculation is wrong due to a corrupted filesystem) it will
    never progress.

    Check for space being required when no transactions are outstanding and
    abort the journal instead of endlessly looping.

    This patch fixes the bug reported by Sami Liedes at:
    http://bugzilla.kernel.org/show_bug.cgi?id=10976

    Signed-off-by: Duane Griffin
    Tested-by: Sami Liedes
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Duane Griffin
     
  • __try_to_free_cp_buf(), __process_buffer(), and __wait_cp_io() test
    BH_Uptodate flag to detect write I/O errors on metadata buffers. But by
    commit 95450f5a7e53d5752ce1a0d0b8282e10fe745ae0 "ext3: don't read inode
    block if the buffer has a write error"(*), BH_Uptodate flag can be set to
    inode buffers with BH_Write_EIO in order to avoid reading old inode data.
    So now, we have to test BH_Write_EIO flag of checkpointing inode buffers
    instead of BH_Uptodate. This patch does it.

    Signed-off-by: Hidehiro Kawai
    Acked-by: Jan Kara
    Acked-by: Eric Sandeen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hidehiro Kawai
     
  • If the journal has aborted due to a checkpointing failure, we have to
    keep the contents of the journal space. Otherwise, the filesystem will
    lose uncheckpointed metadata completely and become inconsistent. To
    avoid this, we need to keep needs_recovery flag if checkpoint has
    failed.

    With this patch, ext3_put_super() detects a checkpointing failure from
    the return value of journal_destroy(), then it invokes ext3_abort() to
    make the filesystem read only and keep needs_recovery flag. Errors
    from journal_flush() are also handled by this patch in some places.

    Signed-off-by: Hidehiro Kawai
    Cc: Jan Kara
    Cc: Stephen Rothwell
    Cc: Al Viro
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hidehiro Kawai
     
  • When a checkpointing IO fails, current JBD code doesn't check the error
    and continue journaling. This means latest metadata can be lost from both
    the journal and filesystem.

    This patch leaves the failed metadata blocks in the journal space and
    aborts journaling in the case of log_do_checkpoint(). To achieve this, we
    need to do:

    1. don't remove the failed buffer from the checkpoint list where in
    the case of __try_to_free_cp_buf() because it may be released or
    overwritten by a later transaction
    2. log_do_checkpoint() is the last chance, remove the failed buffer
    from the checkpoint list and abort the journal
    3. when checkpointing fails, don't update the journal super block to
    prevent the journaled contents from being cleaned. For safety,
    don't update j_tail and j_tail_sequence either
    4. when checkpointing fails, notify this error to the ext3 layer so
    that ext3 don't clear the needs_recovery flag, otherwise the
    journaled contents are ignored and cleaned in the recovery phase
    5. if the recovery fails, keep the needs_recovery flag
    6. prevent cleanup_journal_tail() from being called between
    __journal_drop_transaction() and journal_abort() (a race issue
    between journal_flush() and __log_wait_for_space()

    Signed-off-by: Hidehiro Kawai
    Acked-by: Jan Kara
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hidehiro Kawai
     
  • In the case where procfs is disabled, create_proc_profile() does not
    exist. Stub it in with the others.

    Signed-off-by: Paul Mundt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paul Mundt
     
  • mm/page_cgroup.c: In function 'init_section_page_cgroup':
    mm/page_cgroup.c:111: error: implicit declaration of function 'vmalloc_node'
    mm/page_cgroup.c:111: warning: assignment makes pointer from integer without a cast
    mm/page_cgroup.c: In function '__free_page_cgroup':
    mm/page_cgroup.c:140: error: implicit declaration of function 'vfree'

    Signed-off-by: Paul Mundt
    Reviewed-by: KAMEZAWA Hiroyuki
    Cc: Heiko Carstens
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paul Mundt
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (53 commits)
    powerpc: Support for relocatable kdump kernel
    powerpc: Don't use a 16G page if beyond mem= limits
    powerpc: Add del_node() for early boot code to prune inapplicable devices.
    powerpc: Further compile fixup for STRICT_MM_TYPECHECKS
    powerpc: Remove empty #else from signal_64.c
    powerpc: Move memory size print into common show_cpuinfo for 32-bit
    hvc_console: Remove __devexit annotation of hvc_remove()
    hvc_console: Add support for tty window resizing
    hvc_console: Fix loop if put_char() returns 0
    hvc_console: Add tty driver flag TTY_DRIVER_RESET_TERMIOS
    hvc_console: Add a hangup notifier for backends
    powerpc/83xx: Add DS1339 RTC support for MPC8349E-mITX boards .dts
    powerpc/83xx: Add support for MCU microcontroller in .dts files
    powerpc/85xx: Move mpc8572ds.dts to address-cells/size-cells =
    of/spi: Support specifying chip select as active high via device tree
    powerpc: Remove device_type = "board_control" properties in .dts files
    i2c-cpm: Suppress autoprobing for devices
    powerpc/85xx: Fix mpc8536ds dma interrupt numbers
    powerpc/85xx: Enable enhanced functions for 8536 TSEC
    powerpc: Delete unused prom_strtoul and prom_memparse
    ...

    Linus Torvalds
     
  • * 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/dvrabel/uwb: (47 commits)
    uwb: wrong sizeof argument in mac address compare
    uwb: don't use printk_ratelimit() so often
    uwb: use kcalloc where appropriate
    uwb: use time_after() when purging stale beacons
    uwb: add credits for the original developers of the UWB/WUSB/WLP subsystems
    uwb: add entries in the MAINTAINERS file
    uwb: depend on EXPERIMENTAL
    wusb: wusb-cbaf (CBA driver) sysfs ABI simplification
    uwb: document UWB and WUSB sysfs files
    uwb: add symlinks in sysfs between radio controllers and PALs
    uwb: dont tranmit identification IEs
    uwb: i1480/GUWA100U: fix firmware download issues
    uwb: i1480: remove MAC/PHY information checking function
    uwb: add Intel i1480 HWA to the UWB RC quirk table
    uwb: disable command/event filtering for D-Link DUB-1210
    uwb: initialize the debug sub-system
    uwb: Fix handling IEs with empty IE data in uwb_est_get_size()
    wusb: fix bmRequestType for Abort RPipe request
    wusb: fix error path for wusb_set_dev_addr()
    wusb: add HWA host controller driver
    ...

    Linus Torvalds
     
  • * 'for-next' of git://git.o-hand.com/linux-mfd:
    mfd: check for platform_get_irq() return value in sm501
    mfd: use pci_ioremap_bar() in sm501
    mfd: Don't store volatile bits in WM8350 register cache
    mfd: don't export wm3850 static functions
    mfd: twl4030-gpio driver
    mfd: rtc-twl4030 driver
    mfd: twl4030 IRQ handling update

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
    IB/ehca: Reject dynamic memory add/remove when ehca adapter is present
    IB/ehca: Fix reported max number of QPs and CQs in systems with >1 adapter
    IPoIB: Set netdev offload features properly for child (VLAN) interfaces
    IPoIB: Clean up ethtool support
    mlx4_core: Add Ethernet PCI device IDs
    mlx4_en: Add driver for Mellanox ConnectX 10GbE NIC
    mlx4_core: Multiple port type support
    mlx4_core: Ethernet MAC/VLAN management
    mlx4_core: Get ethernet MTU and default address from firmware
    mlx4_core: Support multiple pre-reserved QP regions
    Update NetEffect maintainer emails to Intel emails
    RDMA/cxgb3: Remove cmid reference on tid allocation failures
    IB/mad: Use krealloc() to resize snoop table
    IPoIB: Always initialize poll_timer to avoid crash on unload
    IB/ehca: Don't allow creating UC QP with SRQ
    mlx4_core: Add QP range reservation support
    RDMA/ucma: Test ucma_alloc_multicast() return against NULL, not with IS_ERR()

    Linus Torvalds
     
  • * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
    sata_via: load DEVICE register when CTL changes
    libata: set device class to NONE if phys_offline
    libata-eh: fix slave link EH action mask handling
    libata: transfer EHI control flags to slave ehc.i
    libata-sff: fix ata_sff_post_internal_cmd()
    libata: initialize port_task when !CONFIG_ATA_SFF

    Linus Torvalds
     
  • * 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm:
    [ARM] clps711x: add sparsemem definitions
    [ARM] 5315/1: Fix section mismatch warning (sa1111)
    [ARM] Orion: activate workaround for 88f6183 SPI clock erratum
    [ARM] Orion: instantiate the dsa switch driver
    [ARM] mv78xx0: force link speed/duplex on eth2/eth3
    [ARM] remove extra brace in arch/arm/mach-pxa/trizeps4.c
    [ARM] balance parenthesis in header file
    [ARM] pxa: fix trizeps PCMCIA build
    [ARM] pxa: fix trizeps defconfig
    [ARM] dmabounce requires ZONE_DMA
    [ARM] 5303/1: period_cycles should be greater than 1
    [ARM] 5310/1: Fix cache flush functions for ARMv4
    [ARM] pxa: fix 3bca103a1e658d23737d20e1989139d9ca8973bf
    [ARM] pxa: fix redefinition of NR_IRQS
    [ARM] S3C24XX: Fix redefine of DEFINE_TIMER() in s3c24xx pwm-clock.c
    [ARM] S3C2443: Fix HCLK rate
    [ARM] S3C24XX: Serial driver debug depends on DEBUG_LL
    [ARM] S3C24XX: pwm-clock set_parent mask fix

    Linus Torvalds
     
  • * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6: (41 commits)
    [IA64] Fix annoying IA64_TR_ALLOC_MAX message.
    [IA64] kill sys32_pipe
    [IA64] remove sys32_pause
    [IA64] Add Variable Page Size and IA64 Support in Intel IOMMU
    ia64/pv_ops: paravirtualized instruction checker.
    ia64/xen: a recipe for using xen/ia64 with pv_ops.
    ia64/pv_ops: update Kconfig for paravirtualized guest and xen.
    ia64/xen: preliminary support for save/restore.
    ia64/xen: define xen machine vector for domU.
    ia64/pv_ops/xen: implement xen pv_time_ops.
    ia64/pv_ops/xen: implement xen pv_irq_ops.
    ia64/pv_ops/xen: define the nubmer of irqs which xen needs.
    ia64/pv_ops/xen: implement xen pv_iosapic_ops.
    ia64/pv_ops/xen: paravirtualize entry.S for ia64/xen.
    ia64/pv_ops/xen: paravirtualize ivt.S for xen.
    ia64/pv_ops/xen: paravirtualize DO_SAVE_MIN for xen.
    ia64/pv_ops/xen: define xen paravirtualized instructions for hand written assembly code
    ia64/pv_ops/xen: define xen pv_cpu_ops.
    ia64/pv_ops/xen: define xen pv_init_ops for various xen initialization.
    ia64/pv_ops/xen: elf note based xen startup.
    ...

    Linus Torvalds
     
  • VIA controllers clear DEVICE register when IEN changes. Make sure
    DEVICE is updated along with CTL.

    This change is separated from Joseph Chan's larger patch.

    http://thread.gmane.org/gmane.linux.kernel.commits.mm/40640

    Signed-off-by: Tejun Heo
    Cc: Joseph Chan
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • Reset methods don't have access to phys link status for slave links
    and may incorrectly indicate device presence causing unnecessary probe
    failures for unoccupied links. This patch clears device class to NONE
    during post-reset processing if phys link is offline.

    As on/offlineness semantics is strictly defined and used in multiple
    places by the core layer, this won't change behavior for drivers which
    don't use slave links.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • Slave link action mask is transferred to master link and all the EH
    actions are taken by the master link. ata_eh_about_to_do() and
    ata_eh_done() are called with ATA_EH_ALL_ACTIONS to clear the slave
    link actions during transfer. This always sets ATA_PFLAG_RECOVERED
    flag causing spurious "EH complete" messages.

    Don't set ATA_PFLAG_RECOVERED for slave link actions.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • ATA_EHI_NO_AUTOPSY and ATA_EHI_QUIET are used to control the behavior
    of EH. As only the master link is visible outside EH, these flags are
    set only for the master link although they should also apply to the
    slave link, which causes spurious EH messages during probe and
    suspend/resume.

    This patch transfers those two flags to slave ehc.i before performing
    slave autopsy and reporting.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • ata_sff_post_internal_cmd() needs to grab port lock before calling
    ata_bmdma_stop() and also need to clear hsm_task_state. Fix it.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • ap->port_task was not initialized if !CONFIG_ATA_SFF later triggering
    lockdep warning. Make sure it's initialized.

    Reported by Larry Finger.

    Signed-off-by: Tejun Heo
    Cc: Larry Finger
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • Roland Dreier
     
  • Since the ehca device driver does not support dynamic memory add and
    remove operations, the driver must explicitly reject such requests in
    order to prevent unpredictable behaviors related to existing memory
    regions that cover all of memory being used by InfiniBand protocols in
    the kernel.

    The solution (for now at least) is to add a memory notifier to the
    ehca device driver and if a request for dynamic memory add or remove
    comes in, ehca will always reject it. The user can add or remove
    memory by hot-removing the ehca adapter, performing the memory
    operation, and then hot-adding the ehca adapter back.

    Signed-off-by: Stefan Roscher
    Signed-off-by: Roland Dreier

    Stefan Roscher
     
  • Because ehca adapters can differ in the maximum number of QPs and CQs
    we have to save the maximum number of these ressources per adapter and
    not globally per ehca driver. This fix introduces 2 new members to the
    shca structure to store the maximum value for QPs and CQs per adapter.

    The module parameters are now used as initial values for those
    variables. If a user selects an invalid number of CQs or QPs we don't
    print an error any longer, instead we will inform the user with a
    warning and set the values to the respective maximum supported by the
    HW.

    Signed-off-by: Stefan Roscher
    Signed-off-by: Roland Dreier

    Stefan Roscher
     
  • Child devices were created without any offload features set, fix this by
    moving the code that computes the features into generic function which is
    now called through non-child and child device creation.

    Signed-off-by: Or Gerlitz

    -- v1 has a bug where the 'result' flag in ipoib_vlan_add may be used uninitialized
    Signed-off-by: Roland Dreier

    Or Gerlitz
     
  • Add a get_rx_csum method. Remove the driver's own get_tso method, as
    the ethtool kernel code uses the default one if nothing is provided.

    Signed-off-by: Or Gerlitz
    Signed-off-by: Roland Dreier

    Or Gerlitz
     
  • Signed-off-by: Yevgeny Petrilin
    Signed-off-by: Roland Dreier

    Yevgeny Petrilin
     
  • The Mellanox ConnectX can operate as an InfiniBand adapter, as an
    Ethernet NIC, or as a Fibre Channel (FC) HBA. The kernel has a
    low-level driver, mlx4_core, which handles multiplexing access to the
    device, and there is also already an InfiniBad driver, mlx4_ib.

    This patch adds a new driver, mlx4_en, which implements a standard
    Ethernet NIC driver.

    Signed-off-by: Liran Liss
    Signed-off-by: Yevgeny Petrilin
    Signed-off-by: Roland Dreier

    Yevgeny Petrilin
     
  • Multi-protocol adapters support different port types. Each consumer
    of mlx4_core queries for supported port types; in particular mlx4_ib
    can no longer assume that all physical ports belong to it. Port type
    is configured through a sysfs interface. When the type of a port is
    changed, all mlx4 interfaces are unregistered, and then registered
    again with the new port types.

    Signed-off-by: Yevgeny Petrilin
    Signed-off-by: Roland Dreier

    Yevgeny Petrilin
     
  • Add support for managing MAC and VLAN filters for each port.

    Signed-off-by: Yevgeny Petrilin
    Signed-off-by: Oren Duer
    Signed-off-by: Roland Dreier

    Yevgeny Petrilin
     
  • Get maximum ethernet MTU and default MAC address from the firmware
    QUERY_DEV_CAP command.

    Signed-off-by: Yevgeny Petrilin
    Signed-off-by: Roland Dreier

    Yevgeny Petrilin
     
  • For ethernet support, we need to reserve QPs for the ethernet and
    fibre channel driver. The QPs are reserved at the end of the QP
    table. (This way we assure that they are aligned to their size)

    We need to consider these reserved ranges in bitmap creation, so we
    extend the mlx4 bitmap utility functions to allow reserved ranges at
    both the bottom and the top of the range.

    Signed-off-by: Yevgeny Petrilin
    Signed-off-by: Roland Dreier

    Yevgeny Petrilin
     

22 Oct, 2008

6 commits

  • This adds relocatable kernel support for kdump. With this one can
    use the same regular kernel to capture the kdump. A signature (0xfeed1234)
    is passed in r6 from panic code to the next kernel through kexec_sequence
    and purgatory code. The signature is used to differentiate between
    kdump kernel and non-kdump kernels.

    The purgatory code compares the signature and sets the __kdump_flag in
    head_64.S. During the boot up, kernel code checks __kdump_flag and if it
    is set, the kernel will behave as relocatable kdump kernel. This kernel
    will boot at the address where it was loaded by kexec-tools ie. at the
    address reserved through crashkernel boot parameter.

    CONFIG_CRASH_DUMP depends on CONFIG_RELOCATABLE option to build kdump
    kernel as relocatable. So the same kernel can be used as production and
    kdump kernel.

    This patch incorporates the changes suggested by Paul Mackerras to avoid
    GOT use and to avoid two copies of the code.

    Signed-off-by: Paul Mackerras
    Signed-off-by: Mohan Kumar M
    Signed-off-by: Michael Ellerman
    Signed-off-by: Benjamin Herrenschmidt

    Mohan Kumar M
     
  • If mem= is used on the boot command line to limit memory then the memory block where a 16G page resides may not be available.

    Thanks to Michael Ellerman for finding the problem.

    Signed-off-by: Jon Tollefson
    Signed-off-by: Benjamin Herrenschmidt

    Jon Tollefson
     
  • Some platforms have variants that can share most of a flat device tree but need
    a few devices selectively pruned at boot time. This adds del_node() to ops.h
    to allow access to the existing fdt_del_node().

    Signed-off-by: Mike Ditto
    Signed-off-by: Benjamin Herrenschmidt

    Mike Ditto
     
  • A patch of mine was recently committed to fix up STRICT_MM_TYPECHECKS
    behaviour on powerpc (f5ea64dcbad89875d130596df14c9b25d994a737).
    However, something which breaks it again seems to have slipped in
    afterwards. So, here's another small fix.

    Signed-off-by: David Gibson
    Signed-off-by: Benjamin Herrenschmidt

    David Gibson
     
  • Remove empty/bogus #else from signal_64.c

    Signed-off-by: Michael Neuling
    Signed-off-by: Benjamin Herrenschmidt

    Michael Neuling
     
  • Most of the platforms were printing the size of the memory
    in their show_cpuinfo implementations. This moves that to
    the common show_cpuinfo, so that all 32-bit platforms will
    now print the size of memory. I also update the code
    to deal with the fact that total_memory is now a phys_addr_t.

    Signed-off-by: Becky Bruce
    Signed-off-by: Benjamin Herrenschmidt

    Becky Bruce