15 Jul, 2019

3 commits

  • So we don't call try to call vfio_unpin_pages() incorrectly.

    Fixes: 0a19e61e6d4c ("vfio: ccw: introduce channel program interfaces")
    Signed-off-by: Farhan Ali
    Reviewed-by: Eric Farman
    Reviewed-by: Cornelia Huck
    Message-Id:
    Signed-off-by: Cornelia Huck

    Farhan Ali
     
  • We don't set cp->initialized to true so calling cp_free
    will just return and not do anything.

    Also fix a memory leak where we fail to free a ccwchain
    on an error.

    Fixes: 812271b910 ("s390/cio: Squash cp_free() and cp_unpin_free()")
    Signed-off-by: Farhan Ali
    Message-Id:
    Reviewed-by: Cornelia Huck
    Reviewed-by: Eric Farman
    Signed-off-by: Cornelia Huck

    Farhan Ali
     
  • The comment is misleading because it tells us that
    we should set orb.cmd.c64 before calling ccwchain_calc_length,
    otherwise the function ccwchain_calc_length would return an
    error. This is not completely accurate.

    We want to allow an orb without cmd.c64, and this is fine
    as long as the channel program does not use IDALs. But we do
    want to reject any channel program that uses IDALs and does
    not set the flag, which is what we do in ccwchain_calc_length.

    After we have done the ccw processing, we need to set cmd.c64,
    as we use IDALs for all translated channel programs.

    Also for better code readability let's move the setting of
    cmd.c64 within the non error path.

    Fixes: fb9e7880af35 ("vfio: ccw: push down unsupported IDA check")
    Signed-off-by: Farhan Ali
    Reviewed-by: Cornelia Huck
    Message-Id:
    Reviewed-by: Eric Farman
    Signed-off-by: Cornelia Huck

    Farhan Ali
     

12 Jul, 2019

21 commits

  • When current task is interrupted in-between stack frame allocation
    and backchain write instructions new stack frame backchain pointer
    is left uninitialized. That invalid backchain value is passed into
    outside_of_stack for sanity check. Make sure int overflow does not happen
    by subtracting stack_frame size from the stack "end" rather than adding
    it to "random" backchain value.

    Fixes: 41b0474c1b1c ("s390/unwind: introduce stack unwind API")
    Reviewed-by: Christian Borntraeger
    Signed-off-by: Vasily Gorbik

    Vasily Gorbik
     
  • The function ap_query_configuration is declared static and marked
    EXPORT_SYMBOL, which is at best an odd combination. Because the
    function is not used outside of the drivers/s390/crypto/ap_bus.c
    file it is defined in, this commit removes the EXPORT_SYMBOL() marking.

    Link: http://lkml.kernel.org/r/20190709122507.11158-1-efremov@linux.com
    Fixes: f1b0a4343c41 ("s390/zcrypt: Integrate ap_asm.h into include/asm/ap.h.")
    Fixes: 050349b5b71d ("s390/zcrypt: externalize AP config info query")
    Signed-off-by: Denis Efremov
    Reviewed-by: Harald Freudenberger
    Signed-off-by: Vasily Gorbik

    Denis Efremov
     
  • Provide an attribute to query the usage of mio instructions.

    Signed-off-by: Sebastian Ott
    Signed-off-by: Vasily Gorbik

    Sebastian Ott
     
  • Move enablement of mio addressing control from detect_machine_facilities
    to pci_base_init. detect_machine_facilities runs so early that the
    static branches have not been toggled yet, thus mio addressing control
    was always off. In pci_base_init we have to use the SMP aware
    ctl_set_bit though.

    Fixes: 833b441ec0f6 ("s390: enable processes for mio instructions")
    Signed-off-by: Sebastian Ott
    Signed-off-by: Vasily Gorbik

    Sebastian Ott
     
  • Use the correct bit for detection of the machine capability associated
    with the has_secure attribute. It is expected that the underlying
    platform (including hypervisors) unsets the bit when they don't provide
    secure ipl for their guests.

    Fixes: c9896acc7851 ("s390/ipl: Provide has_secure sysfs attribute")
    Cc: stable@vger.kernel.org # 5.2
    Signed-off-by: Philipp Rudo
    Reviewed-by: Christian Borntraeger
    Reviewed-by: Peter Oberparleiter
    Signed-off-by: Vasily Gorbik

    Philipp Rudo
     
  • vfio_ap_free_aqic_resources is called in two places:
    - during registration to have a "known state"
    - during interrupt disable

    We must not clear q->matrix_mdev in the registration phase as this will
    mess up the reference counting and can lead to some warning and other
    bugs.

    Fixes: ec89b55e3bce ("s390: ap: implement PAPQ AQIC interception in kernel")
    Reviewed-by: Halil Pasic
    Signed-off-by: Christian Borntraeger
    Signed-off-by: Vasily Gorbik

    Christian Borntraeger
     
  • Add the extended counter set definitions for s390 machine types
    8561 and 8262. They are identical with machine types 3906 and
    3907.

    Signed-off-by: Thomas Richter
    Signed-off-by: Vasily Gorbik

    Thomas Richter
     
  • The storage server issues three different types of out-of-space messages
    whenever the Extent Pool or Extent Repository space runs short. When a
    configured warning watermark is reached, the physical space is
    completeley exhausted, or the capacity constraints have been relieved, a
    message is received.

    A log entry for the sysadmin to react to is generated in any case. In
    case the physical space is completely exhausted, sense data that reads
    "no space left on device" is received. In this case, currently running
    I/O will be blocked until space has either been released or added to the
    extent pool, and a relieve message was received via an attention
    interrupt.

    Signed-off-by: Jan Höppner
    Reviewed-by: Stefan Haberland
    Signed-off-by: Vasily Gorbik

    Jan Höppner
     
  • ESE (Extent Space Efficient) volumes are thin-provisioned and therefore
    space is only occupied with real data. In order to make previously used
    space available for re-allocation again, discard support is enabled for
    ESE volumes allowing the DASD driver to release said space.

    Signed-off-by: Jan Höppner
    Reviewed-by: Stefan Haberland
    Signed-off-by: Vasily Gorbik

    Jan Höppner
     
  • There is now an ALIGN_DOWN macro available. Let's rather use kernel
    provided macros that do the things we want.

    Signed-off-by: Jan Höppner
    Reviewed-by: Stefan Haberland
    Signed-off-by: Vasily Gorbik

    Jan Höppner
     
  • ECKD, FBA, and the DIAG discipline use slightly different block layer
    settings. In preparation of even more diverse queue settings, make
    dasd_setup_queue() a discipline function.

    Signed-off-by: Jan Höppner
    Reviewed-by: Stefan Haberland
    Signed-off-by: Vasily Gorbik

    Jan Höppner
     
  • Userspace tools might have the need to release space for Extent Space
    Efficient (ESE) volumes when working with such a device.

    Provide the necessarry interface for such a task by implementing a new
    ioctl BIODASDRAS. The ioctl uses the format_data_t data structure for
    data input:

    typedef struct format_data_t {
    unsigned int start_unit; /* from track */
    unsigned int stop_unit; /* to track */
    unsigned int blksize; /* sectorsize */
    unsigned int intensity;
    } format_data_t;

    If the intensity is set to 0x40, start_unit and stop_unit are ignored
    and space for the entire volume is released. Otherwise, if intensity is
    set to 0, the respective range is released (if possible).

    Signed-off-by: Jan Höppner
    Reviewed-by: Stefan Haberland
    Signed-off-by: Vasily Gorbik

    Jan Höppner
     
  • There is dasd_sleep_on() and dasd_sleep_on_interruptible() to start CCW
    requests uninterruptible and interruptible. However, there is only
    dasd_sleep_on_queue() to start requests from CCW queues uninterruptible.

    Add dasd_sleep_on_queue_interruptible() to provide a way to start
    requests from CCW queues interruptible. _dasd_sleep_on_queue() already
    provides this functionality.

    Signed-off-by: Jan Höppner
    Reviewed-by: Stefan Haberland
    Signed-off-by: Vasily Gorbik

    Jan Höppner
     
  • The definition for the bit that removes the write permission for record
    zero when formatting was missing. Add it to complete the list.

    Signed-off-by: Jan Höppner
    Reviewed-by: Stefan Haberland
    Signed-off-by: Vasily Gorbik

    Jan Höppner
     
  • Signed-off-by: Jan Höppner
    Reviewed-by: Stefan Haberland
    Signed-off-by: Vasily Gorbik

    Jan Höppner
     
  • A dynamic formatting is issued whenever a write request returns with
    either a No Record Found error (Command Mode), Incorrect Length error
    (Transport Mode), or File Protected error (Transport Mode). All three
    cases mean that the tracks in question haven't been initialized in a
    desired format yet.

    The part of the volume that was tried to be written on is then formatted
    and the original request is re-queued.

    As the formatting will happen during normal I/O operations, it is quite
    likely that there won't be any memory available to build the respective
    request. Another two pages of memory are allocated per volume
    specifically for the dynamic formatting.

    The dasd_eckd_build_format() function is extended to make sure that the
    original startdev is reused. Also, all formatting and format check
    functions use the new memory pool exclusively now to reduce complexity.

    Read operations will always return zero data when unformatted areas are
    read.

    Signed-off-by: Jan Höppner
    Reviewed-by: Stefan Haberland
    Signed-off-by: Vasily Gorbik

    Jan Höppner
     
  • In order to work with Extent Space Efficient (ESE) volumes, certain
    viable information about those volumes and the corresponding extent
    pool (such as extent size, configured space, allocated space, etc.) can
    be provided.

    Use the CCW commands Volume Storage Query and Logical Configuration
    Query to receive detailed information about ESE volumes and the extent
    pool respectively. These information are made accessible via internal
    functions for subsequent users, and via sysfs attributes for userpsace
    usage.

    The new sysfs attributes reside in separate directories called capacity
    and extent_pool.

    attributes:
    ese:
    0/1 depending on whether the volume is an ESE volume

    Capacity related attributes:
    space_allocated:
    Space currently allocated by the volume (in cyl)
    space_configured:
    Remaining space in the extent pool (in cyl)
    logical_capacity:
    The entire addressable space for this volume (in cyl)

    Extent Pool related attributes:
    pool_id:
    ID of the extent pool the volume in question resides in
    pool_oos:
    Extent pool is out-of-space
    extent_size:
    Size of a single extent in this pool
    cap_at_warnlevel
    Extent pool capacity at warn level
    warn_threshold:
    Threshold at which percentage of remaining extent pool space a
    warning message is issued

    Signed-off-by: Jan Höppner
    Reviewed-by: Stefan Haberland
    Signed-off-by: Vasily Gorbik

    Jan Höppner
     
  • There are orders and sub-orders. Put them in different sections for a
    better overview.

    Signed-off-by: Jan Höppner
    Reviewed-by: Stefan Haberland
    Signed-off-by: Vasily Gorbik

    Jan Höppner
     
  • The disk layout and volume information of a DASD reside in the first two
    tracks of cylinder 0. When a DASD is set online, currently the first
    three tracks are read and analysed to confirm an expected layout.

    For CDL (Compatible Disk Layout) only count area data of the first track
    is evaluated and checked against expected key and data lengths. For LDL
    (Linux Disk Layout) the first and third track is evaluated. However,
    an LDL formatted volume is expected to be in the same format across all
    tracks. Checking the third track therefore doesn't have any more value
    than checking any other track at random.

    Now, an Extent Space Efficient (ESE) DASD is initialised by only
    formatting the first two tracks, as those tracks always contain all
    information necessarry.

    Checking the third track on an ESE volume will therefore most likely
    fail with a record not found error, as the third track will be empty.
    This in turn leads to the device being recognised with a volume size of
    0. Attempts to write volume information on the first two tracks then
    fail with "no space left on device" errors.

    Initialising the first three tracks for an ESE volume is not a viable
    solution, because the third track is already a regular track and could
    contain user data. With that there is potential for data corruption.

    Instead, always only analyse the first two tracks, as it is sufficiant
    for both CDL and LDL, and allow ESE volumes to be recognised as well.

    Signed-off-by: Jan Höppner
    Reviewed-by: Stefan Haberland
    Signed-off-by: Vasily Gorbik

    Jan Höppner
     
  • Commit 4d284cac76d0 ("[S390] Avoid excessive inlining.") removed
    bytes_per_record() which was the only user of the defines ECKD_C0 and
    ECKD_F*, and round_up_multiple(). Let's get rid of those.

    Signed-off-by: Jan Höppner
    Reviewed-by: Stefan Haberland
    Signed-off-by: Vasily Gorbik

    Jan Höppner
     
  • There are structs that have never been used. There are also two function
    prototypes which were forgotton in commit f9f8d02fae0d ("[S390] dasd:
    revert LCU optimization").

    Clean up and keep the header file tidy.

    Signed-off-by: Jan Höppner
    Reviewed-by: Stefan Haberland
    Signed-off-by: Vasily Gorbik

    Jan Höppner
     

09 Jul, 2019

3 commits

  • Pull s390 updates from Vasily Gorbik:

    - Improve stop_machine wait logic: replace cpu_relax_yield call in
    generic stop_machine function with a weak stop_machine_yield
    function. This is overridden on s390, which yields the current cpu to
    the neighbouring cpu after a couple of retries, instead of blindly
    giving up the cpu to the hipervisor. This significantly improves
    stop_machine performance on s390 in overcommitted scenarios.

    This includes common code changes which have been Acked by Peter
    Zijlstra and Thomas Gleixner.

    - Improve jump label transformation speed: transform jump labels
    without using stop_machine.

    - Refactoring of the vfio-ccw cp handling, simplifying the code and
    avoiding unneeded allocating/copying.

    - Various vfio-ccw fixes (ccw translation, state machine).

    - Add support for vfio-ap queue interrupt control in the guest. This
    includes s390 kvm changes which have been Acked by Christian
    Borntraeger.

    - Add protected virtualization support for virtio-ccw.

    - Enforce both CONFIG_SMP and CONFIG_HOTPLUG_CPU, which allows to
    remove some code which most likely isn't working at all, besides that
    s390 didn't even compile for !CONFIG_SMP.

    - Support for special flagged EP11 CPRBs for zcrypt.

    - Handle PCI devices with no support for new MIO instructions.

    - Avoid KASAN false positives in reworked stack unwinder.

    - Couple of fixes for the QDIO layer.

    - Convert s390 specific documentation to ReST format.

    - Let s390 crypto modules return -ENODEV instead of -EOPNOTSUPP if
    hardware is missing. This way our modules behave like most other
    modules and which is also what systemd's systemd-modules-load.service
    expects.

    - Replace defconfig with performance_defconfig, so there is one config
    file less to maintain.

    - Remove the SCLP call home device driver, which was never useful.

    - Cleanups all over the place.

    * tag 's390-5.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (83 commits)
    docs: s390: s390dbf: typos and formatting, update crash command
    docs: s390: unify and update s390dbf kdocs at debug.c
    docs: s390: restore important non-kdoc parts of s390dbf.rst
    vfio-ccw: Fix the conversion of Format-0 CCWs to Format-1
    s390/pci: correctly handle MIO opt-out
    s390/pci: deal with devices that have no support for MIO instructions
    s390: ap: kvm: Enable PQAP/AQIC facility for the guest
    s390: ap: implement PAPQ AQIC interception in kernel
    vfio: ap: register IOMMU VFIO notifier
    s390: ap: kvm: add PQAP interception for AQIC
    s390/unwind: cleanup unused READ_ONCE_TASK_STACK
    s390/kasan: avoid false positives during stack unwind
    s390/qdio: don't touch the dsci in tiqdio_add_input_queues()
    s390/qdio: (re-)initialize tiqdio list entries
    s390/dasd: Fix a precision vs width bug in dasd_feature_list()
    s390/cio: introduce driver_override on the css bus
    vfio-ccw: make convert_ccw0_to_ccw1 static
    vfio-ccw: Remove copy_ccw_from_iova()
    vfio-ccw: Factor out the ccw0-to-ccw1 transition
    vfio-ccw: Copy CCW data outside length calculation
    ...

    Linus Torvalds
     
  • Pull m68k updates from Geert Uytterhoeven:

    - switch to using the generic remapping DMA allocator

    - defconfig updates

    * tag 'm68k-for-v5.3-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
    m68k: Implement arch_dma_prep_coherent()
    m68k: Use the generic dma coherent remap allocator
    m68k: defconfig: Update defconfigs for v5.2-rc1

    Linus Torvalds
     
  • Pull arm64 updates from Catalin Marinas:

    - arm64 support for syscall emulation via PTRACE_SYSEMU{,_SINGLESTEP}

    - Wire up VM_FLUSH_RESET_PERMS for arm64, allowing the core code to
    manage the permissions of executable vmalloc regions more strictly

    - Slight performance improvement by keeping softirqs enabled while
    touching the FPSIMD/SVE state (kernel_neon_begin/end)

    - Expose a couple of ARMv8.5 features to user (HWCAP): CondM (new
    XAFLAG and AXFLAG instructions for floating point comparison flags
    manipulation) and FRINT (rounding floating point numbers to integers)

    - Re-instate ARM64_PSEUDO_NMI support which was previously marked as
    BROKEN due to some bugs (now fixed)

    - Improve parking of stopped CPUs and implement an arm64-specific
    panic_smp_self_stop() to avoid warning on not being able to stop
    secondary CPUs during panic

    - perf: enable the ARM Statistical Profiling Extensions (SPE) on ACPI
    platforms

    - perf: DDR performance monitor support for iMX8QXP

    - cache_line_size() can now be set from DT or ACPI/PPTT if provided to
    cope with a system cache info not exposed via the CPUID registers

    - Avoid warning on hardware cache line size greater than
    ARCH_DMA_MINALIGN if the system is fully coherent

    - arm64 do_page_fault() and hugetlb cleanups

    - Refactor set_pte_at() to avoid redundant READ_ONCE(*ptep)

    - Ignore ACPI 5.1 FADTs reported as 5.0 (infer from the
    'arm_boot_flags' introduced in 5.1)

    - CONFIG_RANDOMIZE_BASE now enabled in defconfig

    - Allow the selection of ARM64_MODULE_PLTS, currently only done via
    RANDOMIZE_BASE (and an erratum workaround), allowing modules to spill
    over into the vmalloc area

    - Make ZONE_DMA32 configurable

    * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (54 commits)
    perf: arm_spe: Enable ACPI/Platform automatic module loading
    arm_pmu: acpi: spe: Add initial MADT/SPE probing
    ACPI/PPTT: Add function to return ACPI 6.3 Identical tokens
    ACPI/PPTT: Modify node flag detection to find last IDENTICAL
    x86/entry: Simplify _TIF_SYSCALL_EMU handling
    arm64: rename dump_instr as dump_kernel_instr
    arm64/mm: Drop [PTE|PMD]_TYPE_FAULT
    arm64: Implement panic_smp_self_stop()
    arm64: Improve parking of stopped CPUs
    arm64: Expose FRINT capabilities to userspace
    arm64: Expose ARMv8.5 CondM capability to userspace
    arm64: defconfig: enable CONFIG_RANDOMIZE_BASE
    arm64: ARM64_MODULES_PLTS must depend on MODULES
    arm64: bpf: do not allocate executable memory
    arm64/kprobes: set VM_FLUSH_RESET_PERMS on kprobe instruction pages
    arm64/mm: wire up CONFIG_ARCH_HAS_SET_DIRECT_MAP
    arm64: module: create module allocations without exec permissions
    arm64: Allow user selection of ARM64_MODULE_PLTS
    acpi/arm64: ignore 5.1 FADTs that are reported as 5.0
    arm64: Allow selecting Pseudo-NMI again
    ...

    Linus Torvalds
     

08 Jul, 2019

1 commit


07 Jul, 2019

6 commits

  • Pull block fix from Jens Axboe:
    "Just a single fix for a patch from Greg KH, which reportedly break
    block debugfs locations for certain setups. Trivial enough that I
    think we should include it now, rather than wait and release 5.2 with
    it, since it's a regression in this series"

    * tag 'for-linus-20190706' of git://git.kernel.dk/linux-block:
    blk-mq: fix up placement of debugfs directory of queue files

    Linus Torvalds
     
  • Pull MIPS fixes from Paul Burton:
    "A few more MIPS fixes:

    - Fix a silly typo in virt_addr_valid which led to completely bogus
    behavior (that happened to stop tripping up hardened usercopy
    despite being broken).

    - Fix UART parity setup on AR933x systems.

    - A build fix for non-Linux build machines.

    - Have the 'all' make target build DTBs, primarily to fit in with the
    behavior of scripts/package/builddeb.

    - Handle an execution hazard in TLB exceptions that use KScratch
    registers, which could inadvertently clobber the $1 register on
    some generally higher-end out-of-order CPUs.

    - A MAINTAINERS update to fix the path to the NAND driver for Ingenic
    systems"

    * tag 'mips_fixes_5.2_2' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux:
    MAINTAINERS: Correct path to moved files
    MIPS: Add missing EHB in mtc0 -> mfc0 sequence.
    MIPS: have "plain" make calls build dtbs for selected platforms
    MIPS: fix build on non-linux hosts
    MIPS: ath79: fix ar933x uart parity mode
    MIPS: Fix bounds check virt_addr_valid

    Linus Torvalds
     
  • Pull dmaengine fixes from Vinod Koul:

    - bam_dma fix for completed descriptor count

    - fix for imx-sdma remove BD_INTR for channel0 and use-after-free on
    probe error path

    - endian bug fix in jz4780 IRQ handler

    * tag 'dmaengine-fix-5.2' of git://git.infradead.org/users/vkoul/slave-dma:
    dmaengine: qcom: bam_dma: Fix completed descriptors count
    dmaengine: imx-sdma: remove BD_INTR for channel0
    dmaengine: imx-sdma: fix use-after-free on probe error path
    dmaengine: jz4780: Fix an endian bug in IRQ handler

    Linus Torvalds
     
  • Pull SCSI fixes from James Bottomley:
    "Two iscsi fixes.

    One for an oops in the client which can be triggered by the server
    authentication protocol and the other in the target code which causes
    data corruption"

    * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
    scsi: iscsi: set auth_protocol back to NULL if CHAP_A value is not supported
    scsi: target/iblock: Fix overrun in WRITE SAME emulation

    Linus Torvalds
     
  • Pull vfs fixlet from Al Viro:
    "Fix bogus default y in Kconfig (VALIDATE_FS_PARSER)

    That thing should not be turned on by default, especially since it's
    not quiet in case it finds no problems. Geert has sent the obvious fix
    quite a few times, but it fell through the cracks"

    * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    fs: VALIDATE_FS_PARSER should default to n

    Linus Torvalds
     
  • When the blk-mq debugfs file creation logic was "cleaned up" it was
    cleaned up too much, causing the queue file to not be created in the
    correct location. Turns out the check for the directory being present
    is needed as if that has not happened yet, the files should not be
    created, and the function will be called later on in the initialization
    code so that the files can be created in the correct location.

    Fixes: 6cfc0081b046 ("blk-mq: no need to check return value of debugfs_create functions")
    Reported-by: Stephen Rothwell
    Cc: linux-block@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Jens Axboe

    Greg Kroah-Hartman
     

06 Jul, 2019

6 commits

  • This reverts commit 5fd4ca2d84b249f0858ce28cf637cf25b61a398f.

    Mikhail Gavrilov reports that it causes the VM_BUG_ON_PAGE() in
    __delete_from_swap_cache() to trigger:

    page:ffffd6d34dff0000 refcount:1 mapcount:1 mapping:ffff97812323a689 index:0xfecec363
    anon
    flags: 0x17fffe00080034(uptodate|lru|active|swapbacked)
    raw: 0017fffe00080034 ffffd6d34c67c508 ffffd6d3504b8d48 ffff97812323a689
    raw: 00000000fecec363 0000000000000000 0000000100000000 ffff978433ace000
    page dumped because: VM_BUG_ON_PAGE(entry != page)
    page->mem_cgroup:ffff978433ace000
    ------------[ cut here ]------------
    kernel BUG at mm/swap_state.c:170!
    invalid opcode: 0000 [#1] SMP NOPTI
    CPU: 1 PID: 221 Comm: kswapd0 Not tainted 5.2.0-0.rc2.git0.1.fc31.x86_64 #1
    Hardware name: System manufacturer System Product Name/ROG STRIX X470-I GAMING, BIOS 2202 04/11/2019
    RIP: 0010:__delete_from_swap_cache+0x20d/0x240
    Code: 30 65 48 33 04 25 28 00 00 00 75 4a 48 83 c4 38 5b 5d 41 5c 41 5d 41 5e 41 5f c3 48 c7 c6 2f dc 0f 8a 48 89 c7 e8 93 1b fd ff 0b 48 c7 c6 a8 74 0f 8a e8 85 1b fd ff 0f 0b 48 c7 c6 a8 7d 0f
    RSP: 0018:ffffa982036e7980 EFLAGS: 00010046
    RAX: 0000000000000021 RBX: 0000000000000040 RCX: 0000000000000006
    RDX: 0000000000000000 RSI: 0000000000000086 RDI: ffff97843d657900
    RBP: 0000000000000001 R08: ffffa982036e7835 R09: 0000000000000535
    R10: ffff97845e21a46c R11: ffffa982036e7835 R12: ffff978426387120
    R13: 0000000000000000 R14: ffffd6d34dff0040 R15: ffffd6d34dff0000
    FS: 0000000000000000(0000) GS:ffff97843d640000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00002cba88ef5000 CR3: 000000078a97c000 CR4: 00000000003406e0
    Call Trace:
    delete_from_swap_cache+0x46/0xa0
    try_to_free_swap+0xbc/0x110
    swap_writepage+0x13/0x70
    pageout.isra.0+0x13c/0x350
    shrink_page_list+0xc14/0xdf0
    shrink_inactive_list+0x1e5/0x3c0
    shrink_node_memcg+0x202/0x760
    shrink_node+0xe0/0x470
    balance_pgdat+0x2d1/0x510
    kswapd+0x220/0x420
    kthread+0xfb/0x130
    ret_from_fork+0x22/0x40

    and it's not immediately obvious why it happens. It's too late in the
    rc cycle to do anything but revert for now.

    Link: https://lore.kernel.org/lkml/CABXGCsN9mYmBD-4GaaeW_NrDu+FDXLzr_6x+XNxfmFV6QkYCDg@mail.gmail.com/
    Reported-and-bisected-by: Mikhail Gavrilov
    Suggested-by: Jan Kara
    Cc: Michal Hocko
    Cc: Vlastimil Babka
    Cc: Matthew Wilcox
    Cc: Kirill Shutemov
    Cc: William Kucharski
    Cc: Andrew Morton
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • Pull kvm fixes from Paolo Bonzini:
    "x86 bugfix patches and one compilation fix for ARM"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
    KVM: arm64/sve: Fix vq_present() macro to yield a bool
    KVM: LAPIC: Fix pending interrupt in IRR blocked by software disable LAPIC
    KVM: nVMX: Change KVM_STATE_NESTED_EVMCS to signal vmcs12 is copied from eVMCS
    KVM: nVMX: Allow restore nested-state to enable eVMCS when vCPU in SMM
    KVM: x86: degrade WARN to pr_warn_ratelimited

    Linus Torvalds
     
  • Pull mtf fixes from Miquel Raynal:

    - Fix the memory organization structure of a Macronix SPI-NAND chip.

    - Fix a build dependency wrongly described.

    - Fix the sunxi NAND driver for A23/A33 SoCs by (a) reverting the
    faulty commit introducing broken DMA support and (b) applying another
    commit bringing working DMA support.

    * tag 'mtd/fixes-for-5.2-final' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux:
    mtd: rawnand: sunxi: Add A23/A33 DMA support with extra MBUS configuration
    Revert "mtd: rawnand: sunxi: Add A23/A33 DMA support"
    mtd: rawnand: ingenic: Fix ingenic_ecc dependency
    mtd: spinand: Fix max_bad_eraseblocks_per_lun info in memorg

    Linus Torvalds
     
  • Pull i2c fixlet from Wolfram Sang:
    "I2C has a MAINTAINERS update which will be benfitial for developers,
    so let's add it right away"

    * 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
    i2c: tegra: Add Dmitry as a reviewer

    Linus Torvalds
     
  • Pull nfsd fixes from Bruce Fields:
    "Two more quick bugfixes for nfsd: fixing a regression causing mount
    failures on high-memory machines and fixing the DRC over RDMA"

    * tag 'nfsd-5.2-2' of git://linux-nfs.org/~bfields/linux:
    nfsd: Fix overflow causing non-working mounts on 1 TB machines
    svcrdma: Ignore source port when computing DRC hash

    Linus Torvalds
     
  • Allwinner NAND controllers can make use of DMA to enhance the I/O
    throughput thanks to ECC pipelining. DMA handling with A23/A33 NAND IP
    is a bit different than with the older SoCs, hence the introduction of
    a new compatible to handle:
    * the differences between register offsets,
    * the burst length change from 4 to minimum 8,
    * manage SRAM accesses through MBUS with extra configuration.

    Fixes: c49836f05aa1 ("mtd: rawnand: sunxi: Add A23/A33 DMA support")
    Signed-off-by: Miquel Raynal

    Miquel Raynal