Re: [PATCH v1 03/16] vfio/ccw: allow non-zero storage keys

Matthew Rosato
2022-12-15T20:55:09Z

On 11/21/22 4:40 PM, Eric Farman wrote:
> 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 <farman@linux.ibm.com>

Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com>

> ---
> drivers/s390/cio/vfio_ccw_cp.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/s390/cio/vfio_ccw_cp.c b/drivers/s390/cio/vfio_ccw_cp.c
> index a0060ef1119e..268a90252521 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;