15 Oct, 2014

1 commit

  • Pull percpu consistent-ops changes from Tejun Heo:
    "Way back, before the current percpu allocator was implemented, static
    and dynamic percpu memory areas were allocated and handled separately
    and had their own accessors. The distinction has been gone for many
    years now; however, the now duplicate two sets of accessors remained
    with the pointer based ones - this_cpu_*() - evolving various other
    operations over time. During the process, we also accumulated other
    inconsistent operations.

    This pull request contains Christoph's patches to clean up the
    duplicate accessor situation. __get_cpu_var() uses are replaced with
    with this_cpu_ptr() and __this_cpu_ptr() with raw_cpu_ptr().

    Unfortunately, the former sometimes is tricky thanks to C being a bit
    messy with the distinction between lvalues and pointers, which led to
    a rather ugly solution for cpumask_var_t involving the introduction of
    this_cpu_cpumask_var_ptr().

    This converts most of the uses but not all. Christoph will follow up
    with the remaining conversions in this merge window and hopefully
    remove the obsolete accessors"

    * 'for-3.18-consistent-ops' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: (38 commits)
    irqchip: Properly fetch the per cpu offset
    percpu: Resolve ambiguities in __get_cpu_var/cpumask_var_t -fix
    ia64: sn_nodepda cannot be assigned to after this_cpu conversion. Use __this_cpu_write.
    percpu: Resolve ambiguities in __get_cpu_var/cpumask_var_t
    Revert "powerpc: Replace __get_cpu_var uses"
    percpu: Remove __this_cpu_ptr
    clocksource: Replace __this_cpu_ptr with raw_cpu_ptr
    sparc: Replace __get_cpu_var uses
    avr32: Replace __get_cpu_var with __this_cpu_write
    blackfin: Replace __get_cpu_var uses
    tile: Use this_cpu_ptr() for hardware counters
    tile: Replace __get_cpu_var uses
    powerpc: Replace __get_cpu_var uses
    alpha: Replace __get_cpu_var
    ia64: Replace __get_cpu_var uses
    s390: cio driver &__get_cpu_var replacements
    s390: Replace __get_cpu_var uses
    mips: Replace __get_cpu_var uses
    MIPS: Replace __get_cpu_var uses in FPU emulator.
    arm: Replace __this_cpu_ptr with raw_cpu_ptr
    ...

    Linus Torvalds
     

14 Oct, 2014

2 commits

  • Merge second patch-bomb from Andrew Morton:
    - a few hotfixes
    - drivers/dma updates
    - MAINTAINERS updates
    - Quite a lot of lib/ updates
    - checkpatch updates
    - binfmt updates
    - autofs4
    - drivers/rtc/
    - various small tweaks to less used filesystems
    - ipc/ updates
    - kernel/watchdog.c changes

    * emailed patches from Andrew Morton : (135 commits)
    mm: softdirty: enable write notifications on VMAs after VM_SOFTDIRTY cleared
    kernel/param: consolidate __{start,stop}___param[] in
    ia64: remove duplicate declarations of __per_cpu_start[] and __per_cpu_end[]
    frv: remove unused declarations of __start___ex_table and __stop___ex_table
    kvm: ensure hard lockup detection is disabled by default
    kernel/watchdog.c: control hard lockup detection default
    staging: rtl8192u: use %*pEn to escape buffer
    staging: rtl8192e: use %*pEn to escape buffer
    staging: wlan-ng: use %*pEhp to print SN
    lib80211: remove unused print_ssid()
    wireless: hostap: proc: print properly escaped SSID
    wireless: ipw2x00: print SSID via %*pE
    wireless: libertas: print esaped string via %*pE
    lib/vsprintf: add %*pE[achnops] format specifier
    lib / string_helpers: introduce string_escape_mem()
    lib / string_helpers: refactoring the test suite
    lib / string_helpers: move documentation to c-file
    include/linux: remove strict_strto* definitions
    arch/x86/mm/numa.c: fix boot failure when all nodes are hotpluggable
    fs: check bh blocknr earlier when searching lru
    ...

    Linus Torvalds
     
  • The kernel used to contain two functions for length-delimited,
    case-insensitive string comparison, strnicmp with correct semantics and
    a slightly buggy strncasecmp. The latter is the POSIX name, so strnicmp
    was renamed to strncasecmp, and strnicmp made into a wrapper for the new
    strncasecmp to avoid breaking existing users.

    To allow the compat wrapper strnicmp to be removed at some point in the
    future, and to avoid the extra indirection cost, do
    s/strnicmp/strncasecmp/g.

    Signed-off-by: Rasmus Villemoes
    Cc: Sebastian Ott
    Cc: Peter Oberparleiter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rasmus Villemoes
     

09 Oct, 2014

1 commit


27 Aug, 2014

1 commit


22 Jul, 2014

1 commit

  • Users of qdio buffers employ different strategies to manage these
    buffers. The qeth driver uses huge contiguous buffers which leads
    to high order allocations with all their downsides.

    This patch provides helpers to allocate, free, and reset arrays of
    qdio buffers using non contiguous pages.

    Reviewed-by: Martin Peschke
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     

16 Jun, 2014

5 commits

  • To ungroup and deregister the group device always use the
    ccwgroup_ungroup wrapper.

    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • Since commit 0b60f9ead5d4816e7e3d6e28f4a0d22d4a1b2513
    "s390: use device_remove_file_self() instead of device_schedule_callback()"
    the return code of ccwgroup_ungroup_store is uninitialized. Make
    sure the rc is always initialized.

    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • Commit 0b60f9ead5d4816e7e3d6e28f4a0d22d4a1b2513
    "s390: use device_remove_file_self() instead of device_schedule_callback()"
    changed ccwgroup to use an extra work queue instead of
    device_schedule_callback. This function obtained an extra device
    reference for its async work which is missing in the new implementation
    and results in a "freeing memory with a lock still held" BUG. Fix
    this by obtaining an extra reference for the async work.

    Reported-by: Stefan Raspl
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • Keep the per-device dbf entries until module is removed, with
    proper error checking for debug feature setup.

    Signed-off-by: Stefan Raspl
    Reviewed-by: Steffen Maier
    Signed-off-by: Martin Schwidefsky

    Stefan Raspl
     
  • Currently we set the device name at the time we call device_add after
    we receive the interrupt for the first I/O. When something is not working
    as expected during that first I/O (e.g. we don't receive an interrupt) we
    print a message including the device name which has not yet been
    initialized.

    Set the device name after calling device_initialize (prior to starting
    the first I/O) so that we have the name present if some unexpected error
    occurs during that first I/O.

    Reported-by: Cornelia Huck
    Reported-by: Jason J. Herne
    Reviewed-by: Peter Oberparleiter
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     

10 Jun, 2014

3 commits

  • airq_iv_(alloc|free) is called by some users with interrupts enabled
    and by some with interrupts disabled which leads to the following
    lockdep warning:

    [ INFO: possible irq lock inversion dependency detected ]
    3.14.0-15249-gbf29b7b-dirty #25 Not tainted
    ---------------------------------------------------------
    insmod/2108 just changed the state of lock:
    (&(&iv->lock)->rlock){+.....}, at: [] airq_iv_alloc+0x62/0x228
    but this lock was taken by another, HARDIRQ-READ-safe lock in the past:
    (&info->lock){.-.-..}

    and interrupts could create inverse lock ordering between them.

    other info that might help us debug this:
    Possible interrupt unsafe locking scenario:

    CPU0 CPU1
    ---- ----
    lock(&(&iv->lock)->rlock);
    local_irq_disable();
    lock(&info->lock);
    lock(&(&iv->lock)->rlock);

    lock(&info->lock);

    *** DEADLOCK ***

    Although this is a false alarm (since each airq user consistently
    calls these functions from the same context) fix this by ensuring
    that interrupts are disabled when the airq lock is held.

    Reported-by: Frank Blaschka
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • account_sbals is called by get_inbound_buffer_frontier and
    get_outbound_buffer_frontier with 'count' value > 0 so we can safely
    convert shift loop to ilog2.

    Cc: Joe Perches
    Cc: Andrew Morton
    Signed-off-by: Fabian Frederick
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Fabian Frederick
     
  • On systems where a ccw based console device is used a lockdep false alarm
    could be triggered when a device driver calls printk while holding a
    subchannels lock (e.g. in it's irq handler). Since this is valid behavior
    fix this by introducing a separate lock class for the console subchannels
    lock.

    The lockdep warning was revealed by "printk: enable interrupts before calling
    console_trylock_for_printk()" which changed console_unlock() to be called with
    lockdep enabled.

    [ INFO: possible recursive locking detected ]
    3.15.0-rc5-next-20140520 #1 Not tainted
    ---------------------------------------------
    ccwgroup/2239 is trying to acquire lock:
    (&(sch->lock)->rlock){-.-...}, at: [] raw3215_write+0x52/0x200

    but task is already holding lock:
    (&(sch->lock)->rlock){-.-...}, at: [] do_cio_interrupt+0x60/0x108

    other info that might help us debug this:
    Possible unsafe locking scenario:

    CPU0
    ----
    lock(&(sch->lock)->rlock);
    lock(&(sch->lock)->rlock);

    *** DEADLOCK ***

    May be due to missing lock nesting notation

    8 locks held by ccwgroup/2239:

    stack backtrace:
    CPU: 3 PID: 2239 Comm: ccwgroup Not tainted 3.15.0-rc5-next-20140520 #1
    0000000036fab518 0000000036fab528 0000000000000002 0000000000000000
    0000000036fab5b8 0000000036fab530 0000000036fab530 00000000001116e8
    0000000000000000 0000000000986ec4 00000000009701b6 000000000000000b
    0000000036fab578 0000000036fab518 0000000000000000 0000000000000000
    0000000000000000 00000000001116e8 0000000036fab518 0000000036fab578
    Call Trace:
    ([] show_trace+0x14e/0x158)
    [] show_stack+0x6a/0xe8
    [] dump_stack+0x82/0xb0
    [] validate_chain.isra.37+0xa4a/0xbb0
    [] __lock_acquire+0x4da/0xcd0
    [] lock_acquire+0xba/0x218
    [] _raw_spin_lock_irqsave+0x6c/0xb8
    [] raw3215_write+0x52/0x200
    [] con3215_write+0x76/0xf8
    [] call_console_drivers.constprop.25+0xfa/0x210
    [] console_unlock+0x3e0/0x4e8
    [] vprintk_emit+0x298/0x6e0
    [] dev_vprintk_emit+0xe0/0x1a8
    [] dev_printk_emit+0x48/0x50
    [] __dev_printk+0x68/0xb0
    [] _dev_info+0x62/0x70
    [] qeth_l2_send_setmac_cb+0xd0/0x190
    [] qeth_send_control_data_cb+0x3a6/0x6a8
    [] qeth_irq+0x1a6/0xac0
    [] ccw_device_call_handler+0xa4/0xc0
    [] ccw_device_irq+0x5a/0x190
    [] do_cio_interrupt+0xca/0x108
    [] handle_irq_event_percpu+0x5e/0x378
    [] handle_percpu_irq+0x6c/0x98
    [] generic_handle_irq+0x46/0x68
    [] do_IRQ+0x5e/0x88
    [] io_call+0x6/0x20
    [] qeth_send_control_data+0x322/0x570
    ([] qeth_send_control_data+0x1f6/0x570)
    [] qeth_send_ipa_cmd+0x92/0x120
    [] __qeth_l2_set_online+0x170/0xaa8
    [] ccwgroup_set_online+0x56/0x90
    [] ccwgroup_online_store+0xd6/0xe0
    [] kernfs_fop_write+0x10a/0x188
    [] vfs_write+0x98/0x1c0
    [] SyS_write+0x60/0xd0
    [] sysc_nr_ok+0x22/0x28
    [] 0x3fffd0c3f28

    Reported-by: Heiko Carstens
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     

28 May, 2014

1 commit


27 May, 2014

1 commit


20 May, 2014

1 commit


17 Apr, 2014

1 commit

  • Using a notification type mask for the store event information chsc
    is unsupported on some firmware levels. Retry SEI with that mask set
    to zero (which is the old way of requesting only channel subsystem
    related events).

    Cc:
    Reported-and-tested-by: Stefan Haberland
    Reviewed-by: Peter Oberparleiter
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     

02 Apr, 2014

3 commits

  • Pull driver core and sysfs updates from Greg KH:
    "Here's the big driver core / sysfs update for 3.15-rc1.

    Lots of kernfs updates to make it useful for other subsystems, and a
    few other tiny driver core patches.

    All have been in linux-next for a while"

    * tag 'driver-core-3.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (42 commits)
    Revert "sysfs, driver-core: remove unused {sysfs|device}_schedule_callback_owner()"
    kernfs: cache atomic_write_len in kernfs_open_file
    numa: fix NULL pointer access and memory leak in unregister_one_node()
    Revert "driver core: synchronize device shutdown"
    kernfs: fix off by one error.
    kernfs: remove duplicate dir.c at the top dir
    x86: align x86 arch with generic CPU modalias handling
    cpu: add generic support for CPU feature based module autoloading
    sysfs: create bin_attributes under the requested group
    driver core: unexport static function create_syslog_header
    firmware: use power efficient workqueue for unloading and aborting fw load
    firmware: give a protection when map page failed
    firmware: google memconsole driver fixes
    firmware: fix google/gsmi duplicate efivars_sysfs_init()
    drivers/base: delete non-required instances of include
    kernfs: fix kernfs_node_from_dentry()
    ACPI / platform: drop redundant ACPI_HANDLE check
    kernfs: fix hash calculation in kernfs_rename_ns()
    kernfs: add CONFIG_KERNFS
    sysfs, kobject: add sysfs wrapper for kernfs_enable_ns()
    ...

    Linus Torvalds
     
  • Pull irq code updates from Thomas Gleixner:
    "The irq department proudly presents:

    - Another tree wide sweep of irq infrastructure abuse. Clear winner
    of the trainwreck engineering contest was:
    #include "../../../kernel/irq/settings.h"

    - Tree wide update of irq_set_affinity() callbacks which miss a cpu
    online check when picking a single cpu out of the affinity mask.

    - Tree wide consolidation of interrupt statistics.

    - Updates to the threaded interrupt infrastructure to allow explicit
    wakeup of the interrupt thread and a variant of synchronize_irq()
    which synchronizes only the hard interrupt handler. Both are
    needed to replace the homebrewn thread handling in the mmc/sdhci
    code.

    - New irq chip callbacks to allow proper support for GPIO based irqs.
    The GPIO based interrupts need to request/release GPIO resources
    from request/free_irq.

    - A few new ARM interrupt chips. No revolutionary new hardware, just
    differently wreckaged variations of the scheme.

    - Small improvments, cleanups and updates all over the place"

    I was hoping that that trainwreck engineering contest was a April Fools'
    joke. But no.

    * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (68 commits)
    irqchip: sun7i/sun6i: Disable NMI before registering the handler
    ARM: sun7i/sun6i: dts: Fix IRQ number for sun6i NMI controller
    ARM: sun7i/sun6i: irqchip: Update the documentation
    ARM: sun7i/sun6i: dts: Add NMI irqchip support
    ARM: sun7i/sun6i: irqchip: Add irqchip driver for NMI controller
    genirq: Export symbol no_action()
    arm: omap: Fix typo in ams-delta-fiq.c
    m68k: atari: Fix the last kernel_stat.h fallout
    irqchip: sun4i: Simplify sun4i_irq_ack
    irqchip: sun4i: Use handle_fasteoi_irq for all interrupts
    genirq: procfs: Make smp_affinity values go+r
    softirq: Add linux/irq.h to make it compile again
    m68k: amiga: Add linux/irq.h to make it compile again
    irqchip: sun4i: Don't ack IRQs > 0, fix acking of IRQ 0
    irqchip: sun4i: Fix a comment about mask register initialization
    irqchip: sun4i: Fix irq 0 not working
    genirq: Add a new IRQCHIP_EOI_THREADED flag
    genirq: Document IRQCHIP_ONESHOT_SAFE flag
    ARM: sunxi: dt: Convert to the new irq controller compatibles
    irqchip: sunxi: Change compatibles
    ...

    Linus Torvalds
     
  • Pull timer updates from Ingo Molnar:
    "The main purpose is to fix a full dynticks bug related to
    virtualization, where steal time accounting appears to be zero in
    /proc/stat even after a few seconds of competing guests running busy
    loops in a same host CPU. It's not a regression though as it was
    there since the beginning.

    The other commits are preparatory work to fix the bug and various
    cleanups"

    * 'timers-nohz-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    arch: Remove stub cputime.h headers
    sched: Remove needless round trip nsecs tick conversion of steal time
    cputime: Fix jiffies based cputime assumption on steal accounting
    cputime: Bring cputime -> nsecs conversion
    cputime: Default implementation of nsecs -> cputime conversion
    cputime: Fix nsecs_to_cputime() return type cast

    Linus Torvalds
     

01 Apr, 2014

1 commit

  • Pull s390 updates from Martin Schwidefsky:
    "There are two memory management related changes, the CMMA support for
    KVM to avoid swap-in of freed pages and the split page table lock for
    the PMD level. These two come with common code changes in mm/.

    A fix for the long standing theoretical TLB flush problem, this one
    comes with a common code change in kernel/sched/.

    Another set of changes is Heikos uaccess work, included is the initial
    set of patches with more to come.

    And fixes and cleanups as usual"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (36 commits)
    s390/con3270: optionally disable auto update
    s390/mm: remove unecessary parameter from pgste_ipte_notify
    s390/mm: remove unnecessary parameter from gmap_do_ipte_notify
    s390/mm: fixing comment so that parameter name match
    s390/smp: limit number of cpus in possible cpu mask
    hypfs: Add clarification for "weight_min" attribute
    s390: update defconfigs
    s390/ptrace: add support for PTRACE_SINGLEBLOCK
    s390/perf: make print_debug_cf() static
    s390/topology: Remove call to update_cpu_masks()
    s390/compat: remove compat exec domain
    s390: select CONFIG_TTY for use of tty in unconditional keyboard driver
    s390/appldata_os: fix cpu array size calculation
    s390/checksum: remove memset() within csum_partial_copy_from_user()
    s390/uaccess: remove copy_from_user_real()
    s390/sclp_early: Return correct HSA block count also for zero
    s390: add some drivers/subsystems to the MAINTAINERS file
    s390: improve debug feature usage
    s390/airq: add support for irq ranges
    s390/mm: enable split page table lock for PMD level
    ...

    Linus Torvalds
     

13 Mar, 2014

1 commit

  • The architectures that override cputime_t (s390, ppc) don't provide
    any version of nsecs_to_cputime(). Indeed this cputime_t implementation
    by backend only happens when CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y under
    which the core code doesn't make any use of nsecs_to_cputime().

    At least for now.

    We are going to make a broader use of it so lets provide a default
    version with a per usecs granularity. It should be good enough for most
    usecases.

    Cc: Ingo Molnar
    Cc: Marcelo Tosatti
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Acked-by: Rik van Riel
    Signed-off-by: Frederic Weisbecker

    Frederic Weisbecker
     

12 Mar, 2014

1 commit


05 Mar, 2014

2 commits

  • commit: 8f945a33 (genirq: Move kstat_incr_irqs_this_cpu() to core)
    unearthed the following:

    arch/s390/kernel/irq.c: In function 'init_IRQ':
    >> arch/s390/kernel/irq.c:93:2: error: implicit declaration of function 'irq_reserve_irqs'
    [-Werror=implicit-function-declaration]
    ....
    cc1: some warnings being treated as errors
    --
    drivers/s390/cio/cio.c: In function 'init_cio_interrupts':
    >> drivers/s390/cio/cio.c:594:2: error: implicit declaration of function
    'irq_set_chip_and_handler' [-Werror=implicit-function-declaration]
    [-Werror=implicit-function-declaration]
    ....
    cc1: some warnings being treated as errors

    The reason is that those files require linux/irq.h and magically
    pulled that in via linux/kernel_stat.h

    The commit above got rid of the pointless include of linux/irq.h in
    linux/kernel_stat.h and therefor broke the build.

    Include linux/irq.h

    Reported-by: fengguang.wu@intel.com
    Signed-off-by: Thomas Gleixner
    Cc: Martin Schwidefsky
    Cc: s390

    Thomas Gleixner
     
  • Let the core do the irq_desc resolution.

    No functional change.

    Signed-off-by: Thomas Gleixner
    Cc: Peter Zijlstra
    Cc: Martin Schwidefsky
    Cc: s390
    Link: http://lkml.kernel.org/r/20140223212737.983433636@linutronix.de
    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     

03 Mar, 2014

1 commit


21 Feb, 2014

6 commits

  • The maximum usable buffer size of the s390 debug feature (when using
    the sprintf_view) is 11 * sizeof(long) (1 pointer for the format
    string + 10 arguments). When a larger buffer size is specified the
    additional memory is unused and wasted per debug entry. So reducing
    the buffer size to its maximum (or to the actual buffer size used)
    will make more precious debug feature space usable.

    For pci_msg, chsc_msg, and cio_crw we use the additional usable dbf
    space to reduce the number of allocated pages.

    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • Add airq_iv_alloc and airq_iv_free to allocate and free consecutive
    ranges of irqs from the interrupt vector.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • Interrupts which happen on ccw consoles prior to their registration
    with the driver core are not accounted to the respective device
    driver. Fix this by setting the proper interrupt class during
    initialization of ccw consoles.

    Reviewed-by: Peter Oberparleiter
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • Drivers for ccw consoles use ccw_device_probe_console to receive
    an initialized ccw device which is already enabled for interrupts.
    After that the device driver does the initialization of its private
    data. This can race with unsolicited interrupts which can happen
    once the device is enabled for interrupts.

    Split ccw_device_probe_console into ccw_device_create_console and
    ccw_device_enable_console and reorder the initialization of the ccw
    console drivers.

    While at it mark these functions as __init.

    Reviewed-by: Peter Oberparleiter
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • ccw consoles are in use before they can be properly registered with
    the driver core. For devices which are in use by a device driver we
    rely on the ccw_device's pointer to the driver callbacks to be valid.
    For ccw consoles this pointer is NULL until they are registered later
    during boot and we dereferenced this pointer. This worked by
    chance on 64 bit builds (cdev->drv was NULL but the optional callback
    cdev->drv->path_event was also NULL by coincidence) and was unnoticed
    until we received reports about boot failures on 31 bit systems.
    Fix it by initializing the driver pointer for ccw consoles.

    Cc: # 3.10+
    Reported-by: Mike Frysinger
    Reported-by: Heiko Carstens
    Reviewed-by: Peter Oberparleiter
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • Performing a Channel-Path configure on operation on a Channel-Path ID
    (CHPID) does not trigger a scan for subchannels that might have become
    available through that CHPID. As a result, some subchannels and
    associated I/O devices might be missing. Fix this by adding the missing
    scan.

    This problem was introduced by commit c820de39, "[S390] cio: Rework
    css driver.", but wasn't noticed earlier because the machine usually
    also generates a Channel-Report-Word when the first CHPID of a
    subchannel is configured on, resulting in a separate scan for that
    subchannel. The problem only becomes apparent when this first CHPID is
    not working properly and additional working CHPIDs are subsequently
    configured on without any effect on the availability of the affected
    subchannel.

    Reviewed-by: Sebastian Ott
    Signed-off-by: Peter Oberparleiter
    Signed-off-by: Martin Schwidefsky

    Peter Oberparleiter
     

19 Feb, 2014

1 commit


08 Feb, 2014

1 commit

  • driver-core now supports synchrnous self-deletion of attributes and
    the asynchrnous removal mechanism is scheduled for removal. Use it
    instead of device_schedule_callback().

    * Conversions in arch/s390/pci/pci_sysfs.c and
    drivers/s390/block/dcssblk.c are straightforward.

    * drivers/s390/cio/ccwgroup.c is a bit more tricky because
    ccwgroup_notifier() was (ab)using device_schedule_callback() to
    purely obtain a process context to kick off ungroup operation which
    may block from a notifier callback.

    Rename ccwgroup_ungroup_callback() to ccwgroup_ungroup() and make it
    take ccwgroup_device * instead. The new function is now called
    directly from ccwgroup_ungroup_store().

    ccwgroup_notifier() chain is updated to explicitly bounce through
    ccwgroup_device->ungroup_work. This also removes possible failure
    from memory pressure.

    Only compile-tested.

    Signed-off-by: Tejun Heo
    Cc: Martin Schwidefsky
    Cc: Heiko Carstens
    Cc: linux390@de.ibm.com
    Cc: linux-s390@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman

    Tejun Heo
     

06 Feb, 2014

1 commit

  • The modify subchannel wrapper cio_commit_config can fail when
    (unexpected) status is pending on the subchannel.

    Callers of cio_commit_config (that operated on enabled subchannels)
    needed to do error handling for that case (clear the unexpected
    status with test subchannel and retry). This error handling is
    missing in some code paths and caused online setting of devices to
    fail.

    Fix this for all callers by moving the error handling inside
    cio_commit_config.

    Reviewed-by: Peter Oberparleiter
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     

29 Jan, 2014

2 commits

  • Get rid of compile warning in qdio_int_handler_pci() when checking
    for program-controlled interruption on outbound queues.

    Signed-off-by: Ursula Braun
    Reviewed-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Ursula Braun
     
  • I observed that there are for_each macros that do an extra memory access
    beyond the defined area.
    Normally this does not cause problems.
    But, this can cause exceptions. For example: if the area is allocated at
    the end of a page and the next page is not accessible.

    For correctness, I suggest changing the arguments of the 'for loop' like
    others 'for_each' do in the kernel.

    Signed-off-by: Jose Alonso
    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Jose Alonso
     

14 Jan, 2014

1 commit

  • Introduce function for the "Perform network-subchannel operation"
    CHSC command with operation code "bridgeport information",
    and bit definitions for "characteristics" pertaning to this command.

    Signed-off-by: Eugene Crosser
    Reviewed-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Eugene Crosser
     

16 Dec, 2013

1 commit