27 May, 2016

1 commit

  • Pull misc DAX updates from Vishal Verma:
    "DAX error handling for 4.7

    - Until now, dax has been disabled if media errors were found on any
    device. This enables the use of DAX in the presence of these
    errors by making all sector-aligned zeroing go through the driver.

    - The driver (already) has the ability to clear errors on writes that
    are sent through the block layer using 'DSMs' defined in ACPI 6.1.

    Other misc changes:

    - When mounting DAX filesystems, check to make sure the partition is
    page aligned. This is a requirement for DAX, and previously, we
    allowed such unaligned mounts to succeed, but subsequent
    reads/writes would fail.

    - Misc/cleanup fixes from Jan that remove unused code from DAX
    related to zeroing, writeback, and some size checks"

    * tag 'dax-misc-for-4.7' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
    dax: fix a comment in dax_zero_page_range and dax_truncate_page
    dax: for truncate/hole-punch, do zeroing through the driver if possible
    dax: export a low-level __dax_zero_page_range helper
    dax: use sb_issue_zerout instead of calling dax_clear_sectors
    dax: enable dax in the presence of known media errors (badblocks)
    dax: fallback from pmd to pte on error
    block: Update blkdev_dax_capable() for consistency
    xfs: Add alignment check for DAX mount
    ext2: Add alignment check for DAX mount
    ext4: Add alignment check for DAX mount
    block: Add bdev_dax_supported() for dax mount checks
    block: Add vfs_msg() interface
    dax: Remove redundant inode size checks
    dax: Remove pointless writeback from dax_do_io()
    dax: Remove zeroing from dax_io()
    dax: Remove dead zeroing code from fault handlers
    ext2: Avoid DAX zeroing to corrupt data
    ext2: Fix block zeroing in ext2_get_blocks() for DAX
    dax: Remove complete_unwritten argument
    DAX: move RADIX_DAX_ definitions to dax.c

    Linus Torvalds
     

21 May, 2016

1 commit

  • Pull tty and serial driver updates from Greg KH:
    "Here's the large TTY and Serial driver update for 4.7-rc1.

    A few new serial drivers are added here, and Peter has fixed a bunch
    of long-standing bugs in the tty layer and serial drivers as normal.
    Full details in the shortlog.

    All of these have been in linux-next for a while with no reported
    issues"

    * tag 'tty-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (88 commits)
    MAINTAINERS: 8250: remove website reference
    serial: core: Fix port mutex assert if lockdep disabled
    serial: 8250_dw: fix wrong logic in dw8250_check_lcr()
    tty: vt, finish looping on duplicate
    tty: vt, return error when con_startup fails
    QE-UART: add "fsl,t1040-ucc-uart" to of_device_id
    serial: mctrl_gpio: Drop support for out1-gpios and out2-gpios
    serial: 8250dw: Add device HID for future AMD UART controller
    Fix OpenSSH pty regression on close
    serial: mctrl_gpio: add IRQ locking
    serial: 8250: Integrate Fintek into 8250_base
    serial: mps2-uart: add support for early console
    serial: mps2-uart: add MPS2 UART driver
    dt-bindings: document the MPS2 UART bindings
    serial: sirf: Use generic uart-has-rtscts DT property
    serial: sirf: Introduce helper variable struct device_node *np
    serial: mxs-auart: Use generic uart-has-rtscts DT property
    serial: imx: Use generic uart-has-rtscts DT property
    doc: DT: Add Generic Serial Device Tree Bindings
    serial: 8250: of: Make tegra_serial_handle_break() static
    ...

    Linus Torvalds
     

20 May, 2016

1 commit

  • Pull KVM updates from Paolo Bonzini:
    "Small release overall.

    x86:
    - miscellaneous fixes
    - AVIC support (local APIC virtualization, AMD version)

    s390:
    - polling for interrupts after a VCPU goes to halted state is now
    enabled for s390
    - use hardware provided information about facility bits that do not
    need any hypervisor activity, and other fixes for cpu models and
    facilities
    - improve perf output
    - floating interrupt controller improvements.

    MIPS:
    - miscellaneous fixes

    PPC:
    - bugfixes only

    ARM:
    - 16K page size support
    - generic firmware probing layer for timer and GIC

    Christoffer Dall (KVM-ARM maintainer) says:
    "There are a few changes in this pull request touching things
    outside KVM, but they should all carry the necessary acks and it
    made the merge process much easier to do it this way."

    though actually the irqchip maintainers' acks didn't make it into the
    patches. Marc Zyngier, who is both irqchip and KVM-ARM maintainer,
    later acked at http://mid.gmane.org/573351D1.4060303@arm.com ('more
    formally and for documentation purposes')"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (82 commits)
    KVM: MTRR: remove MSR 0x2f8
    KVM: x86: make hwapic_isr_update and hwapic_irr_update look the same
    svm: Manage vcpu load/unload when enable AVIC
    svm: Do not intercept CR8 when enable AVIC
    svm: Do not expose x2APIC when enable AVIC
    KVM: x86: Introducing kvm_x86_ops.apicv_post_state_restore
    svm: Add VMEXIT handlers for AVIC
    svm: Add interrupt injection via AVIC
    KVM: x86: Detect and Initialize AVIC support
    svm: Introduce new AVIC VMCB registers
    KVM: split kvm_vcpu_wake_up from kvm_vcpu_kick
    KVM: x86: Introducing kvm_x86_ops VCPU blocking/unblocking hooks
    KVM: x86: Introducing kvm_x86_ops VM init/destroy hooks
    KVM: x86: Rename kvm_apic_get_reg to kvm_lapic_get_reg
    KVM: x86: Misc LAPIC changes to expose helper functions
    KVM: shrink halt polling even more for invalid wakeups
    KVM: s390: set halt polling to 80 microseconds
    KVM: halt_polling: provide a way to qualify wakeups during poll
    KVM: PPC: Book3S HV: Re-enable XICS fast path for irqfd-generated interrupts
    kvm: Conditionally register IRQ bypass consumer
    ...

    Linus Torvalds
     

19 May, 2016

3 commits

  • Pull SCSI updates from James Bottomley:
    "First round of SCSI updates for the 4.6+ merge window.

    This batch includes the usual quota of driver updates (bnx2fc, mp3sas,
    hpsa, ncr5380, lpfc, hisi_sas, snic, aacraid, megaraid_sas). There's
    also a multiqueue update for scsi_debug, assorted bug fixes and a few
    other minor updates (refactor of scsi_sg_pools into generic code, alua
    and VPD updates, and struct timeval conversions)"

    * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (138 commits)
    mpt3sas: Used "synchronize_irq()"API to synchronize timed-out IO & TMs
    mpt3sas: Set maximum transfer length per IO to 4MB for VDs
    mpt3sas: Updating mpt3sas driver version to 13.100.00.00
    mpt3sas: Fix initial Reference tag field for 4K PI drives.
    mpt3sas: Handle active cable exception event
    mpt3sas: Update MPI header to 2.00.42
    Revert "lpfc: Delete unnecessary checks before the function call mempool_destroy"
    eata_pio: missing break statement
    hpsa: Fix type ZBC conditional checks
    scsi_lib: Decode T10 vendor IDs
    scsi_dh_alua: do not fail for unknown VPD identification
    scsi_debug: use locally assigned naa
    scsi_debug: uuid for lu name
    scsi_debug: vpd and mode page work
    scsi_debug: add multiple queue support
    bfa: fix bfa_fcb_itnim_alloc() error handling
    megaraid_sas: Downgrade two success messages to info
    cxlflash: Fix to resolve dead-lock during EEH recovery
    scsi_debug: rework resp_report_luns
    scsi_debug: use pdt constants
    ...

    Linus Torvalds
     
  • Pull s390 updates from Martin Schwidefsky:
    "The s390 patches for the 4.7 merge window have the usual bug fixes and
    cleanups, and the following new features:

    - An interface for dasd driver to query if a volume is online to
    another operating system

    - A new ioctl for the dasd driver to verify the format for a range of
    tracks

    - Following the example of x86 the struct fpu is now allocated with
    the task_struct

    - The 'report_error' interface for the PCI bus to send an
    adapter-error notification from user space to the service element
    of the machine"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (29 commits)
    s390/vmem: remove unused function parameter
    s390/vmem: fix identity mapping
    s390: add missing include statements
    s390: add missing declarations
    s390: make couple of variables and functions static
    s390/cache: remove superfluous locking
    s390/cpuinfo: simplify locking and skip offline cpus early
    s390/3270: hangup the 3270 tty after a disconnect
    s390/3270: handle reconnect of a tty with a different size
    s390/3270: avoid endless I/O loop with disconnected 3270 terminals
    s390/3270: fix garbled output on 3270 tty view
    s390/3270: fix view reference counting
    s390/3270: add missing tty_kref_put
    s390/dumpstack: implement and use return_address()
    s390/cpum_sf: Remove superfluous SMP function call
    s390/cpum_cf: Remove superfluous SMP function call
    s390/Kconfig: make z196 the default processor type
    s390/sclp: avoid compile warning in sclp_pci_report
    s390/fpu: allocate 'struct fpu' with the task_struct
    s390/crypto: cleanup and move the header with the cpacf definitions
    ...

    Linus Torvalds
     
  • 1/ If a mapping overlaps a bad sector fail the request.

    2/ Do not opportunistically report more dax-capable capacity than is
    requested when errors present.

    Reviewed-by: Jeff Moyer
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Dan Williams
    [vishal: fix a conflict with system RAM collision patches]
    [vishal: add a 'size' parameter to ->direct_access]
    [vishal: fix a conflict with DAX alignment check patches]
    Signed-off-by: Vishal Verma

    Dan Williams
     

10 May, 2016

3 commits


09 May, 2016

2 commits


05 May, 2016

2 commits

  • kbuild test robot reported a build failure on s390.
    While at it, also fix missing conversion in the tilera driver.

    Fixes: 9b36627acecd5792 ("net: remove dev->trans_start")
    Reported-by: kbuild test robot
    Signed-off-by: Florian Westphal
    Signed-off-by: David S. Miller

    Florian Westphal
     
  • Replace all trans_start updates with netif_trans_update helper.
    change was done via spatch:

    struct net_device *d;
    @@
    - d->trans_start = jiffies
    + netif_trans_update(d)

    Compile tested only.

    Cc: user-mode-linux-devel@lists.sourceforge.net
    Cc: linux-xtensa@linux-xtensa.org
    Cc: linux1394-devel@lists.sourceforge.net
    Cc: linux-rdma@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Cc: MPT-FusionLinux.pdl@broadcom.com
    Cc: linux-scsi@vger.kernel.org
    Cc: linux-can@vger.kernel.org
    Cc: linux-parisc@vger.kernel.org
    Cc: linux-omap@vger.kernel.org
    Cc: linux-hams@vger.kernel.org
    Cc: linux-usb@vger.kernel.org
    Cc: linux-wireless@vger.kernel.org
    Cc: linux-s390@vger.kernel.org
    Cc: devel@driverdev.osuosl.org
    Cc: b.a.t.m.a.n@lists.open-mesh.org
    Cc: linux-bluetooth@vger.kernel.org
    Signed-off-by: Florian Westphal
    Acked-by: Felipe Balbi
    Acked-by: Mugunthan V N
    Acked-by: Antonio Quartulli
    Signed-off-by: David S. Miller

    Florian Westphal
     

04 May, 2016

4 commits

  • If a 3270 terminal is disconnected while the tty view is active
    the 3270 driver goes into an endless loop of failed I/O requests
    until the terminal is connected again.

    Add code to the raw3270 interrupt handler to check for unit checks
    due to failed I/O requests and put the device to sleep with the
    RAW3270_FLAGS_BUSY flag until a unsolicited device end interrupt
    indicates that the device can be used again. while we are at it
    simplify the 3270 irq handling and remove unnecessary code.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • The tty3270_update function tries to optimize the output stream by
    skipping the TO_SBA command to position the output offset if the
    TO_RA command of the previous line ended at the same offset.
    But some lines do not have the TO_RA at the end, namely those
    with a length equal to the number of columns.

    Make sure there is a TO_RA at the end of the previous line to avoid
    funny looking output.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • The tty3270_close function set tty->driver_data to NULL after the
    open count dropped to zero but tty3270_cleanup still needs the
    pointer to the tty3270 view to drop the reference count.

    Move the clearing of tty->driver_data to tty3270_cleanup and
    drop the unnecessary tty_port_tty_set calls in tty3270_install.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • The tty3270_resize_work functions acquires a reference to the tty
    to call tty_do_resize but fails to release the reference again.
    Add the missing tty_kref_put.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     

01 May, 2016

3 commits

  • Replace ASYNC_INITIALIZED bit in the tty_port::flags field with
    TTY_PORT_INITIALIZED bit in the tty_port::iflags field. Introduce helpers
    tty_port_set_initialized() and tty_port_initialized() to abstract
    atomic bit ops.

    Note: the transforms for test_and_set_bit() and test_and_clear_bit()
    are unnecessary as the state transitions are already mutually exclusive;
    the tty lock prevents concurrent open/close/hangup.

    Signed-off-by: Peter Hurley
    Signed-off-by: Greg Kroah-Hartman

    Peter Hurley
     
  • Replace ASYNC_SUSPENDED bit in the tty_port::flags field with
    TTY_PORT_SUSPENDED bit in the tty_port::iflags field. Introduce helpers
    tty_port_set_suspended() and tty_port_suspended() to abstract
    atomic bit ops.

    Signed-off-by: Peter Hurley
    Signed-off-by: Greg Kroah-Hartman

    Peter Hurley
     
  • Abstract TTY_IO_ERROR status test treewide with tty_io_error().
    NB: tty->flags uses atomic bit ops; replace non-atomic bit test
    with test_bit().

    Signed-off-by: Peter Hurley
    Signed-off-by: Greg Kroah-Hartman

    Peter Hurley
     

27 Apr, 2016

1 commit

  • The sclp_ctl_ioctl_sccb function uses two copy_from_user calls to
    retrieve the sclp request from user space. The first copy_from_user
    fetches the length of the request which is stored in the first two
    bytes of the request. The second copy_from_user gets the complete
    sclp request, but this copies the length field a second time.
    A malicious user may have changed the length in the meantime.

    Reported-by: Pengfei Wang
    Reviewed-by: Michael Holzheu
    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     

21 Apr, 2016

1 commit

  • Fix the initialization of a local variable to remove this warning:

    All warnings (new ones prefixed by >>):

    drivers/s390/char/sclp_pci.c: In function 'sclp_pci_report':
    >> drivers/s390/char/sclp_pci.c:127:9: warning: missing braces around initializer [-Wmissing-braces]
    struct sclp_req req = {0};
    ^
    drivers/s390/char/sclp_pci.c:127:9: warning: (near initialization for 'req.list') [-Wmissing-braces]

    Fixes: 12283a4035691697 "s390/sclp: add error notification command"
    Reported-by: kbuild test robot
    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     

16 Apr, 2016

7 commits

  • zfcp has its own mechanism for selective scanning, so revert to the
    original scanning behaviour to not confuse users.

    Fixes: 4e91e876e9b8b6eb4255aa0d690778a89d3f1d28
    Suggested-by: Benjamin Block
    Signed-off-by: Hannes Reinecke
    Reviewed-by: Benjamin Block
    Signed-off-by: Martin K. Petersen

    Hannes Reinecke
     
  • Implement new DASD IOCTL BIODASDCHECKFMT to check a range of tracks on a
    DASD volume for correct formatting. The following characteristics are
    checked:
    - Block size
    - ECKD key length
    - ECKD record ID
    - Number of records per track

    Signed-off-by: Jan Höppner
    Signed-off-by: Martin Schwidefsky

    Jan Höppner
     
  • Sort the sclp event type defines and use a macro to create the
    corresponding event type masks. In addition to that one unused
    type/mask pair is removed and another previously unused define
    is used now (it was probably unused/unknown because it didn't
    follow the EVTYP_X EVTYP_X_MASK convention).

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

    Sebastian Ott
     
  • Add SCLP event 24 "Adapter-error notification".

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

    Sebastian Ott
     
  • sclp commands only used by the PCI code shouldn't be build for
    !CONFIG_PCI. Instead of adding more ifdefs to sclp_cmd.c just
    move them to a new file.

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

    Sebastian Ott
     
  • With this feature, applications can query if a DASD volume is online
    to another operating system instances by checking the online status of
    all attached hosts from the storage server.

    Reviewed-by: Sebastian Ott
    Reviewed-by: Heiko Carstens
    Signed-off-by: Stefan Haberland
    Signed-off-by: Martin Schwidefsky

    Stefan Haberland
     
  • dcssblk_remove_store() holds the dcssblk_devices_sem semaphore while
    calling device_unregister(), which in turn tries to acquire the kernfs
    kn->dev_map rwsem for the device sysfs subtree. The same rwsem is also
    acquired when using the per-device sysfs attributes in the device sub-tree,
    and the attribute handlers then also acquire the dcssblk_devices_sem.

    This can lead to a deadlock when removing a DCSS while concurrently
    reading from / writing to one of its sysfs attributes. The following
    lockdep warning hinted towards the issue (CPU0 = dcssblk_remove_store,
    CPU1 = dcssblk_shared_store):

    [ 76.496047] Possible unsafe locking scenario:

    [ 76.496054] CPU0 CPU1
    [ 76.496059] ---- ----
    [ 76.496087] lock(&dcssblk_devices_sem);
    [ 76.496090] lock(s_active#175);
    [ 76.496106] lock(&dcssblk_devices_sem);
    [ 76.496110] lock(s_active#175);
    [ 76.496115]
    *** DEADLOCK ***

    Fix this by releasing the dcssblk_devices_sem semaphore, which only
    protects internal DCSS data, before calling device_unregister().

    Signed-off-by: Gerald Schaefer
    Signed-off-by: Martin Schwidefsky

    Gerald Schaefer
     

12 Apr, 2016

1 commit

  • On larger installations it is useful to disable automatic LUN scanning,
    and only add the required LUNs via udev rules. This can speed up bootup
    dramatically.

    This patch introduces a new scan module parameter value 'manual', which
    works like 'none', but can be overridden by setting the 'rescan' value
    from scsi_scan_target to 'SCSI_SCAN_MANUAL'. And it updates all
    relevant callers to set the 'rescan' value to 'SCSI_SCAN_MANUAL' if
    invoked via the 'scan' option in sysfs.

    Signed-off-by: Hannes Reinecke
    Reviewed-by: Ewan D. Milne
    Tested-by: Laurence Oberman
    Signed-off-by: Martin K. Petersen

    Hannes Reinecke
     

01 Apr, 2016

2 commits

  • When we refuse a non REQ_TYPE_FS request in the build request function
    we already hold the queue lock. Thus we must not call blk_end_request_all
    but __blk_end_request_all.

    Reported-by: Peter Oberparleiter
    Fixes: de9587a ('s390/scm_blk: fix endless loop for requests != REQ_TYPE_FS')
    Signed-off-by: Sebastian Ott
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • Pull s390 fixes from Martin Schwidefsky:
    - A proper fix for the locking issue in the dasd driver
    - Wire up the new preadv2 nad pwritev2 system calls
    - Add the mark_rodata_ro function and set DEBUG_RODATA=y
    - A few more bug fixes.

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
    s390: wire up preadv2/pwritev2 syscalls
    s390/pci: PCI function group 0 is valid for clp_query_pci_fn
    s390/crypto: provide correct file mode at device register.
    s390/mm: handle PTE-mapped tail pages in fast gup
    s390: add DEBUG_RODATA support
    s390: disable postinit-readonly for now
    s390/dasd: reorder lcu and device lock
    s390/cpum_sf: Fix cpu hotplug notifier transitions
    s390/cpum_cf: Fix missing cpu hotplug notifier transition

    Linus Torvalds
     

21 Mar, 2016

1 commit

  • Pull virtio/vhost updates from Michael Tsirkin:
    "New features, performance improvements, cleanups:

    - basic polling support for vhost
    - rework virtio to optionally use DMA API, fixing it on Xen
    - balloon stats gained a new entry
    - using the new napi_alloc_skb speeds up virtio net
    - virtio blk stats can now be read while another VCPU is busy
    inflating or deflating the balloon

    plus misc cleanups in various places"

    * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
    virtio_net: replace netdev_alloc_skb_ip_align() with napi_alloc_skb()
    vhost_net: basic polling support
    vhost: introduce vhost_vq_avail_empty()
    vhost: introduce vhost_has_work()
    virtio_balloon: Allow to resize and update the balloon stats in parallel
    virtio_balloon: Use a workqueue instead of "vballoon" kthread
    virtio/s390: size of SET_IND payload
    virtio/s390: use dev_to_virtio
    vhost: rename vhost_init_used()
    vhost: rename cross-endian helpers
    virtio_blk: VIRTIO_BLK_F_WCE->VIRTIO_BLK_F_FLUSH
    vring: Use the DMA API on Xen
    virtio_pci: Use the DMA API if enabled
    virtio_mmio: Use the DMA API if enabled
    virtio: Add improved queue allocation API
    virtio_ring: Support DMA APIs
    vring: Introduce vring_use_dma_api()
    s390/dma: Allow per device dma ops
    alpha/dma: use common noop dma ops
    dma: Provide simple noop dma ops

    Linus Torvalds
     

18 Mar, 2016

1 commit

  • Pull tty/serial updates from Greg KH:
    "Here's the big tty/serial driver pull request for 4.6-rc1.

    Lots of changes in here, Peter has been on a tear again, with lots of
    refactoring and bugs fixes, many thanks to the great work he has been
    doing. Lots of driver updates and fixes as well, full details in the
    shortlog.

    All have been in linux-next for a while with no reported issues"

    * tag 'tty-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: (220 commits)
    serial: 8250: describe CONFIG_SERIAL_8250_RSA
    serial: samsung: optimize UART rx fifo access routine
    serial: pl011: add mark/space parity support
    serial: sa1100: make sa1100_register_uart_fns a function
    tty: serial: 8250: add MOXA Smartio MUE boards support
    serial: 8250: convert drivers to use up_to_u8250p()
    serial: 8250/mediatek: fix building with SERIAL_8250=m
    serial: 8250/ingenic: fix building with SERIAL_8250=m
    serial: 8250/uniphier: fix modular build
    Revert "drivers/tty/serial: make 8250/8250_ingenic.c explicitly non-modular"
    Revert "drivers/tty/serial: make 8250/8250_mtk.c explicitly non-modular"
    serial: mvebu-uart: initial support for Armada-3700 serial port
    serial: mctrl_gpio: Add missing module license
    serial: ifx6x60: avoid uninitialized variable use
    tty/serial: at91: fix bad offset for UART timeout register
    tty/serial: at91: restore dynamic driver binding
    serial: 8250: Add hardware dependency to RT288X option
    TTY, devpts: document pty count limiting
    tty: goldfish: support platform_device with id -1
    drivers: tty: goldfish: Add device tree bindings
    ...

    Linus Torvalds
     

17 Mar, 2016

2 commits

  • Reorder lcu and device lock to get rid of the error-prone trylock
    mechanism.

    The locking order is lcu lock -> device lock.
    This protects against changes to the lcu device lists and enables us
    to iterate over the devices, take the cdev lock and make changes to
    the device structures.

    The complicated part is the summary unit check handler that gets an
    interrupt on one device of the lcu that leads to structural changes of
    the whole lcu itself. This work needs to be done even if devices on
    the lcu disappear. So a device independent worker is used.
    The old approach tried to update some lcu structures and set up the
    lcu worker in the interrupt context with the device lock held.
    But this forced the lock order "cdev lock -> lcu lock" that made it
    hard to have the lcu lock held and iterate over all devices and change
    them.

    The new approach is to schedule a device specific worker that gets
    out of the interrupt context and rid of the device lock for summary
    unit checks. This worker is able to take the lcu lock and schedule the
    lcu worker that updates all devices. The time between interrupt and
    worker execution is no problem because the devices in the lcu reject
    all I/O in this time with an appropriate error. The dasd driver can
    deal with this situation and re-drive the I/O later on.

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

    Stefan Haberland
     
  • Pull s390 updates from Martin Schwidefsky:

    - Add the CPU id for the new z13s machine

    - Add a s390 specific XOR template for RAID-5 checksumming based on the
    XC instruction. Remove all other alternatives, XC is always faster

    - The merge of our four different stack tracers into a single one

    - Tidy up the code related to page tables, several large inline
    functions are now out-of-line. Bloat-o-meter reports ~11K text size
    reduction

    - A binary interface for the priviledged CLP instruction to retrieve
    the hardware view of the installed PCI functions

    - Improvements for the dasd format code

    - Bug fixes and cleanups

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (31 commits)
    s390/pci: enforce fmb page boundary rule
    s390: fix floating pointer register corruption (again)
    s390/cpumf: add missing lpp magic initialization
    s390: Fix misspellings in comments
    s390/mm: split arch/s390/mm/pgtable.c
    s390/mm: uninline pmdp_xxx functions from pgtable.h
    s390/mm: uninline ptep_xxx functions from pgtable.h
    s390/pci: add ioctl interface for CLP
    s390: Use pr_warn instead of pr_warning
    s390/dasd: remove casts to dasd_*_private
    s390/dasd: Refactor dasd format functions
    s390/dasd: Simplify code in format logic
    s390/dasd: Improve dasd format code
    s390/percpu: remove this_cpu_cmpxchg_double_4
    s390/cpumf: Improve guest detection heuristics
    s390/fault: merge report_user_fault implementations
    s390/dis: use correct escape sequence for '%' character
    s390/kvm: simplify set_guest_storage_key
    s390/oprofile: add z13/z13s model numbers
    s390: add z13s model number to z13 elf platform
    ...

    Linus Torvalds
     

07 Mar, 2016

4 commits

  • Convert the uses of pr_warning to pr_warn so there are fewer
    uses of the old pr_warning.

    Miscellanea:

    o Align arguments
    o Coalesce formats

    Signed-off-by: Joe Perches
    Signed-off-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Joe Perches
     
  • Convert dasd_device.private to be a void pointer to get
    rid of a lot of explicit casts.

    Signed-off-by: Sebastian Ott
    Reviewed-by: Stefan Haberland
    Acked-by: Heiko Carstens
    Signed-off-by: Martin Schwidefsky

    Sebastian Ott
     
  • Prepare for new format checking function by renaming functions and
    moving reusable code to separate functions:

    - Move sanity checks into a new function and make it reusable.
    - Move common format code to a new function called
    dasd_eckd_format_process_data.
    - Create the generic function dasd_eckd_format_build_ccw_req, which
    itself will then decide what ccw request is being built according to
    the input data. (with upcoming functionality).

    Signed-off-by: Jan Höppner
    Signed-off-by: Martin Schwidefsky

    Jan Höppner
     
  • Currently, dasd_format is calling the format logic of a DASD discipline
    with PAV enabled. If that fails with an error code of -EAGAIN the value
    of retries is decremented and the discipline function is called with PAV
    turned off.

    The loop is supposed to try this up to 255 times until success. However,
    -EAGAIN can only occur once here and therefore the loop will never reach
    the 255 retries.

    So, replace the unnecessarily complicated loop logic and simply try again
    without PAV enabled in case of an -EAGAIN error.

    Signed-off-by: Jan Höppner
    Signed-off-by: Martin Schwidefsky

    Jan Höppner