On Tue, 16 Jun 2020 12:52:50 +0200
Pierre Morel <pmo...@linux.ibm.com> wrote:

> >>   int virtio_finalize_features(struct virtio_device *dev)
> >>   {
> >>    int ret = dev->config->finalize_features(dev);
> >> @@ -179,6 +184,10 @@ int virtio_finalize_features(struct virtio_device 
> >> *dev)
> >>    if (!virtio_has_feature(dev, VIRTIO_F_VERSION_1))
> >>            return 0;
> >>   
> >> +  if (arch_needs_iommu_platform(dev) &&
> >> +          !virtio_has_feature(dev, VIRTIO_F_IOMMU_PLATFORM))
> >> +          return -EIO;
> >> +  
> > 
> > Why EIO?  
> 
> Because I/O can not occur correctly?
> I am open to suggestions.

We use -ENODEV if feature when the device rejects the features we
tried to negotiate (see virtio_finalize_features()) and -EINVAL when
the F_VERSION_1 and the virtio-ccw revision ain't coherent (in
virtio_ccw_finalize_features()). Any of those seems more fitting
that EIO to me. BTW does the error code itself matter in any way,
or is it just OK vs some error?

Regards,
Halil

Reply via email to