]> Git Repo - linux.git/commitdiff
Merge tag 's390-6.5-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
authorLinus Torvalds <[email protected]>
Tue, 27 Jun 2023 22:49:10 +0000 (15:49 -0700)
committerLinus Torvalds <[email protected]>
Tue, 27 Jun 2023 22:49:10 +0000 (15:49 -0700)
Pull s390 updates from Alexander Gordeev:

 - Fix the style of protected key API driver source: use x-mas tree for
   all local variable declarations

 - Rework protected key API driver to not use the struct pkey_protkey
   and pkey_clrkey anymore. Both structures have a fixed size buffer,
   but with the support of ECC protected key these buffers are not big
   enough. Use dynamic buffers internally and transparently for
   userspace

 - Add support for a new 'non CCA clear key token' with ECC clear keys
   supported: ECC P256, ECC P384, ECC P521, ECC ED25519 and ECC ED448.
   This makes it possible to derive a protected key from the ECC clear
   key input via PKEY_KBLOB2PROTK3 ioctl, while currently the only way
   to derive is via PCKMO instruction

 - The s390 PMU of PAI crypto and extension 1 NNPA counters use atomic_t
   for reference counting. Replace this with the proper data type
   refcount_t

 - Select ARCH_SUPPORTS_INT128, but limit this to clang for now, since
   gcc generates inefficient code, which may lead to stack overflows

 - Replace one-element array with flexible-array member in struct
   vfio_ccw_parent and refactor the rest of the code accordingly. Also,
   prefer struct_size() over sizeof() open- coded versions

 - Introduce OS_INFO_FLAGS_ENTRY pointing to a flags field and
   OS_INFO_FLAG_REIPL_CLEAR flag that informs a dumper whether the
   system memory should be cleared or not once dumped

 - Fix a hang when a user attempts to remove a VFIO-AP mediated device
   attached to a guest: add VFIO_DEVICE_GET_IRQ_INFO and
   VFIO_DEVICE_SET_IRQS IOCTLs and wire up the VFIO bus driver callback
   to request a release of the device

 - Fix calculation for R_390_GOTENT relocations for modules

 - Allow any user space process with CAP_PERFMON capability read and
   display the CPU Measurement facility counter sets

 - Rework large statically-defined per-CPU cpu_cf_events data structure
   and replace it with dynamically allocated structures created when a
   perf_event_open() system call is invoked or /dev/hwctr device is
   accessed

* tag 's390-6.5-1' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
  s390/cpum_cf: rework PER_CPU_DEFINE of struct cpu_cf_events
  s390/cpum_cf: open access to hwctr device for CAP_PERFMON privileged process
  s390/module: fix rela calculation for R_390_GOTENT
  s390/vfio-ap: wire in the vfio_device_ops request callback
  s390/vfio-ap: realize the VFIO_DEVICE_SET_IRQS ioctl
  s390/vfio-ap: realize the VFIO_DEVICE_GET_IRQ_INFO ioctl
  s390/pkey: add support for ecc clear key
  s390/pkey: do not use struct pkey_protkey
  s390/pkey: introduce reverse x-mas trees
  s390/zcore: conditionally clear memory on reipl
  s390/ipl: add REIPL_CLEAR flag to os_info
  vfio/ccw: use struct_size() helper
  vfio/ccw: replace one-element array with flexible-array member
  s390: select ARCH_SUPPORTS_INT128
  s390/pai_ext: replace atomic_t with refcount_t
  s390/pai_crypto: replace atomic_t with refcount_t

1  2 
arch/s390/Kconfig
arch/s390/kernel/ipl.c

diff --combined arch/s390/Kconfig
index 6dab9c1be508b9138ef7dde50db6db2ef9ff5a3a,0c1bfac08e0548dfe9a9f731ee015b47635ff7df..5b39918b7042b071601becf673e2b9f05b81ec7c
@@@ -117,6 -117,7 +117,7 @@@ config S39
        select ARCH_SUPPORTS_ATOMIC_RMW
        select ARCH_SUPPORTS_DEBUG_PAGEALLOC
        select ARCH_SUPPORTS_HUGETLBFS
+       select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 && CC_IS_CLANG
        select ARCH_SUPPORTS_NUMA_BALANCING
        select ARCH_SUPPORTS_PER_VMA_LOCK
        select ARCH_USE_BUILTIN_BSWAP
@@@ -469,11 -470,19 +470,11 @@@ config SCHED_SM
  config SCHED_MC
        def_bool n
  
 -config SCHED_BOOK
 -      def_bool n
 -
 -config SCHED_DRAWER
 -      def_bool n
 -
  config SCHED_TOPOLOGY
        def_bool y
        prompt "Topology scheduler support"
        select SCHED_SMT
        select SCHED_MC
 -      select SCHED_BOOK
 -      select SCHED_DRAWER
        help
          Topology scheduler support improves the CPU scheduler's decision
          making when dealing with machines that have multi-threading,
@@@ -708,6 -717,7 +709,6 @@@ config EADM_SC
  config VFIO_CCW
        def_tristate n
        prompt "Support for VFIO-CCW subchannels"
 -      depends on S390_CCW_IOMMU
        depends on VFIO
        select VFIO_MDEV
        help
  config VFIO_AP
        def_tristate n
        prompt "VFIO support for AP devices"
 -      depends on S390_AP_IOMMU && KVM
 +      depends on KVM
        depends on VFIO
        depends on ZCRYPT
        select VFIO_MDEV
diff --combined arch/s390/kernel/ipl.c
index f44f70de966115c64aa6286afb9bfe06f2543dc6,d57b02fdd329dda95f6cc367c75069883f080250..85a00d97a3143957ec58df4a6193b6ac7b3a6422
@@@ -176,6 -176,8 +176,8 @@@ static bool reipl_fcp_clear
  static bool reipl_ccw_clear;
  static bool reipl_eckd_clear;
  
+ static unsigned long os_info_flags;
  static inline int __diag308(unsigned long subcode, unsigned long addr)
  {
        union register_pair r1;
@@@ -1935,13 -1937,28 +1937,27 @@@ static struct shutdown_action __refdat
  
  static void dump_reipl_run(struct shutdown_trigger *trigger)
  {
 -      unsigned long ipib = (unsigned long) reipl_block_actual;
        struct lowcore *abs_lc;
        unsigned int csum;
  
+       /*
+        * Set REIPL_CLEAR flag in os_info flags entry indicating
+        * 'clear' sysfs attribute has been set on the panicked system
+        * for specified reipl type.
+        * Always set for IPL_TYPE_NSS and IPL_TYPE_UNKNOWN.
+        */
+       if ((reipl_type == IPL_TYPE_CCW && reipl_ccw_clear) ||
+           (reipl_type == IPL_TYPE_ECKD && reipl_eckd_clear) ||
+           (reipl_type == IPL_TYPE_FCP && reipl_fcp_clear) ||
+           (reipl_type == IPL_TYPE_NVME && reipl_nvme_clear) ||
+           reipl_type == IPL_TYPE_NSS ||
+           reipl_type == IPL_TYPE_UNKNOWN)
+               os_info_flags |= OS_INFO_FLAG_REIPL_CLEAR;
+       os_info_entry_add(OS_INFO_FLAGS_ENTRY, &os_info_flags, sizeof(os_info_flags));
        csum = (__force unsigned int)
               csum_partial(reipl_block_actual, reipl_block_actual->hdr.len, 0);
        abs_lc = get_abs_lowcore();
 -      abs_lc->ipib = ipib;
 +      abs_lc->ipib = __pa(reipl_block_actual);
        abs_lc->ipib_checksum = csum;
        put_abs_lowcore(abs_lc);
        dump_run(trigger);
This page took 0.086967 seconds and 4 git commands to generate.