From nobody Sun Apr 6 01:30:59 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1739177246; cv=none; d=zohomail.com; s=zohoarc; b=ahB/HUHZyy3izsjpKM+G41gg5gkv/grZI7zt0TkDuO//05qkvWs230+ug7U53zKth62Xa0ZGSYQM6PROozMSyam4PoEifm4mEy2itxxI4sA09qeIRHWZah+HsYHaA2V5hym8ostL4+/Hgnp5YGG5wATvNyDUVBz/IUwq5Dz9o7o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1739177246; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ef1RecRxAPZwDQS2yKvZrhemiPbygCkC67O8bP/q9Zg=; b=kUyGvC+SuFwm0n28u1dRtW/w1XGFOsUNIKnOfPxi2ZLRxOKhDnzr42KdmD1+7H89D1eTkuXg6RPQt2Papdu+jsYfc4TdGbwl8BGtVLPafJww1p16LeHIUbwOCi+UDwWkVgB+rl8/UKT7PeuUme56pAsFv6UHkU1jGp14VzQg51w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from=<david@redhat.com> (p=none dis=none) Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org> Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1739177246096592.4645503817452; Mon, 10 Feb 2025 00:47:26 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from <qemu-devel-bounces@nongnu.org>) id 1thPRb-0006G6-Tl; Mon, 10 Feb 2025 03:47:07 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <dhildenb@redhat.com>) id 1thPRU-0006E0-TM for qemu-devel@nongnu.org; Mon, 10 Feb 2025 03:47:03 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <dhildenb@redhat.com>) id 1thPRT-00045Z-8N for qemu-devel@nongnu.org; Mon, 10 Feb 2025 03:47:00 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-288-QHAAzfXfNI2lPQCzDcDmCQ-1; Mon, 10 Feb 2025 03:46:56 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-38dd91cd38cso702850f8f.3 for <qemu-devel@nongnu.org>; Mon, 10 Feb 2025 00:46:56 -0800 (PST) Received: from localhost (p200300cbc734b80012c465cd348aaee6.dip0.t-ipconnect.de. [2003:cb:c734:b800:12c4:65cd:348a:aee6]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-38dd6080926sm5625957f8f.83.2025.02.10.00.46.52 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 10 Feb 2025 00:46:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1739177218; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ef1RecRxAPZwDQS2yKvZrhemiPbygCkC67O8bP/q9Zg=; b=FsHHtWH92L8m+XpNxkh8p3DdC5/UzPXk3rlZHfFth/vFkvtRSTp2o20khdTePp/kZAv6GU Adk36zd6N63hGmh6JH84FTrMtqWUzTzI1vrHsFJXt+Kt4ULk6eTwY7Nnb8NwmowJwgbq2+ 99uqDJhfBxyoMWeBzdqQqfRKbkiNlcs= X-MC-Unique: QHAAzfXfNI2lPQCzDcDmCQ-1 X-Mimecast-MFC-AGG-ID: QHAAzfXfNI2lPQCzDcDmCQ X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739177215; x=1739782015; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ef1RecRxAPZwDQS2yKvZrhemiPbygCkC67O8bP/q9Zg=; b=gz5PcncQ0rHVShNSqTf7X/cI/mpzsS8KQ47uH9KAf35J2m/UzNobOq3Kef2BovHbL3 2N7ADsDsCEXg1dazBrUDGa63jjzUgSkkVvauuAj1qmhqTjihb4EpUtDS1RXg1syC5rrY Gdze8xqITyvkTiSVshsemERESdOsACmun/5qEDnwSI0dzqWo58MVLrsGYdtI4Uh3jkio S3h9uEIVYpgRdvO8q7iIZlbq98fccqCbaPWlvLvbSbMLzitCSr88ECpEoPoFj75oLFug 6dgn6cplSHfttAgku0NGm5yoKaanvSOCe0ObrGEzQSWw/Npw9FT+Y4iAsn8AgwSZBGqY Todw== X-Gm-Message-State: AOJu0Yxgp4SzdXITD9XvmdUJzIG6fNf96itexeHy5ZSLvN1S0gexPFWj N2BgusRTQTS4Tbl+DfcqXSoXkrYa1Yys/sS0CLaPC92yCIefQHnVKXcWnxx/bZk5bjcGbWi8yQ/ ecEt4h9taShfUJ92ChNd+DBY9jabPCRhSIIEJMokg8I7PnNSagGA2iSm07fT6HI1A3hRU+w1d3B eA/EXejfoC9VKG7UqZY4W9KcNjZ56pfxZ4 X-Gm-Gg: ASbGncvMXyyFvQ+MLSoT0IbdjSEbyeYIgP6fbK5MEpsDvzaz/Kv3owBuYYZ/viQ/pEe oumb9eNL9UWL+hNCnKjSmhupm4AQiuu16MFQAoZbWteV2YmVJqNGWXxqslYbWlqak8oxTk2yBf5 UBJHLdpY3+EQPJGOq36iFGn+XtkPhhTGc20rpFEstfyO5RyKBTt74JiHvFwJUJUvUzcitU4iVlP ZQIA8VrRl676lLT8MAa84YFP6AqGW9o+ic0cr/BqMyCmeNhlxMPPf2tOAn7tx9V+tAkPjoH78AW 8Q/zDSGWZzbcor8H+nvCqceFU04AzgJIzdS8aRMgkHkM8NOiCRFJ4VkoyXZ8UbJMTQ== X-Received: by 2002:a5d:59ab:0:b0:385:fd07:8616 with SMTP id ffacd0b85a97d-38dc891ff80mr9299563f8f.0.1739177215458; Mon, 10 Feb 2025 00:46:55 -0800 (PST) X-Google-Smtp-Source: AGHT+IH1ciQeMz1l11TsPg1Lr+XwpjVAysO8rL1opUL1Sd34fSwKdOdq8dLAdW11YNpSfvEBNXHUZA== X-Received: by 2002:a5d:59ab:0:b0:385:fd07:8616 with SMTP id ffacd0b85a97d-38dc891ff80mr9299525f8f.0.1739177214986; Mon, 10 Feb 2025 00:46:54 -0800 (PST) From: David Hildenbrand <david@redhat.com> To: qemu-devel@nongnu.org Cc: David Hildenbrand <david@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Peter Xu <peterx@redhat.com>, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>, Peter Maydell <peter.maydell@linaro.org>, =?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>, Alex Williamson <alex.williamson@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Elena Ufimtseva <elena.ufimtseva@oracle.com>, Jagannathan Raman <jag.raman@oracle.com>, "Dr. David Alan Gilbert" <dave@treblig.org>, Stefan Zabka <git@zabka.it> Subject: [PATCH v3 1/7] physmem: factor out memory_region_is_ram_device() check in memory_access_is_direct() Date: Mon, 10 Feb 2025 09:46:42 +0100 Message-ID: <20250210084648.33798-2-david@redhat.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250210084648.33798-1-david@redhat.com> References: <20250210084648.33798-1-david@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=170.10.133.124; envelope-from=dhildenb@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.405, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.01, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, 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-devel.nongnu.org> List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <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>, <mailto:qemu-devel-request@nongnu.org?subject=subscribe> Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1739177248236019100 Content-Type: text/plain; charset="utf-8" As documented in commit 4a2e242bbb306 ("memory: Don't use memcpy for ram_device regions"), we disallow direct access to RAM DEVICE regions. Let's make this clearer to prepare for further changes. Note that romd regions will never be RAM DEVICE at the same time. Reviewed-by: Peter Xu <peterx@redhat.com> Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Stefan Zabka <git@zabka.it> Tested-by: Stefan Zabka <git@zabka.it> --- include/exec/memory.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/include/exec/memory.h b/include/exec/memory.h index 9f73b59867..5cd7574c60 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -2997,12 +2997,19 @@ bool prepare_mmio_access(MemoryRegion *mr); =20 static inline bool memory_access_is_direct(MemoryRegion *mr, bool is_write) { + /* + * RAM DEVICE regions can be accessed directly using memcpy, but it mi= ght + * be MMIO and access using mempy can be wrong (e.g., using instructio= ns not + * intended for MMIO access). So we treat this as IO. + */ + if (memory_region_is_ram_device(mr)) { + return false; + } if (is_write) { return memory_region_is_ram(mr) && !mr->readonly && - !mr->rom_device && !memory_region_is_ram_device(mr); + !mr->rom_device; } else { - return (memory_region_is_ram(mr) && !memory_region_is_ram_device(m= r)) || - memory_region_is_romd(mr); + return memory_region_is_ram(mr) || memory_region_is_romd(mr); } } =20 --=20 2.48.1 From nobody Sun Apr 6 01:30:59 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1739177265; cv=none; d=zohomail.com; s=zohoarc; b=X8tZsG8rZQ9abv4J7mTK3j9K1fOP11zkv6WuXO0D8sqMC+0urq8pq/rMBVvA67x+44HmPUq4Btb1ymdRE0skAJ/nLzfNKXuJ0D8v2QAkpGJv8pamJYOvtx5WrDfenNylTQKmJd0EKeeL1fGPl3gX5Tc/z0ePcKeRkeh7/L27uKQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1739177265; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xTOvCrN4mZxccS1AJtceqMgg7d6ocLtBCsm8pA3bnfA=; b=Nz+4GdQ71jH0VGUyf+lRun2kxGXsBscZnNma/HeVE96v52Jv4ZQezsC5HH/C7LWQAs/iHgXonE4CG02jsA6+4iOphRHBCNmHO/IZuUZ4J8rtvWlulpqpUU4vmbEhifG9RrTkjiwO4n6rr9yyhNt/s1zi8GJtAtO9E/dauNo9GMs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from=<david@redhat.com> (p=none dis=none) Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org> Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1739177265769284.4518977694453; Mon, 10 Feb 2025 00:47:45 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from <qemu-devel-bounces@nongnu.org>) id 1thPRj-0006Hb-Pc; Mon, 10 Feb 2025 03:47:17 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <dhildenb@redhat.com>) id 1thPRY-0006F9-1K for qemu-devel@nongnu.org; Mon, 10 Feb 2025 03:47:04 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <dhildenb@redhat.com>) id 1thPRW-00045u-HA for qemu-devel@nongnu.org; Mon, 10 Feb 2025 03:47:03 -0500 Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-592-AvxX1k65MnKje5Jw5LPSYg-1; Mon, 10 Feb 2025 03:46:59 -0500 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-43626224274so24146725e9.0 for <qemu-devel@nongnu.org>; Mon, 10 Feb 2025 00:46:59 -0800 (PST) Received: from localhost (p200300cbc734b80012c465cd348aaee6.dip0.t-ipconnect.de. [2003:cb:c734:b800:12c4:65cd:348a:aee6]) by smtp.gmail.com with UTF8SMTPSA id 5b1f17b1804b1-4391da964e2sm140093095e9.4.2025.02.10.00.46.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 10 Feb 2025 00:46:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1739177221; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=xTOvCrN4mZxccS1AJtceqMgg7d6ocLtBCsm8pA3bnfA=; b=cqc6/kO9x4IRHL9qOp5yQs++bJWcDpwXEbsb1JEkM0IU4ENSo8jUpuNr6D40l+/6rRBDNo nWobPWaZ5kAoPhb8T4BsuRSdZpKYGY+ssOzmnGGrgw0s/koQ4OMw44rWfVpXLVE3zNhDj+ S/m5qKPijI5PrfSndGSDb1r6MDFFx58= X-MC-Unique: AvxX1k65MnKje5Jw5LPSYg-1 X-Mimecast-MFC-AGG-ID: AvxX1k65MnKje5Jw5LPSYg X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739177218; x=1739782018; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xTOvCrN4mZxccS1AJtceqMgg7d6ocLtBCsm8pA3bnfA=; b=FUr7zneDURqg29YHZ/FHDQfNDuTEtLs/OFEJfrJBp29AqUbPDhH5zlvObnV5S3dF1F gv8Bh+E9ttI2+881zn/wij8zjxFqOnwq4Vz9QUVlHILTnhu50Ru75UQ9ixJmeUTvjFnf EgAK9nPV4EMq0Ayh9ZfK+dZ0U3Koqw3HPbq8vjcoikI6FhqYxODDR6sDUwqvLi1UWRfq saIgbqtUfQ7BpVGKC83/ngq7IlISAv4iTWPIL4x8qHb37+08HkoqVqI2XufeyMKe+wC0 8zGeVyBSBukL6znGCOAoEwWief9FlF6ZIJN5LNlz66yg4Zs6L2e6WhPwKAtfYszUeWzF N2Gw== X-Gm-Message-State: AOJu0YyP8zVAvv8vpbU+3CNg4wKjxyQh5inZj+a/NfJ7dO1D1UWN9r8z joi4i5GYFAvHpHn+41+Umuh9ssSdnsDwU/YjHdWf2vUnmqJabiPXGIJVYYG5HyVzEEXKVXabDh/ cUzatdr5iNweiIBHL4FL6BJB+JPYWkpIeVlVpS50JBkOGx+czF3OCtgbjYEk0E7Ffgwxdqsy/B0 eOCJ9O4RU/OGUrIjSITfYeMxCIz9Kwn7qL X-Gm-Gg: ASbGncsYDyCgTxEuyzUrHq31ts+lu945t5mSlG5b3kWt6iu7Pzp82ySce86QhWJHNwV xubpdhle8hHWQbtl1wq/EKfj8t6rbhK7gSX26r/nUppyccIx1TNIgIB4SmzOJGuwh6c/L8RtA2n ku0TpUBdUNTQ8BJXNHOlYpTsH5BZZHZzb2Z5Vv3MqVg++N/+TxcacofDjGc9SWyhm1on8ZwpEWB 0HHGY22o5FSahxdjHDOWTmbSOALal8PODdGx+2C7mJkXVKs1HBru2zfbenziXorVbMDj/5fVWu7 mteVF8tfYmTpsbkLKGMaXSo99FYND9vl9DXWnZQSHKO4wi+PCpJkNvqoerLAKO9UKw== X-Received: by 2002:a05:600c:5105:b0:439:386e:9859 with SMTP id 5b1f17b1804b1-439386e98d1mr51120625e9.4.1739177218686; Mon, 10 Feb 2025 00:46:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IFPjDiL5pZBi9owqpm+TapF2OF2MjbbZOLDJ+wjvZztM7NQQaKqaaMRpgxCR1zkkKMTKOL0Cw== X-Received: by 2002:a05:600c:5105:b0:439:386e:9859 with SMTP id 5b1f17b1804b1-439386e98d1mr51120265e9.4.1739177218222; Mon, 10 Feb 2025 00:46:58 -0800 (PST) From: David Hildenbrand <david@redhat.com> To: qemu-devel@nongnu.org Cc: David Hildenbrand <david@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Peter Xu <peterx@redhat.com>, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>, Peter Maydell <peter.maydell@linaro.org>, =?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>, Alex Williamson <alex.williamson@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Elena Ufimtseva <elena.ufimtseva@oracle.com>, Jagannathan Raman <jag.raman@oracle.com>, "Dr. David Alan Gilbert" <dave@treblig.org>, Stefan Zabka <git@zabka.it> Subject: [PATCH v3 2/7] physmem: factor out RAM/ROMD check in memory_access_is_direct() Date: Mon, 10 Feb 2025 09:46:43 +0100 Message-ID: <20250210084648.33798-3-david@redhat.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250210084648.33798-1-david@redhat.com> References: <20250210084648.33798-1-david@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=170.10.133.124; envelope-from=dhildenb@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.405, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.01, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, 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-devel.nongnu.org> List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <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>, <mailto:qemu-devel-request@nongnu.org?subject=subscribe> Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1739177267918019000 Content-Type: text/plain; charset="utf-8" Let's factor more of the generic "is this directly accessible" check, independent of the "write" condition out. Note that the "!mr->rom_device" check in the write case essentially disallows the memory_region_is_romd() condition again. Further note that RAM DEVICE regions are also RAM regions, so we can check for RAM+ROMD first. This is a preparation for further changes. Reviewed-by: Peter Xu <peterx@redhat.com> Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Stefan Zabka <git@zabka.it> Tested-by: Stefan Zabka <git@zabka.it> --- include/exec/memory.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/include/exec/memory.h b/include/exec/memory.h index 5cd7574c60..cb35c38402 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -2997,6 +2997,10 @@ bool prepare_mmio_access(MemoryRegion *mr); =20 static inline bool memory_access_is_direct(MemoryRegion *mr, bool is_write) { + /* ROM DEVICE regions only allow direct access if in ROMD mode. */ + if (!memory_region_is_ram(mr) && !memory_region_is_romd(mr)) { + return false; + } /* * RAM DEVICE regions can be accessed directly using memcpy, but it mi= ght * be MMIO and access using mempy can be wrong (e.g., using instructio= ns not @@ -3006,11 +3010,9 @@ static inline bool memory_access_is_direct(MemoryReg= ion *mr, bool is_write) return false; } if (is_write) { - return memory_region_is_ram(mr) && !mr->readonly && - !mr->rom_device; - } else { - return memory_region_is_ram(mr) || memory_region_is_romd(mr); + return !mr->readonly && !mr->rom_device; } + return true; } =20 /** --=20 2.48.1 From nobody Sun Apr 6 01:30:59 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1739177260; cv=none; d=zohomail.com; s=zohoarc; b=m0WM3L+JVthwJof8J8dtC1H4OBxzRDEOF04hmndWSzgNbRJlMRcyTtTR/DUqZq0Gips6JFqYLNZPlC7P4uPH/6fCKkoGO/bqwGCjSe570E36/zugcYdRr4V2LADEnAzWcttEjQ4TOpyt8YpuMKTIVuPUGEdU5Mo008qhI28c6Rk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1739177260; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LQ0MnOK6J5ZbAzCKF9M2npVZxNDGBf3t+YvQ1I+4pxw=; b=idIYLXcowU37v7LC7L2u8reHLPhCx+oOSIb2WSRNT1muvepV6lBJiwLJSb8gIihfcz5lDBx8XJ0/6j7jV82mt5agampvlfVr0MpA8PIkuL2OCiLjDjvKbF/CnrojQBYQQRvC75yhFWJ9VvmBJVU3n7Y+gkhIn90R/f20DIZRb+0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from=<david@redhat.com> (p=none dis=none) Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org> Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1739177260572687.6444244954819; Mon, 10 Feb 2025 00:47:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from <qemu-devel-bounces@nongnu.org>) id 1thPS3-0006mT-TS; Mon, 10 Feb 2025 03:47:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <dhildenb@redhat.com>) id 1thPRa-0006FR-5W for qemu-devel@nongnu.org; Mon, 10 Feb 2025 03:47:06 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <dhildenb@redhat.com>) id 1thPRY-000463-Lm for qemu-devel@nongnu.org; Mon, 10 Feb 2025 03:47:05 -0500 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-479-R-vXS_8ANPehTpXlYoclaQ-1; Mon, 10 Feb 2025 03:47:02 -0500 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-38dc88ed7caso1682617f8f.0 for <qemu-devel@nongnu.org>; Mon, 10 Feb 2025 00:47:02 -0800 (PST) Received: from localhost (p200300cbc734b80012c465cd348aaee6.dip0.t-ipconnect.de. [2003:cb:c734:b800:12c4:65cd:348a:aee6]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-38dd3fc7ee5sm6353911f8f.39.2025.02.10.00.46.59 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 10 Feb 2025 00:46:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1739177223; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LQ0MnOK6J5ZbAzCKF9M2npVZxNDGBf3t+YvQ1I+4pxw=; b=ao+mf3UkEzbFIytoaVbkEMHSMZEyTQbrEvcme5ExogSLq5GFXR1Q1TnOG68Gz8nx6xETxw iVSuTTaIhBjEOmqWmBUWysMLBmL89aAE33YJZ2CCaAmaGB6tE9dwU4960SoPWCJemfC3hN +C7TxwDeDnk60xae89TyInmt2/FU9VY= X-MC-Unique: R-vXS_8ANPehTpXlYoclaQ-1 X-Mimecast-MFC-AGG-ID: R-vXS_8ANPehTpXlYoclaQ X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739177221; x=1739782021; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LQ0MnOK6J5ZbAzCKF9M2npVZxNDGBf3t+YvQ1I+4pxw=; b=nk2esi3F3p41CITANzB7Xiy2+v2Kl5omWiECeTXP3y6IiXjdHnxroSAsSlQRcIhtwG ZFmEgw9avGr+a3QFM+/phX5jLvuReoi9HlysKbPRNkhUazYPuJGLDK+iqDk9vgZJGayx gxi2yoKwH/WDhTjABvrwbzPVVsIwbwJC/+nCLdUXez4XU8sfGNhkyu1QlU74kKr81zY/ KmcqMD4pwvy0XPT7cIFnkJfIq2G9q3w9qnSgoC9Wplv5TNhzF2Der40UKd+Upzn+4aq4 g9hTq7P+F+aQbzcVzfri2YgZiyHSGxII5pXfFNpwGLelYeDP4KV+S09DBM5lHyCZMLES qKMg== X-Gm-Message-State: AOJu0YyB0bWzSUZcq4C6G3vol7kCbD9HpvVZnVhB0xq3QjEqJsQuJue7 Q7fRn11iCu7CizfM4QCxLEatm6D3hxUJX+AgvkWP2FAlFRZ5Xo3kGdVv1Rzt5iS+RxGeCQurH/3 gIV6Pix3t50SENe4e0qrVlmDf9Ia7Y6uJGmrwaXMEGO3VqGn5cX8mVG2HkshHtBa/iqlGP6OkDa TOZvJ6Z1nMyOgbqECkt37GVbMxXpIj+dOC X-Gm-Gg: ASbGncuGCjE43/9NxPw2wlpoSfX0ZyQJPLuAT26zWtxDvIi3ok3JFFxTWc7V3VrpUyj rI1F7gNpO8wShmRCIZLZvmyDB9ApvqNx7YDYtcZf5mW3PdS4sjYeJaKKMIiZUJPS9cTF7xuTbLU LuP8dyN/hDt0Lo+CiSbEaS1PsKa6BQZtWsM8XgtfoP/ClL6xgko05+qNtKJE8nPnbmy3S5NWSaT udMzPFOOx74kQLXbnRCzZKa2pyoBnuIn2ygAAewhkmgLX0Kyh+dc0y+idwXc3b4tXsc7t7CeLjS RQbdSCuuOHno1vO/odVLKQCUrruoGM4m47W9VRlG3O+rWo8W9vqHms2AJ1xZeSc7XA== X-Received: by 2002:a05:6000:402b:b0:385:fa26:f0d9 with SMTP id ffacd0b85a97d-38dc89171f9mr8997774f8f.0.1739177221143; Mon, 10 Feb 2025 00:47:01 -0800 (PST) X-Google-Smtp-Source: AGHT+IEj24jp8vFAi9fkmfq+B8t3F/keE4RoVAcDIib9pUwgs828Kh+Xu8VCxsS74eYzU4OsxjUygw== X-Received: by 2002:a05:6000:402b:b0:385:fa26:f0d9 with SMTP id ffacd0b85a97d-38dc89171f9mr8997741f8f.0.1739177220687; Mon, 10 Feb 2025 00:47:00 -0800 (PST) From: David Hildenbrand <david@redhat.com> To: qemu-devel@nongnu.org Cc: David Hildenbrand <david@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Peter Xu <peterx@redhat.com>, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>, Peter Maydell <peter.maydell@linaro.org>, =?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>, Alex Williamson <alex.williamson@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Elena Ufimtseva <elena.ufimtseva@oracle.com>, Jagannathan Raman <jag.raman@oracle.com>, "Dr. David Alan Gilbert" <dave@treblig.org>, Stefan Zabka <git@zabka.it> Subject: [PATCH v3 3/7] physmem: factor out direct access check into memory_region_supports_direct_access() Date: Mon, 10 Feb 2025 09:46:44 +0100 Message-ID: <20250210084648.33798-4-david@redhat.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250210084648.33798-1-david@redhat.com> References: <20250210084648.33798-1-david@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=170.10.129.124; envelope-from=dhildenb@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -44 X-Spam_score: -4.5 X-Spam_bar: ---- X-Spam_report: (-4.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.405, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=-1, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, 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-devel.nongnu.org> List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <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>, <mailto:qemu-devel-request@nongnu.org?subject=subscribe> Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1739177261974019000 Content-Type: text/plain; charset="utf-8" Let's factor the complete "directly accessible" check independent of the "write" condition out so we can reuse it next. We can now split up the checks RAM and ROMD check, so we really only check for RAM DEVICE in case of RAM -- ROM DEVICE is neither RAM not RAM DEVICE. Reviewed-by: Peter Xu <peterx@redhat.com> Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Stefan Zabka <git@zabka.it> Tested-by: Stefan Zabka <git@zabka.it> --- include/exec/memory.h | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/include/exec/memory.h b/include/exec/memory.h index cb35c38402..4e2cf95ab6 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -2995,10 +2995,13 @@ MemTxResult address_space_write_cached_slow(MemoryR= egionCache *cache, int memory_access_size(MemoryRegion *mr, unsigned l, hwaddr addr); bool prepare_mmio_access(MemoryRegion *mr); =20 -static inline bool memory_access_is_direct(MemoryRegion *mr, bool is_write) +static inline bool memory_region_supports_direct_access(MemoryRegion *mr) { /* ROM DEVICE regions only allow direct access if in ROMD mode. */ - if (!memory_region_is_ram(mr) && !memory_region_is_romd(mr)) { + if (memory_region_is_romd(mr)) { + return true; + } + if (!memory_region_is_ram(mr)) { return false; } /* @@ -3006,7 +3009,12 @@ static inline bool memory_access_is_direct(MemoryReg= ion *mr, bool is_write) * be MMIO and access using mempy can be wrong (e.g., using instructio= ns not * intended for MMIO access). So we treat this as IO. */ - if (memory_region_is_ram_device(mr)) { + return !memory_region_is_ram_device(mr); +} + +static inline bool memory_access_is_direct(MemoryRegion *mr, bool is_write) +{ + if (!memory_region_supports_direct_access(mr)) { return false; } if (is_write) { --=20 2.48.1 From nobody Sun Apr 6 01:30:59 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1739177302; cv=none; d=zohomail.com; s=zohoarc; b=d7TuE1eW1iFV9UGu5BxybYBg3TP/w+s7xlYghBMQHERHsgaCRyyU7Jdoo/fHcHD4fE99Lf682QzbXXIhuQhXthCRcflO+XME33itoJdwfaJFAzGuUxZNWRTB6F2yEKcuo4Pk1j4Es0jL1QlH+dhLoz9eBp0YGyiWEXXAf3mDnvc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1739177302; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5xxpfU/c7z9d/6ypMxL4FcLhkOjlzksbtn+mi07kcCo=; b=Z78ry1Kl9T6BWzgYzysNBzllCESecn1Ze4jug+IzZvynlSW5FbYpIRVJdeBQM9yL3rAeyEg5VfdN5vXFmvuOmctXco892rV4S4tc3drOJOtFpKPVUY0jsNiSjzQCgp/mS9moPLe2l9oyJAtIV7jtumQMzE8KLXnigznYjjTtohw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from=<david@redhat.com> (p=none dis=none) Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org> Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1739177302456127.16727728349872; Mon, 10 Feb 2025 00:48:22 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from <qemu-devel-bounces@nongnu.org>) id 1thPRx-0006Xv-If; Mon, 10 Feb 2025 03:47:30 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <dhildenb@redhat.com>) id 1thPRe-0006LI-HF for qemu-devel@nongnu.org; Mon, 10 Feb 2025 03:47:13 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <dhildenb@redhat.com>) id 1thPRc-00046M-VG for qemu-devel@nongnu.org; Mon, 10 Feb 2025 03:47:10 -0500 Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-363-67ewBFQPM5ugh1PKxs2NKA-1; Mon, 10 Feb 2025 03:47:05 -0500 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-38dcc9653caso596508f8f.2 for <qemu-devel@nongnu.org>; Mon, 10 Feb 2025 00:47:05 -0800 (PST) Received: from localhost (p200300cbc734b80012c465cd348aaee6.dip0.t-ipconnect.de. [2003:cb:c734:b800:12c4:65cd:348a:aee6]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-38dc5c8c37esm9933599f8f.2.2025.02.10.00.47.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 10 Feb 2025 00:47:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1739177227; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=5xxpfU/c7z9d/6ypMxL4FcLhkOjlzksbtn+mi07kcCo=; b=CTlnk6eVSveaJbCiHRCq6cwdgEpIbDrD9sC4YL4LWUoZbp6Pj/nCGPOh2T8ADs1HPrPIUq ympp/z+uxpqYgKw71Or4flNiZUdZzItQGEFzmm8r81xhBY9dfYNsWaPTSBPvzuqjkwjojH SGPYtyxYvlcsGVijI+0za0Gc9XWQDaQ= X-MC-Unique: 67ewBFQPM5ugh1PKxs2NKA-1 X-Mimecast-MFC-AGG-ID: 67ewBFQPM5ugh1PKxs2NKA X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739177224; x=1739782024; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5xxpfU/c7z9d/6ypMxL4FcLhkOjlzksbtn+mi07kcCo=; b=uBJSZwYdMh/elLKPGlQ/Pl0o3wzlDhvnk15mM8VJF3u+z0MGzZvncPaCTFIViu2rzg MQLgMCs1Rx6ZN5zkhWIEFBJmGW/m97gO1qF9puinXFlX0dduE7w7gTfmkeVc5+KkjTLe 2RH7kxSja+48PXi4KsSJd6IpUH0RoO+R8dhJbjEVgROmdM5hhKCysT1NWVepFOBRD/eb TdeNPLI+ClCiQryRCJ/ya7FfvossWDadMrXlrWF3SNM0SMBzRORXOGyhY9IRfxq/HLQX eYsjNLxgvONhIRFED8QPYSFNSclXkMFQWxuXu1kWvcUHdDw4L9/nMFrv0fll8LClcqnz umNw== X-Gm-Message-State: AOJu0YycXHVDZWSOeweRImJ1Pxs6+ginkq+wwB+TVL/xqmeeavnB2NPc 0YhHszepso4hXdLjbx57upAJvFTUp9D7SRSkrdBXEOCgFKQfopOqcZLQ/jzdxpOkFZfDE8Aawxo BQJk5QKlbpEerGnsEfM0IAjRaqff74bTZV1Ji3AEJ7XuyoAouPqo4H9KCn7zuZ1jgHgE0d3VPJC 2u9kWoNxqFdOU7RGCjnzAuIxr3Vp5km6+3 X-Gm-Gg: ASbGncvbRaVikp//0RPKW1b2ptJ0XQcvLtsV9WyzvXbUhCwx4vCu/0mdRuYm5aUxJNV NqARDCshVxdC7p2zgRC98vUPlUnM7KgwR3zvQ4RFfr1YvY6AZ9QxRKJ+7TsJ3FRqLkREylkd8Oc Ksro9jQOcSj/TBefkRHc0nlAaXriZnsNwgqPZAY2olLaz4yrPwpoebIUpVwau3BJ1PiwAVfdIQ8 gOjX/xxXcw1nV2jiPKSHg9X5UgqOgIPiC9vBT0O31ynsh67qk5kfnYKP8EmCuuFS6ByH2alb6Ve fVyEJvdwaZbr8AulrbEGGSSE5Nhc23pwLGG+zZS/Osy4qFZ1hVyLdnev9serahRGYA== X-Received: by 2002:a5d:4748:0:b0:38a:615b:9ec0 with SMTP id ffacd0b85a97d-38dc935a897mr7523369f8f.54.1739177224238; Mon, 10 Feb 2025 00:47:04 -0800 (PST) X-Google-Smtp-Source: AGHT+IFgOB7xEm1V5wNJQ3Zv93firtiq/tsaQHHEcpJeSZ2euPV1wlrR7d0KF7QhxhddxrvwuMA3eg== X-Received: by 2002:a5d:4748:0:b0:38a:615b:9ec0 with SMTP id ffacd0b85a97d-38dc935a897mr7523332f8f.54.1739177223801; Mon, 10 Feb 2025 00:47:03 -0800 (PST) From: David Hildenbrand <david@redhat.com> To: qemu-devel@nongnu.org Cc: David Hildenbrand <david@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Peter Xu <peterx@redhat.com>, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>, Peter Maydell <peter.maydell@linaro.org>, =?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>, Alex Williamson <alex.williamson@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Elena Ufimtseva <elena.ufimtseva@oracle.com>, Jagannathan Raman <jag.raman@oracle.com>, "Dr. David Alan Gilbert" <dave@treblig.org>, Stefan Zabka <git@zabka.it> Subject: [PATCH v3 4/7] physmem: disallow direct access to RAM DEVICE in address_space_write_rom() Date: Mon, 10 Feb 2025 09:46:45 +0100 Message-ID: <20250210084648.33798-5-david@redhat.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250210084648.33798-1-david@redhat.com> References: <20250210084648.33798-1-david@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=170.10.129.124; envelope-from=dhildenb@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -44 X-Spam_score: -4.5 X-Spam_bar: ---- X-Spam_report: (-4.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.405, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=-1, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, 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-devel.nongnu.org> List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <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>, <mailto:qemu-devel-request@nongnu.org?subject=subscribe> Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1739177304082019000 Content-Type: text/plain; charset="utf-8" As documented in commit 4a2e242bbb306 ("memory: Don't use memcpy for ram_device regions"), we disallow direct access to RAM DEVICE regions. This change implies that address_space_write_rom() and cpu_memory_rw_debug() won't be able to write to RAM DEVICE regions. It will also affect cpu_flush_icache_range(), but it's only used by hw/core/loader.c after writing to ROM, so it is expected to not apply here with RAM DEVICE. This fixes direct access to these regions where we don't want direct access. We'll extend cpu_memory_rw_debug() next to also be able to write to these (and IO) regions. This is a preparation for further changes. Cc: Alex Williamson <alex.williamson@redhat.com> Reviewed-by: Peter Xu <peterx@redhat.com> Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Stefan Zabka <git@zabka.it> Tested-by: Stefan Zabka <git@zabka.it> --- system/physmem.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/system/physmem.c b/system/physmem.c index 67c9db9daa..7cfcc6cafa 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -3137,8 +3137,7 @@ static inline MemTxResult address_space_write_rom_int= ernal(AddressSpace *as, l =3D len; mr =3D address_space_translate(as, addr, &addr1, &l, true, attrs); =20 - if (!(memory_region_is_ram(mr) || - memory_region_is_romd(mr))) { + if (!memory_region_supports_direct_access(mr)) { l =3D memory_access_size(mr, l, addr1); } else { /* ROM/RAM case */ --=20 2.48.1 From nobody Sun Apr 6 01:30:59 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1739177277; cv=none; d=zohomail.com; s=zohoarc; b=Na9wfqn8X3yVYmzsIe0aNxBxxAH6p2dPHYc+qCdR30it1/BNmYn2OiLRhWw+41NvlZtDzmVfhG+5bXH4SXmU6D3BxQ1H6EWQih6Qlmu70YETOcQeIc/CCmE/ZeXW6tGM5mnVrJeeXx94DcKkn0sKydilCy4hCzgMSyXHJuSvGYk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1739177277; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=seVdatnc3fgAG3CaO7ikg8bHeVCEogup7eSy/wrd7Ng=; b=R5PZVcz5jxZh9IrhrCgzFxVivuYArZ9MX/LomDDO8IaM5iiRKu0qXmkLcA5WvNYJf6fRtTW8M6G1w9eh6V4junJNMPpOT3GnH0yPjTxmWEKCyfq6AH467zojfs7EdtEsOzyARkCQKKijAOEPeeD1kX/lQPoGBKWyt873MjYNJPE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from=<david@redhat.com> (p=none dis=none) Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org> Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1739177277162179.20472210983996; Mon, 10 Feb 2025 00:47:57 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from <qemu-devel-bounces@nongnu.org>) id 1thPS4-0006w2-Pa; Mon, 10 Feb 2025 03:47:36 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <dhildenb@redhat.com>) id 1thPRh-0006LZ-1J for qemu-devel@nongnu.org; Mon, 10 Feb 2025 03:47:14 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <dhildenb@redhat.com>) id 1thPRe-00046T-UM for qemu-devel@nongnu.org; Mon, 10 Feb 2025 03:47:12 -0500 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-30-9UyV-bUjOAyLzMhiV2nImg-1; Mon, 10 Feb 2025 03:47:08 -0500 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-38dcd8ddc5eso1711863f8f.3 for <qemu-devel@nongnu.org>; Mon, 10 Feb 2025 00:47:08 -0800 (PST) Received: from localhost (p200300cbc734b80012c465cd348aaee6.dip0.t-ipconnect.de. [2003:cb:c734:b800:12c4:65cd:348a:aee6]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-38dcb781bdcsm8582700f8f.23.2025.02.10.00.47.04 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 10 Feb 2025 00:47:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1739177229; 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=seVdatnc3fgAG3CaO7ikg8bHeVCEogup7eSy/wrd7Ng=; b=BXrpfZDg7ZyC3BsJS0GH6Qkw7/h8wDoCZuLPQOagLuiH8Tsw+q3JCGBBU3cmo0TrHHdAoE CHaBOhWYyeBVYytKmnEOpCM1PIVMMsRcDvkzBsFBKwgkvW7YhVpsg13mPtfTkRvZfgEMN/ t91fM8wVWqsS2/HehlAKwEg8G++jj+I= X-MC-Unique: 9UyV-bUjOAyLzMhiV2nImg-1 X-Mimecast-MFC-AGG-ID: 9UyV-bUjOAyLzMhiV2nImg X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739177227; x=1739782027; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=seVdatnc3fgAG3CaO7ikg8bHeVCEogup7eSy/wrd7Ng=; b=GFIGp7eZ+DLMgrEsJdupyjFoPVb7buUYDO90/ES8wE9MxROtB7I9ifODhD6DtRSD2R 4m7YuR7ywS1X6/RgIhB7gOTn9Q55pv8xjdSvhhcaI9BNOW1vfH5cV28AdUdk51h7h0OM neCpBY2CHEu452ne0C1Jm0dvGPZqx3S2BVu/GAjDAAjxbZXFm9uInzx8aheCfBE0S/Qt Qofllx4w5/pOoBT9pbQ9netwNYsOGIUuT+PuJcw68BKEw7rtr/YPzOnQwBWJQDc0dwK8 C8XdrHP5NFa4XKIpFEW0JjWt90LNiqAO+rLaepNXN7K5WUcnW0OyMKrP6OjJEpunyvcs NNSw== X-Gm-Message-State: AOJu0Yx1reoaP7LLeGlE4mJXl+2KAmOh1cMVTsZTynWp7HijmM6jFubI cwVi7LORpaC7PztqL2vng2ASTku7V/UXDam4r+kqI31CGWlx6JqWSzPCEO5bmoiMEi4TsjAFEmG stAOkM71Dmr31YqQEMFhVOuh1arck8l1aJOqBHlOcqcPChY8iZB81wbvVlK6r6jpr9in68lzLPO x2NptSthLUdhVhlzE2tY9T6U/+w3xasmw0 X-Gm-Gg: ASbGnct9yDq8oQ/8oFOyUVLrQeAhtyzG20SmfYfcNFxvDg+PFuWS3VUmf3LY1rlz3Cj fR28uziRF/YZkOFsiXD+HA0/VY+HazrvSkw22GsCRpQBL0uMkk8CldJh1L1w22xKhnPJjzLnlA6 fhSJvlVxpneRLzcGOqqvP9BIvFZcTK4SbUX4O8iBQX1p8dDUmyOR7wbhad68GYtWCI7jh6cFx8d yy6bSkbzCAe3fB4xaavtB1VbhbKfpZZzG/KEilPzxwHwn5MnnKL6RkRgs4iuvXnLXp1lSglGeFb f7d8OTzP2GJqeC8+O/yrugT81kcGHIyXGIpx22YeTo+mMDvnzUSG2yOoXsSOSUiCyw== X-Received: by 2002:a05:6000:1fab:b0:38d:deb4:4ee8 with SMTP id ffacd0b85a97d-38ddeb453b0mr2496659f8f.28.1739177227338; Mon, 10 Feb 2025 00:47:07 -0800 (PST) X-Google-Smtp-Source: AGHT+IEvjaJjZSDcMP+j5oeEvAv7tB7Wuv3EmgtCRLgGWIT6Qc1hxoudvQYFZRHeZwKLI45oSRPLhQ== X-Received: by 2002:a05:6000:1fab:b0:38d:deb4:4ee8 with SMTP id ffacd0b85a97d-38ddeb453b0mr2496619f8f.28.1739177226837; Mon, 10 Feb 2025 00:47:06 -0800 (PST) From: David Hildenbrand <david@redhat.com> To: qemu-devel@nongnu.org Cc: David Hildenbrand <david@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Peter Xu <peterx@redhat.com>, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>, Peter Maydell <peter.maydell@linaro.org>, =?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>, Alex Williamson <alex.williamson@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Elena Ufimtseva <elena.ufimtseva@oracle.com>, Jagannathan Raman <jag.raman@oracle.com>, "Dr. David Alan Gilbert" <dave@treblig.org>, Stefan Zabka <git@zabka.it> Subject: [PATCH v3 5/7] memory: pass MemTxAttrs to memory_access_is_direct() Date: Mon, 10 Feb 2025 09:46:46 +0100 Message-ID: <20250210084648.33798-6-david@redhat.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250210084648.33798-1-david@redhat.com> References: <20250210084648.33798-1-david@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=170.10.133.124; envelope-from=dhildenb@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.405, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.01, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, 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-devel.nongnu.org> List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <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>, <mailto:qemu-devel-request@nongnu.org?subject=subscribe> Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1739177280370019100 We want to pass another flag that will be stored in MemTxAttrs. So pass MemTxAttrs directly. Reviewed-by: Peter Xu <peterx@redhat.com> Reviewed-by: Philippe Mathieu-Daud=C3=A9 <philmd@linaro.org> Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Stefan Zabka <git@zabka.it> Tested-by: Stefan Zabka <git@zabka.it> --- hw/core/loader.c | 2 +- hw/remote/vfio-user-obj.c | 2 +- include/exec/memory.h | 5 +++-- system/memory_ldst.c.inc | 18 +++++++++--------- system/physmem.c | 12 ++++++------ 5 files changed, 20 insertions(+), 19 deletions(-) diff --git a/hw/core/loader.c b/hw/core/loader.c index fd25c5e01b..332b879a0b 100644 --- a/hw/core/loader.c +++ b/hw/core/loader.c @@ -144,7 +144,7 @@ ssize_t load_image_mr(const char *filename, MemoryRegio= n *mr) { ssize_t size; =20 - if (!memory_access_is_direct(mr, false)) { + if (!memory_access_is_direct(mr, false, MEMTXATTRS_UNSPECIFIED)) { /* Can only load an image into RAM or ROM */ return -1; } diff --git a/hw/remote/vfio-user-obj.c b/hw/remote/vfio-user-obj.c index 9e5ff6d87a..6e51a92856 100644 --- a/hw/remote/vfio-user-obj.c +++ b/hw/remote/vfio-user-obj.c @@ -358,7 +358,7 @@ static int vfu_object_mr_rw(MemoryRegion *mr, uint8_t *= buf, hwaddr offset, int access_size; uint64_t val; =20 - if (memory_access_is_direct(mr, is_write)) { + if (memory_access_is_direct(mr, is_write, MEMTXATTRS_UNSPECIFIED)) { /** * Some devices expose a PCI expansion ROM, which could be buffer * based as compared to other regions which are primarily based on diff --git a/include/exec/memory.h b/include/exec/memory.h index 4e2cf95ab6..b18ecf933e 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -3012,7 +3012,8 @@ static inline bool memory_region_supports_direct_acce= ss(MemoryRegion *mr) return !memory_region_is_ram_device(mr); } =20 -static inline bool memory_access_is_direct(MemoryRegion *mr, bool is_write) +static inline bool memory_access_is_direct(MemoryRegion *mr, bool is_write, + MemTxAttrs attrs) { if (!memory_region_supports_direct_access(mr)) { return false; @@ -3053,7 +3054,7 @@ MemTxResult address_space_read(AddressSpace *as, hwad= dr addr, fv =3D address_space_to_flatview(as); l =3D len; mr =3D flatview_translate(fv, addr, &addr1, &l, false, attrs); - if (len =3D=3D l && memory_access_is_direct(mr, false)) { + if (len =3D=3D l && memory_access_is_direct(mr, false, attrs))= { ptr =3D qemu_map_ram_ptr(mr->ram_block, addr1); memcpy(buf, ptr, len); } else { diff --git a/system/memory_ldst.c.inc b/system/memory_ldst.c.inc index 0e6f3940a9..7f32d3d9ff 100644 --- a/system/memory_ldst.c.inc +++ b/system/memory_ldst.c.inc @@ -34,7 +34,7 @@ static inline uint32_t glue(address_space_ldl_internal, S= UFFIX)(ARG1_DECL, =20 RCU_READ_LOCK(); mr =3D TRANSLATE(addr, &addr1, &l, false, attrs); - if (l < 4 || !memory_access_is_direct(mr, false)) { + if (l < 4 || !memory_access_is_direct(mr, false, attrs)) { release_lock |=3D prepare_mmio_access(mr); =20 /* I/O case */ @@ -103,7 +103,7 @@ static inline uint64_t glue(address_space_ldq_internal,= SUFFIX)(ARG1_DECL, =20 RCU_READ_LOCK(); mr =3D TRANSLATE(addr, &addr1, &l, false, attrs); - if (l < 8 || !memory_access_is_direct(mr, false)) { + if (l < 8 || !memory_access_is_direct(mr, false, attrs)) { release_lock |=3D prepare_mmio_access(mr); =20 /* I/O case */ @@ -170,7 +170,7 @@ uint8_t glue(address_space_ldub, SUFFIX)(ARG1_DECL, =20 RCU_READ_LOCK(); mr =3D TRANSLATE(addr, &addr1, &l, false, attrs); - if (!memory_access_is_direct(mr, false)) { + if (!memory_access_is_direct(mr, false, attrs)) { release_lock |=3D prepare_mmio_access(mr); =20 /* I/O case */ @@ -207,7 +207,7 @@ static inline uint16_t glue(address_space_lduw_internal= , SUFFIX)(ARG1_DECL, =20 RCU_READ_LOCK(); mr =3D TRANSLATE(addr, &addr1, &l, false, attrs); - if (l < 2 || !memory_access_is_direct(mr, false)) { + if (l < 2 || !memory_access_is_direct(mr, false, attrs)) { release_lock |=3D prepare_mmio_access(mr); =20 /* I/O case */ @@ -277,7 +277,7 @@ void glue(address_space_stl_notdirty, SUFFIX)(ARG1_DECL, =20 RCU_READ_LOCK(); mr =3D TRANSLATE(addr, &addr1, &l, true, attrs); - if (l < 4 || !memory_access_is_direct(mr, true)) { + if (l < 4 || !memory_access_is_direct(mr, true, attrs)) { release_lock |=3D prepare_mmio_access(mr); =20 r =3D memory_region_dispatch_write(mr, addr1, val, MO_32, attrs); @@ -314,7 +314,7 @@ static inline void glue(address_space_stl_internal, SUF= FIX)(ARG1_DECL, =20 RCU_READ_LOCK(); mr =3D TRANSLATE(addr, &addr1, &l, true, attrs); - if (l < 4 || !memory_access_is_direct(mr, true)) { + if (l < 4 || !memory_access_is_direct(mr, true, attrs)) { release_lock |=3D prepare_mmio_access(mr); r =3D memory_region_dispatch_write(mr, addr1, val, MO_32 | devend_memop(endian), att= rs); @@ -377,7 +377,7 @@ void glue(address_space_stb, SUFFIX)(ARG1_DECL, =20 RCU_READ_LOCK(); mr =3D TRANSLATE(addr, &addr1, &l, true, attrs); - if (!memory_access_is_direct(mr, true)) { + if (!memory_access_is_direct(mr, true, attrs)) { release_lock |=3D prepare_mmio_access(mr); r =3D memory_region_dispatch_write(mr, addr1, val, MO_8, attrs); } else { @@ -410,7 +410,7 @@ static inline void glue(address_space_stw_internal, SUF= FIX)(ARG1_DECL, =20 RCU_READ_LOCK(); mr =3D TRANSLATE(addr, &addr1, &l, true, attrs); - if (l < 2 || !memory_access_is_direct(mr, true)) { + if (l < 2 || !memory_access_is_direct(mr, true, attrs)) { release_lock |=3D prepare_mmio_access(mr); r =3D memory_region_dispatch_write(mr, addr1, val, MO_16 | devend_memop(endian), att= rs); @@ -474,7 +474,7 @@ static void glue(address_space_stq_internal, SUFFIX)(AR= G1_DECL, =20 RCU_READ_LOCK(); mr =3D TRANSLATE(addr, &addr1, &l, true, attrs); - if (l < 8 || !memory_access_is_direct(mr, true)) { + if (l < 8 || !memory_access_is_direct(mr, true, attrs)) { release_lock |=3D prepare_mmio_access(mr); r =3D memory_region_dispatch_write(mr, addr1, val, MO_64 | devend_memop(endian), att= rs); diff --git a/system/physmem.c b/system/physmem.c index 7cfcc6cafa..9766c6d2e0 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -573,7 +573,7 @@ MemoryRegion *flatview_translate(FlatView *fv, hwaddr a= ddr, hwaddr *xlat, is_write, true, &as, attrs); mr =3D section.mr; =20 - if (xen_enabled() && memory_access_is_direct(mr, is_write)) { + if (xen_enabled() && memory_access_is_direct(mr, is_write, attrs)) { hwaddr page =3D ((addr & TARGET_PAGE_MASK) + TARGET_PAGE_SIZE) - a= ddr; *plen =3D MIN(page, *plen); } @@ -2869,7 +2869,7 @@ static MemTxResult flatview_write_continue_step(MemTx= Attrs attrs, return MEMTX_ACCESS_ERROR; } =20 - if (!memory_access_is_direct(mr, true)) { + if (!memory_access_is_direct(mr, true, attrs)) { uint64_t val; MemTxResult result; bool release_lock =3D prepare_mmio_access(mr); @@ -2965,7 +2965,7 @@ static MemTxResult flatview_read_continue_step(MemTxA= ttrs attrs, uint8_t *buf, return MEMTX_ACCESS_ERROR; } =20 - if (!memory_access_is_direct(mr, false)) { + if (!memory_access_is_direct(mr, false, attrs)) { /* I/O case */ uint64_t val; MemTxResult result; @@ -3274,7 +3274,7 @@ static bool flatview_access_valid(FlatView *fv, hwadd= r addr, hwaddr len, while (len > 0) { l =3D len; mr =3D flatview_translate(fv, addr, &xlat, &l, is_write, attrs); - if (!memory_access_is_direct(mr, is_write)) { + if (!memory_access_is_direct(mr, is_write, attrs)) { l =3D memory_access_size(mr, l, addr); if (!memory_region_access_valid(mr, xlat, l, is_write, attrs))= { return false; @@ -3354,7 +3354,7 @@ void *address_space_map(AddressSpace *as, fv =3D address_space_to_flatview(as); mr =3D flatview_translate(fv, addr, &xlat, &l, is_write, attrs); =20 - if (!memory_access_is_direct(mr, is_write)) { + if (!memory_access_is_direct(mr, is_write, attrs)) { size_t used =3D qatomic_read(&as->bounce_buffer_size); for (;;) { hwaddr alloc =3D MIN(as->max_bounce_buffer_size - used, l); @@ -3487,7 +3487,7 @@ int64_t address_space_cache_init(MemoryRegionCache *c= ache, =20 mr =3D cache->mrs.mr; memory_region_ref(mr); - if (memory_access_is_direct(mr, is_write)) { + if (memory_access_is_direct(mr, is_write, MEMTXATTRS_UNSPECIFIED)) { /* We don't care about the memory attributes here as we're only * doing this if we found actual RAM, which behaves the same * regardless of attributes; so UNSPECIFIED is fine. --=20 2.48.1 From nobody Sun Apr 6 01:30:59 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1739177335; cv=none; d=zohomail.com; s=zohoarc; b=V8HxozN9gvCkYrk7kN0vtNHWDmMNSDHYAfXrqMN9gaaYee5byhNBAa9zlnN/RrBk6x980PiMmVYWlp8eVkc6Ho5cgca4IrEIRvTGdX8/B1XgaUfUESuNHrugZasI2Nk1yl5ejHi2Hm7UwBNU2zOTHP1EtxgUID2azcUd3sE6ZDI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1739177335; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=QFImN/HdVJsdxlU8bHIXd3zfUtn9U7Os5n4jpooO1h4=; b=RCounjoqI8qbMUYWduJpQucUdu+Y2/mlKflLxN134hE8BFBRRirUzsx0DJhgaiu+QMDJnmF4BdzdzSW6YCllwVnWJXboGZpjsxtjdxf8NAdE0PvqOkLj0N3GwOwTQE9hCwwoPuyp62Rl3BNi9K2p3XlLPP064ZHpH+LUcKh8Z6c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from=<david@redhat.com> (p=none dis=none) Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org> Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1739177335478124.17415257471555; Mon, 10 Feb 2025 00:48:55 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from <qemu-devel-bounces@nongnu.org>) id 1thPS6-00077n-F3; Mon, 10 Feb 2025 03:47:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <dhildenb@redhat.com>) id 1thPRj-0006Ou-NH for qemu-devel@nongnu.org; Mon, 10 Feb 2025 03:47:15 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <dhildenb@redhat.com>) id 1thPRi-000472-BY for qemu-devel@nongnu.org; Mon, 10 Feb 2025 03:47:15 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-608-tXl5K-DHMKGwoYwjt24K4w-1; Mon, 10 Feb 2025 03:47:11 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-43942e82719so5093255e9.2 for <qemu-devel@nongnu.org>; Mon, 10 Feb 2025 00:47:11 -0800 (PST) Received: from localhost (p200300cbc734b80012c465cd348aaee6.dip0.t-ipconnect.de. [2003:cb:c734:b800:12c4:65cd:348a:aee6]) by smtp.gmail.com with UTF8SMTPSA id 5b1f17b1804b1-4390daf4480sm173550055e9.27.2025.02.10.00.47.07 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 10 Feb 2025 00:47:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1739177233; 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=QFImN/HdVJsdxlU8bHIXd3zfUtn9U7Os5n4jpooO1h4=; b=L6vgEqWt9suW5et2qRZudO2/EpdSDvQqiFgsMOiHmvOT0JCHx3ZWbrr4VPojdM45BflG2s 6dAoowmrQgfBQaEzKPD2Sd4FNY6JNGPxqp1vUs+K5bokeztmx3udRkAnmqchVyECroLxxs cBLiwFxz2ijvGUupmPrNCLuNI+aSDnQ= X-MC-Unique: tXl5K-DHMKGwoYwjt24K4w-1 X-Mimecast-MFC-AGG-ID: tXl5K-DHMKGwoYwjt24K4w X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739177230; x=1739782030; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QFImN/HdVJsdxlU8bHIXd3zfUtn9U7Os5n4jpooO1h4=; b=wqmjF0wPTxX0uV0ooEHLN/zxThwJWtod4yj9cOtwKiXhnSs7kwvwonDHjVmqCZ0c76 6x7inJ0VlrmDUefYmW4H9aInlrC/QomGw3Y5ouVzOI06k0qciNBI+QlA7A8fh4+TjQIi ntVtNMgmT+UsU2bMtOOztdKHX2HDofXbQ7IT85JjBrYn8+7VoBdFYI9BDCSrKDY+/05n ZXJO/opTPv8MJHNFUQSN+m88L28vco/fllW/I6a7zxKcLWYn9JyE0FU3tRCBTbw2cSX3 1UrGUxDgkJMJGzBy4RFFvzBfMvFZMzLUKHjzqkEKda5GFWCs6Scncq9a1KMU/Pm5QrlY gftg== X-Gm-Message-State: AOJu0YwnSH5uTBEC8GERC2WKf29SgDp5WZLt3LFkqpsoInn2JtsWLTy1 vcHE77StlwvcR9t0t6hw8StZoQARSUzq/EzfPkqsp8XaxsOApi2tA3ALq3VgxUEVQGb8dibUtoo qhxGjd0+1LXzkW+VwJpe91HFRIz4+KlK0AoLhM7O4iXR0/RpXGh9CjwkB/8uBYULDgpj5Nwwmsl b6zBg9VmLuLzCDWMVP9vYaSbcMaIsqd6hY X-Gm-Gg: ASbGncsV7fxmWJGa057fXLDB6NdjIaHlHeILwldgPbvS0pO0a7yROltJ7/p2UFCwv0p 9XB6nkBldIn99nLeAzyMHGbEqbm4pGuJ1MFklRikxOhdzN7XgUSJokYXKa+GKzI9xjNBLxHlWe4 ha8ZLOCOTMPP6/GeUxRx80U9ZQs/0kodKZyc8a0QhfPVvyVf0vhZw1sdjlKYNdZFq/3sqRz2wd8 8JKAK4w6icSSczY9LVnDYQJWoypOqtK8+xC6lmsjCLmHsrH3+1YyxheqjzTS9B9kbI5F/lwFP/e A8H7aSYmg5BPQidhkSll64NIBi3+qa/A4HaAX0+DaAsx3O+raHPOUkDZ06RQRi/O3w== X-Received: by 2002:a05:600c:899:b0:439:3d5c:8bfb with SMTP id 5b1f17b1804b1-4393d5c8d77mr33969245e9.22.1739177230383; Mon, 10 Feb 2025 00:47:10 -0800 (PST) X-Google-Smtp-Source: AGHT+IHp6UWtq7vu5blmjXrPLaNFKPaZZqzIQyhYVtaxoENvz2WoRKjzsgyLFLSoQ2ACPzIa/RpknA== X-Received: by 2002:a05:600c:899:b0:439:3d5c:8bfb with SMTP id 5b1f17b1804b1-4393d5c8d77mr33968965e9.22.1739177229993; Mon, 10 Feb 2025 00:47:09 -0800 (PST) From: David Hildenbrand <david@redhat.com> To: qemu-devel@nongnu.org Cc: David Hildenbrand <david@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Peter Xu <peterx@redhat.com>, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>, Peter Maydell <peter.maydell@linaro.org>, =?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>, Alex Williamson <alex.williamson@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Elena Ufimtseva <elena.ufimtseva@oracle.com>, Jagannathan Raman <jag.raman@oracle.com>, "Dr. David Alan Gilbert" <dave@treblig.org>, Stefan Zabka <git@zabka.it> Subject: [PATCH v3 6/7] hmp: use cpu_get_phys_page_debug() in hmp_gva2gpa() Date: Mon, 10 Feb 2025 09:46:47 +0100 Message-ID: <20250210084648.33798-7-david@redhat.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250210084648.33798-1-david@redhat.com> References: <20250210084648.33798-1-david@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=170.10.133.124; envelope-from=dhildenb@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.405, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.01, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, 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-devel.nongnu.org> List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <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>, <mailto:qemu-devel-request@nongnu.org?subject=subscribe> Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1739177338372019100 We don't need the MemTxAttrs, so let's simply use the simpler function variant. Reviewed-by: Peter Xu <peterx@redhat.com> Reviewed-by: Philippe Mathieu-Daud=C3=A9 <philmd@linaro.org> Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Stefan Zabka <git@zabka.it> Tested-by: Stefan Zabka <git@zabka.it> --- monitor/hmp-cmds-target.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/monitor/hmp-cmds-target.c b/monitor/hmp-cmds-target.c index 0300faa8a2..0d2e9dce69 100644 --- a/monitor/hmp-cmds-target.c +++ b/monitor/hmp-cmds-target.c @@ -301,7 +301,6 @@ void hmp_gpa2hva(Monitor *mon, const QDict *qdict) void hmp_gva2gpa(Monitor *mon, const QDict *qdict) { target_ulong addr =3D qdict_get_int(qdict, "addr"); - MemTxAttrs attrs; CPUState *cs =3D mon_get_cpu(mon); hwaddr gpa; =20 @@ -310,7 +309,7 @@ void hmp_gva2gpa(Monitor *mon, const QDict *qdict) return; } =20 - gpa =3D cpu_get_phys_page_attrs_debug(cs, addr & TARGET_PAGE_MASK, &a= ttrs); + gpa =3D cpu_get_phys_page_debug(cs, addr & TARGET_PAGE_MASK); if (gpa =3D=3D -1) { monitor_printf(mon, "Unmapped\n"); } else { --=20 2.48.1 From nobody Sun Apr 6 01:30:59 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1739177339; cv=none; d=zohomail.com; s=zohoarc; b=XVoI4o0cprj7LzKUU4NBO9H+rpLnxZG/V/XuuO5E8raaadIe9V4w3ItzFEtTetkCuPe/PHeI5+AJwdhjNzZgWWrftfbySct/vVxq+Q1pOBQ40iY/dNdxqNphnaj6NKjq7+OnueJ1xnpZESnyGHpS7E8ksU/URP9BbYCCUjaCK3s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1739177339; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0rC/aAIY4bXHpHCmeTCgc5miTxFonU93tbQUmgYf9EM=; b=RMvmzA0DM/j37Y1ITCC6vFadhySx+J5K6eJVlFBVNIDKy3QXwfM7ih6GV8xWHmBkD6xX29bvWivhpPgRQ5trzeU0oT1e6oOQzS45+ci+pJLbwWUXJcGq2zLpFKF6JDAMi3ySzyOrGVX7Ddip3PMsJW211WwskbgrRSOHOU+vLK4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from=<david@redhat.com> (p=none dis=none) Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org> Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1739177339528441.7614202041699; Mon, 10 Feb 2025 00:48:59 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from <qemu-devel-bounces@nongnu.org>) id 1thPS7-0007Ed-Gu; Mon, 10 Feb 2025 03:47:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <dhildenb@redhat.com>) id 1thPRo-0006VF-QI for qemu-devel@nongnu.org; Mon, 10 Feb 2025 03:47:22 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <dhildenb@redhat.com>) id 1thPRm-00047Z-SC for qemu-devel@nongnu.org; Mon, 10 Feb 2025 03:47:20 -0500 Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-458-pbjbCsgRPCK8mQV0Tajtgw-1; Mon, 10 Feb 2025 03:47:14 -0500 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-38de0201961so325921f8f.2 for <qemu-devel@nongnu.org>; Mon, 10 Feb 2025 00:47:13 -0800 (PST) Received: from localhost (p200300cbc734b80012c465cd348aaee6.dip0.t-ipconnect.de. [2003:cb:c734:b800:12c4:65cd:348a:aee6]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-38dcb55b7a5sm8896013f8f.14.2025.02.10.00.47.10 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 10 Feb 2025 00:47:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1739177238; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0rC/aAIY4bXHpHCmeTCgc5miTxFonU93tbQUmgYf9EM=; b=SYmXwpoIBgneCs8rOoTws3hcMXPbPUa/4XNA70lM5XY4pFnOU9w+JVPn1sRXpOGAzl82ma jHhLV7HVg0L2JOyE4Grh1o4g2cDWqTOjLCFW5GzfPVaCxp7nN+ofBvrvL6kLUNZRDisgdd BJqtAqfXsdaLJyS16GErfMLAhd0aVmk= X-MC-Unique: pbjbCsgRPCK8mQV0Tajtgw-1 X-Mimecast-MFC-AGG-ID: pbjbCsgRPCK8mQV0Tajtgw X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739177233; x=1739782033; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0rC/aAIY4bXHpHCmeTCgc5miTxFonU93tbQUmgYf9EM=; b=OfJf8ctHH2k6KIOKedmCVn7I6ET3mGheAK6AOS0lFko71XPiD8QBshSylOfTW8bEzD 3wgGfVtD/gI8qDzTAOZLnZK70tTJawJ0VuY12dizaC+AM2glqprNXHpLKilVwWROuCtA KSh8Yh3Vu+vie3gQ43+S8+vaYKCivctBinpMWmxlubDdT6dZRKW4TH0aPrGmjMapi5oB V2etVawZjsD5jOAVLqJp0V7q00i0GFR76fbjoSUDC5mYyTnXQ1YB1jWL/Qg167ZM19xb KUk4cK+wN2g3yhrThpMTcUbmjDhcq9jnVW31dDWxtSAbiCSLLgLnT1XMv6x5swiC0ll5 BZ4w== X-Gm-Message-State: AOJu0YypvbgXB2w5LGhddS9fuA6hPRifnxBKc1+sNGPneDKc1uv3os4m KmS3swuaZgK/00aFNlW+J3DQWCqTHlaMl5W6QOOS+vWDDs/YI4jy2kbKMdqn/hwkZyaZ+WoSbEq qs63jsFJq/QpVEwnORHU72Oo2rEc7EOYDJ1yqZWdYIMLrrkqQgwuELrkSnuwfwyxyoUtCaTDbBH kEYfJnVQvtH//dAjkrsu9J650Gw6o/CjZt X-Gm-Gg: ASbGncug3Z2S5DjlWs1D7za672DvqXeOY38Laizk6eiv3SdJVPInS9Q8kLOi+9FkC0b 1bT+KgE6ffLFGl58Rt8s/Gp49Lal5hvM1Xko0/KPsmYk3PtT4xhfvImMAjEzaYwOZCwJE8kZYRj LXzhR//Q1q4ON8ERpStqxWhPYryyYjFwd5Wgg+dwYCqA77QFzC/QqWtWpQZ53/cdXBQt1r5/sBM +kcXWC7Q8tH6USlV+3NG7Rlafw5dd2GtvuMT9JWKUfJ9S/Ikbu2JB4/Ely/0bIRYGWD/VKsRo/R f8uLbw8I/Cg6EncvikD9eQy8AHg0yMaG22IPV3H5uOBXVTbbVJ18VBtC4dJnGaTczw== X-Received: by 2002:a05:6000:4010:b0:385:faf5:eba6 with SMTP id ffacd0b85a97d-38dc8d9b92dmr8412932f8f.1.1739177232836; Mon, 10 Feb 2025 00:47:12 -0800 (PST) X-Google-Smtp-Source: AGHT+IECcBoKP/sF3v8PkI2LBIugtYE6I6jRzXGQ+B3MPKzQIR+gy4Pfo84cEN0DTa4LJbgv3YTStw== X-Received: by 2002:a05:6000:4010:b0:385:faf5:eba6 with SMTP id ffacd0b85a97d-38dc8d9b92dmr8412893f8f.1.1739177232393; Mon, 10 Feb 2025 00:47:12 -0800 (PST) From: David Hildenbrand <david@redhat.com> To: qemu-devel@nongnu.org Cc: David Hildenbrand <david@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Peter Xu <peterx@redhat.com>, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>, Peter Maydell <peter.maydell@linaro.org>, =?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>, Alex Williamson <alex.williamson@redhat.com>, Eduardo Habkost <eduardo@habkost.net>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Elena Ufimtseva <elena.ufimtseva@oracle.com>, Jagannathan Raman <jag.raman@oracle.com>, "Dr. David Alan Gilbert" <dave@treblig.org>, Stefan Zabka <git@zabka.it> Subject: [PATCH v3 7/7] physmem: teach cpu_memory_rw_debug() to write to more memory regions Date: Mon, 10 Feb 2025 09:46:48 +0100 Message-ID: <20250210084648.33798-8-david@redhat.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250210084648.33798-1-david@redhat.com> References: <20250210084648.33798-1-david@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=170.10.133.124; envelope-from=dhildenb@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.405, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.01, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, 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-devel.nongnu.org> List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <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>, <mailto:qemu-devel-request@nongnu.org?subject=subscribe> Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1739177340281019000 Content-Type: text/plain; charset="utf-8" Right now, we only allow for writing to memory regions that allow direct access using memcpy etc; all other writes are simply ignored. This implies that debugging guests will not work as expected when writing to MMIO device regions. Let's extend cpu_memory_rw_debug() to write to more memory regions, including MMIO device regions. Reshuffle the condition in memory_access_is_direct() to make it easier to read and add a comment. While this change implies that debug access can now also write to MMIO devices, we now are also permit ELF image loads and similar users of cpu_memory_rw_debug() to write to MMIO devices; currently we ignore these writes. Peter assumes [1] that there's probably a class of guest images, which will start writing junk (likely zeroes) into device model registers; we previously would silently ignore any such bogus ELF sections. Likely these images are of questionable correctness and this can be ignored. If ever a problem, we could make these cases use address_space_write_rom() instead, which is left unchanged for now. This patch is based on previous work by Stefan Zabka. [1] https://lore.kernel.org/all/CAFEAcA_2CEJKFyjvbwmpt=3Don=3DGgMVamQ5hiiVt= +zUr6AY3X=3DXg@mail.gmail.com/ Resolves: https://gitlab.com/qemu-project/qemu/-/issues/213 Reviewed-by: Peter Xu <peterx@redhat.com> Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Stefan Zabka <git@zabka.it> Tested-by: Stefan Zabka <git@zabka.it> --- hw/core/cpu-system.c | 13 +++++++++---- include/exec/memattrs.h | 5 ++++- include/exec/memory.h | 3 ++- system/physmem.c | 9 ++------- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/hw/core/cpu-system.c b/hw/core/cpu-system.c index 6aae28a349..6e307c8959 100644 --- a/hw/core/cpu-system.c +++ b/hw/core/cpu-system.c @@ -51,13 +51,18 @@ hwaddr cpu_get_phys_page_attrs_debug(CPUState *cpu, vad= dr addr, MemTxAttrs *attrs) { CPUClass *cc =3D CPU_GET_CLASS(cpu); + hwaddr paddr; =20 if (cc->sysemu_ops->get_phys_page_attrs_debug) { - return cc->sysemu_ops->get_phys_page_attrs_debug(cpu, addr, attrs); + paddr =3D cc->sysemu_ops->get_phys_page_attrs_debug(cpu, addr, att= rs); + } else { + /* Fallback for CPUs which don't implement the _attrs_ hook */ + *attrs =3D MEMTXATTRS_UNSPECIFIED; + paddr =3D cc->sysemu_ops->get_phys_page_debug(cpu, addr); } - /* Fallback for CPUs which don't implement the _attrs_ hook */ - *attrs =3D MEMTXATTRS_UNSPECIFIED; - return cc->sysemu_ops->get_phys_page_debug(cpu, addr); + /* Indicate that this is a debug access. */ + attrs->debug =3D 1; + return paddr; } =20 hwaddr cpu_get_phys_page_debug(CPUState *cpu, vaddr addr) diff --git a/include/exec/memattrs.h b/include/exec/memattrs.h index 060b7e7131..8db1d30464 100644 --- a/include/exec/memattrs.h +++ b/include/exec/memattrs.h @@ -44,6 +44,8 @@ typedef struct MemTxAttrs { * (see MEMTX_ACCESS_ERROR). */ unsigned int memory:1; + /* Debug access that can even write to ROM. */ + unsigned int debug:1; /* Requester ID (for MSI for example) */ unsigned int requester_id:16; =20 @@ -56,7 +58,8 @@ typedef struct MemTxAttrs { * Bus masters which don't specify any attributes will get this * (via the MEMTXATTRS_UNSPECIFIED constant), so that we can * distinguish "all attributes deliberately clear" from - * "didn't specify" if necessary. + * "didn't specify" if necessary. "debug" can be set alongside + * "unspecified". */ bool unspecified; =20 diff --git a/include/exec/memory.h b/include/exec/memory.h index b18ecf933e..78c4e0aec8 100644 --- a/include/exec/memory.h +++ b/include/exec/memory.h @@ -3018,7 +3018,8 @@ static inline bool memory_access_is_direct(MemoryRegi= on *mr, bool is_write, if (!memory_region_supports_direct_access(mr)) { return false; } - if (is_write) { + /* Debug access can write to ROM. */ + if (is_write && !attrs.debug) { return !mr->readonly && !mr->rom_device; } return true; diff --git a/system/physmem.c b/system/physmem.c index 9766c6d2e0..486316b651 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -3680,13 +3680,8 @@ int cpu_memory_rw_debug(CPUState *cpu, vaddr addr, if (l > len) l =3D len; phys_addr +=3D (addr & ~TARGET_PAGE_MASK); - if (is_write) { - res =3D address_space_write_rom(cpu->cpu_ases[asidx].as, phys_= addr, - attrs, buf, l); - } else { - res =3D address_space_read(cpu->cpu_ases[asidx].as, phys_addr, - attrs, buf, l); - } + res =3D address_space_rw(cpu->cpu_ases[asidx].as, phys_addr, attrs= , buf, + l, is_write); if (res !=3D MEMTX_OK) { return -1; } --=20 2.48.1