Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753399AbcK0DdF (ORCPT ); Sat, 26 Nov 2016 22:33:05 -0500 Received: from mx1.redhat.com ([209.132.183.28]:44170 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752505AbcK0Dc5 (ORCPT ); Sat, 26 Nov 2016 22:32:57 -0500 Date: Sun, 27 Nov 2016 05:32:53 +0200 From: "Michael S. Tsirkin" To: Gonglei Cc: linux-kernel@vger.kernel.org, qemu-devel@nongnu.org, virtio-dev@lists.oasis-open.org, virtualization@lists.linux-foundation.org, linux-crypto@vger.kernel.org, luonengjun@huawei.com, stefanha@redhat.com, weidong.huang@huawei.com, wu.wubin@huawei.com, xin.zeng@intel.com, claudio.fontana@huawei.com, herbert@gondor.apana.org.au, pasic@linux.vnet.ibm.com, davem@davemloft.net, jianjay.zhou@huawei.com, hanweidong@huawei.com, arei.gonglei@hotmail.com, cornelia.huck@de.ibm.com, xuquan8@huawei.com, longpeng2@huawei.com, salvatore.benedetto@intel.com Subject: Re: [PATCH v2 1/2] virtio: introduce little edian functions for virtio_cread/write# family Message-ID: <20161127052802-mutt-send-email-mst@kernel.org> References: <1479802223-121104-1-git-send-email-arei.gonglei@huawei.com> <1479802223-121104-2-git-send-email-arei.gonglei@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1479802223-121104-2-git-send-email-arei.gonglei@huawei.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Sun, 27 Nov 2016 03:32:57 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2180 Lines: 76 On Tue, Nov 22, 2016 at 04:10:22PM +0800, Gonglei wrote: > Virtio modern devices are always little edian, let's introduce > the LE functions for read/write configuration space for > virtio modern devices, which avoid complaint by Sparse when > we use the virtio_creaed/virtio_cwrite in VIRTIO_1 devices. > > Signed-off-by: Gonglei > --- > include/linux/virtio_config.h | 45 +++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 45 insertions(+) > > diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h > index 26c155b..de05707 100644 > --- a/include/linux/virtio_config.h > +++ b/include/linux/virtio_config.h > @@ -414,4 +414,49 @@ static inline void virtio_cwrite64(struct virtio_device *vdev, > _r; \ > }) > > +static inline __le16 virtio_cread16_le(struct virtio_device *vdev, > + unsigned int offset) > +{ > + __le16 ret; > + > + vdev->config->get(vdev, offset, &ret, sizeof(ret)); > + return ret; > +} > + > +static inline void virtio_cwrite16_le(struct virtio_device *vdev, > + unsigned int offset, __le16 val) > +{ > + vdev->config->set(vdev, offset, &val, sizeof(val)); > +} > + > +static inline __le32 virtio_cread32_le(struct virtio_device *vdev, > + unsigned int offset) > +{ > + __le32 ret; > + > + vdev->config->get(vdev, offset, &ret, sizeof(ret)); > + return ret; > +} > + > +static inline void virtio_cwrite32_le(struct virtio_device *vdev, > + unsigned int offset, __le32 val) > +{ > + vdev->config->set(vdev, offset, &val, sizeof(val)); > +} > + > +static inline __le64 virtio_cread64_le(struct virtio_device *vdev, > + unsigned int offset) > +{ > + __le64 ret; > + > + __virtio_cread_many(vdev, offset, &ret, 1, sizeof(ret)); > + return ret; > +} > + > +static inline void virtio_cwrite64_le(struct virtio_device *vdev, > + unsigned int offset, __le64 val) > +{ > + vdev->config->set(vdev, offset, &val, sizeof(val)); > +} > + > #endif /* _LINUX_VIRTIO_CONFIG_H */ Could you please better explain what is the issue you are facing? virtio_cwrite/virtio_cread all accept and return native types. If you want it in LE format, swap it! > -- > 1.8.3.1 >