From: Eric Farman Date: Thu, 18 Apr 2019 18:26:15 +0000 (+0200) Subject: vfio/ccw: allow non-zero storage keys X-Git-Tag: v6.6.17~5518^2~116 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=155a4321c117e29d174893127ae84cd84cacf0f3;p=platform%2Fkernel%2Flinux-rpi.git vfio/ccw: allow non-zero storage keys Currently, vfio-ccw copies the ORB from the io_region to the channel_program struct being built. It then adjusts various pieces of that ORB to the values needed to be used by the SSCH issued by vfio-ccw in the host. This includes setting the subchannel key to the default, presumably because Linux doesn't do anything with non-zero storage keys itself. But it seems wrong to convert every I/O to the default key if the guest itself requested a non-zero subchannel (access) key. Any channel program that sets a non-zero key would expect the same key returned in the SCSW of the IRB, not zero, so best to allow that to occur unimpeded. Signed-off-by: Eric Farman Reviewed-by: Matthew Rosato Signed-off-by: Heiko Carstens --- diff --git a/drivers/s390/cio/vfio_ccw_cp.c b/drivers/s390/cio/vfio_ccw_cp.c index a0060ef..268a902 100644 --- a/drivers/s390/cio/vfio_ccw_cp.c +++ b/drivers/s390/cio/vfio_ccw_cp.c @@ -836,7 +836,6 @@ union orb *cp_get_orb(struct channel_program *cp, struct subchannel *sch) orb->cmd.intparm = (u32)virt_to_phys(sch); orb->cmd.fmt = 1; - orb->cmd.key = PAGE_DEFAULT_KEY >> 4; if (orb->cmd.lpm == 0) orb->cmd.lpm = sch->lpm;