Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp78196pxf; Wed, 10 Mar 2021 00:29:37 -0800 (PST) X-Google-Smtp-Source: ABdhPJzOhbtDGMWDtWR7t1M+6PnM6tirYBY7ULSvmG3vzkLDO8zAhg0eyuiKDvZos2+b4mReNzs1 X-Received: by 2002:a17:906:1352:: with SMTP id x18mr2337003ejb.545.1615364976924; Wed, 10 Mar 2021 00:29:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615364976; cv=none; d=google.com; s=arc-20160816; b=DicKCPccSeZEGuW43iKS07ijctwkNG+uqIykZcsEjVjNJQqi/BWvBxq1TLw5UQnR7G PDPpCi0Pd0+HCK/9qCxj2FSCk4L97puDLsJ6K0Fh6A5dCm/w0VyRWsRwcKto6p6yOKmX lBJI4VkN9UOBdgt83Kx84UMzQHV5S/d0BdkNrf+22+XccuV6brdiDdWOGBM2RzApnBWx GkQ8f7ryE8G7FsAgrmQsZkRfB2IXW8CXwevZ78/G/ZFBZUVDsfsPfY3H+dSgGLy36dTK kw7/GwJlHB7aKxBqkmNG4NIZNcoWfRuF/rIBGG7RXN6hmmop1k/D9eLpXXE/tZcTgIwO OuKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version; bh=aPiW+pKnuAm9zXHbAQ/JEmWCQkLt27xL8G2A9h7Y5gg=; b=oeIMq14wGUGnRfXUoM6l1/+CrGj+SYNnuwB68rnicWtmRf/Q+9etwmfJdf89vD4b/f yY2lFGII91QPbsqWokXASVOuPONLZmcM+nMLHvIoeEO3k9RD0NzG898QwXMzv5Ca9KxJ 9Qn7JrlsvTFftho/iPV7clU1ZlhBBI79QTYlTGaUxB86Slet0Gu7qOA3dAR4umdmJGHR mJ4TxgNwOo3eetWxOaIgKqVg7vOSibcL71QbpJWEeK2Atp+bf2snDU9EF1gOXdl7t83c U5DDAV0j9zq9tl2gp5bHTahr0gGn90Co82GJzhb7/LDK62nA+TwJsT1+RDSOHWunKe8I c8Fw== ARC-Authentication-Results: i=1; mx.google.com; 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 t12si10790999ejc.21.2021.03.10.00.29.14; Wed, 10 Mar 2021 00:29:36 -0800 (PST) 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; 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 S231362AbhCJI2K convert rfc822-to-8bit (ORCPT + 99 others); Wed, 10 Mar 2021 03:28:10 -0500 Received: from mout.kundenserver.de ([212.227.126.134]:50139 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229602AbhCJI17 (ORCPT ); Wed, 10 Mar 2021 03:27:59 -0500 Received: from mail-oi1-f182.google.com ([209.85.167.182]) by mrelayeu.kundenserver.de (mreue010 [213.165.67.97]) with ESMTPSA (Nemesis) id 1MgeXk-1lwIPx1h88-00h510; Wed, 10 Mar 2021 09:27:57 +0100 Received: by mail-oi1-f182.google.com with SMTP id v192so10653875oia.5; Wed, 10 Mar 2021 00:27:57 -0800 (PST) X-Gm-Message-State: AOAM5337ZYo7aHRu62aa9eXCXgLuKcU/kda7KYqYD+4GcjBCwWBxOVg2 s3PhQkJnPH9eTamxBbdKKdU/JTAcXJDa8W60kmo= X-Received: by 2002:aca:bf44:: with SMTP id p65mr1571024oif.11.1615364876081; Wed, 10 Mar 2021 00:27:56 -0800 (PST) MIME-Version: 1.0 References: <9a2086f37c0a62069b67c39a3f75941b78a0039c.1614749417.git.jie.deng@intel.com> <43b0842b-8b0f-1979-ed07-d6124e3a6b79@redhat.com> In-Reply-To: From: Arnd Bergmann Date: Wed, 10 Mar 2021 09:27:39 +0100 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v6] i2c: virtio: add a virtio i2c frontend driver To: Jason Wang Cc: Jie Deng , Linux I2C , virtualization@lists.linux-foundation.org, "linux-kernel@vger.kernel.org" , "Michael S. Tsirkin" , Wolfram Sang , Wolfram Sang , Andy Shevchenko , conghui.chen@intel.com, kblaiech@mellanox.com, jarkko.nikula@linux.intel.com, Sergey Semin , Mike Rapoport , loic.poulain@linaro.org, Tali Perry , =?UTF-8?Q?Uwe_Kleine=2DK=C3=B6nig?= , Bjorn Andersson , yu1.wang@intel.com, shuo.a.liu@intel.com, Viresh Kumar , Stefan Hajnoczi , Paolo Bonzini Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT X-Provags-ID: V03:K1:uNkXJ57CqaHfrf67v16xUK7HDRzqrdDYjE2JrZreTApXfNu7N44 FVna6gI24gg59qkwPFoV4prAGD8EyjPObh4Fw9f8NQOFL2AkdKNgPhgoSU10SrWXkENTSDd ka1X7dE8zHlPZiGcctRtzG+A7foEWr64ht8qoM74VKm46I2hQ+ndZufi5EOl4HXJwdOTuSB FlEloR8eK+eO1HaTTVHAA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:EHMUgJkB05Y=:d/1IC4jQHAhhSfSX60Xj6W gQtU7dagvkLxpJ49/NreYoeDnMPtLTDIJ/FoirVs/I4K2whFrelGq/v1r8VO8L8kN/wlauI57 X2BHg7FyPAbTKsEAbZD2CmIh6NrdOD6UhpvYFGlZoD4DGYi2e/TFElJgS52OIlwJimhr0SXD4 sf6d9qKXtgk4T+prV23K0YVKCrg0rZzxStKTung9icOqHN4unxXiR1iuEF8X5b0D/jQduQhEf oVd95q9HmdtHAgADkBU6TyMBt1Tx9ptSIBp9iNtrHLxZxDcHOWiBm//w6WQowJrQ9UXIW/mqh T8KEAy9Xs4B/QKYDW0t1RBitP40nqRc1SR1zuv6W5aonlwKogPm6hYfsK2ZW/btHZX5Hk1dxL LB0r87OOBgpKDIwEH8u5TC4sfmjpeIZ2hoV30IqcNBBxItbFZMINK8nPHNSVH Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Mar 10, 2021 at 4:59 AM Jason Wang wrote: > On 2021/3/10 10:22 上午, Jie Deng wrote: > > On 2021/3/4 17:15, Jason Wang wrote: > >> > >> > >>> + } > >>> + > >>> + if (msgs[i].flags & I2C_M_RD) > >>> + memcpy(msgs[i].buf, req->buf, msgs[i].len); > >> > >> > >> Sorry if I had asked this before but any rason not to use msg[i].buf > >> directly? > >> > >> > > The msg[i].buf is passed by the I2C core. I just noticed that these > > bufs are not > > always allocated by kmalloc. They may come from the stack, which may > > cause > > the check "sg_init_one -> sg_set_buf -> virt_addr_valid" to fail. > > Therefore the > > msg[i].buf is not suitable for direct use here. > > Right, stack is virtually mapped. Maybe there is (or should be) a way to let the i2c core code handle the bounce buffering in this case. This is surely not a problem that is unique to this driver, and I'm sure it has come up many times in the past. I see that there is a i2c_get_dma_safe_msg_buf() helper for this purpose, but it has to be called by the driver rather than the core, so the driver still needs to keep track of each address when it sends multiple i2c_msg at once, but maybe it can all be done inside the sg_table instead of yet another structure. At least this one avoids copying data that is marked with the I2C_M_DMA_SAFE flag. Arnd