Re: [PATCH v1] s390/virtio_ccw: Also suppress -EINVAL on device detach
From: Cornelia Huck
Date: Mon Jun 15 2026 - 10:59:04 EST
On Mon, Jun 15 2026, Halil Pasic <pasic@xxxxxxxxxxxxx> wrote:
> On Fri, 12 Jun 2026 17:54:07 +0200
> William Bezenah <wbezenah@xxxxxxxxxxxxx> wrote:
>
>> Since commit 8c58a229688c ("s390/cio: Do not unregister the
>> subchannel based on DNV"), subchannel behavior following a device
>> detach has been updated and results in -EINVAL being propagated
>> rather than -ENODEV, originating from ccw_device_start_timeout_key()
>> in cio/device_ops. In the end, the virtio driver has no ability to
>> react to the difference between device and subchannel states here,
>> and during detach, both -ENODEV and -EINVAL indicate the device
>> cannot be used and should not be treated as errors requiring
>> attention. Update error handling in virtio_ccw_del_vq() and
>> virtio_ccw_drop_indicator() to suppress -EINVAL in addition to
>> -ENODEV.
>
> Hi William!
>
> Are you saying that ccw_device_start() started returning -EINVAL
> since 8c58a229688c ("s390/cio: Do not unregister the subchannel based on
> DNV")? Or did I somehow read the paragraph wrong?
>
> The funcition ccw_device_start is documented to return:
> * Returns:
> * %0, if the operation was successful;
> * -%EBUSY, if the device is busy, or status pending;
> * -%EACCES, if no path specified in @lpm is operational;
> * -%ENODEV, if the device is not operational.
> and the commit message does not say a thing about introducing -EINVAL to
> the mix.
The function may return -EINVAL for non-enabled subchannels
(i.e. pmcw.ena == 0), maybe we get an all-zeroes schib with dnv == 0?
I'd expect it not to be enabled in that case anyway.