From nobody Thu Apr 25 23:34:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1565692230; cv=none; d=zoho.com; s=zohoarc; b=Z6wj8S2vxYmbvof+YAUkhHTwLoTfk8cO52LRYmpQeRpvB2KPvNI2oeeszdquzygXXspvA50s5nPlIN2yAMBXqaBOT4zsU2y+bKKqtdjW0iFZ2Me+yE7NP3a3qatOxW3pBApCZeaoktxD39DNUrUrG6DSYV5QrVGC95LxnpijQJ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565692230; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=96z/shPEi6I6TjfUanDyBbJl9SSEt55D+++Fa07PBQs=; b=eynBd4YmuqJKWjxEGWAmTcn643uFILAP9gqZxBQWYHAcKNdiAaTFD8x1FWy2qp1umxRWKggVb3LAAFCJkvRdKWG/Nd9qnRkXqN92CTOOHEk8jw4F+Hg9nMkrId8y8M1dOP8M27LwdpB/rxvQJGLmrQbYwKxYGr6Q7agEQ7rD9+E= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565692230780247.05349766260963; Tue, 13 Aug 2019 03:30:30 -0700 (PDT) Received: from localhost ([::1]:50944 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hxU4R-0004Xw-Ig for importer@patchew.org; Tue, 13 Aug 2019 06:30:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34938) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hxU3l-0003Ig-RS for qemu-devel@nongnu.org; Tue, 13 Aug 2019 06:29:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hxU3k-0007Uq-SQ for qemu-devel@nongnu.org; Tue, 13 Aug 2019 06:29:45 -0400 Received: from mx1.redhat.com ([209.132.183.28]:49646) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hxU3k-0007UO-NR for qemu-devel@nongnu.org; Tue, 13 Aug 2019 06:29:44 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 18195308FBB4; Tue, 13 Aug 2019 10:29:44 +0000 (UTC) Received: from dgilbert-t580.localhost (ovpn-117-72.ams2.redhat.com [10.36.117.72]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1298E794C4; Tue, 13 Aug 2019 10:29:42 +0000 (UTC) From: "Dr. David Alan Gilbert (git)" To: qemu-devel@nongnu.org, pbonzini@redhat.com, mst@redhat.com Date: Tue, 13 Aug 2019 11:29:35 +0100 Message-Id: <20190813102936.32195-2-dgilbert@redhat.com> In-Reply-To: <20190813102936.32195-1-dgilbert@redhat.com> References: <20190813102936.32195-1-dgilbert@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.43]); Tue, 13 Aug 2019 10:29:44 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH 1/2] memory: Align and add helper for comparing MemoryRegionSections X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: "Dr. David Alan Gilbert" MemoryRegionSection includes an Int128 'size' field; on some platforms the compiler causes an alignment of this to a 128bit boundary, leaving 8 bytes of dead space. This deadspace can be filled with junk. Move the size field to the top avoiding unnecsssary alignment and provide an 'eq' routine to safely compare MRS's. Signed-off-by: Dr. David Alan Gilbert Acked-by: Paolo Bonzini Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/exec/memory.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/include/exec/memory.h b/include/exec/memory.h index 606250172a..ce62e847bd 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -487,15 +487,27 @@ static inline FlatView *address_space_to_flatview(Add= ressSpace *as) * @nonvolatile: this section is non-volatile */ struct MemoryRegionSection { + Int128 size; MemoryRegion *mr; FlatView *fv; hwaddr offset_within_region; - Int128 size; hwaddr offset_within_address_space; bool readonly; bool nonvolatile; }; =20 +static inline bool MemoryRegionSection_eq(MemoryRegionSection *a, + MemoryRegionSection *b) +{ + return a->mr =3D=3D b->mr && + a->fv =3D=3D b->fv && + a->offset_within_region =3D=3D b->offset_within_region && + a->offset_within_address_space =3D=3D b->offset_within_address_= space && + int128_eq(a->size, b->size) && + a->readonly =3D=3D b->readonly && + a->nonvolatile =3D=3D b->nonvolatile; +} + /** * memory_region_init: Initialize a memory region * --=20 2.21.0 From nobody Thu Apr 25 23:34:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1565692230; cv=none; d=zoho.com; s=zohoarc; b=hgiCVhd8N30dXbXCzcnVjRhwlXqJoR50Og+6t8ZlFoizVts+JKVnJZxpuW5wDmNJxJA20BV09QIESqahDIO2Kg7Tn0o61S1TGPxqfq1a15+VuQQQCpgJ9XSNraF95VLTHZE+MlgdTTrURhUiv5JiqfhHfcPzEJ/GShU8QqpMUCY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565692230; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=BEWDzXmvuwBn3wRMUlLzzyJpszjoq+Rftc5XDr4m1I4=; b=bNZo2ZjCmwA5lMeuhp4F9y3tcKipk74v5uQ4prkgwBUaSIhm74RR265kir1oD+HIEg/k+ldP9/EfVOmyeYIKpvEVeU9gdBiULp+B/BflLuCm26NSmVNSEv8kCyoNTGYbn1E/h5U0GuFPbucJNbHNe9gaxzEIX1P7Z8SSa6gcPJ8= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565692230593518.1332258835606; Tue, 13 Aug 2019 03:30:30 -0700 (PDT) Received: from localhost ([::1]:50946 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hxU4S-0004aX-IO for importer@patchew.org; Tue, 13 Aug 2019 06:30:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34950) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hxU3n-0003Ip-5l for qemu-devel@nongnu.org; Tue, 13 Aug 2019 06:29:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hxU3m-0007Vd-7s for qemu-devel@nongnu.org; Tue, 13 Aug 2019 06:29:47 -0400 Received: from mx1.redhat.com ([209.132.183.28]:45018) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hxU3m-0007VC-2j for qemu-devel@nongnu.org; Tue, 13 Aug 2019 06:29:46 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 66E3F308213F; Tue, 13 Aug 2019 10:29:45 +0000 (UTC) Received: from dgilbert-t580.localhost (ovpn-117-72.ams2.redhat.com [10.36.117.72]) by smtp.corp.redhat.com (Postfix) with ESMTP id 642CE794C4; Tue, 13 Aug 2019 10:29:44 +0000 (UTC) From: "Dr. David Alan Gilbert (git)" To: qemu-devel@nongnu.org, pbonzini@redhat.com, mst@redhat.com Date: Tue, 13 Aug 2019 11:29:36 +0100 Message-Id: <20190813102936.32195-3-dgilbert@redhat.com> In-Reply-To: <20190813102936.32195-1-dgilbert@redhat.com> References: <20190813102936.32195-1-dgilbert@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.42]); Tue, 13 Aug 2019 10:29:45 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH 2/2] vhost: Fix memory region section comparison X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: "Dr. David Alan Gilbert" Using memcmp to compare structures wasn't safe, as I found out on ARM when I was getting false miscompares. Use the helper function for comparing the MRSs. Fixes: ade6d081fc33948e56e6 Signed-off-by: Dr. David Alan Gilbert Acked-by: Paolo Bonzini --- hw/virtio/vhost.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index bc899fc60e..2ef4bc720f 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -451,8 +451,13 @@ static void vhost_commit(MemoryListener *listener) changed =3D true; } else { /* Same size, lets check the contents */ - changed =3D n_old_sections && memcmp(dev->mem_sections, old_sectio= ns, - n_old_sections * sizeof(old_sections[0])) !=3D 0; + for (int i =3D 0; i < n_old_sections; i++) { + if (!MemoryRegionSection_eq(&old_sections[i], + &dev->mem_sections[i])) { + changed =3D true; + break; + } + } } =20 trace_vhost_commit(dev->started, changed); --=20 2.21.0