From nobody Mon Feb 9 16:12:54 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1629736941; cv=none; d=zohomail.com; s=zohoarc; b=efU7Mbcrh0CbgN2bUqAxBzDPyXQYEwmdD3pGgry8EROE9AQzjY7D7qjXohqKXF5l9XF6VzulcXWPqNzM1wtV7JJegUdXTH6AVY4N05BV9t2xZhNB27ddYnyjRIFODHhQIDkYYqzng5vDols7QYrFD54pkg4rk7aZWIPjxhloDEs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1629736941; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=7R4zUdURf5txsJu6CyZuzHy/f/1sygZW3eoytgU2yN8=; b=FsZWCUgnFnn5WqMBhAfmXSlfXpiGCoDnfB7DIDItMcpzr4d5aqpwY1m/gXB+4UT3RJwGiImjELFZjlGYzGGWqQi4hV6sXKrwvrilsIPqOifl494q3SRUDY/YaDXTjUeeCOwjXNpJ7SVZ428Z4zEWmpe1yNKfXjZseRvZ4I+QY/4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1629736941209329.310045853116; Mon, 23 Aug 2021 09:42:21 -0700 (PDT) Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-152-k1ks-K4ePWm8MUZJSN0Ukg-1; Mon, 23 Aug 2021 12:42:18 -0400 Received: by mail-wr1-f72.google.com with SMTP id p10-20020adfce0a000000b001572d05c970so3003170wrn.21 for ; Mon, 23 Aug 2021 09:42:18 -0700 (PDT) Return-Path: Return-Path: Received: from x1w.. (163.red-83-52-55.dynamicip.rima-tde.net. [83.52.55.163]) by smtp.gmail.com with ESMTPSA id o10sm2922553wrc.16.2021.08.23.09.42.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Aug 2021 09:42:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1629736940; 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=7R4zUdURf5txsJu6CyZuzHy/f/1sygZW3eoytgU2yN8=; b=BbL4GA65WdLhc8rqJa3aaPiG0M/e7MwCE47pKBrViFZebjH9KWaHYlVE7m85vOEK7vHKYI tREnWuHWQkBCa3JZwmC1rx61xbHJHCcu/FPMXwVJ9d2y3pLfNAsH+AeL4ylv3zefhVvwz1 r1R0y8fDagB6lGnl291Mi7Yjge6i59M= X-MC-Unique: k1ks-K4ePWm8MUZJSN0Ukg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7R4zUdURf5txsJu6CyZuzHy/f/1sygZW3eoytgU2yN8=; b=N3IpUcOrYtvDLMZ/xEwB5KZZrd4ckya6kGieNyBuesGTrZbyQZozG37VUeq8cYYpcS HKPmPFUEMHoz+nG5JFdlvQI6UzvX8JcL7o0NMHyROVSL2aeb4K550UWVpW1/v5ysoNam JMGqveQ/sDyRuI5o/srWxOXAo2yIKua8YNklWZuLxErsMkmltsZ0OMb6QUdjTxTswMeR 2MSd9QuXKUhvnZCHw4PZXcqKcooWW7xx6u33H4Vb/PJEWYkrCGdHNota8Vlf/b3hfRO9 vlHWseWJqXBLbdQe0ESn1BkgYAhIM2ziYlLXxfWtl2A7rJ0tBZDSaV0jGRbDIRGpo2JX cLZw== X-Gm-Message-State: AOAM531FPX6yJL1n7J/NfwvXlW+4nmvEcbfR0Gw6cmfxVsQR315otulY /ckv6trTKj54h/LQXZzdZVR6vckJd4dVcopzsk/d6mdtK5loPuGdALQyS51uVc4VzSOGMklGPTQ z324ed/SjQ9rh/w== X-Received: by 2002:a1c:4a:: with SMTP id 71mr17335575wma.87.1629736937590; Mon, 23 Aug 2021 09:42:17 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzysm3WS85qZRVEgfejMlzTLBMjDfyEPfsxyuaYQdwihLiPfPMjXZUAZlmI/9N9UU5KhKEfLQ== X-Received: by 2002:a1c:4a:: with SMTP id 71mr17335551wma.87.1629736937427; Mon, 23 Aug 2021 09:42:17 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Alexander Bulekov , David Hildenbrand , "Edgar E . Iglesias" , Peter Maydell , Stefan Hajnoczi , Jason Wang , qemu-arm@nongnu.org, Qiuhao Li , Peter Xu , Li Qiang , Paolo Bonzini , Gerd Hoffmann , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [RFC PATCH v2 4/5] softmmu/physmem: Introduce flatview_access_allowed() to check bus perms Date: Mon, 23 Aug 2021 18:41:56 +0200 Message-Id: <20210823164157.751807-5-philmd@redhat.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210823164157.751807-1-philmd@redhat.com> References: <20210823164157.751807-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1629736942480100001 Introduce flatview_access_allowed() to check bus permission before running any bus transaction. For now this is a simple stub. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- softmmu/physmem.c | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/softmmu/physmem.c b/softmmu/physmem.c index e534dc69918..0d31a2f4199 100644 --- a/softmmu/physmem.c +++ b/softmmu/physmem.c @@ -2754,6 +2754,27 @@ static bool prepare_mmio_access(MemoryRegion *mr) return release_lock; } =20 +/** + * flatview_access_allowed + * @mr: #MemoryRegion to be accessed + * @attrs: memory transaction attributes + * @addr: address within that memory region + * @len: the number of bytes to access + * @result: optional pointer to a MemTxResult or NULL + * + * Check if a memory transaction is allowed. If an error occurs this + * method will return false to indicate denial, as well as setting + * @result to contain corresponding #MemTxResult. + * + * Returns: true if transaction is allowed, false if denied. + */ +static inline bool flatview_access_allowed(MemoryRegion *mr, MemTxAttrs at= trs, + hwaddr addr, hwaddr len, + MemTxResult *result) +{ + return true; +} + /* Called within RCU critical section. */ static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr, MemTxAttrs attrs, @@ -2768,7 +2789,9 @@ static MemTxResult flatview_write_continue(FlatView *= fv, hwaddr addr, const uint8_t *buf =3D ptr; =20 for (;;) { - if (!memory_access_is_direct(mr, true)) { + if (!flatview_access_allowed(mr, attrs, addr1, l, &result)) { + /* 'result' contains the error, keep going. */ + } else if (!memory_access_is_direct(mr, true)) { release_lock |=3D prepare_mmio_access(mr); l =3D memory_access_size(mr, l, addr1); /* XXX: could force current_cpu to NULL to avoid @@ -2810,9 +2833,13 @@ static MemTxResult flatview_write(FlatView *fv, hwad= dr addr, MemTxAttrs attrs, hwaddr l; hwaddr addr1; MemoryRegion *mr; + MemTxResult result =3D MEMTX_OK; =20 l =3D len; mr =3D flatview_translate(fv, addr, &addr1, &l, true, attrs); + if (!flatview_access_allowed(mr, attrs, addr, len, &result)) { + return result; + } return flatview_write_continue(fv, addr, attrs, buf, len, addr1, l, mr); } @@ -2831,7 +2858,9 @@ MemTxResult flatview_read_continue(FlatView *fv, hwad= dr addr, =20 fuzz_dma_read_cb(addr, len, mr); for (;;) { - if (!memory_access_is_direct(mr, false)) { + if (!flatview_access_allowed(mr, attrs, addr1, l, &result)) { + /* 'result' contains the error, keep going. */ + } else if (!memory_access_is_direct(mr, false)) { /* I/O case */ release_lock |=3D prepare_mmio_access(mr); l =3D memory_access_size(mr, l, addr1); @@ -2871,9 +2900,13 @@ static MemTxResult flatview_read(FlatView *fv, hwadd= r addr, hwaddr l; hwaddr addr1; MemoryRegion *mr; + MemTxResult result =3D MEMTX_OK; =20 l =3D len; mr =3D flatview_translate(fv, addr, &addr1, &l, false, attrs); + if (!flatview_access_allowed(mr, attrs, addr, len, &result)) { + return result; + } return flatview_read_continue(fv, addr, attrs, buf, len, addr1, l, mr); } --=20 2.31.1