[{"id":3682043,"web_url":"http://patchwork.ozlabs.org/comment/3682043/","msgid":"<e7022bd7-7fcc-4ba5-99be-35a032c41c52@linaro.org>","list_archive_url":null,"date":"2026-04-24T13:58:26","subject":"Re: [PATCH v2 1/2] intel_iommu: widen impl.min_access_size to 8 to\n fix MMIO abort","submitter":{"id":85046,"url":"http://patchwork.ozlabs.org/api/people/85046/","name":"Philippe Mathieu-Daudé","email":"philmd@linaro.org"},"content":"On 24/4/26 22:18, Junjie Cao wrote:\n> Raise .impl.min_access_size from 4 to 8 in vtd_mem_ops so the memory\n> subsystem always widens guest accesses to 8 bytes before calling the\n> handler.  This eliminates all 25 assert(size == 4) sites that crashed\n> QEMU on an 8-byte access to a 32-bit-only register.\n> \n> With size always 8, the if/else branches for 64-bit register pairs\n> collapse.  A zero-extended 4-byte write to the low half is safe:\n> wmask protects read-only upper bits, and trigger functions re-read\n> the register file and guard on their action bits.\n> \n> The entry bounds check is relaxed to `addr >= DMAR_REG_SIZE` since\n> the widened size no longer reflects the guest access width; the\n> framework guarantees addr stays within the MemoryRegion.  Default\n> branches fall back to vtd_get/set_long() when addr + 8 would exceed\n> the register file.\n> \n> Suggested-by: Philippe Mathieu-Daudé <philmd@linaro.org>\n> Signed-off-by: Junjie Cao <junjie.cao@intel.com>\n> ---\n>   hw/i386/intel_iommu.c | 121 ++++++++----------------------------------\n>   1 file changed, 23 insertions(+), 98 deletions(-)\n> \n> diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c\n> index f395fa248c..4b25907778 100644\n> --- a/hw/i386/intel_iommu.c\n> +++ b/hw/i386/intel_iommu.c\n> @@ -3697,7 +3697,7 @@ static uint64_t vtd_mem_read(void *opaque, hwaddr addr, unsigned size)\n>   \n>       trace_vtd_reg_read(addr, size);\n>   \n> -    if (addr + size > DMAR_REG_SIZE) {\n> +    if (addr >= DMAR_REG_SIZE) {\n>           error_report_once(\"%s: MMIO over range: addr=0x%\" PRIx64\n>                             \" size=0x%x\", __func__, addr, size);\n>           return (uint64_t)-1;\n> @@ -3707,13 +3707,9 @@ static uint64_t vtd_mem_read(void *opaque, hwaddr addr, unsigned size)\n>       /* Root Table Address Register, 64-bit */\n>       case DMAR_RTADDR_REG:\n>           val = vtd_get_quad_raw(s, DMAR_RTADDR_REG);\n> -        if (size == 4) {\n> -            val = val & ((1ULL << 32) - 1);\n> -        }\n>           break;\n>   \n>       case DMAR_RTADDR_REG_HI:\n> -        assert(size == 4);\n>           val = vtd_get_quad_raw(s, DMAR_RTADDR_REG) >> 32;\n>           break;\n>   \n> @@ -3722,26 +3718,21 @@ static uint64_t vtd_mem_read(void *opaque, hwaddr addr, unsigned size)\n>           val = s->iq |\n>                 (vtd_get_quad(s, DMAR_IQA_REG) &\n>                 (VTD_IQA_QS | VTD_IQA_DW_MASK));\n> -        if (size == 4) {\n> -            val = val & ((1ULL << 32) - 1);\n> -        }\n>           break;\n>   \n>       case DMAR_IQA_REG_HI:\n> -        assert(size == 4);\n>           val = s->iq >> 32;\n>           break;\n>   \n>       case DMAR_PEUADDR_REG:\n> -        assert(size == 4);\n\nDoes this device support unaligned accesses? (I doubt). Otherwise\naren't all these assert(size == 4) now g_assert_not_reached()?\n\n\n> @@ -4184,7 +4109,7 @@ static const MemoryRegionOps vtd_mem_ops = {\n>       .write = vtd_mem_write,\n>       .endianness = DEVICE_LITTLE_ENDIAN,\n>       .impl = {\n> -        .min_access_size = 4,\n> +        .min_access_size = 8,\n>           .max_access_size = 8,\n>       },\n>       .valid = {","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256\n header.s=google header.b=bkB/INg/;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g2F1x3RHkz1xvV\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 23:59:15 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wGH3A-0006RE-Bf; Fri, 24 Apr 2026 09:58:32 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <philmd@linaro.org>) id 1wGH39-0006QU-Dc\n for qemu-devel@nongnu.org; Fri, 24 Apr 2026 09:58:31 -0400","from mail-wm1-x333.google.com ([2a00:1450:4864:20::333])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <philmd@linaro.org>) id 1wGH37-0004Ex-Qa\n for qemu-devel@nongnu.org; Fri, 24 Apr 2026 09:58:31 -0400","by mail-wm1-x333.google.com with SMTP id\n 5b1f17b1804b1-483487335c2so77068945e9.2\n for <qemu-devel@nongnu.org>; Fri, 24 Apr 2026 06:58:29 -0700 (PDT)","from [192.168.69.210] (88-187-86-199.subs.proxad.net.\n [88.187.86.199]) by smtp.gmail.com with ESMTPSA id\n 5b1f17b1804b1-48a66533ff4sm16606895e9.6.2026.04.24.06.58.26\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Fri, 24 Apr 2026 06:58:27 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=linaro.org; s=google; t=1777039108; x=1777643908; darn=nongnu.org;\n h=content-transfer-encoding:in-reply-to:from:references:cc:to\n :content-language:subject:user-agent:mime-version:date:message-id\n :from:to:cc:subject:date:message-id:reply-to;\n bh=jeXr2YAxxcksPi4zIMDOPQzcc4Jtkevn9hjVtpztcmU=;\n b=bkB/INg/sZ2sOM++VianZA4NxmzLE1lsN7T32va5Bk3AcxdTbhHYUA7U0+t2NdSWLn\n wLD1uupiqBygec89OqOXUiH1+nQoP6Xr8m5G14C5LiIBTQqp7JJwIeTIBvzra4AIptL7\n MwQTeVIgTHxy4Q4aOyNFIpItkW0UAyEyP0RBKH5o8cNz7ZPluYw6SxOGt2/R8sjChi1v\n L9OW0WxB0bvWkDTJxV9AmOr6VrsE0G9NhuNx3k6/6QdITNudnNtN5lAzRn5ZwnmtORvV\n f9LW47e2UgS8df1P9GsKh6Zz85d9SwozXRjLGvgC55m/DFktroJXydpfDUfaY64gBpHc\n ZIEQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1777039108; x=1777643908;\n h=content-transfer-encoding:in-reply-to:from:references:cc:to\n :content-language:subject:user-agent:mime-version:date:message-id\n :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n :reply-to;\n bh=jeXr2YAxxcksPi4zIMDOPQzcc4Jtkevn9hjVtpztcmU=;\n b=mnlA4x4yAyO3Gh30ik/KHWt2+6R5c6XObzznNZTTmBEgAgWTAFXHqYjPbNKk6kLqdk\n w0TUbsqcWub0a5cvk/f/7Tt/oEQNCFP/v1NoOa7rV/+k3qwvCAcEp7DDD3iCZRcwbGgH\n eKac+mThzRDUpS6BArf00r1434noLZkuUR1+BaAJuYdIO6c53MDOpsDsV7ePmZsTd66K\n XiZTNoAMMXXHpvI3IytWhpZstzQABodcwY76BrFIhp8OtLTHH+0CYrJfR+FXPWVockVp\n aLuU3eBniysHXSOgthDJQXllIcw6Q/5YWw9B9rTBg8chMUBEJJw32pk56z4VJyTg1Le9\n /wRw==","X-Forwarded-Encrypted":"i=1;\n AFNElJ+Tg/5cFnKCskx9Q5Nf5apT8/5l32KmnyfeT2roR7s1M4EVQij87+kM1kFMC7VBrEPRC+XTBgE18CSz@nongnu.org","X-Gm-Message-State":"AOJu0YwXb+5FxhiXAprk0QclUILSwwAoPMX2dyiGpelaivZbS4CAAshI\n dICMC0eEi2vCFbztlHcR4+bkYebJAy0RCrj2G1knAG5Iu4UfS4DOU91XMcU6mowoWOQ=","X-Gm-Gg":"AeBDieuC7czh0Fh46RftV/H0kC4sA+FEoovnU3y4lBo7FgvIyKCRhclYfNbBbCTzn41\n uUlg+dq3JqB3VyC1VTEHyd6IoQn8BzNwZVKJTd1GnrOgTPY8ia4pEtqKNmCcRGpkxoNK4k03MLs\n 9ul3kfylHsXriw5eou4L/bUmabsSrfH3UdaUzBSUqR1IX3VDQipvzv4x7dxohrh9bF6gbyg0rFq\n IlDLc3KaX7yUjSJBw89FYbawS9D5zvaY+FXgUfzlmDxJPj+U4fajcLja0OuInzVy5lJQTKPEfOY\n O+430Pvk6x3SxNpjutwyoJIQrQ2T90gCn3tPFUiJJVtQ9VSV4XdlgVGfdbV+PEuAYWOaBKrq08/\n ZPDqGpwvW2K9aJ9j/adLuNhOYr7Y6XQpbhNvlY7EHv0sDwI//ucI/VB0M/ZoOTAh+L8UJw8M7B+\n R9LmgRPs+/T7+gyWjFIFsPcyRckuup93TdGbOIBPiRX+PjfOFs+ZKIwLo2Fqwev0LWSXYaoSIHk\n 73N6lRhrFINJ80=","X-Received":"by 2002:a05:600c:8b8c:b0:489:1d74:56d with SMTP id\n 5b1f17b1804b1-4891d7406famr341492525e9.29.1777039107885;\n Fri, 24 Apr 2026 06:58:27 -0700 (PDT)","Message-ID":"<e7022bd7-7fcc-4ba5-99be-35a032c41c52@linaro.org>","Date":"Fri, 24 Apr 2026 15:58:26 +0200","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v2 1/2] intel_iommu: widen impl.min_access_size to 8 to\n fix MMIO abort","Content-Language":"en-US","To":"Junjie Cao <junjie.cao@intel.com>, qemu-devel@nongnu.org","Cc":"mst@redhat.com, jasowang@redhat.com, yi.l.liu@intel.com,\n clement.mathieu--drif@bull.com, zhenzhong.duan@intel.com","References":"<20260424201842.176953-1-junjie.cao@intel.com>\n <20260424201842.176953-2-junjie.cao@intel.com>","From":"=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>","In-Reply-To":"<20260424201842.176953-2-junjie.cao@intel.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","Received-SPF":"pass client-ip=2a00:1450:4864:20::333;\n envelope-from=philmd@linaro.org; helo=mail-wm1-x333.google.com","X-Spam_score_int":"-20","X-Spam_score":"-2.1","X-Spam_bar":"--","X-Spam_report":"(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=ham autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3682458,"web_url":"http://patchwork.ozlabs.org/comment/3682458/","msgid":"<20260427012419.323362-1-junjie.cao@intel.com>","list_archive_url":null,"date":"2026-04-27T01:24:19","subject":"Re: [PATCH v2 1/2] intel_iommu: widen impl.min_access_size to 8 to\n fix MMIO abort","submitter":{"id":91537,"url":"http://patchwork.ozlabs.org/api/people/91537/","name":"Junjie Cao","email":"junjie.cao@intel.com"},"content":"Hi Philippe,\n\nThanks for the review and the good question.\n\nLooking at access_with_adjusted_size(), the _HI offsets (0x24, 0x2c, ...)\nand standalone 32-bit registers like DMAR_PEUADDR_REG (0xec) are\n4-byte-aligned but not 8-byte-aligned.  An 8-byte guest access to them\nis indeed rejected by memory_region_access_valid (0xec & 7 != 0).  But a\n4-byte access passes (0xec & 3 == 0), and the framework then widens size\nto 8 while keeping the original addr -- so the handler is still reached\nat these offsets.\n\nFor example, a guest 4-byte write to DMAR_PEUADDR_REG (0xec):\n\n  1. memory_region_access_valid: size=4, 0xec & 3 == 0 -> pass\n  2. access_with_adjusted_size: access_size = MAX(MIN(4,8),8) = 8\n  3. write_accessor calls vtd_mem_write(opaque, 0xec, val_zext, 8)\n  4. switch(addr) -> case DMAR_PEUADDR_REG -> vtd_set_long(s, addr, val)\n\nSo I believe these branches are still needed.  Please let me know if\nI've missed something, or if you'd like any changes for v3.\n\nMany thanks,\nJunjie","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=l8CPUrJ9;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g3m9G073Lz1yJX\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 27 Apr 2026 11:25:52 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wHAii-0008GB-Lw; Sun, 26 Apr 2026 21:25:08 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <junjie.cao@intel.com>)\n id 1wHAih-0008DF-0z\n for qemu-devel@nongnu.org; Sun, 26 Apr 2026 21:25:07 -0400","from mgamail.intel.com ([192.198.163.15])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <junjie.cao@intel.com>)\n id 1wHAiW-0003Wx-8V\n for qemu-devel@nongnu.org; Sun, 26 Apr 2026 21:25:06 -0400","from fmviesa001.fm.intel.com ([10.60.135.141])\n by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 26 Apr 2026 18:24:51 -0700","from junjie-desk-dev.bj.intel.com ([10.238.152.71])\n by smtpauth.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 26 Apr 2026 18:24:49 -0700"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1777253096; x=1808789096;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=PQsA6eSPSgWtHbMurUkqB0eLV+z1ONndpEM1Oab0cvs=;\n b=l8CPUrJ95eVuWW2cU0DFd5U5SwN7uibzwofWkob8l64UGcZoisqmjhoV\n YQg3h7Jft14yoxetAhcfmKk2puPkFi+gaZePbhPioRcIeI/UAkaB7+2va\n ETMlbAn4vS0KpRuB5ViWLDg1kiHRmiQOD+19ZL0ST7yg6FL4kxBj3FMty\n FqLNLefR19R0GfcbDjRXDee7V66gF1tTNh+3vUw8cqE+lvvq7/mXztNnI\n HnDMZwZDMMxB+QFCJWQCynTGUn5FLxJ7kN9RcEBeflFJsVWi0+0a7P7Lv\n QLXfWl3a+WyUwNv2fEHPMBrB2HtQfaEGBiNfIEe1nLH7oOape6Dn5792q w==;","X-CSE-ConnectionGUID":["VysE/9tITH+WHPIH0fqjjw==","/D7I4B+gTGu4S4xBUB9ySA=="],"X-CSE-MsgGUID":["5tTNw8uOS9qJK/E5hmXkYQ==","BEPGQSMFQRC1OylkoHUKLg=="],"X-IronPort-AV":["E=McAfee;i=\"6800,10657,11768\"; a=\"78249170\"","E=Sophos;i=\"6.23,201,1770624000\"; d=\"scan'208\";a=\"78249170\"","E=Sophos;i=\"6.23,201,1770624000\"; d=\"scan'208\";a=\"257012724\""],"X-ExtLoop1":"1","From":"Junjie Cao <junjie.cao@intel.com>","To":"=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,\n qemu-devel@nongnu.org","Cc":"junjie.cao@intel.com, mst@redhat.com, jasowang@redhat.com,\n yi.l.liu@intel.com, clement.mathieu--drif@bull.com,\n zhenzhong.duan@intel.com","Subject":"Re: [PATCH v2 1/2] intel_iommu: widen impl.min_access_size to 8 to\n fix MMIO abort","Date":"Mon, 27 Apr 2026 09:24:19 +0800","Message-ID":"<20260427012419.323362-1-junjie.cao@intel.com>","X-Mailer":"git-send-email 2.43.0","In-Reply-To":"<e7022bd7-7fcc-4ba5-99be-35a032c41c52@linaro.org>","References":"<20260424201842.176953-1-junjie.cao@intel.com>\n <20260424201842.176953-2-junjie.cao@intel.com>\n <e7022bd7-7fcc-4ba5-99be-35a032c41c52@linaro.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"8bit","Received-SPF":"pass client-ip=192.198.163.15;\n envelope-from=junjie.cao@intel.com;\n helo=mgamail.intel.com","X-Spam_score_int":"-39","X-Spam_score":"-4.0","X-Spam_bar":"----","X-Spam_report":"(-4.0 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1,\n DKIM_SIGNED=0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=ham autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3682491,"web_url":"http://patchwork.ozlabs.org/comment/3682491/","msgid":"<IA3PR11MB9136A84869D0FA17B213347392362@IA3PR11MB9136.namprd11.prod.outlook.com>","list_archive_url":null,"date":"2026-04-27T05:23:41","subject":"RE: [PATCH v2 1/2] intel_iommu: widen impl.min_access_size to 8 to\n fix MMIO abort","submitter":{"id":81636,"url":"http://patchwork.ozlabs.org/api/people/81636/","name":"Duan, Zhenzhong","email":"zhenzhong.duan@intel.com"},"content":">-----Original Message-----\n>From: Cao, Junjie <junjie.cao@intel.com>\n>Subject: [PATCH v2 1/2] intel_iommu: widen impl.min_access_size to 8 to fix\n>MMIO abort\n>\n>Raise .impl.min_access_size from 4 to 8 in vtd_mem_ops so the memory\n>subsystem always widens guest accesses to 8 bytes before calling the\n>handler.  This eliminates all 25 assert(size == 4) sites that crashed\n>QEMU on an 8-byte access to a 32-bit-only register.\n>\n>With size always 8, the if/else branches for 64-bit register pairs\n>collapse.  A zero-extended 4-byte write to the low half is safe:\n>wmask protects read-only upper bits, and trigger functions re-read\n>the register file and guard on their action bits.\n>\n>The entry bounds check is relaxed to `addr >= DMAR_REG_SIZE` since\n>the widened size no longer reflects the guest access width; the\n>framework guarantees addr stays within the MemoryRegion.  Default\n>branches fall back to vtd_get/set_long() when addr + 8 would exceed\n>the register file.\n>\n>Suggested-by: Philippe Mathieu-Daudé <philmd@linaro.org>\n>Signed-off-by: Junjie Cao <junjie.cao@intel.com>\n>---\n> hw/i386/intel_iommu.c | 121 ++++++++----------------------------------\n> 1 file changed, 23 insertions(+), 98 deletions(-)\n>\n>diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c\n>index f395fa248c..4b25907778 100644\n>--- a/hw/i386/intel_iommu.c\n>+++ b/hw/i386/intel_iommu.c\n>@@ -3697,7 +3697,7 @@ static uint64_t vtd_mem_read(void *opaque, hwaddr\n>addr, unsigned size)\n>\n>     trace_vtd_reg_read(addr, size);\n>\n>-    if (addr + size > DMAR_REG_SIZE) {\n>+    if (addr >= DMAR_REG_SIZE) {\n>         error_report_once(\"%s: MMIO over range: addr=0x%\" PRIx64\n>                           \" size=0x%x\", __func__, addr, size);\n>         return (uint64_t)-1;\n>@@ -3707,13 +3707,9 @@ static uint64_t vtd_mem_read(void *opaque, hwaddr\n>addr, unsigned size)\n>     /* Root Table Address Register, 64-bit */\n>     case DMAR_RTADDR_REG:\n>         val = vtd_get_quad_raw(s, DMAR_RTADDR_REG);\n>-        if (size == 4) {\n>-            val = val & ((1ULL << 32) - 1);\n>-        }\n>         break;\n>\n>     case DMAR_RTADDR_REG_HI:\n>-        assert(size == 4);\n>         val = vtd_get_quad_raw(s, DMAR_RTADDR_REG) >> 32;\n>         break;\n>\n>@@ -3722,26 +3718,21 @@ static uint64_t vtd_mem_read(void *opaque, hwaddr\n>addr, unsigned size)\n>         val = s->iq |\n>               (vtd_get_quad(s, DMAR_IQA_REG) &\n>               (VTD_IQA_QS | VTD_IQA_DW_MASK));\n>-        if (size == 4) {\n>-            val = val & ((1ULL << 32) - 1);\n>-        }\n>         break;\n>\n>     case DMAR_IQA_REG_HI:\n>-        assert(size == 4);\n>         val = s->iq >> 32;\n>         break;\n>\n>     case DMAR_PEUADDR_REG:\n>-        assert(size == 4);\n>         val = vtd_get_long_raw(s, DMAR_PEUADDR_REG);\n>         break;\n>\n>     default:\n>-        if (size == 4) {\n>-            val = vtd_get_long(s, addr);\n>-        } else {\n>+        if (addr + 8 <= DMAR_REG_SIZE) {\n>             val = vtd_get_quad(s, addr);\n>+        } else {\n>+            val = vtd_get_long(s, addr);\n>         }\n>     }\n>\n>@@ -3755,7 +3746,7 @@ static void vtd_mem_write(void *opaque, hwaddr addr,\n>\n>     trace_vtd_reg_write(addr, size, val);\n>\n>-    if (addr + size > DMAR_REG_SIZE) {\n>+    if (addr >= DMAR_REG_SIZE) {\n>         error_report_once(\"%s: MMIO over range: addr=0x%\" PRIx64\n>                           \" size=0x%x\", __func__, addr, size);\n>         return;\n>@@ -3770,238 +3761,172 @@ static void vtd_mem_write(void *opaque, hwaddr\n>addr,\n>\n>     /* Context Command Register, 64-bit */\n>     case DMAR_CCMD_REG:\n>-        if (size == 4) {\n>-            vtd_set_long(s, addr, val);\n>-        } else {\n>-            vtd_set_quad(s, addr, val);\n>-            vtd_handle_ccmd_write(s);\n>-        }\n>+        vtd_set_quad(s, addr, val);\n>+        vtd_handle_ccmd_write(s);\n\nWill this cause wrong emulation when writing DMAR_CCMD_REG with 4 bytes size?\n\n>         break;\n>\n>     case DMAR_CCMD_REG_HI:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         vtd_handle_ccmd_write(s);\n>         break;\n>\n>     /* IOTLB Invalidation Register, 64-bit */\n>     case DMAR_IOTLB_REG:\n>-        if (size == 4) {\n>-            vtd_set_long(s, addr, val);\n>-        } else {\n>-            vtd_set_quad(s, addr, val);\n>-            vtd_handle_iotlb_write(s);\n>-        }\n>+        vtd_set_quad(s, addr, val);\n>+        vtd_handle_iotlb_write(s);\n>         break;\n>\n>     case DMAR_IOTLB_REG_HI:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         vtd_handle_iotlb_write(s);\n>         break;\n>\n>     case DMAR_PEUADDR_REG:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         break;\n>\n>     /* Invalidate Address Register, 64-bit */\n>     case DMAR_IVA_REG:\n>-        if (size == 4) {\n>-            vtd_set_long(s, addr, val);\n>-        } else {\n>-            vtd_set_quad(s, addr, val);\n>-        }\n>+        vtd_set_quad(s, addr, val);\n>         break;\n>\n>     case DMAR_IVA_REG_HI:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         break;\n>\n>     /* Fault Status Register, 32-bit */\n>     case DMAR_FSTS_REG:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         vtd_handle_fsts_write(s);\n>         break;\n>\n>     /* Fault Event Control Register, 32-bit */\n>     case DMAR_FECTL_REG:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         vtd_handle_fectl_write(s);\n>         break;\n>\n>     /* Fault Event Data Register, 32-bit */\n>     case DMAR_FEDATA_REG:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         break;\n>\n>     /* Fault Event Address Register, 32-bit */\n>     case DMAR_FEADDR_REG:\n>-        if (size == 4) {\n>-            vtd_set_long(s, addr, val);\n>-        } else {\n>-            /*\n>-             * While the register is 32-bit only, some guests (Xen...) write to\n>-             * it with 64-bit.\n>-             */\n>-            vtd_set_quad(s, addr, val);\n>-        }\n>+        vtd_set_quad(s, addr, val);\n>         break;\n>\n>     /* Fault Event Upper Address Register, 32-bit */\n>     case DMAR_FEUADDR_REG:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         break;\n>\n>     /* Protected Memory Enable Register, 32-bit */\n>     case DMAR_PMEN_REG:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         break;\n>\n>     /* Root Table Address Register, 64-bit */\n>     case DMAR_RTADDR_REG:\n>-        if (size == 4) {\n>-            vtd_set_long(s, addr, val);\n>-        } else {\n>-            vtd_set_quad(s, addr, val);\n>-        }\n>+        vtd_set_quad(s, addr, val);\n\nSame here, maybe also others, I didn't check all registers.\n\nThanks\nZhenzhong\n\n>         break;\n>\n>     case DMAR_RTADDR_REG_HI:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         break;\n>\n>     /* Invalidation Queue Tail Register, 64-bit */\n>     case DMAR_IQT_REG:\n>-        if (size == 4) {\n>-            vtd_set_long(s, addr, val);\n>-        } else {\n>-            vtd_set_quad(s, addr, val);\n>-        }\n>+        vtd_set_quad(s, addr, val);\n>         vtd_handle_iqt_write(s);\n>         break;\n>\n>     case DMAR_IQT_REG_HI:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         /* 19:63 of IQT_REG is RsvdZ, do nothing here */\n>         break;\n>\n>     /* Invalidation Queue Address Register, 64-bit */\n>     case DMAR_IQA_REG:\n>-        if (size == 4) {\n>-            vtd_set_long(s, addr, val);\n>-        } else {\n>-            vtd_set_quad(s, addr, val);\n>-        }\n>+        vtd_set_quad(s, addr, val);\n>         vtd_update_iq_dw(s);\n>         break;\n>\n>     case DMAR_IQA_REG_HI:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         break;\n>\n>     /* Invalidation Completion Status Register, 32-bit */\n>     case DMAR_ICS_REG:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         vtd_handle_ics_write(s);\n>         break;\n>\n>     /* Invalidation Event Control Register, 32-bit */\n>     case DMAR_IECTL_REG:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         vtd_handle_iectl_write(s);\n>         break;\n>\n>     /* Invalidation Event Data Register, 32-bit */\n>     case DMAR_IEDATA_REG:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         break;\n>\n>     /* Invalidation Event Address Register, 32-bit */\n>     case DMAR_IEADDR_REG:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         break;\n>\n>     /* Invalidation Event Upper Address Register, 32-bit */\n>     case DMAR_IEUADDR_REG:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         break;\n>\n>     /* Fault Recording Registers, 128-bit */\n>     case DMAR_FRCD_REG_0_0:\n>-        if (size == 4) {\n>-            vtd_set_long(s, addr, val);\n>-        } else {\n>-            vtd_set_quad(s, addr, val);\n>-        }\n>+        vtd_set_quad(s, addr, val);\n>         break;\n>\n>     case DMAR_FRCD_REG_0_1:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         break;\n>\n>     case DMAR_FRCD_REG_0_2:\n>-        if (size == 4) {\n>-            vtd_set_long(s, addr, val);\n>-        } else {\n>-            vtd_set_quad(s, addr, val);\n>-            /* May clear bit 127 (Fault), update PPF */\n>-            vtd_update_fsts_ppf(s);\n>-        }\n>+        vtd_set_quad(s, addr, val);\n>+        /* May clear bit 127 (Fault), update PPF */\n>+        vtd_update_fsts_ppf(s);\n>         break;\n>\n>     case DMAR_FRCD_REG_0_3:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         /* May clear bit 127 (Fault), update PPF */\n>         vtd_update_fsts_ppf(s);\n>         break;\n>\n>     case DMAR_IRTA_REG:\n>-        if (size == 4) {\n>-            vtd_set_long(s, addr, val);\n>-        } else {\n>-            vtd_set_quad(s, addr, val);\n>-        }\n>+        vtd_set_quad(s, addr, val);\n>         break;\n>\n>     case DMAR_IRTA_REG_HI:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         break;\n>\n>     case DMAR_PRS_REG:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         vtd_handle_prs_write(s);\n>         break;\n>\n>     case DMAR_PECTL_REG:\n>-        assert(size == 4);\n>         vtd_set_long(s, addr, val);\n>         vtd_handle_pectl_write(s);\n>         break;\n>\n>     default:\n>-        if (size == 4) {\n>-            vtd_set_long(s, addr, val);\n>-        } else {\n>+        if (addr + 8 <= DMAR_REG_SIZE) {\n>             vtd_set_quad(s, addr, val);\n>+        } else {\n>+            vtd_set_long(s, addr, val);\n>         }\n>     }\n> }\n>@@ -4184,7 +4109,7 @@ static const MemoryRegionOps vtd_mem_ops = {\n>     .write = vtd_mem_write,\n>     .endianness = DEVICE_LITTLE_ENDIAN,\n>     .impl = {\n>-        .min_access_size = 4,\n>+        .min_access_size = 8,\n>         .max_access_size = 8,\n>     },\n>     .valid = {\n>--\n>2.43.0","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=G2tylU24;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=intel.com;"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g3sSP6rvLz1yHv\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 27 Apr 2026 15:24:21 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wHERr-0007H6-Uq; Mon, 27 Apr 2026 01:24:01 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <zhenzhong.duan@intel.com>)\n id 1wHERo-0007Go-PS\n for qemu-devel@nongnu.org; Mon, 27 Apr 2026 01:23:56 -0400","from mgamail.intel.com ([192.198.163.17])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <zhenzhong.duan@intel.com>)\n id 1wHERk-0005Y0-87\n for qemu-devel@nongnu.org; Mon, 27 Apr 2026 01:23:56 -0400","from fmviesa009.fm.intel.com ([10.60.135.149])\n by fmvoesa111.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 26 Apr 2026 22:23:47 -0700","from orsmsx901.amr.corp.intel.com ([10.22.229.23])\n by fmviesa009.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 26 Apr 2026 22:23:47 -0700","from ORSMSX901.amr.corp.intel.com (10.22.229.23) by\n ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.2.2562.37; Sun, 26 Apr 2026 22:23:46 -0700","from ORSEDG902.ED.cps.intel.com (10.7.248.12) by\n ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.2.2562.37 via Frontend Transport; Sun, 26 Apr 2026 22:23:46 -0700","from BL2PR02CU003.outbound.protection.outlook.com (52.101.52.59) by\n edgegateway.intel.com (134.134.137.112) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.2.2562.37; Sun, 26 Apr 2026 22:23:44 -0700","from IA3PR11MB9136.namprd11.prod.outlook.com (2603:10b6:208:574::12)\n by CYXPR11MB8662.namprd11.prod.outlook.com (2603:10b6:930:de::15)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.15; Mon, 27 Apr\n 2026 05:23:41 +0000","from IA3PR11MB9136.namprd11.prod.outlook.com\n ([fe80::37b4:37a9:4f3:518b]) by IA3PR11MB9136.namprd11.prod.outlook.com\n ([fe80::37b4:37a9:4f3:518b%5]) with mapi id 15.20.9846.011; Mon, 27 Apr 2026\n 05:23:41 +0000"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1777267432; x=1808803432;\n h=from:to:cc:subject:date:message-id:references:\n in-reply-to:content-transfer-encoding:mime-version;\n bh=EHy5+npU+9TVnnNRRDONHSse4ssOCSUxLWGoCGp1gEY=;\n b=G2tylU24YPW5UKfoOk8A0+JFGLenn/ukGj3WgdYRIqxtRJSmZimESuSC\n gc6GaP9B+I5E+mQJUakKJSL697RLcsiQ63K2dOxf1+UiGiuoYyuNFI+dN\n ttn7mvk1OE22lOOmCUjJQQrBcTEueAz5b96qqvqw1x6f+fEd+KN2MVEHD\n wH1gkhNQ9TdDCZ7x/vEyXyvbddgejr6lsh7AIHvgx2jG8yO9OWtbGsLMG\n 6HwgFbTCd+flN7XRd/o228QxTr4qq46Tf3NQp6xor9bCfcMVtfmcmkWwI\n qrGfFNGlOUk5LdppwRu9v9zpVp8lv2hT9dYXh4yonyJLxIUZqhT7/OwiC A==;","X-CSE-ConnectionGUID":["goef2GRSQD2gGhRo7/SPXQ==","hK0Ojay9QfiZleikc6Wd+A=="],"X-CSE-MsgGUID":["TLIiZDsNTlOtUv5XqI/U1A==","IVHArbz0TtCGVW7hSGPyIg=="],"X-IronPort-AV":["E=McAfee;i=\"6800,10657,11768\"; a=\"78022582\"","E=Sophos;i=\"6.23,201,1770624000\"; d=\"scan'208\";a=\"78022582\"","E=Sophos;i=\"6.23,201,1770624000\"; d=\"scan'208\";a=\"227003765\""],"X-ExtLoop1":"1","ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=D/B9DNQM98Oq2s17uCELZXkGhFziWFdFx1jm8K2NmbnE9M0s8oGnFlGBl1eDj+0XgQenxJ4JTMfs02VCWlOdQfG8Q6GdL/6sVWF2SFrJsFIcWqkmtKpwCtgZoCg086l52G8N+aFhIy1M45H0bZdzAr6NcDAy7N++tBhJgAzQcNVE2sD3rcV/7oWBcdW/2Mrm5S0o5kkVSPc2yRx6IksjTbKrvI7jQFUfh8ZF9tF2v6Dd16Coj3f4sPZc1phWVRqMNeezQEhu3I01FOlQJVoy+bCOlYdc25yhHCVYQTSKCTSRb6hfr72iYtMXGmxkRA60giX0qdIXpv8xJEu2SKgfZA==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=EHy5+npU+9TVnnNRRDONHSse4ssOCSUxLWGoCGp1gEY=;\n b=FioDZG16kbUzuUMehKDMs414CLlJLehENTpCkJktj9qPPm1xAz/X9qXJ7mhKzv3Ejbn2Wd8Hlm68hsul3eCsHorDMZN1i3eAbu8YoxGWWIlc550kW9lrvdc3uKddB67hP2UEe5q2y+G3DjnAezIXp60LK90ExQ4K+8N5RYCusq0fbKguLMQGEteZ+W/WkKJqgmGrSyuk6/mRnbl74VfwHsOFZYD+BOzaXBUnutJdi6tMdOjymJMI52tcbm8driyzHgvBsPucWUGkhmop4TVw7B49mlBAjAsYPEWhiMKSk3+8iVLlKr3SNJdVAInpY5CLtOrwZ9CSTFFIuRnJy5TOjw==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com;\n dkim=pass header.d=intel.com; arc=none","From":"\"Duan, Zhenzhong\" <zhenzhong.duan@intel.com>","To":"\"Cao, Junjie\" <junjie.cao@intel.com>, \"qemu-devel@nongnu.org\"\n <qemu-devel@nongnu.org>","CC":"\"mst@redhat.com\" <mst@redhat.com>, \"jasowang@redhat.com\"\n <jasowang@redhat.com>, \"Liu, Yi L\" <yi.l.liu@intel.com>,\n \"clement.mathieu--drif@bull.com\" <clement.mathieu--drif@bull.com>,\n \"philmd@linaro.org\" <philmd@linaro.org>","Subject":"RE: [PATCH v2 1/2] intel_iommu: widen impl.min_access_size to 8 to\n fix MMIO abort","Thread-Topic":"[PATCH v2 1/2] intel_iommu: widen impl.min_access_size to 8 to\n fix MMIO abort","Thread-Index":"AQHc0+QkF5ESGoU21UOa0hgTlinj8rXyYsIg","Date":"Mon, 27 Apr 2026 05:23:41 +0000","Message-ID":"\n <IA3PR11MB9136A84869D0FA17B213347392362@IA3PR11MB9136.namprd11.prod.outlook.com>","References":"<20260424201842.176953-1-junjie.cao@intel.com>\n <20260424201842.176953-2-junjie.cao@intel.com>","In-Reply-To":"<20260424201842.176953-2-junjie.cao@intel.com>","Accept-Language":"en-US","Content-Language":"en-US","X-MS-Has-Attach":"","X-MS-TNEF-Correlator":"","authentication-results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=G2tylU24;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=intel.com;"],"x-ms-publictraffictype":"Email","x-ms-traffictypediagnostic":"IA3PR11MB9136:EE_|CYXPR11MB8662:EE_","x-ms-office365-filtering-correlation-id":"c2cef3f1-0dc3-444e-dd04-08dea41d24ea","x-ms-exchange-senderadcheck":"1","x-ms-exchange-antispam-relay":"0","x-microsoft-antispam":"BCL:0;\n ARA:13230040|376014|366016|1800799024|56012099003|22082099003|18002099003|38070700021;","x-microsoft-antispam-message-info":"\n Aauwd6DLZp2m0fvyM0KA9wO+ApazkINZ2YubyNfeHsFbnZE2UxO9hWUCWAB1juFDra4j49Iyx2uj4kyZq0Viy6KcrrhXEZ0DYxb4PEeTpf5fGRrd0uIw+MgyLTAOxGa89j36uIm6Mi0HqD7x0FjZ8Yc1xenLYi//75x7vQ4cZ23EGVCc/D/Kg5pvPwsVc6l46t8Tv7mGIx+DUEs5nN2mPcIJbe843jfk3d7NTU4JXPYkNIaaXhIvbR9Ifv3ZUKqHISFXcVzYFvgrXU6o3A7vc1gpLVNwjrkv/8kB4SnFCZJEcX9sQhpOdTPVhDVH2eKB2OTKT/uwCNx+aM9/9+DS2gFBT+3jfPGhIgwXKwt8yqmcFa0w/vfljqpg+VjHs68irr4dIQ0InxvmO/RK7PGOyd0So7FHGRiBsAgTegbD8fq5sUzRWojs3NkaRh7WbMx1veRdsi40hdH5jWy0NiKW0ydct8V+OoeLbpivVb08g81JHeFkXv4gRQaBbYu+Uw6fDxHS0oduFEeBFrIxeGIU8MyNLDsaSsPxjWIFajulWidPCFA+f2CpIW72tjMHMRzr/VqwxoLA2SgDCzboADx41aiIZ6rA2AXFp0xnIiq1fuNsE7ChdEm0O/+nAdvh96eynsZ0+JCWMC4DNGSVoMBD57MBWuWYjM3IMhGAz/W7nj8qC8V/gG/x6KIHMn3VFlc49PKN6DrJd2xd2c5eh9olowiOL4jUZeWwI8NnUIjHHKXWIewgXOEJlgYpnCBIRHneEqsHi0ie/MAEEsDxSL3buW0242adrGtZb8rdM08q1ss=","x-forefront-antispam-report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:IA3PR11MB9136.namprd11.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230040)(376014)(366016)(1800799024)(56012099003)(22082099003)(18002099003)(38070700021);\n DIR:OUT; SFP:1101;","x-ms-exchange-antispam-messagedata-chunkcount":"1","x-ms-exchange-antispam-messagedata-0":"=?utf-8?q?DqG+aoTKO1pu7SP8sLEI6SsuLLYp?=\n\t=?utf-8?q?aXakup3/+r3eajI2inOA7rmo9eZ4p5ymCz1rSRA1KMOs7Ru2wp3c58z7Rmaj1jzGE?=\n\t=?utf-8?q?phMfeJq0BvsNEgob2P+oRMG9ibXjrhWTODRb4MxdmNJE9Jxe+vqCv81FJtBjz4IH2?=\n\t=?utf-8?q?pmFe5tNpnoHUA4i+Je+ZVWHojRZIiTCc/Iy4zEj4loW8zPV+7RYyPsh5uNWej1Agx?=\n\t=?utf-8?q?nETHqVsOiYmxtItwDF5Trg5AfFulbZuBk01UQsk7VmLjnpV6Tv+x/3ozeeTkdoHpI?=\n\t=?utf-8?q?VnG7sjTrzspV1Bnmndq55AiAW/9RbF4D8jhj/4R8+j0w/qWV0Y1tRdmvvvBKWnKui?=\n\t=?utf-8?q?6T+pWfl052IkBSRWg33QjIbyZFBX+hC+g9XpF4Sbi4ddI3wNay89qx0zqYTtMgtw2?=\n\t=?utf-8?q?nGl/2HNvp/Rpfo8LoiiJbK5uLcGlJCphJIeZaWX5nB5TfsVusdsWucil4L2BoPd4h?=\n\t=?utf-8?q?qG/6u6neRK6iAdjkHvxxpmHMKEl0Xstx+7IS/yBb4YtzQEu07Nu+vkeMzISIIDxjQ?=\n\t=?utf-8?q?s20cMa+rtDFLnmzJaXs3d1OwAfy698HmU8ldvfvxRPG1VRGqUp1gWv2XB9vnlCrmx?=\n\t=?utf-8?q?Mk3fDWF8Xgja2Z8S5k5y9ZYaoJIK9gSTN6sDdaGkK4NR6abRDWN90qaBqfZGFyoJ9?=\n\t=?utf-8?q?0tA5SzXiwKACFQGlCrlaVJQ94S3hPvLMQMUQQDtBiRTWV8ToL1q23ItTLtvsugqnG?=\n\t=?utf-8?q?mQt6DgFWFmkTzRXJ4g/jH4Sv0w2BiBYvtRj/VzpvYG9lwJizkqqYjAm5QpTmbLYgh?=\n\t=?utf-8?q?Ivpc4AJKvipj6YMKYtWHoD2m1FfmPcSNm9g4R7gQs+d+AGPhR8t/FyNwXcSv0MaXj?=\n\t=?utf-8?q?n9JbOQitBlz21u+mkvwFFSXEufpd5PfX45AWkX2I3Pfw8d2tGldd2ZCQ46yjIn7kt?=\n\t=?utf-8?q?vUhafpMjJDwDyWzdWX5aTGOT4705v4waAevn2Gcdt7IWQxu8xV7ol9OLG8DOAhswt?=\n\t=?utf-8?q?2x1NvC6l4IAT/za7AKCBnNTRaJZCfkR8nnmle6uM2Ls0kONNnmRU1cnPGP076Y11O?=\n\t=?utf-8?q?5PHm+0s6YJfukDm8rere5rLwa/r5t+DLWSQOrdH1B8zQ/RxN2r56Kab4Lg3MA9TXv?=\n\t=?utf-8?q?jHZhc6ef6p1T8BwYjfs80GAZq07uHv1e/SMaKzirfOrm/eSvAAOfRAnIEB2crWdZs?=\n\t=?utf-8?q?4UdkPH8f0HCrKyTH5X+6ry+RwdXBxyZXvKKm46xj56QI42et1kkOb/25C8KjYPCNK?=\n\t=?utf-8?q?qD9lc1IUEX/DE/8b1WFYBQn64pUqtLXBmVMt1YWc8QMmLfmBIllb4aftiXTWgaX5E?=\n\t=?utf-8?q?3LxVTMnNg4eNs4TIwyg06BZYmkJPZ0rd1+GxCvfScC8LlUclKz7Fg0z3ZWPwqkf3O?=\n\t=?utf-8?q?c8Oa/HhVz1f93lancUbd9Z8zGhek/nA1dTz/6n8Utmz1LhKLEfn4yt3/kZc7Jx0xg?=\n\t=?utf-8?q?GH56oKApyd1aaUI6QSZ5wNd9bKBHkvP/+G/Z5wAbthx8ixFYVqjN2gznkJlEf+j65?=\n\t=?utf-8?q?pb84VECwoMcZ6xUSWufjPvk3cRG5XanhSUnkPyIOzZlibrmw75GAC5oLDpcZ50rWr?=\n\t=?utf-8?q?LjwTALWZZZozgf5Mrm4M3Lux9R1riISxHf/ZfGap1uY9koZqYD3a7WN52itPGaxjW?=\n\t=?utf-8?q?PSd8j9MRuE0vqM6++DZJTiM7DwIfyCiNWVfzAjgw8eBKTkLoZ/aWhkmfnxz94r1h6?=\n\t=?utf-8?q?7QGSNjk6R0BCHpO6eJNoxiI7ON6MIV9A=3D=3D?=","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","MIME-Version":"1.0","X-Exchange-RoutingPolicyChecked":"\n Mz5BTDnQOMOS+kOzUokeur7841YLGBUEkkMegHNOcwVM8tcJwgNAxH+t8cW6QAN+PqaEe7hsc18PWyCiRN70I11RgUeToZGGv201K8/r64mRh0xSE1nJ+rtSOb5z5NbBMWwR49PK/F2mStRs3Lmr2p2IemMzGkDDaC94yQXRmE32QkGeohfAMap+CW4H3L/++MlDnDkpuvipPl4AkCzWm4d7vBFeOhrbzmeRooTOQQZ3iyqc+clh/7DUteginRRexbPow/Nv5xWiGb/dyz6cJI3wAJgQnkaJBeu9qvDMkeKaOcpkgjitHBT5qnQPf6ARgUMyqAQ7VP2JOPG08TWr4w==","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-AuthSource":"IA3PR11MB9136.namprd11.prod.outlook.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n c2cef3f1-0dc3-444e-dd04-08dea41d24ea","X-MS-Exchange-CrossTenant-originalarrivaltime":"27 Apr 2026 05:23:41.3417 (UTC)","X-MS-Exchange-CrossTenant-fromentityheader":"Hosted","X-MS-Exchange-CrossTenant-id":"46c98d88-e344-4ed4-8496-4ed7712e255d","X-MS-Exchange-CrossTenant-mailboxtype":"HOSTED","X-MS-Exchange-CrossTenant-userprincipalname":"\n 8tRwQNyPRt1vEMasRNj8U5REpuEvjlAgeaVyaL4L7osewp73QQQV8X8X+9lA82F1lp0l8cJzJof+mDS4LWOh1Oy9FsAa6EX0yiWxQd29VxI=","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"CYXPR11MB8662","X-OriginatorOrg":"intel.com","Received-SPF":"pass client-ip=192.198.163.17;\n envelope-from=zhenzhong.duan@intel.com; helo=mgamail.intel.com","X-Spam_score_int":"-43","X-Spam_score":"-4.4","X-Spam_bar":"----","X-Spam_report":"(-4.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=ham autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3684153,"web_url":"http://patchwork.ozlabs.org/comment/3684153/","msgid":"<20260430001607.3505699-1-junjie.cao@intel.com>","list_archive_url":null,"date":"2026-04-30T00:16:07","subject":"Re: [PATCH v2 1/2] intel_iommu: widen impl.min_access_size to 8 to\n fix MMIO abort","submitter":{"id":91537,"url":"http://patchwork.ozlabs.org/api/people/91537/","name":"Junjie Cao","email":"junjie.cao@intel.com"},"content":"Hi Zhenzhong,\n\nThanks for the careful review.\n\nYou are right that the code path has changed.  With min_access_size=8\nthe handler always receives size=8, so a guest 4-byte write to a base\noffset calls vtd_set_quad() with a zero-extended value instead of\nvtd_set_long().  Two effects:\n\n\n1. Triggers called unconditionally\n\nCCMD_REG, IOTLB_REG, and FRCD_REG_0_2 originally guarded the\ntrigger on size==8.  In v2 all three are still no-ops:\nvtd_handle_ccmd_write() and vtd_handle_iotlb_write() gate on\nICC/IVT (bit 63), which the zero-extended write just cleared\nthrough the wmask.  For FRCD_REG_0_2, wmask is zero and the w1c\nbit 63 does not fire (val bit 63 = 0), so the register is\nunchanged.\n\n\n2. Upper writable bits cleared by zero-extended vtd_set_quad()\n\nWhere the upper 32-bit wmask is non-zero, zero-extended val clears\nthose bits:\n\n  Register       Offset  Upper wmask   Bits cleared\n  CCMD_REG       0x28    0xe0000003    ICC, CIRG, 33:32\n  IOTLB_REG      0xf8    0xb003ffff    IVT, IIRG, DID\n  RTADDR_REG     0x20    0xffffffff    address 63:32\n  IQA_REG        0x90    0xffffffff    address 63:32\n  IVA_REG        0xf0    0xffffffff    address 63:32\n  IRTA_REG       0xb8    0xffffffff    address 63:32\n\n  (IQT_REG, FRCD_0_0, and FRCD_0_2 have upper wmask = 0 -- safe.)\n\nThis is safe because a guest must program the full register before\nthe value is consumed: CCMD/IOTLB fields are set before the action\nbit (ICC/IVT) in the high-half write; RTADDR, IQA, and IRTA are\nlatched only when a GCMD enable bit (SRTP/QIE/SIRTP) fires; IVA is\nread when IOTLB invalidation triggers via IVT.\n\nHowever, a read-back between the low-half and high-half writes\nwould observe zeroed upper bits -- a real behavioral difference.\n\n\nTwo possible paths\n\n(a) Keep v2 as-is, add comments documenting the safety argument\n    above.\n\n(b) Stay with min_access_size=4.  Simply remove all 25 asserts.\n    21 sit at non-8-aligned offsets -- unreachable by any 8-byte\n    guest access (alignment check rejects them).  The remaining 4\n    at 8-aligned offsets (FECTL 0x38, IECTL 0xa0, IEADDR 0xa8,\n    PECTL 0xe0) fall through to vtd_set_long() which implicitly\n    truncates the value -- safe and no semantic change.  All\n    existing size branches in 64-bit register pairs are preserved.\n\nAs I see it, both approaches are correct; (a) is simpler but\nchanges observable semantics in an edge case, (b) is conservative\nwith zero semantic change.  That said, I am happy to hear any other\nsuggestions.\n\nThanks,\nJunjie","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=ieMRsnnA;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g5Mnx6lWSz1yHZ\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 02:14:44 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wI7Xw-0004CK-VY; Wed, 29 Apr 2026 12:13:56 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <junjie.cao@intel.com>)\n id 1wI7Xu-0004Bu-9Z\n for qemu-devel@nongnu.org; Wed, 29 Apr 2026 12:13:54 -0400","from mgamail.intel.com ([198.175.65.15])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <junjie.cao@intel.com>)\n id 1wI7Xr-0003oI-ST\n for qemu-devel@nongnu.org; Wed, 29 Apr 2026 12:13:54 -0400","from fmviesa002.fm.intel.com ([10.60.135.142])\n by orvoesa107.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 29 Apr 2026 09:13:46 -0700","from junjie-optiplex-micro-plus-7010.bj.intel.com ([10.238.152.98])\n by fmviesa002-auth.fm.intel.com with\n ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Apr 2026 09:13:44 -0700"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1777479231; x=1809015231;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=WB8OnPlJPAdRAt1MDwobbcZZoiEJDK5rqiEuMTypIkc=;\n b=ieMRsnnADIzWgdGUg03/s50XfqVURDcxE1oziEU0XHYsafjx9T2mJzxi\n MxWUroQr2swaiTykNfFt+EPhCoamM0acbkfOUvYIsiYAIK9TtrTQWWtfU\n B10MNyFB9TFofer/rUuLIUb8zG+zr1muEklZI1Mqfdgcug5CG8FTLZcJN\n tODULIs/k5xtegGI230ACvqVDcTQZn5QENVYbpi+GqMGgAx1WSE9SmyIL\n NFy+Huno2+zUyFqDHscxAGsY7OH4dCZvssbxLCTnmYYxR7ISCu775poS7\n G+Uyo9m7j36i7mFDg/OCLwb5DCGlmaRsPZNpg+/RKZ70smbWvGvgdWaVp w==;","X-CSE-ConnectionGUID":["ym54vVCiSIO8v2/sJoCDqA==","jyqM5L0iRCyDF5SimmOzIg=="],"X-CSE-MsgGUID":["kOR4H7W8QNifVx1MtFPf4A==","CV15JZ+4S22cdwQ9CLLoYw=="],"X-IronPort-AV":["E=McAfee;i=\"6800,10657,11771\"; a=\"82020309\"","E=Sophos;i=\"6.23,206,1770624000\"; d=\"scan'208\";a=\"82020309\"","E=Sophos;i=\"6.23,206,1770624000\"; d=\"scan'208\";a=\"257644736\""],"X-ExtLoop1":"1","From":"Junjie Cao <junjie.cao@intel.com>","To":"zhenzhong.duan@intel.com","Cc":"qemu-devel@nongnu.org, mst@redhat.com, jasowang@redhat.com,\n yi.l.liu@intel.com, clement.mathieu--drif@bull.com, philmd@linaro.org,\n Junjie Cao <junjie.cao@intel.com>","Subject":"Re: [PATCH v2 1/2] intel_iommu: widen impl.min_access_size to 8 to\n fix MMIO abort","Date":"Thu, 30 Apr 2026 08:16:07 +0800","Message-ID":"<20260430001607.3505699-1-junjie.cao@intel.com>","X-Mailer":"git-send-email 2.43.0","In-Reply-To":"\n <IA3PR11MB9136A84869D0FA17B213347392362@IA3PR11MB9136.namprd11.prod.outlook.com>","References":"<20260424201842.176953-1-junjie.cao@intel.com>\n <20260424201842.176953-2-junjie.cao@intel.com>\n <IA3PR11MB9136A84869D0FA17B213347392362@IA3PR11MB9136.namprd11.prod.outlook.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Received-SPF":"pass client-ip=198.175.65.15;\n envelope-from=junjie.cao@intel.com;\n helo=mgamail.intel.com","X-Spam_score_int":"-24","X-Spam_score":"-2.5","X-Spam_bar":"--","X-Spam_report":"(-2.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_FUTURE_06_12=1.947,\n DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1,\n DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=ham autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}},{"id":3684531,"web_url":"http://patchwork.ozlabs.org/comment/3684531/","msgid":"<DS4PPF93A1BBECDC498B677FE8B259BCEAD92352@DS4PPF93A1BBECD.namprd11.prod.outlook.com>","list_archive_url":null,"date":"2026-04-30T08:31:01","subject":"RE: [PATCH v2 1/2] intel_iommu: widen impl.min_access_size to 8 to\n fix MMIO abort","submitter":{"id":81636,"url":"http://patchwork.ozlabs.org/api/people/81636/","name":"Duan, Zhenzhong","email":"zhenzhong.duan@intel.com"},"content":">-----Original Message-----\n>From: Cao, Junjie <junjie.cao@intel.com>\n>Subject: Re: [PATCH v2 1/2] intel_iommu: widen impl.min_access_size to 8 to fix\n>MMIO abort\n>\n>Hi Zhenzhong,\n>\n>Thanks for the careful review.\n>\n>You are right that the code path has changed.  With min_access_size=8\n>the handler always receives size=8, so a guest 4-byte write to a base\n>offset calls vtd_set_quad() with a zero-extended value instead of\n>vtd_set_long().  Two effects:\n>\n>\n>1. Triggers called unconditionally\n>\n>CCMD_REG, IOTLB_REG, and FRCD_REG_0_2 originally guarded the\n>trigger on size==8.  In v2 all three are still no-ops:\n>vtd_handle_ccmd_write() and vtd_handle_iotlb_write() gate on\n>ICC/IVT (bit 63), which the zero-extended write just cleared\n>through the wmask.  For FRCD_REG_0_2, wmask is zero and the w1c\n>bit 63 does not fire (val bit 63 = 0), so the register is\n>unchanged.\n>\n>\n>2. Upper writable bits cleared by zero-extended vtd_set_quad()\n>\n>Where the upper 32-bit wmask is non-zero, zero-extended val clears\n>those bits:\n>\n>  Register       Offset  Upper wmask   Bits cleared\n>  CCMD_REG       0x28    0xe0000003    ICC, CIRG, 33:32\n>  IOTLB_REG      0xf8    0xb003ffff    IVT, IIRG, DID\n>  RTADDR_REG     0x20    0xffffffff    address 63:32\n>  IQA_REG        0x90    0xffffffff    address 63:32\n>  IVA_REG        0xf0    0xffffffff    address 63:32\n>  IRTA_REG       0xb8    0xffffffff    address 63:32\n>\n>  (IQT_REG, FRCD_0_0, and FRCD_0_2 have upper wmask = 0 -- safe.)\n>\n>This is safe because a guest must program the full register before\n>the value is consumed: CCMD/IOTLB fields are set before the action\n>bit (ICC/IVT) in the high-half write; RTADDR, IQA, and IRTA are\n>latched only when a GCMD enable bit (SRTP/QIE/SIRTP) fires; IVA is\n>read when IOTLB invalidation triggers via IVT.\n>\n>However, a read-back between the low-half and high-half writes\n>would observe zeroed upper bits -- a real behavioral difference.\n>\n>\n>Two possible paths\n>\n>(a) Keep v2 as-is, add comments documenting the safety argument\n>    above.\n\nThis is risky, there is no guarantee that trigger bit is in upper register.\n\n>\n>(b) Stay with min_access_size=4.  Simply remove all 25 asserts.\n>    21 sit at non-8-aligned offsets -- unreachable by any 8-byte\n>    guest access (alignment check rejects them).  The remaining 4\n>    at 8-aligned offsets (FECTL 0x38, IECTL 0xa0, IEADDR 0xa8,\n>    PECTL 0xe0) fall through to vtd_set_long() which implicitly\n>    truncates the value -- safe and no semantic change.  All\n>    existing size branches in 64-bit register pairs are preserved.\n\nThis makes sense. I didn't find what happen about 8bytes access on\n4bytes register in VTD spec, but I think at least we can print a\nwarning for the remaining 4 registers, instead of silently truncate.\n\nThanks\nZhenzhong\n\n>\n>As I see it, both approaches are correct; (a) is simpler but\n>changes observable semantics in an edge case, (b) is conservative\n>with zero semantic change.  That said, I am happy to hear any other\n>suggestions.\n>\n>Thanks,\n>Junjie","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=DqdfepYm;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=intel.com;"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g5nTG2Vc2z1yHZ\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 18:31:44 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wIMnp-0000mo-78; Thu, 30 Apr 2026 04:31:21 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <zhenzhong.duan@intel.com>)\n id 1wIMnm-0000mb-2b\n for qemu-devel@nongnu.org; Thu, 30 Apr 2026 04:31:18 -0400","from mgamail.intel.com ([192.198.163.10])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <zhenzhong.duan@intel.com>)\n id 1wIMnk-000243-7v\n for qemu-devel@nongnu.org; Thu, 30 Apr 2026 04:31:17 -0400","from orviesa010.jf.intel.com ([10.64.159.150])\n by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 30 Apr 2026 01:31:07 -0700","from orsmsx902.amr.corp.intel.com ([10.22.229.24])\n by orviesa010.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 30 Apr 2026 01:31:07 -0700","from ORSMSX902.amr.corp.intel.com (10.22.229.24) by\n ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.2.2562.37; Thu, 30 Apr 2026 01:31:06 -0700","from ORSEDG902.ED.cps.intel.com (10.7.248.12) by\n ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.2.2562.37 via Frontend Transport; Thu, 30 Apr 2026 01:31:06 -0700","from BN8PR05CU002.outbound.protection.outlook.com (52.101.57.8) by\n edgegateway.intel.com (134.134.137.112) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.2.2562.37; Thu, 30 Apr 2026 01:31:05 -0700","from DS4PPF93A1BBECD.namprd11.prod.outlook.com\n (2603:10b6:f:fc02::3c) by CH0PR11MB8234.namprd11.prod.outlook.com\n (2603:10b6:610:190::19) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.20; Thu, 30 Apr\n 2026 08:31:01 +0000","from DS4PPF93A1BBECD.namprd11.prod.outlook.com\n ([fe80::60be:6463:f9c4:f41b]) by DS4PPF93A1BBECD.namprd11.prod.outlook.com\n ([fe80::60be:6463:f9c4:f41b%8]) with mapi id 15.20.9846.025; Thu, 30 Apr 2026\n 08:31:01 +0000"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1777537876; x=1809073876;\n h=from:to:cc:subject:date:message-id:references:\n in-reply-to:content-transfer-encoding:mime-version;\n bh=X+CmL8ARKAOrqShmdpz+q7BnbKMoTHRq3WiRT9rxx3Q=;\n b=DqdfepYmRW8N8lBUPDgp85jVZHofjpMs2XCIXjSmyyL0uZCK4YzgILHO\n wt73Q7jGjovpaqrTGhavkSzcN4NLnPfjeoZhVOMvK0Pvih59tg4esWX3B\n U1kA3yzdrAUjqt/7qTQUQaZSn1Vscg4pe2GnBEGxpjYcAFreI7sZNJlwl\n BCYhKwiO6CG5oEqCBsQXfxejH20HbxzFdWkHI/5kv/zb5ylFPJ8qYH0p4\n 9UL4wqoR/GKS20QiGzuAO200K4F3b3NxCwG9R0q//qWcKV9x9fRJgjHRz\n mPLtlaYpEk7Jtf2sMgjb2E3Y8gEQFMsYaAAJWlurDbbvgxQkK+VTkO7SN Q==;","X-CSE-ConnectionGUID":["DcWuGymTSGKLSqbRf2WD8A==","kwHh7qRLQZ6ZG/DJCqzODg=="],"X-CSE-MsgGUID":["bTNcrs+pSrq/oonkxTyRZA==","+MszszWxTO6S7A3waUO5tw=="],"X-IronPort-AV":["E=McAfee;i=\"6800,10657,11771\"; a=\"89857659\"","E=Sophos;i=\"6.23,207,1770624000\"; d=\"scan'208\";a=\"89857659\"","E=Sophos;i=\"6.23,207,1770624000\"; d=\"scan'208\";a=\"233680671\""],"X-ExtLoop1":"1","ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=JNjomt+/6Xppy7z1WRZJSSMnCh3xK6shhqJuc6ceZ2TURHvRvm2xzNRp+kmWyj/qplGWVXlXMITfCGcnjbJ3AAkIR/J5z8DqNkGWdJjutiTThlk8cIIT/wB4nPzNyE1Yb1deWqIrA7oc0lSxkFRUDEnmml0wI0rZkwpNVssg6/UkFAREGytPnc2r2+sgBC9ZSd5/8ouY/NN/9ePb2Nqj3qKIqzeS8gS3F9DFfwiVi7q5lxrzyHfLsqJdoqX23YUweucf+z/qMDaL6nxAhTX5QpgvNxzGseuOPZnNRfWgwTYD8B0SoXrinGJgG+/uN+pf4yzLH30/hb/t/UwDKal0ig==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=ec4BbIvCUxH3mQVx6ewH44TQm3IgXQiScjbRaIqNqRU=;\n b=MA2o3ar/Faq5AgzO69HgEEwGoUyWB+t3++OCCH/GrfJv5Fzg9ZjaPpGngdITYn8T2ESSTa5pzl2QNQ3VzewV9MFv/xXYAnv6yfbUScPBdiiFIeNW9DPk1W9XCHemSlQlAO1YRU8sfD3MHTYMlewkje+Ij4VLy0xkB+tfLB7cDH84pNFshobxAW591CbUXSHLna/Z4Enr7Xhl/J+TtubQHeAb/VhyXrTIrTv1gc2txq3zhMf4afBtRU0mSWmav+n0QfSHtxOb7aZD43WHPElsdeM01Vc4EoIBHEb6WoECdsPgSNrLzjg9GeBemUkX5IWTGpRsFzWkXZMTexGEZeOQfw==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com;\n dkim=pass header.d=intel.com; arc=none","From":"\"Duan, Zhenzhong\" <zhenzhong.duan@intel.com>","To":"\"Cao, Junjie\" <junjie.cao@intel.com>","CC":"\"qemu-devel@nongnu.org\" <qemu-devel@nongnu.org>, \"mst@redhat.com\"\n <mst@redhat.com>, \"jasowang@redhat.com\" <jasowang@redhat.com>, \"Liu, Yi L\"\n <yi.l.liu@intel.com>, \"clement.mathieu--drif@bull.com\"\n <clement.mathieu--drif@bull.com>, \"philmd@linaro.org\" <philmd@linaro.org>","Subject":"RE: [PATCH v2 1/2] intel_iommu: widen impl.min_access_size to 8 to\n fix MMIO abort","Thread-Topic":"[PATCH v2 1/2] intel_iommu: widen impl.min_access_size to 8 to\n fix MMIO abort","Thread-Index":"AQHc0+QkF5ESGoU21UOa0hgTlinj8rXyYsIggARiiYCAAIaKwA==","Date":"Thu, 30 Apr 2026 08:31:01 +0000","Message-ID":"\n <DS4PPF93A1BBECDC498B677FE8B259BCEAD92352@DS4PPF93A1BBECD.namprd11.prod.outlook.com>","References":"<20260424201842.176953-1-junjie.cao@intel.com>\n <20260424201842.176953-2-junjie.cao@intel.com>\n <IA3PR11MB9136A84869D0FA17B213347392362@IA3PR11MB9136.namprd11.prod.outlook.com>\n <20260430001607.3505699-1-junjie.cao@intel.com>","In-Reply-To":"<20260430001607.3505699-1-junjie.cao@intel.com>","Accept-Language":"en-US","Content-Language":"en-US","X-MS-Has-Attach":"","X-MS-TNEF-Correlator":"","authentication-results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=DqdfepYm;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=intel.com;"],"x-ms-publictraffictype":"Email","x-ms-traffictypediagnostic":"DS4PPF93A1BBECD:EE_|CH0PR11MB8234:EE_","x-ms-office365-filtering-correlation-id":"7da47e7e-7db1-47b5-67c8-08dea692cfcf","x-ms-exchange-senderadcheck":"1","x-ms-exchange-antispam-relay":"0","x-microsoft-antispam":"BCL:0;\n ARA:13230040|376014|1800799024|366016|38070700021|18002099003|22082099003|56012099003;","x-microsoft-antispam-message-info":"\n /CP9a5Q9Q3/d8pemAehRiEevO6beRAsZ5JYfvUlrtzb4cMyuvvEa6SiiZt65gBo8/Z6AnyvD7ghE2D/y0G3LoIOMG35XFZ7mQz8w+nd2H6qlJjd0l7oGpY4XMIwrKgFwJLUtb3SSTnqozQm+8/xv9Xa+4BlEgAEpBzvA2s/vJIbaXWzFEbMG1ifnaFe1XpBfXhi0w12j0jPQQSmo7Q1PzUSWsHK4gDBqhkosQyvU8JX6KEHppdWhsfjoMbhEa8rjiYObIUh5B6kp/5qVccNus7lQYlr28r+KsembsMd25RcPYh1aGVpIraRyyMVsycJf5FkcNfESZfiOV/begx/naYr4+wiv/EmbVf+R9TcT5Vd6pR61+6nQnMzW5wbKXQS7PAqjTFcXqetDE78l4oGBN1jEQUSkXovz9UoX+GK8TCaYpkXZkeAwxMaM/aIiodYPSUYmi4W9gEN53cGmxToaZ5uOl4Ebr+zKzHrhXTm0nnDHq/ddvYrfwLrxlNZobdZnbEQvbHr/67M+L6EHaS4E0DWya3P7FtFDmdQC7WPFK0sq1pesZKMsLdR9igyl7JGzUzksyfbHPRypOzymZuGnEHvnVrZpklkiSI2hTBds/p7DQIbmi+tnwN2s1Dy71Z7f97cOb+BcI8/PsqiHkBZeuWW4VteOayrVsyfamc2ma4Wqf0PhTvV9RAAHQiUsbnFUeqoBpr+B++iE190zLBXn6jp4BH02fk5jrowZ7FpHE2V464I9TY4x1kGmX+xYO247+OPUluMxZ0ikCunIytmjZHWEHhP8tDn80KttC4/er/g=","x-forefront-antispam-report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:DS4PPF93A1BBECD.namprd11.prod.outlook.com; PTR:;\n CAT:NONE;\n SFS:(13230040)(376014)(1800799024)(366016)(38070700021)(18002099003)(22082099003)(56012099003);\n DIR:OUT; SFP:1101;","x-ms-exchange-antispam-messagedata-chunkcount":"1","x-ms-exchange-antispam-messagedata-0":"\n TUNjE73WWwTu6TnH/DgAsPeRh1Y7+iIlBo/Vgaei4HPZdQZiArRUisVpwyUtpMwYotYVSJ58bdkKIr0PAYdxSmTsszDB7OEz1Et2JDfd2rPTztZcbAj55E5zdSi1bg0Xs5FJI5HdelxqbOcxFmBFEReY6KgpPtnYP6mW5lqOv6N5Urb9mK2OYY12sVOHOPjFki/RUvNH87PXDlW+PWQubkQ5At/sAxC+xK7c3OtF3E/1QwZx5pFg0Rcu+KG1Y/9TGj6r1IqgGaZZw1Fmwz0NAVT/rQgyMCtiCFaYDWtra+kj+xILb/s34EJpqXqAIDnntrRj4BSnhCwYxRTfJdNq6IJ+LoO+eVEDc2MUibpcwpB9KpQoAnqIuLuL8iCKZ8b389er8ngPuqkFVuqIW2MsacbcW/p2AVc6Tg8jVVEC/yZKkNDZ5eVK6ebYF2RAN2YGO8EkK6pyCt43X3x+rSo6HpFn/UNAZAKekUC7rM/KwcyTkj1tAFWPsnLUswLGuk1090hzkmU9MeDUVgQeEv8R8NDZf/S1mnXfOCNwxormPaoMU6v0pvIGXS/PeoRq/lxYbmoDgza6HeIySTiCTtsu0snH8FUQEfpU3r5QhRP+fcLU2GndVhPyk3Bf9kPM8kJIW5+HxifBslz8IMMbZxQPOVyYPsY2vj7c0EAh774dY+oMK1mqi2cvBfnf/HcuAUiMslNMd07nZ2ZOmMsG3vhMSm/qIYCNznm9X8m5iX936mi59Hj9qRTK5+T75doLt1/JkXpM6DMWexF34t/TlmyQr4Rj0Fjcq9oGGuZPlTqop6fiGRKHZ7fZQX1HmtblUlRpGoFOVAktX3n22aSILoGGFw4GH7xvllK5otp9Up/X4sfoza06TlhozwVktIuwtXXnF7JPP9xllDTtjDq7kQ0qcZyAq/nosk1HUoGkEPV2koIVHhJ3xV05ZMTOVFpLmcHeKKtXklhBuyPmYTg7FyeUNxYscl5V6lF6KWCinW4NjdpsbUHf/apNzzJm6pOD61eGzU1GB2TX4y9qx6pOfag0MsCbm65bdV7L1/uVRFW9sqS07CbQe+eSdw2TitzN+miCcedyBgmTZ5G0Y6RBQteXmy4FKum7KL4ltSWWXQcbNnM+fdoovET+SR0sjFhCxEV1UfOvEg9aP68YkmjFeA27cA8EMxqScPXxP6r81U4Jd9Czj+7kdCGWo41oCfAQmwsObliI98OeTzCmzmTibkZZllxxTN/FyBUleDk53yQ/G9hFyK9yahsiAMykhT+wnzrwl9Zr8BWr6jPzIb0XPndg95AGkfYPOYjDnsGxfSu1P53gFrZMDaEcZhkskmA8aGp4y5g1PEcJaI0R+3CM12Q7EZq0IEzLcOuD/QxbJf+uSxFuIoKtb/kXujm77xkpWULA13IWBSvCNKbtTpPK9QF7UqiFmL6LTOzCLJssPj6hR2rKLBsNgeWxIPZQpSGYX/IXIBGuzEpd6GUOdf5iIIWCjB3kgZtVIBu8Msu+Om+xUaqXJOwwGKoC2EMM8EkoA6Sb98qZnV66dL/DyukrROLlFPPXcRJcw3m975u8pRnPI7L0ZRa9678qekz01agK//O9NDjBbMyv6DlDo/MPeV/GJ3VbvbKc+23Osr7/L8ifCw8oxxa8WmuASruE8NgoZOlHYJSqaQrLF3lRknb8mQPA1i6/41Tkjmlmg1KF/qfHQq8MqPn0lY0cB4dDaEiq1ZSZiPHNPeUDwrzP+Ud86KXTrw==","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"quoted-printable","MIME-Version":"1.0","X-Exchange-RoutingPolicyChecked":"\n NRBWXPRRxAbmiZ0W7MYzD7WQPXNV4ENKM3tbSa4lTd/LgQTb4dn+6AwT0/Pa3kPkIEgXUatURDzoNALP+w3KLntHw8ixEpOYsX9DknxAy0h7gfHBFWLHlICG0YSxei2hAqMytOvFQMJVlXgN534WBe8ece8MsLYNe5h9aMiXFEW05lw8nAzMpbDR9+KBo3dC2RhSCNvaA4OWvo+u/awYFU/lyrdE5tTNJFSsXBgccJH/e9N6TUz6YGsqzk+qRLrM/InDuw33Gtr9dOXcfJOUaRYZdvzRxosD8YF5w13pWEj8ncwobSFOAXRwA9byGXKlBNwoMkE5Om/hDIuM4Zx8fA==","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-AuthSource":"\n DS4PPF93A1BBECD.namprd11.prod.outlook.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 7da47e7e-7db1-47b5-67c8-08dea692cfcf","X-MS-Exchange-CrossTenant-originalarrivaltime":"30 Apr 2026 08:31:01.4946 (UTC)","X-MS-Exchange-CrossTenant-fromentityheader":"Hosted","X-MS-Exchange-CrossTenant-id":"46c98d88-e344-4ed4-8496-4ed7712e255d","X-MS-Exchange-CrossTenant-mailboxtype":"HOSTED","X-MS-Exchange-CrossTenant-userprincipalname":"\n v7UPwaMPw2CwaQb10WKQdpKOK1QdPUhAIaAgUqfORESO/8CXnn+70LbFGsf+mdNGtR1aGqo9d7A3EMeZrKFF3vmtBXL8D0AllFE/zu1to9c=","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"CH0PR11MB8234","X-OriginatorOrg":"intel.com","Received-SPF":"pass client-ip=192.198.163.10;\n envelope-from=zhenzhong.duan@intel.com; helo=mgamail.intel.com","X-Spam_score_int":"-43","X-Spam_score":"-4.4","X-Spam_bar":"----","X-Spam_report":"(-4.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=ham autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}}]