1. 30 Aug, 2021 1 commit
  2. 26 Aug, 2021 4 commits
    • Alexander Gordeev's avatar
      s390/smp: do not use nodat_stack for secondary CPU start · d6be5d0a
      Alexander Gordeev authored
      The secondary CPU start C routine uses nodat_stack as a
      interim stack before finally switching to kernel_stack.
      Such scheme is superfluous, since the assembler restart
      interrupt handler (that secondary CPU starter is called
      from) does not need to use any stack for switching into
      DAT mode. Once DAT is on, any stack including virtually-
      mapped one could be used.
      
      Avoid the use of nodat_stack and smp_start_secondary()
      helper. Instead, initiate kernel_stack directly from
      the restart interrupt handler.
      Signed-off-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      d6be5d0a
    • Alexander Gordeev's avatar
      s390/smp: enable DAT before CPU restart callback is called · 915fea04
      Alexander Gordeev authored
      The restart interrupt is triggered whenever a secondary CPU is
      brought online, a remote function call dispatched from another
      CPU or a manual PSW restart is initiated and causes the system
      to kdump. The handling routine is always called with DAT turned
      off. It then initializes the stack frame and invokes a callback.
      
      The existing callbacks handle DAT as follows:
      
        * __do_restart() and __machine_kexec() turn in on upon entry;
        * __ipl_run(), __reipl_run() and __dump_run() do not turn it
          right away, but all of them call diag308() - which turns DAT
          on, but only if kasan is enabled;
      
      In addition to the described complexity all callbacks (and the
      functions they call) should avoid kasan instrumentation while
      DAT is off.
      
      This update enables DAT in the assembler restart handler and
      relieves any callbacks (which are mostly C functions) from
      dealing with DAT altogether.
      
      There are four types of CPU restart that initialize control
      registers in different ways:
      
        1. Start of secondary CPU on boot - control registers are
           inherited from the IPL CPU;
        2. Restart of online CPU - control registers of the CPU being
           restarted are kept;
        3. Hotplug of offline CPU - control registers are inherited
           from the starting CPU;
        4. Start of offline CPU triggered by manual PSW restart -
           the control registers are read from the absolute lowcore
           and contain the boot time IPL CPU values updated with all
           follow-up calls of smp_ctl_set_bit() and smp_ctl_clear_bit()
           routines;
      
      In first three cases contents of the control registers is the
      most recent. In the latter case control registers are good
      enough to facilitate successful completion of kdump operation.
      Suggested-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      Signed-off-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      915fea04
    • Heiko Carstens's avatar
      s390: update defconfigs · e7dc78d3
      Heiko Carstens authored
      Ingo Franzki reported that our defconfig and debug_config went out of
      sync with respect to DM_INTEGRITY. Fix it.
      Reported-by: default avatarIngo Franzki <ifranzki@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      e7dc78d3
    • Harald Freudenberger's avatar
      s390/ap: fix state machine hang after failure to enable irq · cabebb69
      Harald Freudenberger authored
      If for any reason the interrupt enable for an ap queue fails the
      state machine run for the queue returned wrong return codes to the
      caller. So the caller assumed interrupt support for this queue in
      enabled and thus did not re-establish the high resolution timer used
      for polling. In the end this let to a hang for the user space process
      waiting "forever" for the reply.
      
      This patch reworks these return codes to return correct indications
      for the caller to re-establish the timer when a queue runs without
      interrupt support.
      
      Please note that this is fixing a wrong behavior after a first
      failure (enable interrupt support for the queue) failed. However,
      looks like this occasionally happens on KVM systems.
      Signed-off-by: default avatarHarald Freudenberger <freude@linux.ibm.com>
      Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      cabebb69
  3. 25 Aug, 2021 21 commits
  4. 18 Aug, 2021 12 commits
  5. 05 Aug, 2021 2 commits