19 Sep, 2015

1 commit


16 Sep, 2015

1 commit

  • In virtio_ccw_read_vq_conf() the return value of ccw_io_helper()
    was not checked.
    If the configuration could not be read properly, we'd wrongly assume a
    queue size of 0.

    Let's propagate any I/O error to virtio_ccw_setup_vq() so it may
    properly fail.

    Signed-off-by: Pierre Morel
    Signed-off-by: Cornelia Huck
    Signed-off-by: Michael S. Tsirkin

    Pierre Morel
     

11 Sep, 2015

1 commit


09 Sep, 2015

1 commit

  • Pull libnvdimm updates from Dan Williams:
    "This update has successfully completed a 0day-kbuild run and has
    appeared in a linux-next release. The changes outside of the typical
    drivers/nvdimm/ and drivers/acpi/nfit.[ch] paths are related to the
    removal of IORESOURCE_CACHEABLE, the introduction of memremap(), and
    the introduction of ZONE_DEVICE + devm_memremap_pages().

    Summary:

    - Introduce ZONE_DEVICE and devm_memremap_pages() as a generic
    mechanism for adding device-driver-discovered memory regions to the
    kernel's direct map.

    This facility is used by the pmem driver to enable pfn_to_page()
    operations on the page frames returned by DAX ('direct_access' in
    'struct block_device_operations').

    For now, the 'memmap' allocation for these "device" pages comes
    from "System RAM". Support for allocating the memmap from device
    memory will arrive in a later kernel.

    - Introduce memremap() to replace usages of ioremap_cache() and
    ioremap_wt(). memremap() drops the __iomem annotation for these
    mappings to memory that do not have i/o side effects. The
    replacement of ioremap_cache() with memremap() is limited to the
    pmem driver to ease merging the api change in v4.3.

    Completion of the conversion is targeted for v4.4.

    - Similar to the usage of memcpy_to_pmem() + wmb_pmem() in the pmem
    driver, update the VFS DAX implementation and PMEM api to provide
    persistence guarantees for kernel operations on a DAX mapping.

    - Convert the ACPI NFIT 'BLK' driver to map the block apertures as
    cacheable to improve performance.

    - Miscellaneous updates and fixes to libnvdimm including support for
    issuing "address range scrub" commands, clarifying the optimal
    'sector size' of pmem devices, a clarification of the usage of the
    ACPI '_STA' (status) property for DIMM devices, and other minor
    fixes"

    * tag 'libnvdimm-for-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm: (34 commits)
    libnvdimm, pmem: direct map legacy pmem by default
    libnvdimm, pmem: 'struct page' for pmem
    libnvdimm, pfn: 'struct page' provider infrastructure
    x86, pmem: clarify that ARCH_HAS_PMEM_API implies PMEM mapped WB
    add devm_memremap_pages
    mm: ZONE_DEVICE for "device memory"
    mm: move __phys_to_pfn and __pfn_to_phys to asm/generic/memory_model.h
    dax: drop size parameter to ->direct_access()
    nd_blk: change aperture mapping from WC to WB
    nvdimm: change to use generic kvfree()
    pmem, dax: have direct_access use __pmem annotation
    dax: update I/O path to do proper PMEM flushing
    pmem: add copy_from_iter_pmem() and clear_pmem()
    pmem, x86: clean up conditional pmem includes
    pmem: remove layer when calling arch_has_wmb_pmem()
    pmem, x86: move x86 PMEM API to new pmem.h header
    libnvdimm, e820: make CONFIG_X86_PMEM_LEGACY a tristate option
    pmem: switch to devm_ allocations
    devres: add devm_memremap
    libnvdimm, btt: write and validate parent_uuid
    ...

    Linus Torvalds
     

04 Sep, 2015

1 commit

  • Pull locking and atomic updates from Ingo Molnar:
    "Main changes in this cycle are:

    - Extend atomic primitives with coherent logic op primitives
    (atomic_{or,and,xor}()) and deprecate the old partial APIs
    (atomic_{set,clear}_mask())

    The old ops were incoherent with incompatible signatures across
    architectures and with incomplete support. Now every architecture
    supports the primitives consistently (by Peter Zijlstra)

    - Generic support for 'relaxed atomics':

    - _acquire/release/relaxed() flavours of xchg(), cmpxchg() and {add,sub}_return()
    - atomic_read_acquire()
    - atomic_set_release()

    This came out of porting qwrlock code to arm64 (by Will Deacon)

    - Clean up the fragile static_key APIs that were causing repeat bugs,
    by introducing a new one:

    DEFINE_STATIC_KEY_TRUE(name);
    DEFINE_STATIC_KEY_FALSE(name);

    which define a key of different types with an initial true/false
    value.

    Then allow:

    static_branch_likely()
    static_branch_unlikely()

    to take a key of either type and emit the right instruction for the
    case. To be able to know the 'type' of the static key we encode it
    in the jump entry (by Peter Zijlstra)

    - Static key self-tests (by Jason Baron)

    - qrwlock optimizations (by Waiman Long)

    - small futex enhancements (by Davidlohr Bueso)

    - ... and misc other changes"

    * 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (63 commits)
    jump_label/x86: Work around asm build bug on older/backported GCCs
    locking, ARM, atomics: Define our SMP atomics in terms of _relaxed() operations
    locking, include/llist: Use linux/atomic.h instead of asm/cmpxchg.h
    locking/qrwlock: Make use of _{acquire|release|relaxed}() atomics
    locking/qrwlock: Implement queue_write_unlock() using smp_store_release()
    locking/lockref: Remove homebrew cmpxchg64_relaxed() macro definition
    locking, asm-generic: Add _{relaxed|acquire|release}() variants for 'atomic_long_t'
    locking, asm-generic: Rework atomic-long.h to avoid bulk code duplication
    locking/atomics: Add _{acquire|release|relaxed}() variants of some atomic operations
    locking, compiler.h: Cast away attributes in the WRITE_ONCE() magic
    locking/static_keys: Make verify_keys() static
    jump label, locking/static_keys: Update docs
    locking/static_keys: Provide a selftest
    jump_label: Provide a self-test
    s390/uaccess, locking/static_keys: employ static_branch_likely()
    x86, tsc, locking/static_keys: Employ static_branch_likely()
    locking/static_keys: Add selftest
    locking/static_keys: Add a new static_key interface
    locking/static_keys: Rework update logic
    locking/static_keys: Add static_key_{en,dis}able() helpers
    ...

    Linus Torvalds
     

03 Sep, 2015

1 commit

  • Pull core block updates from Jens Axboe:
    "This first core part of the block IO changes contains:

    - Cleanup of the bio IO error signaling from Christoph. We used to
    rely on the uptodate bit and passing around of an error, now we
    store the error in the bio itself.

    - Improvement of the above from myself, by shrinking the bio size
    down again to fit in two cachelines on x86-64.

    - Revert of the max_hw_sectors cap removal from a revision again,
    from Jeff Moyer. This caused performance regressions in various
    tests. Reinstate the limit, bump it to a more reasonable size
    instead.

    - Make /sys/block//queue/discard_max_bytes writeable, by me.
    Most devices have huge trim limits, which can cause nasty latencies
    when deleting files. Enable the admin to configure the size down.
    We will look into having a more sane default instead of UINT_MAX
    sectors.

    - Improvement of the SGP gaps logic from Keith Busch.

    - Enable the block core to handle arbitrarily sized bios, which
    enables a nice simplification of bio_add_page() (which is an IO hot
    path). From Kent.

    - Improvements to the partition io stats accounting, making it
    faster. From Ming Lei.

    - Also from Ming Lei, a basic fixup for overflow of the sysfs pending
    file in blk-mq, as well as a fix for a blk-mq timeout race
    condition.

    - Ming Lin has been carrying Kents above mentioned patches forward
    for a while, and testing them. Ming also did a few fixes around
    that.

    - Sasha Levin found and fixed a use-after-free problem introduced by
    the bio->bi_error changes from Christoph.

    - Small blk cgroup cleanup from Viresh Kumar"

    * 'for-4.3/core' of git://git.kernel.dk/linux-block: (26 commits)
    blk: Fix bio_io_vec index when checking bvec gaps
    block: Replace SG_GAPS with new queue limits mask
    block: bump BLK_DEF_MAX_SECTORS to 2560
    Revert "block: remove artifical max_hw_sectors cap"
    blk-mq: fix race between timeout and freeing request
    blk-mq: fix buffer overflow when reading sysfs file of 'pending'
    Documentation: update notes in biovecs about arbitrarily sized bios
    block: remove bio_get_nr_vecs()
    fs: use helper bio_add_page() instead of open coding on bi_io_vec
    block: kill merge_bvec_fn() completely
    md/raid5: get rid of bio_fits_rdev()
    md/raid5: split bio for chunk_aligned_read
    block: remove split code in blkdev_issue_{discard,write_same}
    btrfs: remove bio splitting and merge_bvec_fn() calls
    bcache: remove driver private bio splitting code
    block: simplify bio_add_page()
    block: make generic_make_request handle arbitrarily sized bios
    blk-cgroup: Drop unlikely before IS_ERR(_OR_NULL)
    block: don't access bio->bi_error after bio_put()
    block: shrink struct bio down to 2 cache lines again
    ...

    Linus Torvalds
     

01 Sep, 2015

1 commit

  • Pull s390 updates from Martin Schwidefsky:
    "The big one is support for fake NUMA, splitting a really large machine
    in more manageable piece improves performance in some cases, e.g. for
    a KVM host.

    The FICON Link Incident handling has been improved, this helps the
    operator to identify degraded or non-operational FICON connections.

    The save and restore of floating point and vector registers has been
    overhauled to allow the future use of vector registers in the kernel.

    A few small enhancement, magic sys-requests for the vt220 console via
    SCLP, some more assembler code has been converted to C, the PCI error
    handling is improved.

    And the usual cleanup and bug fixing"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (59 commits)
    s390/jump_label: Use %*ph to print small buffers
    s390/sclp_vt220: support magic sysrequests
    s390/ctrlchar: improve handling of magic sysrequests
    s390/numa: remove superfluous ARCH_WANT defines
    s390/3270: redraw screen on unsolicited device end
    s390/dcssblk: correct out of bounds array indexes
    s390/mm: simplify page table alloc/free code
    s390/pci: move debug messages to debugfs
    s390/nmi: initialize control register 0 earlier
    s390/zcrypt: use msleep() instead of mdelay()
    s390/hmcdrv: fix interrupt registration
    s390/setup: fix novx parameter
    s390/uaccess: remove uaccess_primary kernel parameter
    s390: remove unneeded sizeof(void *) comparisons
    s390/facilities: remove transactional-execution bits
    s390/numa: re-add DIE sched_domain_topology_level
    s390/dasd: enhance CUIR scope detection
    s390/dasd: fix failing path verification
    s390/vdso: emit a GNU hash
    s390/numa: make core to node mapping data dynamic
    ...

    Linus Torvalds
     

28 Aug, 2015

1 commit


26 Aug, 2015

3 commits

  • Implement magic sysrequest handling for the VT220 terminal (also known as
    the Integrated ASCII console on the HMC/SE).
    To invoke a "magic sysrequest" function, press "Ctrl+o" followed by a
    second character that designates the debugging function.

    The handling of the sysrq is scheduled away from the SCLP IRQ context;
    because large amounts of sysrq output might fill up the console buffers.
    The console might deadlock because it cannot empty the buffers while still
    in the receiving IRQ context. This behavior is the same as for the SCLP
    console.

    Reported-by: Horst Weber
    Signed-off-by: Hendrik Brueckner
    Reviewed-by: Peter Oberparleiter
    Signed-off-by: Martin Schwidefsky

    Hendrik Brueckner
     
  • Extract the sysrq handling from the ctrlchar_handle() into a separate
    function that can be directly used by other users.

    Introduce a new sysrq_work structure to embed the work_struct and to
    specify the magic sysrq function to be invoked.

    Signed-off-by: Hendrik Brueckner
    Signed-off-by: Martin Schwidefsky

    Hendrik Brueckner
     
  • If a 3270 terminal is disconnected and later reconnected again,
    it gets an unsolicited device end. This is currently ignored and
    you have to hit the clear key to get the screen redrawn.
    Add an automatic full redraw of the screen for this case.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     

21 Aug, 2015

1 commit

  • Update the annotation for the kaddr pointer returned by direct_access()
    so that it is a __pmem pointer. This is consistent with the PMEM driver
    and with how this direct_access() pointer is used in the DAX code.

    Signed-off-by: Ross Zwisler
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Dan Williams

    Ross Zwisler
     

19 Aug, 2015

4 commits

  • Fix a couple of warnings like this:

    [linux-4.2-rc7/drivers/s390/block/dcssblk.c:553]:
    (style) Array index 'j' is used before limits check.

    Reported-by: David Binderman
    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • There is no need to busy loop and monopolize a cpu for up to ~2 seconds.
    The code in question that calls mdelay() is preemptible anyway, so better
    let the kernel schedule different processes than just looping and causing
    unnecessary delays.

    Signed-off-by: Heiko Carstens
    Acked-by: Martin Schwidefsky
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     
  • The z/VM driver sets bit "63-22" in control register zero to one in order
    to enable the CP Service interrupt (0x2603). However the irq subclass mask
    that normally corresponds to the CP Service interrupt is
    "63-54" (== "63-22-32").

    So it looks like the author read the documentation with the 32 bit sized
    cr0 register bit positions (== 22), but didn't realize that bit numbers
    change, if applied to a 64 bit register (== 54) due to the numbering
    scheme.

    Also use irq_subclass_register() instead if ctl_set_bit() since multiple
    services depend on the service signal subclass mask, which is the correct
    bit. This also explains why nobody noticed the bug, since the bit is always
    enabled anyway (e.g. pfault).

    Signed-off-by: Heiko Carstens
    Reviewed-by: Hendrik Brueckner
    Acked-by: Martin Schwidefsky
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     
  • Remove two more statements which always evaluate to 'false'.
    These are more leftovers from the 31 bit era.

    Signed-off-by: Heiko Carstens
    Reviewed-by: David Hildenbrand
    Signed-off-by: Martin Schwidefsky

    Heiko Carstens
     

14 Aug, 2015

1 commit

  • The way the block layer is currently written, it goes to great lengths
    to avoid having to split bios; upper layer code (such as bio_add_page())
    checks what the underlying device can handle and tries to always create
    bios that don't need to be split.

    But this approach becomes unwieldy and eventually breaks down with
    stacked devices and devices with dynamic limits, and it adds a lot of
    complexity. If the block layer could split bios as needed, we could
    eliminate a lot of complexity elsewhere - particularly in stacked
    drivers. Code that creates bios can then create whatever size bios are
    convenient, and more importantly stacked drivers don't have to deal with
    both their own bio size limitations and the limitations of the
    (potentially multiple) devices underneath them. In the future this will
    let us delete merge_bvec_fn and a bunch of other code.

    We do this by adding calls to blk_queue_split() to the various
    make_request functions that need it - a few can already handle arbitrary
    size bios. Note that we add the call _after_ any call to
    blk_queue_bounce(); this means that blk_queue_split() and
    blk_recalc_rq_segments() don't need to be concerned with bouncing
    affecting segment merging.

    Some make_request_fn() callbacks were simple enough to audit and verify
    they don't need blk_queue_split() calls. The skipped ones are:

    * nfhd_make_request (arch/m68k/emu/nfblock.c)
    * axon_ram_make_request (arch/powerpc/sysdev/axonram.c)
    * simdisk_make_request (arch/xtensa/platforms/iss/simdisk.c)
    * brd_make_request (ramdisk - drivers/block/brd.c)
    * mtip_submit_request (drivers/block/mtip32xx/mtip32xx.c)
    * loop_make_request
    * null_queue_bio
    * bcache's make_request fns

    Some others are almost certainly safe to remove now, but will be left
    for future patches.

    Cc: Jens Axboe
    Cc: Christoph Hellwig
    Cc: Al Viro
    Cc: Ming Lei
    Cc: Neil Brown
    Cc: Alasdair Kergon
    Cc: Mike Snitzer
    Cc: dm-devel@redhat.com
    Cc: Lars Ellenberg
    Cc: drbd-user@lists.linbit.com
    Cc: Jiri Kosina
    Cc: Geoff Levand
    Cc: Jim Paris
    Cc: Philip Kelleher
    Cc: Minchan Kim
    Cc: Nitin Gupta
    Cc: Oleg Drokin
    Cc: Andreas Dilger
    Acked-by: NeilBrown (for the 'md/md.c' bits)
    Acked-by: Mike Snitzer
    Reviewed-by: Martin K. Petersen
    Signed-off-by: Kent Overstreet
    [dpark: skip more mq-based drivers, resolve merge conflicts, etc.]
    Signed-off-by: Dongsu Park
    Signed-off-by: Ming Lin
    Signed-off-by: Jens Axboe

    Kent Overstreet
     

10 Aug, 2015

2 commits

  • This patch adds an enhanced detection for control unit initiated
    reconfiguration request scope.
    The first approach assumed the scope of the reconfiguration request
    to be restricted to the path on which the message was received.
    The enhanced approach determines the full scope of the reconfiguration
    request by evaluating additional path and device selection information
    contained in the reconfiguration message.

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

    Stefan Haberland
     
  • DASD path verification requires the usage of sleep_on_immediatly to
    ensure that no other I/O request is blocking the recovery of
    disconnected devices. But two concurrent path verification workers for
    the same device may kill each others requests due to the usage of the
    immediate sleep_on function. This may lead to unsuccessful path
    verifications.

    Prevent that two parallel path verification workers conflict with
    each other by implementing a device flag signalling a already running
    worker.

    Signed-off-by: Stefan Haberland
    Signed-off-by: Martin Schwidefsky

    Stefan Haberland
     

07 Aug, 2015

2 commits

  • This patch remove unneeded variables used to store return values.

    These issues were detected with the Coccinelle script:
    scripts/coccinelle/misc/returnvar.cocci

    [heiko.carstens@de.ibm.com]: make qeth_l[2/3]_stop() return void

    Signed-off-by: Peter Senna Tschudin
    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Peter Senna Tschudin
     
  • Remove unneeded semicolon.

    The semantic patch that detects this change is available
    at scripts/coccinelle/misc/semicolon.cocci.

    Signed-off-by: Peter Senna Tschudin
    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Peter Senna Tschudin
     

04 Aug, 2015

1 commit

  • NUMA emulation (aka fake NUMA) distributes the available memory to nodes
    without using real topology information about the physical memory of the
    machine.

    Splitting the system memory into nodes replicates the memory management
    structures for each node. Particularly each node has its own "mm locks"
    and its own "kswapd" task.

    For large systems, under certain conditions, this results in improved
    system performance and/or latency based on reduced pressure on the mm
    locks and the kswapd tasks.

    NUMA emulation distributes CPUs to nodes while respecting the original
    machine topology information. This is done by trying to avoid to separate
    CPUs which reside on the same book or even on the same MC. Because the
    current Linux scheduler code requires a stable cpu to node mapping, cores
    are pinned to nodes when the first CPU thread is set online.

    This patch is based on the initial implementation from Philipp Hachtmann.

    Signed-off-by: Michael Holzheu
    Signed-off-by: Martin Schwidefsky

    Michael Holzheu
     

29 Jul, 2015

1 commit

  • Currently we have two different ways to signal an I/O error on a BIO:

    (1) by clearing the BIO_UPTODATE flag
    (2) by returning a Linux errno value to the bi_end_io callback

    The first one has the drawback of only communicating a single possible
    error (-EIO), and the second one has the drawback of not beeing persistent
    when bios are queued up, and are not passed along from child to parent
    bio in the ever more popular chaining scenario. Having both mechanisms
    available has the additional drawback of utterly confusing driver authors
    and introducing bugs where various I/O submitters only deal with one of
    them, and the others have to add boilerplate code to deal with both kinds
    of error returns.

    So add a new bi_error field to store an errno value directly in struct
    bio and remove the existing mechanisms to clean all this up.

    Signed-off-by: Christoph Hellwig
    Reviewed-by: Hannes Reinecke
    Reviewed-by: NeilBrown
    Signed-off-by: Jens Axboe

    Christoph Hellwig
     

27 Jul, 2015

1 commit


24 Jul, 2015

1 commit

  • Pull virtio/vhost fixes from Michael Tsirkin:
    "Bugfixes and documentation fixes.

    Igor's patch that allows users to tweak memory table size is
    borderline, but it does fix known crashes, so I merged it"

    * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
    vhost: add max_mem_regions module parameter
    vhost: extend memory regions allocation to vmalloc
    9p/trans_virtio: reset virtio device on remove
    virtio/s390: rename drivers/s390/kvm -> drivers/s390/virtio
    MAINTAINERS: separate section for s390 virtio drivers
    virtio: define virtio_pci_cfg_cap in header.
    virtio: Fix typecast of pointer in vring_init()
    virtio scsi: fix unused variable warning
    vhost: use binary search instead of linear in find_region()
    virtio_net: document VIRTIO_NET_CTRL_GUEST_OFFLOADS

    Linus Torvalds
     

22 Jul, 2015

3 commits

  • A hardware problem on a FICON link is reported by the Channel Subsystem
    to the operating system via a Link Incident Record (LIR). In response,
    the operating system should issue a message that enables hardware
    service personnel to identify and repair the failing component.

    Current Linux LIR handling is broken because LIR data is incorrectly
    interpreted and no log message is generated.

    This patch fixes Linux LIR handling by implementing a new log message
    for LIRs indicating a degraded or non-operational link. Also LIRs are
    no longer used to deactivate channel paths because the available data
    does not reliably allow to determine the affected channel path.

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

    Peter Oberparleiter
     
  • After dutifully acting as statement separator for 6 long years, this
    comma has finally grown into a full semicolon.

    Signed-off-by: Peter Oberparleiter
    Signed-off-by: Martin Schwidefsky

    Peter Oberparleiter
     
  • Dropping kernel messages during a console-buffer-full condition
    is preferable to halting the system until console messages are
    delivered, especially for production systems.

    Update default for sclp_console_drop kernel parameter accordingly.

    Signed-off-by: Peter Oberparleiter
    Acked-by: Martin Schwidefsky
    Signed-off-by: Martin Schwidefsky

    Peter Oberparleiter
     

16 Jul, 2015

1 commit

  • Pull s390 fixes from Martin Schwidefsky:
    "One improvement for the zcrypt driver, the quality attribute for the
    hwrng device has been missing. Without it the kernel entropy seeding
    will not happen automatically.

    And six bug fixes, the most important one is the fix for the vector
    register corruption due to machine checks"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
    s390/nmi: fix vector register corruption
    s390/process: fix sfpc inline assembly
    s390/dasd: fix kernel panic when alias is set offline
    s390/sclp: clear upper register halves in _sclp_print_early
    s390/oprofile: fix compile error
    s390/sclp: fix compile error
    s390/zcrypt: enable s390 hwrng to seed kernel entropy

    Linus Torvalds
     

13 Jul, 2015

1 commit

  • The dasd device driver selects which (alias or base) device is used
    for a given requests when the request is build. If the chosen alias
    device is set offline before the request gets queued to the device
    queue the starting function may use device structures that are
    already freed. This might lead to a hanging offline process or a
    kernel panic.

    Add a check to the starting function that returns the request to the
    upper layer if the device is already in offline processing.

    In addition to that prevent that an alias device that's already in
    offline processing gets chosen as start device.

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

    Stefan Haberland
     

07 Jul, 2015

1 commit


04 Jul, 2015

1 commit

  • Eric noticed problems with vhost-scsi and virtio-ccw: vhost-scsi
    complained about overwriting values in the config space, which
    was triggered by a broken implementation of virtio-ccw's config
    get/set routines. It was probably sheer luck that we did not hit
    this before.

    When writing a value to the config space, the WRITE_CONF ccw will
    always write from the beginning of the config space up to and
    including the value to be set. If the config space up to the value
    has not yet been retrieved from the device, however, we'll end up
    overwriting values. Keep track of the known config space and update
    if needed to avoid this.

    Moreover, READ_CONF will only read the number of bytes it has been
    instructed to retrieve, so we must not copy more than that to the
    buffer, or we might overwrite trailing values.

    Reported-by: Eric Farman
    Signed-off-by: Cornelia Huck
    Reviewed-by: Eric Farman
    Tested-by: Eric Farman
    Signed-off-by: Christian Borntraeger
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini

    Cornelia Huck
     

01 Jul, 2015

3 commits

  • Fix this error when compiling with CONFIG_SMP=n and
    CONFIG_DYNAMIC_DEBUG=y:

    drivers/s390/char/sclp_early.c: In function 'sclp_read_info_early':
    drivers/s390/char/sclp_early.c:87:19: error: 'EBUSY' undeclared (first use in this function)
    } while (rc == -EBUSY);
    ^

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

    Sebastian Ott
     
  • Set the 'quality' property in the zcrypt rng device structure to enable the
    zcrypt hwrng device to take part in the kernel entropy seeding process.
    A module parameter named hwrng_seed will be introduced to disable the
    participation. By default this parameter is set to 1 (enabled).

    Signed-off-by: Ingo Tuchscherer
    Signed-off-by: Harald Freudenberger
    Signed-off-by: Martin Schwidefsky

    Ingo Tuchscherer
     
  • Pull more s390 updates from Martin Schwidefsky:
    "There is one larger patch for the AP bus code to make it work with the
    longer reset periods of the latest crypto cards.

    A new default configuration, a naming cleanup for SMP and a few fixes"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
    s390/kdump: fix compile for !SMP
    s390/kdump: fix nosmt kernel parameter
    s390: new default configuration
    s390/smp: cleanup core vs. cpu in the SCLP interface
    s390/smp: fix sigp cpu detection loop
    s390/zcrypt: Fixed reset and interrupt handling of AP queues
    s390/kdump: fix REGSET_VX_LOW vector register ELF notes
    s390/bpf: Fix backward jumps

    Linus Torvalds
     

26 Jun, 2015

1 commit

  • Pull block driver updates from Jens Axboe:
    "This contains:

    - a few race fixes for null_blk, from Akinobu Mita.

    - a series of fixes for mtip32xx, from Asai Thambi and Selvan Mani at
    Micron.

    - NVMe:
    * Fix for missing error return on allocation failure, from Axel
    Lin.

    * Code consolidation and cleanups from Christoph.

    * Memory barrier addition, syncing queue count and queue
    pointers. From Jon Derrick.

    * Various fixes from Keith, an addition to support user
    issue reset from sysfs or ioctl, and automatic namespace
    rescan.

    * Fix from Matias, avoiding losing some request flags when
    marking the request failfast.

    - small cleanups and sparse fixups for ps3vram. From Geert
    Uytterhoeven and Geoff Lavand.

    - s390/dasd dead code removal, from Jarod Wilson.

    - a set of fixes and optimizations for loop, from Ming Lei.

    - conversion to blkdev_reread_part() of loop, dasd, ndb. From Ming
    Lei.

    - updates to cciss. From Tomas Henzl"

    * 'for-4.2/drivers' of git://git.kernel.dk/linux-block: (44 commits)
    mtip32xx: Fix accessing freed memory
    block: nvme-scsi: Catch kcalloc failure
    NVMe: Fix IO for extended metadata formats
    nvme: don't overwrite req->cmd_flags on sync cmd
    mtip32xx: increase wait time for hba reset
    mtip32xx: fix minor number
    mtip32xx: remove unnecessary sleep in mtip_ftl_rebuild_poll()
    mtip32xx: fix crash on surprise removal of the drive
    mtip32xx: Abort I/O during secure erase operation
    mtip32xx: fix incorrectly setting MTIP_DDF_SEC_LOCK_BIT
    mtip32xx: remove unused variable 'port->allocated'
    mtip32xx: fix rmmod issue
    MAINTAINERS: Update ps3vram block driver
    block/ps3vram: Remove obsolete reference to MTD
    block/ps3vram: Fix sparse warnings
    NVMe: Automatic namespace rescan
    NVMe: Memory barrier before queue_count is incremented
    NVMe: add sysfs and ioctl controller reset
    null_blk: restart request processing on completion handler
    null_blk: prevent timer handler running on a different CPU where started
    ...

    Linus Torvalds
     

25 Jun, 2015

4 commits

  • It turned out that SIGP set-multi-threading can only be done once.
    Therefore switching to a different MT level after switching to
    sclp.mtid_prev in the dump case fails.

    As a symptom specifying the "nosmt" parameter currently fails for
    the kdump kernel and the kernel starts with multi-threading enabled.

    So fix this and issue diag 308 subcode 1 call after collecting the
    CPU states for the dump. Also enhance the diag308_reset() function to
    be usable also with enabled lowcore protection and prefix register != 0.
    After the reset it is possible to switch the MT level again. We have
    to do the reset very early in order not to kill the already initialized
    console. Therefore instead of kmalloc() the corresponding memblock
    functions have to be used. To avoid copying the sclp cpu code into
    sclp_early, we now use the simple sigp loop method for CPU detection.

    Signed-off-by: Michael Holzheu
    Signed-off-by: Martin Schwidefsky

    Michael Holzheu
     
  • The SCLP interface to query, configure and deconfigure CPUs actually
    operates on cores. For a machine without the multi-threading faciltiy
    a CPU and a core are equivalent but starting with System z13 a core
    can have multiple hardware threads, also referred to as logical CPUs.

    To avoid confusion replace the word 'cpu' with 'core' in the SCLP
    interface. Also replace MAX_CPU_ADDRESS with SCLP_MAX_CORES.
    The core-id is an 8-bit field, the maximum thread id is in the range
    0-31. The theoretical limit for the CPU address is therefore 8191.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • In case of request timeouts an AP queue reset will be triggered to
    recover and reinitialize the AP queue. The previous behavior was an
    immediate reset execution regardless of current/pending requests.
    Due to newly changed firmware behavior the reset may be delayed, based
    on the priority of pending request. The device driver's waiting time
    frame was limited, hence it did not received the reset response. As a
    consequence interrupts would not be enabled afterwards.

    The RAPQ (queue reset) and AQIC (interrupt control) commands will be
    treated fully asynchronous now. The device driver will check the reset and
    interrupt states periodically, thus it can handle the reinitialization
    properly.

    Signed-off-by: Ingo Tuchscherer
    Signed-off-by: Martin Schwidefsky

    Ingo Tuchscherer
     
  • Pull networking updates from David Miller:

    1) Add TX fast path in mac80211, from Johannes Berg.

    2) Add TSO/GRO support to ibmveth, from Thomas Falcon

    3) Move away from cached routes in ipv6, just like ipv4, from Martin
    KaFai Lau.

    4) Lots of new rhashtable tests, from Thomas Graf.

    5) Run ingress qdisc lockless, from Alexei Starovoitov.

    6) Allow servers to fetch TCP packet headers for SYN packets of new
    connections, for fingerprinting. From Eric Dumazet.

    7) Add mode parameter to pktgen, for testing receive. From Alexei
    Starovoitov.

    8) Cache access optimizations via simplifications of build_skb(), from
    Alexander Duyck.

    9) Move page frag allocator under mm/, also from Alexander.

    10) Add xmit_more support to hv_netvsc, from KY Srinivasan.

    11) Add a counter guard in case we try to perform endless reclassify
    loops in the packet scheduler.

    12) Extern flow dissector to be programmable and use it in new "Flower"
    classifier. From Jiri Pirko.

    13) AF_PACKET fanout rollover fixes, performance improvements, and new
    statistics. From Willem de Bruijn.

    14) Add netdev driver for GENEVE tunnels, from John W Linville.

    15) Add ingress netfilter hooks and filtering, from Pablo Neira Ayuso.

    16) Fix handling of epoll edge triggers in TCP, from Eric Dumazet.

    17) Add an ECN retry fallback for the initial TCP handshake, from Daniel
    Borkmann.

    18) Add tail call support to BPF, from Alexei Starovoitov.

    19) Add several pktgen helper scripts, from Jesper Dangaard Brouer.

    20) Add zerocopy support to AF_UNIX, from Hannes Frederic Sowa.

    21) Favor even port numbers for allocation to connect() requests, and
    odd port numbers for bind(0), in an effort to help avoid
    ip_local_port_range exhaustion. From Eric Dumazet.

    22) Add Cavium ThunderX driver, from Sunil Goutham.

    23) Allow bpf programs to access skb_iif and dev->ifindex SKB metadata,
    from Alexei Starovoitov.

    24) Add support for T6 chips in cxgb4vf driver, from Hariprasad Shenai.

    25) Double TCP Small Queues default to 256K to accomodate situations
    like the XEN driver and wireless aggregation. From Wei Liu.

    26) Add more entropy inputs to flow dissector, from Tom Herbert.

    27) Add CDG congestion control algorithm to TCP, from Kenneth Klette
    Jonassen.

    28) Convert ipset over to RCU locking, from Jozsef Kadlecsik.

    29) Track and act upon link status of ipv4 route nexthops, from Andy
    Gospodarek.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1670 commits)
    bridge: vlan: flush the dynamically learned entries on port vlan delete
    bridge: multicast: add a comment to br_port_state_selection about blocking state
    net: inet_diag: export IPV6_V6ONLY sockopt
    stmmac: troubleshoot unexpected bits in des0 & des1
    net: ipv4 sysctl option to ignore routes when nexthop link is down
    net: track link-status of ipv4 nexthops
    net: switchdev: ignore unsupported bridge flags
    net: Cavium: Fix MAC address setting in shutdown state
    drivers: net: xgene: fix for ACPI support without ACPI
    ip: report the original address of ICMP messages
    net/mlx5e: Prefetch skb data on RX
    net/mlx5e: Pop cq outside mlx5e_get_cqe
    net/mlx5e: Remove mlx5e_cq.sqrq back-pointer
    net/mlx5e: Remove extra spaces
    net/mlx5e: Avoid TX CQE generation if more xmit packets expected
    net/mlx5e: Avoid redundant dev_kfree_skb() upon NOP completion
    net/mlx5e: Remove re-assignment of wq type in mlx5e_enable_rq()
    net/mlx5e: Use skb_shinfo(skb)->gso_segs rather than counting them
    net/mlx5e: Static mapping of netdev priv resources to/from netdev TX queues
    net/mlx4_en: Use HW counters for rx/tx bytes/packets in PF device
    ...

    Linus Torvalds