1. 22 Mar, 2021 10 commits
    • Julian Wiedmann's avatar
      s390/qdio: let driver manage the QAOB · 396c1004
      Julian Wiedmann authored
      We are spending way too much effort on qdio-internal bookkeeping for
      QAOB management & caching, and it's still not robust. Once qdio's
      TX path has detached the QAOB from a PENDING buffer, we lost all
      track of it until it shows up in a CQ notification again. So if the
      device is torn down before that notification arrives, we leak the QAOB.
      
      Just have the driver take care of it, and simply pass down a QAOB if
      they want a TX with async-completion capability. For a buffer in PENDING
      state that requires the QAOB for final completion, qeth can now also try
      to recycle the buffer's QAOB rather than unconditionally freeing it.
      
      This also eliminates the qdio_outbuf_state array, which was only needed
      to transfer the aob->user1 tag from the driver to the qdio layer.
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Acked-by: default avatarBenjamin Block <bblock@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      396c1004
    • Niklas Schnelle's avatar
      s390/pci: move zpci_remove_device() to bus code · 95b3a8b4
      Niklas Schnelle authored
      The zpci_remove_device() function removes the device from the PCI common
      code core which is an operation dealing primarily with the zbus and PCI
      bus code. With that and to match an upcoming refactoring of the
      symmetric scanning part move it to the bus code.
      Reviewed-by: default avatarMatthew Rosato <mjrosato@linux.ibm.com>
      Signed-off-by: default avatarNiklas Schnelle <schnelle@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      95b3a8b4
    • Niklas Schnelle's avatar
      s390/pci: unify de-/configure for slots and events · 2631f6b6
      Niklas Schnelle authored
      A zPCI event with PEC 0x0301 for an existing zPCI device goes through
      the same actions as enable_slot(). Similarly a zPCI event with PEC
      0x0303 does the same steps as disable_slot().
      We can thus unify both actions as zpci_configure_device() respectively
      zpci_deconfigure_device().
      Reviewed-by: default avatarMatthew Rosato <mjrosato@linux.ibm.com>
      Signed-off-by: default avatarNiklas Schnelle <schnelle@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      2631f6b6
    • Vineeth Vijayan's avatar
      s390/cio: add CRW inject functionality · a4f17cc7
      Vineeth Vijayan authored
      This patch introduces the mechanism to inject artificial events to the
      CIO layer.
      
      One of the main-event type which triggers the CommonIO operations are
      Channel Report events. When a malfunction or other condition affecting
      channel-subsystem operation is recognized, a Channel Report Word
      (consisting of one or more CRWs) describing the condition is made
      pending for retrieval and analysis by the program. The CRW contains
      information concerning the identity and state of a facility following
      the detection of the malfunction or other condition.
      
      The patch introduces two debugfs interfaces which can be used to inject
      'artificial' events from the userspace. It is intended to provide an easy
      means to increase the test coverage for CIO code. And this functionality
      can be enabled via a new configuration option CONFIG_CIO_INJECT.
      
      The newly introduces debugfs interfaces can be used as mentioned below
      to generate different fake-events. To use the crw_inject, first we should
      enable it by using enable_inject interface.
      i.e
      
      echo 1 > /sys/kernel/debug/s390/cio/enable_inject
      
      After the first step, user can simulate CRW as follows:
      
      echo <solicited> <overflow> <chaining> <rsc> <ancillary> <erc> <rsid> \
                                     > /sys/kernel/debug/s390/cio/crw_inject
      
      Example:
      A permanent error ERC on CHPID 0x60 would look like this:
      
        echo 0 0 0 4 0 6 0x60 > /sys/kernel/debug/s390/cio/crw_inject
      
      and an initialized ERC on the same CHPID:
      
        echo 0 0 0 4 0 2 0x60 > /sys/kernel/debug/s390/cio/crw_inject
      Signed-off-by: default avatarVineeth Vijayan <vneethv@linux.ibm.com>
      Reviewed-by: default avatarPeter Oberparleiter <oberpar@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      a4f17cc7
    • Vineeth Vijayan's avatar
      s390/cio: introduce CIO debugfs directory · 64a715ab
      Vineeth Vijayan authored
      This patch introduces an s390 Common I/O layer debugfs directory that is
      intended to provide access to debugging-related CIO functions and data.
      The directory is created as /sys/kernel/debug/s390/cio
      Signed-off-by: default avatarVineeth Vijayan <vneethv@linux.ibm.com>
      Reviewed-by: default avatarPeter Oberparleiter <oberpar@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      64a715ab
    • Niklas Schnelle's avatar
      s390/pci: add zpci_event_hard_deconfigured() · dee60c0d
      Niklas Schnelle authored
      Extract the handling of PEC 0x0304 into a function and make sure we only
      attempt to disable the function if it is enabled. Also check for errors
      returned by zpci_disable_device() and leave the function alone if there
      are any.
      Reviewed-by: default avatarMatthew Rosato <mjrosato@linux.ibm.com>
      Signed-off-by: default avatarNiklas Schnelle <schnelle@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      dee60c0d
    • Niklas Schnelle's avatar
      s390/pci: deconfigure device on release · a9045c22
      Niklas Schnelle authored
      When zpci_release_device() is called on a zPCI function that is still
      configured it would not be deconfigured. Until now this hasn't caused
      any problems because zpci_zdev_put() is only ever called for devices
      in Standby or Reserved. Fix it by adding sclp_pci_deconfigure() to the
      switch when in Configured state.
      Reviewed-by: default avatarMatthew Rosato <mjrosato@linux.ibm.com>
      Signed-off-by: default avatarNiklas Schnelle <schnelle@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      a9045c22
    • Niklas Schnelle's avatar
      s390/pci: refactor zpci function states · f6576a1b
      Niklas Schnelle authored
      The current zdev->state mixes the configuration states supported by CLP
      with an additional Online state which is used inconsistently to include
      enabled zPCI functions which are not yet visible to the common PCI
      subsytem. In preparation for a clean separation between architected
      configuration states and fine grained function states remove the Online
      function state.
      
      Where we previously checked for Online it is more accurate to check if
      the function is enabled to avoid an edge case where a disabled device
      was still treated as Online. This also simplifies checks whether
      a function is configured as this is now directly reflected by its
      function state.
      Reviewed-by: default avatarMatthew Rosato <mjrosato@linux.ibm.com>
      Signed-off-by: default avatarNiklas Schnelle <schnelle@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      f6576a1b
    • Peter Oberparleiter's avatar
      s390/sclp: increase sclp console line length · 98ce70b7
      Peter Oberparleiter authored
      Kernel and console/TTY messages written to the SCLP line mode console
      are wrapped at 80 characters per line by the associated SCLP driver.
      This makes long lines of output difficult to read, and requires editing
      of wrapped lines copied from the output device.
      
      Neither the firmware interface used to access the SCLP console, nor the
      HMC "Operating System Messages" web interface that displays these
      messages require such a length limit. Also other operating systems such
      as z/VM do not impose similar limits on messages they emit to the same
      console device.
      
      This patch therefore increases the limit to 320 characters per line to
      make SCLP line mode console output more readable. As a result 99% of
      lines written during a typical boot will not be wrapped, compared to
      about 50% wrapped lines at 80 characters per line. Another positive
      side-effect of this change is that the HMC console interface is able to
      keep more messages in its history buffer due to fewer line-breaks being
      generated.
      
      In a worst case scenario this means that a 4k console buffer is emitted
      with the last ~400 bytes empty (320 text + 78 headers). This is more
      than offset by the fact that each line that is not truncated saves 78
      header bytes in the buffer. As a result the actual number of emitted
      buffers should be about the same as with the 80 character limit.
      
      This patch also removes the differentiation between line lengths of
      SCLP line mode output on z/VM and non-z/VM systems. While the z/VM
      hypervisor adds a prefix in front of each line ('xx: ' where xx is the
      number of the CPU issuing the message), adjusting Linux line lengths did
      not significantly increase readability of console output, and makes even
      less of a difference with longer lines.
      Signed-off-by: default avatarPeter Oberparleiter <oberpar@linux.ibm.com>
      Tested-by: default avatarNiklas Schnelle <schnelle@linux.ibm.com>
      Acked-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      98ce70b7
    • Janosch Frank's avatar
      s390/uv: add prot virt guest/host indication files · 37564ed8
      Janosch Frank authored
      Let's export the prot_virt_guest and prot_virt_host variables into the
      UV sysfs firmware interface to make them easily consumable by
      administrators.
      
      prot_virt_host being 1 indicates that we did the UV
      initialization (opt-in)
      
      prot_virt_guest being 1 indicates that the UV indicates the share and
      unshare ultravisor calls which is an indication that we are running as
      a protected guest.
      Signed-off-by: default avatarJanosch Frank <frankja@linux.ibm.com>
      Acked-by: default avatarChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      37564ed8
  2. 21 Mar, 2021 23 commits
  3. 20 Mar, 2021 7 commits
    • Thomas Gleixner's avatar
      genirq: Disable interrupts for force threaded handlers · 81e2073c
      Thomas Gleixner authored
      With interrupt force threading all device interrupt handlers are invoked
      from kernel threads. Contrary to hard interrupt context the invocation only
      disables bottom halfs, but not interrupts. This was an oversight back then
      because any code like this will have an issue:
      
      thread(irq_A)
        irq_handler(A)
          spin_lock(&foo->lock);
      
      interrupt(irq_B)
        irq_handler(B)
          spin_lock(&foo->lock);
      
      This has been triggered with networking (NAPI vs. hrtimers) and console
      drivers where printk() happens from an interrupt which interrupted the
      force threaded handler.
      
      Now people noticed and started to change the spin_lock() in the handler to
      spin_lock_irqsave() which affects performance or add IRQF_NOTHREAD to the
      interrupt request which in turn breaks RT.
      
      Fix the root cause and not the symptom and disable interrupts before
      invoking the force threaded handler which preserves the regular semantics
      and the usefulness of the interrupt force threading as a general debugging
      tool.
      
      For not RT this is not changing much, except that during the execution of
      the threaded handler interrupts are delayed until the handler
      returns. Vs. scheduling and softirq processing there is no difference.
      
      For RT kernels there is no issue.
      
      Fixes: 8d32a307 ("genirq: Provide forced interrupt threading")
      Reported-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Reviewed-by: default avatarJohan Hovold <johan@kernel.org>
      Acked-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Link: https://lore.kernel.org/r/20210317143859.513307808@linutronix.de
      81e2073c
    • Linus Torvalds's avatar
      Merge tag 'riscv-for-linus-5.12-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux · 812da4d3
      Linus Torvalds authored
      Pull RISC-V fixes from Palmer Dabbelt:
       "A handful of fixes for 5.12:
      
         - fix the SBI remote fence numbers for hypervisor fences, which had
           been transcribed in the wrong order in Linux. These fences are only
           used with the KVM patches applied.
      
         - fix a whole host of build warnings, these should have no functional
           change.
      
         - fix init_resources() to prevent an off-by-one error from causing an
           out-of-bounds array reference. This was manifesting during boot on
           vexriscv.
      
         - ensure the KASAN mappings are visible before proceeding to use
           them"
      
      * tag 'riscv-for-linus-5.12-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux:
        riscv: Correct SPARSEMEM configuration
        RISC-V: kasan: Declare kasan_shallow_populate() static
        riscv: Ensure page table writes are flushed when initializing KASAN vmalloc
        RISC-V: Fix out-of-bounds accesses in init_resources()
        riscv: Fix compilation error with Canaan SoC
        ftrace: Fix spelling mistake "disabed" -> "disabled"
        riscv: fix bugon.cocci warnings
        riscv: process: Fix no prototype for arch_dup_task_struct
        riscv: ftrace: Use ftrace_get_regs helper
        riscv: process: Fix no prototype for show_regs
        riscv: syscall_table: Reduce W=1 compilation warnings noise
        riscv: time: Fix no prototype for time_init
        riscv: ptrace: Fix no prototype warnings
        riscv: sbi: Fix comment of __sbi_set_timer_v01
        riscv: irq: Fix no prototype warning
        riscv: traps: Fix no prototype warnings
        RISC-V: correct enum sbi_ext_rfence_fid
      812da4d3
    • Linus Torvalds's avatar
      Merge tag '5.12-rc3-smb3' of git://git.samba.org/sfrench/cifs-2.6 · bfdc4aa9
      Linus Torvalds authored
      Pull cifs fixes from Steve French:
       "Five cifs/smb3 fixes - three for stable, including an important ACL
        fix and security signature fix"
      
      * tag '5.12-rc3-smb3' of git://git.samba.org/sfrench/cifs-2.6:
        cifs: fix allocation size on newly created files
        cifs: warn and fail if trying to use rootfs without the config option
        fs/cifs/: fix misspellings using codespell tool
        cifs: Fix preauth hash corruption
        cifs: update new ACE pointer after populate_new_aces.
      bfdc4aa9
    • Linus Torvalds's avatar
      Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · af97713d
      Linus Torvalds authored
      Pull SCSI fixes from James Bottomley:
       "Eight fixes, all in drivers, all fairly minor either being fixes in
        error legs, memory leaks on teardown, context errors or semantic
        problems"
      
      * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
        scsi: mpt3sas: Do not use GFP_KERNEL in atomic context
        scsi: ufs: ufs-mediatek: Correct operator & -> &&
        scsi: sd_zbc: Update write pointer offset cache
        scsi: lpfc: Fix some error codes in debugfs
        scsi: qla2xxx: Fix broken #endif placement
        scsi: st: Fix a use after free in st_open()
        scsi: myrs: Fix a double free in myrs_cleanup()
        scsi: ibmvfc: Free channel_setup_buf during device tear down
      af97713d
    • Linus Torvalds's avatar
      Merge tag 'zonefs-5.12-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/zonefs · 1c273e10
      Linus Torvalds authored
      Pull zonefs fixes from Damien Le Moal:
      
       - fix inode write open reference count (Chao)
      
       - Fix wrong write offset for asynchronous O_APPEND writes (me)
      
       - Prevent use of sequential zone file as swap files (me)
      
      * tag 'zonefs-5.12-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/zonefs:
        zonefs: fix to update .i_wr_refcnt correctly in zonefs_open_zone()
        zonefs: Fix O_APPEND async write handling
        zonefs: prevent use of seq files as swap file
      1c273e10
    • Linus Torvalds's avatar
      Merge tag 'block-5.12-2021-03-19' of git://git.kernel.dk/linux-block · d626c692
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
       "Just an NVMe pull request this week:
      
         - fix tag allocation for keep alive
      
         - fix a unit mismatch for the Write Zeroes limits
      
         - various TCP transport fixes (Sagi Grimberg, Elad Grupi)
      
         - fix iosqes and iocqes validation for discovery controllers (Sagi Grimberg)"
      
      * tag 'block-5.12-2021-03-19' of git://git.kernel.dk/linux-block:
        nvmet-tcp: fix kmap leak when data digest in use
        nvmet: don't check iosqes,iocqes for discovery controllers
        nvme-rdma: fix possible hang when failing to set io queues
        nvme-tcp: fix possible hang when failing to set io queues
        nvme-tcp: fix misuse of __smp_processor_id with preemption enabled
        nvme-tcp: fix a NULL deref when receiving a 0-length r2t PDU
        nvme: fix Write Zeroes limitations
        nvme: allocate the keep alive request using BLK_MQ_REQ_NOWAIT
        nvme: merge nvme_keep_alive into nvme_keep_alive_work
        nvme-fabrics: only reserve a single tag
      d626c692
    • Linus Torvalds's avatar
      Merge tag 'io_uring-5.12-2021-03-19' of git://git.kernel.dk/linux-block · 0ada2dad
      Linus Torvalds authored
      Pull io_uring fixes from Jens Axboe:
       "Quieter week this time, which was both expected and desired. About
        half of the below is fixes for this release, the other half are just
        fixes in general. In detail:
      
         - Fix the freezing of IO threads, by making the freezer not send them
           fake signals. Make them freezable by default.
      
         - Like we did for personalities, move the buffer IDR to xarray. Kills
           some code and avoids a use-after-free on teardown.
      
         - SQPOLL cleanups and fixes (Pavel)
      
         - Fix linked timeout race (Pavel)
      
         - Fix potential completion post use-after-free (Pavel)
      
         - Cleanup and move internal structures outside of general kernel view
           (Stefan)
      
         - Use MSG_SIGNAL for send/recv from io_uring (Stefan)"
      
      * tag 'io_uring-5.12-2021-03-19' of git://git.kernel.dk/linux-block:
        io_uring: don't leak creds on SQO attach error
        io_uring: use typesafe pointers in io_uring_task
        io_uring: remove structures from include/linux/io_uring.h
        io_uring: imply MSG_NOSIGNAL for send[msg]()/recv[msg]() calls
        io_uring: fix sqpoll cancellation via task_work
        io_uring: add generic callback_head helpers
        io_uring: fix concurrent parking
        io_uring: halt SQO submission on ctx exit
        io_uring: replace sqd rw_semaphore with mutex
        io_uring: fix complete_post use ctx after free
        io_uring: fix ->flags races by linked timeouts
        io_uring: convert io_buffer_idr to XArray
        io_uring: allow IO worker threads to be frozen
        kernel: freezer should treat PF_IO_WORKER like PF_KTHREAD for freezing
      0ada2dad