On Fri, Jun 28, 2024 at 06:37:38PM +0200, Eric Farman wrote: > The processing of a Transfer-In-Channel (TIC) CCW requires locating > the target of the CCW in the channel program, and updating the > address to reflect what will actually be sent to hardware. > > An error exists where the 64-bit virtual address is truncated to > 32-bits (variable "cda") when performing this math. Since s390 > addresses of that size are 31-bits, this leaves that additional > bit enabled such that the resulting I/O triggers a channel > program check. This shows up occasionally when booting a KVM > guest from a passthrough DASD device: ... > Fixes: bd36cfbbb9e1 ("s390/vfio_ccw_cp: use new address translation helpers") > Signed-off-by: Eric Farman <farman@xxxxxxxxxxxxx> > --- > > Notes: > v2: > - [HC] Fix dma32/int warning on make C=1 > - [HC] Rename cda variable to offset > - [HC] Fix similar bug in cp_update_scsw() > v1: https://lore.kernel.org/r/20240627200740.373192-1-farman@xxxxxxxxxxxxx/ > > drivers/s390/cio/vfio_ccw_cp.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) Reviewed-by: Heiko Carstens <hca@xxxxxxxxxxxxx>