Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 43e317c1 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull s390 updates from Heiko Carstens:

 - Add ABI to kernel image file which allows e.g. the file utility to
   figure out the kernel version.

 - Wire up clone3 system call.

 - Add support for kasan bitops instrumentation.

 - uapi header cleanup: use __u{16,32,64} instead of uint{16,32,64}_t.

 - Provide proper ARCH_ZONE_DMA_BITS so the s390 DMA zone is correctly
   defined with 2 GB instead of the default value of 1 MB.

 - Farhan Ali leaves the group of vfio-ccw maintainers.

 - Various small vfio-ccw fixes.

 - Add missing locking for airq_areas array in virtio code.

 - Minor qdio improvements.

* tag 's390-5.3-3' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
  MAINTAINERS: vfio-ccw: Remove myself as the maintainer
  s390/mm: use shared variables for sysctl range check
  virtio/s390: fix race on airq_areas[]
  s390/dma: provide proper ARCH_ZONE_DMA_BITS value
  s390/kasan: add bitops instrumentation
  s390/bitops: make test functions return bool
  s390: wire up clone3 system call
  kbuild: enable arch/s390/include/uapi/asm/zcrypt.h for uapi header test
  s390: use __u{16,32,64} instead of uint{16,32,64}_t in uapi header
  s390/hypfs: fix a typo in the name of a function
  s390/qdio: restrict QAOB usage to IQD unicast queues
  s390/qdio: add sanity checks to the fast-requeue path
  s390: enable detection of kernel version from bzImage
  Documentation: fix vfio-ccw doc
  vfio-ccw: Update documentation for csch/hsch
  vfio-ccw: Don't call cp_free if we are processing a channel program
  vfio-ccw: Set pa_nr to 0 if memory allocation fails for pa_iova_pfn
  vfio-ccw: Fix memory leak and don't call cp_free in cp_init
  vfio-ccw: Fix misleading comment when setting orb.cmd.c64
parents 5efbd937 98abe022
Loading
Loading
Loading
Loading
+28 −3
Original line number Diff line number Diff line
@@ -180,6 +180,13 @@ The process of how these work together.
   add it to an iommu_group and a vfio_group. Then we could pass through
   the mdev to a guest.


VFIO-CCW Regions
----------------

The vfio-ccw driver exposes MMIO regions to accept requests from and return
results to userspace.

vfio-ccw I/O region
-------------------

@@ -205,6 +212,25 @@ irb_area stores the I/O result.

ret_code stores a return code for each access of the region.

This region is always available.

vfio-ccw cmd region
-------------------

The vfio-ccw cmd region is used to accept asynchronous instructions
from userspace::

  #define VFIO_CCW_ASYNC_CMD_HSCH (1 << 0)
  #define VFIO_CCW_ASYNC_CMD_CSCH (1 << 1)
  struct ccw_cmd_region {
         __u32 command;
         __u32 ret_code;
  } __packed;

This region is exposed via region type VFIO_REGION_SUBTYPE_CCW_ASYNC_CMD.

Currently, CLEAR SUBCHANNEL and HALT SUBCHANNEL use this region.

vfio-ccw operation details
--------------------------

@@ -306,9 +332,8 @@ Together with the corresponding work in QEMU, we can bring the passed
through DASD/ECKD device online in a guest now and use it as a block
device.

While the current code allows the guest to start channel programs via
START SUBCHANNEL, support for HALT SUBCHANNEL or CLEAR SUBCHANNEL is
not yet implemented.
The current code allows the guest to start channel programs via
START SUBCHANNEL, and to issue HALT SUBCHANNEL and CLEAR SUBCHANNEL.

vfio-ccw supports classic (command mode) channel I/O only. Transport
mode (HPF) is not supported.
+0 −1
Original line number Diff line number Diff line
@@ -13948,7 +13948,6 @@ F: drivers/pci/hotplug/s390_pci_hpc.c

S390 VFIO-CCW DRIVER
M:	Cornelia Huck <cohuck@redhat.com>
M:	Farhan Ali <alifm@linux.ibm.com>
M:	Eric Farman <farman@linux.ibm.com>
R:	Halil Pasic <pasic@linux.ibm.com>
L:	linux-s390@vger.kernel.org
+1 −1
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ CFLAGS_sclp_early_core.o += -I$(srctree)/drivers/s390/char

obj-y	:= head.o als.o startup.o mem_detect.o ipl_parm.o ipl_report.o
obj-y	+= string.o ebcdic.o sclp_early_core.o mem.o ipl_vmparm.o cmdline.o
obj-y	+= ctype.o text_dma.o
obj-y	+= version.o ctype.o text_dma.o
obj-$(CONFIG_PROTECTED_VIRTUALIZATION_GUEST)	+= uv.o
obj-$(CONFIG_RELOCATABLE)	+= machine_kexec_reloc.o
obj-$(CONFIG_RANDOMIZE_BASE)	+= kaslr.o
+1 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ void print_missing_facilities(void);
unsigned long get_random_base(unsigned long safe_addr);

extern int kaslr_enabled;
extern const char kernel_version[];

unsigned long read_ipl_report(unsigned long safe_offset);

+1 −0
Original line number Diff line number Diff line
@@ -361,6 +361,7 @@ ENTRY(startup_kdump)
	.quad	0			# INITRD_SIZE
	.quad	0			# OLDMEM_BASE
	.quad	0			# OLDMEM_SIZE
	.quad	kernel_version		# points to kernel version string

	.org	COMMAND_LINE
	.byte	"root=/dev/ram0 ro"
Loading