Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp1077115pxf; Fri, 12 Mar 2021 01:02:07 -0800 (PST) X-Google-Smtp-Source: ABdhPJwQ+Rd66Sov3t8TkwSMU3RaxsPWy4qEX47RBL4C4GV8/o19IwTZZtS2qDUGWsN8Wns5CwAr X-Received: by 2002:aa7:c74a:: with SMTP id c10mr12714288eds.332.1615539727158; Fri, 12 Mar 2021 01:02:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615539727; cv=none; d=google.com; s=arc-20160816; b=tm2o62r98HqgmxdVfjiXKbS8fpuc3D9oHFJpedPzsBo16TM9fEHs/5GTks5DVMI9r1 aN/vndVrYEh3P9B9CuuLzA2xNG9JRyQq1mxKi+4an7+0MxIspOcKMAf4nuNqd8R/R7EB b//7gXN8DaaOZry91CTOogv5qtR9sRmjSf0sY7w5LPV+6GpXC5dW0wchAZwlAOBUjL/O /jURs4c0DuTSCdjuU++bQ+N2GTzQL0+XbJegqRf+0I43P5OGI/OJkbKAlzKQcnxyl7h+ OvFW3MkTFKU4mJIvd/PWD3uFf3HyiUdN1meXOp3p6iTkbkJNZL2mX/XwcxKoLnm9DCB7 jlag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version; bh=bobFZB03APQivgbvWpYtexc/rzod4yGjzlfDXJ392io=; b=IvGU/yCGYtHdiRJ6+V9dlpUHxMisVCiwbXWDSf+4/TaDKMYqnkrDA3prB3yNncicgy ZUd76trKuyXlDrrI8ODLErVFiPWGEVHy9nYFhhGHCtTMTxRIOf1HbQtJmtVxmC+SdtWu Av658gQENPG6aNEtiwRxcawi6LpGFOhP0k0oM/fz+1nIXlOXTC0eizzzTedgNsavbBfM AnEX+LTCeRqs4eVkpM6aDPimvL0WDdVi6/Z1dVNg4p6/DxH8j+T6He14go4988r2BDc0 D8aqpEQZP8x4I9PaJivdhxaDmYfe65MA+SM6vHzWjEednTGyr5/zEEU9SpR8WfFIt71C gAjw== 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 z16si3641541ejm.714.2021.03.12.01.01.44; Fri, 12 Mar 2021 01:02:07 -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 S232238AbhCLI63 (ORCPT + 99 others); Fri, 12 Mar 2021 03:58:29 -0500 Received: from mout.kundenserver.de ([212.227.17.10]:54957 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232417AbhCLI62 (ORCPT ); Fri, 12 Mar 2021 03:58:28 -0500 Received: from mail-ot1-f41.google.com ([209.85.210.41]) by mrelayeu.kundenserver.de (mreue109 [213.165.67.113]) with ESMTPSA (Nemesis) id 1MJV9S-1l0tqr2mls-00JnZX; Fri, 12 Mar 2021 09:58:25 +0100 Received: by mail-ot1-f41.google.com with SMTP id n23so3197499otq.1; Fri, 12 Mar 2021 00:58:25 -0800 (PST) X-Gm-Message-State: AOAM530PkZzpcsEQPnFctjd5G+eWcxsgDN+vpL2QvHTHgB2paMF/mS+7 umn13OL9KD1HWeLrOdmFpd9wEziBbEaAFp3i4iw= X-Received: by 2002:a9d:6341:: with SMTP id y1mr2560459otk.210.1615539504308; Fri, 12 Mar 2021 00:58:24 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Arnd Bergmann Date: Fri, 12 Mar 2021 09:58:08 +0100 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v7] i2c: virtio: add a virtio i2c frontend driver To: Jie Deng Cc: Linux I2C , virtualization@lists.linux-foundation.org, "linux-kernel@vger.kernel.org" , "Michael S. Tsirkin" , Wolfram Sang , Jason Wang , 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" X-Provags-ID: V03:K1:RFyjTb3yaqun4nVUoXXV5W+LErsIErLmJYY3Y7kXrAWUlL86sq8 NS8jaexwP6V/Q6iMD9AKDLCo5I+GYzLvfxDwYOflhdX55/syaQJioKnrKZ+l0USpDlzja/d PMhvIGNv0u5uWX92eucVtqnZoZTfkcPwIUnPCZlq934QYg8G1dG2YdYKJaLVTeCfQduOg7s ucfXQGKnJEf/mlGa02XSA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:xskgHq0dlKc=:SZWjWYx31qMPnqLDOIhkVe pl0TJSlk7dsk/psFwYStbxnYRLuW7P2nKOQvkhacj3ZYXoW3k994KhZtSSGA38B1JP0mmnM5E pFO6P5tthpX4PGSnrON242AW9HOvxQwzH9zjRaKOz4TUeWXWcnCpW1FdsWtiCYsimNu6vEUIu ROkL5CW6lqtHW3pF2WKgwMWwpEhwsjTYiSZkwR9g6/rDGFYc68PU04LSWFN6M7H03gzlbHFTV KhzmcDh0kd50/EbnGkTLycdeUm0OBJsOskraZTi6/n8fAdenTx8axvv2+QGymZXr7OHeJ7csg pBkSdD8+yVhFs7ktCHcHSiqnlQyyJqhZs0Zz9h7R5dqtOEaw/TQ520hIK3gz4JMdu28tmIcti 7wm2E++H6zallzdwWsyvMMuGp5hi3yVm4pTakm2GOLTv/9iE73fkGfhjoXunh/D8/3nCtvEX2 Z/m2pO930gPVlM9+Aa017gXLz6P7L1ugj3ApfynDPieg3m6xviJ8v4bnZV9hB/te3FD3SpF8f iLwhkuKUomywP35hLPE5dGWLJpofIzn5H32U5+L18zMmRI5mUYuxt3e6PJFlniauA== Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Mar 12, 2021 at 2:33 PM Jie Deng wrote: > + > +/** > + * struct virtio_i2c_req - the virtio I2C request structure > + * @out_hdr: the OUT header of the virtio I2C message > + * @buf: the buffer into which data is read, or from which it's written > + * @in_hdr: the IN header of the virtio I2C message > + */ > +struct virtio_i2c_req { > + struct virtio_i2c_out_hdr out_hdr; > + uint8_t *buf; > + struct virtio_i2c_in_hdr in_hdr; > +}; The simpler request structure clearly looks better than the previous version, but I think I found another problem here, at least a theoretical one: When you map the headers into the DMA address space, they should be in separate cache lines, to allow the DMA mapping interfaces to perform cache management on each one without accidentally clobbering another member. So far I think there is an assumption that virtio buffers are always on cache-coherent devices, but if you ever have a virtio-i2c device backend on a physical interconnect that is not cache coherent (e.g. a microcontroller that shares the memory bus), this breaks down. You could avoid this by either allocating arrays of each type separately, or by marking each member that you pass to the device as ____cacheline_aligned. Arnd