The driver imposes an arbitrary one second timeout on virtio requests, but the specification doesn't prevent the virtio device from taking longer to process requests, so remove this timeout to support all systems and device implementations. Fixes: 3a29355a22c0275fe86 ("gpio: Add virtio-gpio driver") Signed-off-by: Vincent Whitchurch <vincent.whitchurch at axis.com> --- drivers/gpio/gpio-virtio.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/gpio/gpio-virtio.c b/drivers/gpio/gpio-virtio.c index 84f96b78f32a..9f4941bc5760 100644 --- a/drivers/gpio/gpio-virtio.c +++ b/drivers/gpio/gpio-virtio.c @@ -100,11 +100,7 @@ static int _virtio_gpio_req(struct virtio_gpio *vgpio, u16 type, u16 gpio, virtqueue_kick(vgpio->request_vq); mutex_unlock(&vgpio->lock); - if (!wait_for_completion_timeout(&line->completion, HZ)) { - dev_err(dev, "GPIO operation timed out\n"); - ret = -ETIMEDOUT; - goto out; - } + wait_for_completion(&line->completion); if (unlikely(res->status != VIRTIO_GPIO_STATUS_OK)) { dev_err(dev, "GPIO request failed: %d\n", gpio); -- 2.33.1
On Mon, Dec 20, 2021 at 02:06:56PM +0100, Vincent Whitchurch wrote:> The driver imposes an arbitrary one second timeout on virtio requests, > but the specification doesn't prevent the virtio device from taking > longer to process requests, so remove this timeout to support all > systems and device implementations. > > Fixes: 3a29355a22c0275fe86 ("gpio: Add virtio-gpio driver") > Signed-off-by: Vincent Whitchurch <vincent.whitchurch at axis.com>Acked-by: Michael S. Tsirkin <mst at redhat.com>> --- > drivers/gpio/gpio-virtio.c | 6 +----- > 1 file changed, 1 insertion(+), 5 deletions(-) > > diff --git a/drivers/gpio/gpio-virtio.c b/drivers/gpio/gpio-virtio.c > index 84f96b78f32a..9f4941bc5760 100644 > --- a/drivers/gpio/gpio-virtio.c > +++ b/drivers/gpio/gpio-virtio.c > @@ -100,11 +100,7 @@ static int _virtio_gpio_req(struct virtio_gpio *vgpio, u16 type, u16 gpio, > virtqueue_kick(vgpio->request_vq); > mutex_unlock(&vgpio->lock); > > - if (!wait_for_completion_timeout(&line->completion, HZ)) { > - dev_err(dev, "GPIO operation timed out\n"); > - ret = -ETIMEDOUT; > - goto out; > - } > + wait_for_completion(&line->completion); > > if (unlikely(res->status != VIRTIO_GPIO_STATUS_OK)) { > dev_err(dev, "GPIO request failed: %d\n", gpio); > -- > 2.33.1
On 20-12-21, 14:06, Vincent Whitchurch wrote:> The driver imposes an arbitrary one second timeout on virtio requests, > but the specification doesn't prevent the virtio device from taking > longer to process requests, so remove this timeout to support all > systems and device implementations. > > Fixes: 3a29355a22c0275fe86 ("gpio: Add virtio-gpio driver") > Signed-off-by: Vincent Whitchurch <vincent.whitchurch at axis.com> > --- > drivers/gpio/gpio-virtio.c | 6 +----- > 1 file changed, 1 insertion(+), 5 deletions(-) > > diff --git a/drivers/gpio/gpio-virtio.c b/drivers/gpio/gpio-virtio.c > index 84f96b78f32a..9f4941bc5760 100644 > --- a/drivers/gpio/gpio-virtio.c > +++ b/drivers/gpio/gpio-virtio.c > @@ -100,11 +100,7 @@ static int _virtio_gpio_req(struct virtio_gpio *vgpio, u16 type, u16 gpio, > virtqueue_kick(vgpio->request_vq); > mutex_unlock(&vgpio->lock); > > - if (!wait_for_completion_timeout(&line->completion, HZ)) { > - dev_err(dev, "GPIO operation timed out\n"); > - ret = -ETIMEDOUT; > - goto out; > - } > + wait_for_completion(&line->completion); > > if (unlikely(res->status != VIRTIO_GPIO_STATUS_OK)) { > dev_err(dev, "GPIO request failed: %d\n", gpio);Acked-by: Viresh Kumar <viresh.kumar at linaro.org> -- viresh