Received: by 2002:a05:6a10:6006:0:0:0:0 with SMTP id w6csp1276258pxa; Fri, 28 Aug 2020 08:22:25 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx5kWOSqs2EHrCrU3AoHPbiie7smbG+AI76WmG26qAvgB+z+57zKQiMKHAsHMgLn0egw1Es X-Received: by 2002:a17:906:405a:: with SMTP id y26mr2289832ejj.339.1598628145376; Fri, 28 Aug 2020 08:22:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1598628145; cv=none; d=google.com; s=arc-20160816; b=GCVK/IdciOhkK2OJ6W4/+Ftm11urbV46716j1FrOdVxjx4Zx23/851ErNtMHvoOaJY McUqUi6ihi5ASZbhyxAcjV+0JtTdGmHw7vH8m1In1nZGVVpbpK6sgssndBn6mFvObX96 pMo2ZO5WUaHeCc/F79TDIuj87OKzRyQ/mOtwFgDYrGPmcSXmr1pH2z5JZTVWQXwhb2+B ke/wOR/R/0xgnCK+wfhOM2i2sphLLDUdjRzu/ieCM4ijx9EAmIz06nvBzgqLAGMwG1Hg RB/FCgx52iqkHmyuRr9VHq3TehGp7O00ZcpFJayI4tLqqUFNTzuWv+EmLGbqlQmWQnEY ugUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=rLp2qagswVisSwUhPji3X4e9+R7X4KPZn75PJ32/4eQ=; b=oy/Riz3VYhQ8lby236sqP43how8nT2xlu9ONTo25AQNxaRPUvOurSziw1SCgOSFF9l vx67QF0XysozPZbMoqeC02AgPDzfgxAYMqIKCmkhUNuxSlsyQ3X9feCxc3Q3z3z3tXZc XdMuvhmphQ8tt5UsGUQi/T35rQhpD6M0cpnWD+cA/hbw75O435BKL9OZDpXtlH8YFSLT rgsAppldlBXAVrouvONn+fMnmzxd7hpJNc/bGnvWu4KlsDu6rADJcvKONGipDPob7Y6S ShDoT1+iu2A/s8e6g3P9FjkMVCoPNQcU6SdE+w1CGBM5UshGg6zVr261YDLLbl9F+VNA tvbw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@vanguardiasur-com-ar.20150623.gappssmtp.com header.s=20150623 header.b=yVyoKyqZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n25si919722eji.174.2020.08.28.08.22.01; Fri, 28 Aug 2020 08:22:25 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@vanguardiasur-com-ar.20150623.gappssmtp.com header.s=20150623 header.b=yVyoKyqZ; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728217AbgH1PTB (ORCPT + 99 others); Fri, 28 Aug 2020 11:19:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35326 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728298AbgH1PSd (ORCPT ); Fri, 28 Aug 2020 11:18:33 -0400 Received: from mail-ej1-x641.google.com (mail-ej1-x641.google.com [IPv6:2a00:1450:4864:20::641]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 95279C061264 for ; Fri, 28 Aug 2020 08:18:32 -0700 (PDT) Received: by mail-ej1-x641.google.com with SMTP id e23so2002641ejb.4 for ; Fri, 28 Aug 2020 08:18:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vanguardiasur-com-ar.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=rLp2qagswVisSwUhPji3X4e9+R7X4KPZn75PJ32/4eQ=; b=yVyoKyqZXuU1lVddeyUQszPeCQWTOeASrF2dR5tgqlPZEMRiN1EKdCpNioEgwC8q+P r1M+d+u9uLB5f+JfYgP7r9bm31N7S6aPmsXAN6LULKHleMTNGDYH0NXJH3yWF8+tDBFp KRQtgV4CLEWbbMgZCmLJMKad1pOrKCKuttBA0pHba/Z7I83odZbMay96ESYh+/Be1lkZ /9lrs+4ePmk6pbiK5X9rWgsEyI2vcaQOt4GgRckN+FWWGtLqiC6rmVuEWgDpsyZVe4rj oGO6da4aGJsxImuUwY3Fw975MC0kkUgjhGZITIsdNfgdt0c0/PmvQhtC38bj1WfO4sCT G34g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=rLp2qagswVisSwUhPji3X4e9+R7X4KPZn75PJ32/4eQ=; b=mdIxhq0NLXEHP/uKd3Cziv2mJsefYNTuBhOZbCSx/s8mwf3Itfac71e06tYKZ0itDl KAqeFHpe7R6jeuaoCch82VUiXPbMFLAVvaFQkZUk4MmFG4GC+a2Grs9xr65hnfooppUE pvJ2pO7dmcilwP1Fycd+VL0tg85b/GKYqAW58Etoo23SQTGTCfxubTLWSFprOoEJuZNi O8dejkOfY+w1KhGjrQfRn9qu1J96WuNGqyb8amx0J3NavIpQudMxEj7rwxfOdezl507A TSfHa7xpfqwGWH895mkRSUeS65t2dVy3lyJ7Yf39FxhcPW8CZ6//OXIO3c9egtiquZM6 S07g== X-Gm-Message-State: AOAM531ypK3IdChZP5/YTpYIT8AJEgT3DsBk3qMATQDK4mYaiVIAZoul c10b7nLMTaVu0AsuD1EEv/Vi7UxSwcFgdKqz/d4/eA== X-Received: by 2002:a17:906:c10c:: with SMTP id do12mr2324911ejc.92.1598627911293; Fri, 28 Aug 2020 08:18:31 -0700 (PDT) MIME-Version: 1.0 References: <20200827124946.328700-1-gnurou@gmail.com> <20200827124946.328700-3-gnurou@gmail.com> In-Reply-To: <20200827124946.328700-3-gnurou@gmail.com> From: Ezequiel Garcia Date: Fri, 28 Aug 2020 12:18:20 -0300 Message-ID: Subject: Re: [PATCH v2 2/2] media: v4l2-mem2mem: simplify poll logic To: Alexandre Courbot Cc: Mauro Carvalho Chehab , Hans Verkuil , Nicolas Dufresne , linux-media , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 27 Aug 2020 at 09:50, Alexandre Courbot wrote: > > Factorize redundant checks into a single code block, remove unneeded > checks (a buffer in done_list is necessarily in the DONE or ERROR > state), and we end up with a much simpler version of this function. > > Signed-off-by: Alexandre Courbot This is really good, thanks! Reviewed-by: Ezequiel Garcia > --- > drivers/media/v4l2-core/v4l2-mem2mem.c | 26 +++++--------------------- > 1 file changed, 5 insertions(+), 21 deletions(-) > > diff --git a/drivers/media/v4l2-core/v4l2-mem2mem.c b/drivers/media/v4l2-core/v4l2-mem2mem.c > index fe90c3c0e4128..af8138c5d7ced 100644 > --- a/drivers/media/v4l2-core/v4l2-mem2mem.c > +++ b/drivers/media/v4l2-core/v4l2-mem2mem.c > @@ -841,7 +841,6 @@ static __poll_t v4l2_m2m_poll_for_data(struct file *file, > struct poll_table_struct *wait) > { > struct vb2_queue *src_q, *dst_q; > - struct vb2_buffer *src_vb = NULL, *dst_vb = NULL; > __poll_t rc = 0; > unsigned long flags; > > @@ -862,32 +861,17 @@ static __poll_t v4l2_m2m_poll_for_data(struct file *file, > list_empty(&dst_q->queued_list))) > return EPOLLERR; > > - spin_lock_irqsave(&dst_q->done_lock, flags); > - if (list_empty(&dst_q->done_list)) { > - /* > - * If the last buffer was dequeued from the capture queue, > - * return immediately. DQBUF will return -EPIPE. > - */ > - if (dst_q->last_buffer_dequeued) > - rc |= EPOLLIN | EPOLLRDNORM; > - } > - spin_unlock_irqrestore(&dst_q->done_lock, flags); > - > spin_lock_irqsave(&src_q->done_lock, flags); > if (!list_empty(&src_q->done_list)) > - src_vb = list_first_entry(&src_q->done_list, struct vb2_buffer, > - done_entry); > - if (src_vb && (src_vb->state == VB2_BUF_STATE_DONE > - || src_vb->state == VB2_BUF_STATE_ERROR)) > rc |= EPOLLOUT | EPOLLWRNORM; > spin_unlock_irqrestore(&src_q->done_lock, flags); > > spin_lock_irqsave(&dst_q->done_lock, flags); > - if (!list_empty(&dst_q->done_list)) > - dst_vb = list_first_entry(&dst_q->done_list, struct vb2_buffer, > - done_entry); > - if (dst_vb && (dst_vb->state == VB2_BUF_STATE_DONE > - || dst_vb->state == VB2_BUF_STATE_ERROR)) > + /* > + * If the last buffer was dequeued from the capture queue, signal > + * userspace. DQBUF(CAPTURE) will return -EPIPE. > + */ > + if (!list_empty(&dst_q->done_list) || dst_q->last_buffer_dequeued) > rc |= EPOLLIN | EPOLLRDNORM; > spin_unlock_irqrestore(&dst_q->done_lock, flags); > > -- > 2.28.0 >