Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp1108431pxa; Wed, 5 Aug 2020 23:01:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzqdT9c3BSFxHyko115vZcdGEC2INV9gWNPie9MvkUOhQZ1m2RQJ2GpADb6se5zkadU/wWL X-Received: by 2002:a50:d51e:: with SMTP id u30mr2560170edi.296.1596693669676; Wed, 05 Aug 2020 23:01:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1596693669; cv=none; d=google.com; s=arc-20160816; b=vlN8Wtd/W9BiPV9re4uoLOFu6ftQMDFQt0alIFNuYiqa4m1mYBj5PFOgSup5YTchO+ 17Cqd6hk9ljIM+etqs7pl4luaKm9B0D/QfcY5VpaqGTPEd+HQ9i6sb9+8j6rerJPtQc/ +ccUlO3U9PZHewO8GKZ7WJyarRYDZA8av1fox0IUWric1tlcFlJlFCT44+v1qbhgU+XL CRV3hNbg9aWa0KGtx7aP8pJpHMrBA2YCPtbKSEdtxoSwnPsqqyrZcnrgztQzFtgT3Z4p xzyfoOIhq4l8tSl7xvoy/5Bx4Ssqnprxc+Zy4TL7Joo14XNKLXt9QFb0bJiGhZXsWz1u lKTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=ROash10duIpE/uRw8Y0foDvQjeHUSzvvXlunxpzl8MY=; b=o0BKW009IjkCVsnrZKWZQ1PUHf2Ogbx41szdW6HSgiTCQX7LkctXczDvN3kV/Pb+qw mDFCChYqesGcVtYh5PhKLcQ3eQEKW4l1qUAxJHpyJKx4YG+qFKoyVLe5QfgTWxSNcBMe ENrx1/Qe6SEOvmSTZC9c5Shy5Q/so4jZ318QF5RqsOk3eI6iPHbIMSXUw+b2dchZkNg/ IOPnFk/6bv1i+SNHUV86a3GxOD4qcYNGCXH5CliBlTUDacunPUkAx65fHLCF1yTe6dKZ kjxhlAj2Yarec1dt/fLBz5DVKAP4yrLP4gL4ugjvpOgNXnS9QqI4FUSIeaVxw2ezK/bh 9Slw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b="Qdje07V/"; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id me17si2724149ejb.258.2020.08.05.23.00.47; Wed, 05 Aug 2020 23:01:09 -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=@redhat.com header.s=mimecast20190719 header.b="Qdje07V/"; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727885AbgHFF6f (ORCPT + 99 others); Thu, 6 Aug 2020 01:58:35 -0400 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:46037 "EHLO us-smtp-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726051AbgHFF6f (ORCPT ); Thu, 6 Aug 2020 01:58:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1596693513; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ROash10duIpE/uRw8Y0foDvQjeHUSzvvXlunxpzl8MY=; b=Qdje07V/lSm4HgB395YlIbPFFvEuDH4BnZ6RDJZT7HKu5elsLl3TcYzTiiceJqaPZjk86S I2k1W4unC9kDhzhZlrVUHRNHBVUD0YQHS2+jaufA9EEK5k9XEzq2QUBJP1QEFzBgsZ+g2I Idp/zuhCD4wC6hswcOkjSIuQ+peLgnE= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-200-Z5p72NYkMQ-cK5clyRqhgQ-1; Thu, 06 Aug 2020 01:58:31 -0400 X-MC-Unique: Z5p72NYkMQ-cK5clyRqhgQ-1 Received: by mail-wm1-f69.google.com with SMTP id c184so2613285wme.1 for ; Wed, 05 Aug 2020 22:58:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=ROash10duIpE/uRw8Y0foDvQjeHUSzvvXlunxpzl8MY=; b=OzYDgwwS7+xwE+n4cveRK3mmGkdoVSxOfwYquMnxbRzW1+4jWauWGQKR5Yb0tdLeE7 53n45e6tVcJqTkJgFeIiDLxHUJUkR6lykaP1luZwN3kGADTEB/LJ5QS6P4dT8cpRLI45 5InDZuRQson9ayckBPdl5dFKNpnS1PjsLTQ6V6kBxpexV/BbMajgJXazLPMmt/XCnamI hDuuuAgjxHwmwnavAqmD5vaP3tffFcZ1pFsspW8cLGJEZIIh29iVL6U2funRsHK39jbc +CxTcvYOE/5aHy9U+AAYOHlyLaxZ8eytoup1nMhxJVVVVOKM7PuP3/Jf5tC3FIOXvUGW 8tqA== X-Gm-Message-State: AOAM5321ZNfp2b7vyMyV4h7qKGoZDPrgebxmyEpd0FuX2B+cXHHpkfuz fLlYDU9CvMUYhCUOc4UQY6loVqXbg5wEz68wKFpDIiCYYGtVQycnU8yCtziRINw9MfAaAkjILK0 wh7MB6Ia6CoPSIy0SWQYBiPum X-Received: by 2002:a1c:59c2:: with SMTP id n185mr6644724wmb.104.1596693510110; Wed, 05 Aug 2020 22:58:30 -0700 (PDT) X-Received: by 2002:a1c:59c2:: with SMTP id n185mr6644711wmb.104.1596693509935; Wed, 05 Aug 2020 22:58:29 -0700 (PDT) Received: from redhat.com (bzq-79-177-102-128.red.bezeqint.net. [79.177.102.128]) by smtp.gmail.com with ESMTPSA id y17sm5492967wrh.63.2020.08.05.22.58.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Aug 2020 22:58:29 -0700 (PDT) Date: Thu, 6 Aug 2020 01:58:26 -0400 From: "Michael S. Tsirkin" To: Jason Wang Cc: linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org Subject: Re: [PATCH v2 03/24] virtio: allow __virtioXX, __leXX in config space Message-ID: <20200806015604-mutt-send-email-mst@kernel.org> References: <20200803205814.540410-1-mst@redhat.com> <20200803205814.540410-4-mst@redhat.com> <20200805074434-mutt-send-email-mst@kernel.org> <4aa65ad6-5324-0a8c-0fa6-0d8e680f0706@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <4aa65ad6-5324-0a8c-0fa6-0d8e680f0706@redhat.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Aug 06, 2020 at 11:37:38AM +0800, Jason Wang wrote: > > On 2020/8/5 下午7:45, Michael S. Tsirkin wrote: > > > > #define virtio_cread(vdev, structname, member, ptr) \ > > > > do { \ > > > > might_sleep(); \ > > > > /* Must match the member's type, and be integer */ \ > > > > - if (!typecheck(typeof((((structname*)0)->member)), *(ptr))) \ > > > > + if (!__virtio_typecheck(structname, member, *(ptr))) \ > > > > (*ptr) = 1; \ > > > A silly question,  compare to using set()/get() directly, what's the value > > > of the accessors macro here? > > > > > > Thanks > > get/set don't convert to the native endian, I guess that's why > > drivers use cread/cwrite. It is also nice that there's type > > safety, checking the correct integer width is used. > > > Yes, but this is simply because a macro is used here, how about just doing > things similar like virtio_cread_bytes(): > > static inline void virtio_cread(struct virtio_device *vdev, >                       unsigned int offset, >                       void *buf, size_t len) > > > And do the endian conversion inside? > > Thanks > Then you lose type safety. It's very easy to have an le32 field and try to read it into a u16 by mistake. These macros are all about preventing bugs: and the whole patchset is about several bugs sparse found - that is what prompted me to make type checks more strict. > >