From nobody Mon Sep 28 00:10:28 2026 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=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787060006; cv=none; d=zohomail.com; s=zohoarc; b=iisep2dPM7I7uaOS34V3hbY4tLqkseBLECs8+h2UlL+eWWaoUDkml2cLjmatMZkmMQ8ols2z5rIWpMP9AgIsc/x7QOQA4FDU6PXbesUpQuwwi/0WYvu7W3Q5/IyCH/9tbWlovTSa0Yp2fts48l3ays0uNT5zkml8nnQQkTxBFTo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787060006; 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=kgrW8OZDk5QNSaiA2O4xvFjcLjIOIf5np0GuegvjZV0=; b=P0MgE5T2EXpaBm+w9Lr7PFS5p8wezy30ETWwg/6yiJ/KQqjpyfdsmGhzWjBbq36AWhh5G7VUPZyfywDXdqKfn94ILwn/jOqpLNHwbKudeV8kcdarvTffGdkE4iYy0zD09xHtKCAkDsKCfvtOz7ACJYPVk0k0FC37q47euqi3BXc= 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= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787060006633262.31869072038785; Tue, 18 Aug 2026 06:33:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwJvq-0003n6-NT; Tue, 18 Aug 2026 09:32:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwJvo-0003mM-BE for qemu-devel@nongnu.org; Tue, 18 Aug 2026 09:32:44 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwJvl-00008R-Ls for qemu-devel@nongnu.org; Tue, 18 Aug 2026 09:32:44 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-4953de5be0aso37214035e9.0 for ; Tue, 18 Aug 2026 06:32:38 -0700 (PDT) Received: from [127.0.1.1] ([2a10:d582:31e:0:c289:2687:e46c:f7e3]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49987b203cfsm298360625e9.3.2026.08.18.06.32.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 06:32:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787059958; x=1787664758; darn=nongnu.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=kgrW8OZDk5QNSaiA2O4xvFjcLjIOIf5np0GuegvjZV0=; b=WAeLczO4C/b9hTNHAXTfsUPs9x2ROeULQIIrd7wPj6SDYCQOEY/4qZKNZz4PvDPgN5 a9dkdlEDXXJut55ygh+wfjQbGCmMYaT45vgsOU11BC45hvL3Sz0K1lFl3SOdOcJa/kWj q97OVh/xC/HZVQIsPTv7I5Ao9vEDjfJVgq1/OLG6EBvZ6jLXAqsfGguR0/2XzUIJFU3b Uu+riEGJXqAAiVOFnaLAW7P42Njjh69pcQcWCb4FikzPio8hNWYojBseruMezS1zLJit GmcE9uU/FttEndavvt4ndFQUcngoWT3QAF/HNWczqRa9yKIXe7plwjmsyeOlhqfu9+Hy bPBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787059958; x=1787664758; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=kgrW8OZDk5QNSaiA2O4xvFjcLjIOIf5np0GuegvjZV0=; b=fYwgtiF9EI6VwTy2Ax4KeMjZX4uLCTbL0yVEglyGHHwCp5XWwui7wlvZ0MR7VSwfCK zcjmg8NboC7Wcdd9ZNaA506y6+YiRDUzNf5UgoHNiiTxgCorCeO5Qyyg1Qu84IEdzwyf aD4Fh8gZClafRxjw6sFBme0i6rxuS0adV4npkuittw5oOuwOFrsj2mHlOF7DCVXestWQ c1IatxbwD78F3hZL/ib3QaqsOGKM2NDuWE5UGFa7nPlc4fFwmPUlpww9Qtx/XqTUJWnj 6WVxY8TC86mXQFgSMJ1hfHFMK/QX36I9JcUTjCiCNKpU54gszmNlIpN1BCmOSWAxzJlo 7pzQ== X-Gm-Message-State: AOJu0YyjpoLuihf/xZuxf6q0yjfX4iX7L7mBrdU3d9+Ve0T+xdZPSIwd GthZH+xP2jwHJWIIZq1Fb+Mbv/Xhq5xsKJ/utRwa3hKCrVQPmN0UpTJy3+11W/rgGsfqc/7scRo oCtI1y/I= X-Gm-Gg: AR+sD13Jh1vYLZskFav8vb7Y4rSzpqjrPNijWxSJi5SH7CQT6sSpvtf+XrhYUtE42j6 c8/DUARaB/LsbTdazjQEjgX2BzLvwyhGHEYigOfNBhOi9vH6T5UFGSRhYN7LOMTQawhAuxzCzBQ IoeTAH/l6B9+kRbqIXySJ+CmOC1bO1E2ygZTUqqLqqeJiolK2d5uCwKTonwndWgQ6uVuxqYCW6Q SRvWgR59SImqgxefX1LENt6yJ+Kv0+FB1MZR+dKBC8EtenAFtiAHeio6x6gVmaOqbHTTJMggbAc YgH3OC5DRLgJenTWZSmLB9oloxsO7K6vdaSTFFuhgbrqPksNDNSSO0Kcf2tT13defjj6tw7lsX0 51EjeOaMq7TyeDXpqZWh1KPMdJjlZ8mbTLhlP+FWVtPmUC8hdl2co2etlotfJE4Nmcdqy9r/mdF RcKEP08z7EXL3axkFga3s0GRAo0FfprBsAhO7LWy/x2HlnN0971BV6V2xx32zSj/4pyGy+ZQVFF 3E= X-Received: by 2002:a05:600c:1c21:b0:499:90f3:13b8 with SMTP id 5b1f17b1804b1-49990f315e9mr315450255e9.12.1787059957468; Tue, 18 Aug 2026 06:32:37 -0700 (PDT) From: Jim MacArthur Date: Tue, 18 Aug 2026 14:31:59 +0100 Subject: [PATCH RFC 1/4] hw/pci: add IDE + TEE capability to PCIe root port MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260818-jmac-rme-da-prep-v1-1-30fab951bc75@linaro.org> References: <20260818-jmac-rme-da-prep-v1-0-30fab951bc75@linaro.org> In-Reply-To: <20260818-jmac-rme-da-prep-v1-0-30fab951bc75@linaro.org> To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , John Snow , "Denis V. Lunev" , qemu-block@nongnu.org, Jim MacArthur , Pierrick Bouvier , Pierrick Bouvier X-Mailer: b4 0.13.0 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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::330; envelope-from=jim.macarthur@linaro.org; helo=mail-wm1-x330.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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 @linaro.org) X-ZM-MESSAGEID: 1787060007259158500 From: Pierrick Bouvier Signed-off-by: Pierrick Bouvier Signed-off-by: Jim MacArthur --- hw/pci-bridge/gen_pcie_root_port.c | 8 ++++++++ hw/pci/pcie.c | 15 +++++++++++++++ include/hw/pci/pcie.h | 3 +++ include/hw/pci/pcie_regs.h | 4 ++++ 4 files changed, 30 insertions(+) diff --git a/hw/pci-bridge/gen_pcie_root_port.c b/hw/pci-bridge/gen_pcie_ro= ot_port.c index 5434d693d9..452ebf69b3 100644 --- a/hw/pci-bridge/gen_pcie_root_port.c +++ b/hw/pci-bridge/gen_pcie_root_port.c @@ -26,6 +26,8 @@ OBJECT_DECLARE_SIMPLE_TYPE(GenPCIERootPort, GEN_PCIE_ROOT= _PORT) #define GEN_PCIE_ROOT_PORT_AER_OFFSET 0x100 #define GEN_PCIE_ROOT_PORT_ACS_OFFSET \ (GEN_PCIE_ROOT_PORT_AER_OFFSET + PCI_ERR_SIZEOF) +#define GEN_PCIE_ROOT_PORT_ACS_END \ + (GEN_PCIE_ROOT_PORT_ACS_OFFSET + PCI_ACS_SIZEOF) =20 #define GEN_PCIE_ROOT_PORT_MSIX_NR_VECTOR 1 #define GEN_PCIE_ROOT_DEFAULT_IO_RANGE 4096 @@ -100,6 +102,12 @@ static void gen_rp_realize(DeviceState *dev, Error **e= rrp) d->wmask[PCI_IO_BASE] =3D 0; d->wmask[PCI_IO_LIMIT] =3D 0; } + + uint32_t offset =3D GEN_PCIE_ROOT_PORT_ACS_END; + pcie_ide_init(d, offset); + offset +=3D PCI_IDE_SIZEOF; + + pcie_cap_tee_init(d); } =20 static const VMStateDescription vmstate_rp_dev =3D { diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c index 4622c75e48..b9ead826ed 100644 --- a/hw/pci/pcie.c +++ b/hw/pci/pcie.c @@ -968,6 +968,12 @@ void pcie_cap_flr_write_config(PCIDevice *dev, } } =20 +void pcie_cap_tee_init(PCIDevice *dev) +{ + pci_long_test_and_set_mask(dev->config + dev->exp.exp_cap + PCI_EXP_DE= VCAP, + PCI_EXP_DEVCAP_TEE); +} + /* Alternative Routing-ID Interpretation (ARI) * forwarding support for root and downstream ports */ @@ -1371,6 +1377,15 @@ uint32_t pcie_pri_get_req_alloc(const PCIDevice *dev) return pci_get_long(dev->config + dev->exp.pri_cap + PCI_PRI_ALLOC_REQ= ); } =20 +/* IDE */ +void pcie_ide_init(PCIDevice *dev, uint16_t offset) +{ + pcie_add_capability(dev, PCI_EXT_CAP_ID_IDE, PCI_IDE_VER, + offset, PCI_IDE_SIZEOF); + uint32_t cap =3D PCI_IDE_CAP_SELECTIVE; + pci_set_byte(dev->config + offset + PCI_IDE_CAP, cap); +} + bool pcie_pri_enabled(const PCIDevice *dev) { if (!pci_is_express(dev) || !dev->exp.pri_cap) { diff --git a/include/hw/pci/pcie.h b/include/hw/pci/pcie.h index 71ba94874b..db66678252 100644 --- a/include/hw/pci/pcie.h +++ b/include/hw/pci/pcie.h @@ -123,6 +123,8 @@ void pcie_cap_flr_init(PCIDevice *dev); void pcie_cap_flr_write_config(PCIDevice *dev, uint32_t addr, uint32_t val, int len); =20 +void pcie_cap_tee_init(PCIDevice *dev); + /* ARI forwarding capability and control */ void pcie_cap_arifwd_init(PCIDevice *dev); void pcie_cap_arifwd_reset(PCIDevice *dev); @@ -161,6 +163,7 @@ void pcie_pasid_init(PCIDevice *dev, uint16_t offset, u= int8_t pasid_width, bool exec_perm, bool priv_mod); void pcie_pri_init(PCIDevice *dev, uint16_t offset, uint32_t outstanding_p= r_cap, bool prg_response_pasid_req); +void pcie_ide_init(PCIDevice *dev, uint16_t offset); =20 uint32_t pcie_pri_get_req_alloc(const PCIDevice *dev); bool pcie_pri_enabled(const PCIDevice *dev); diff --git a/include/hw/pci/pcie_regs.h b/include/hw/pci/pcie_regs.h index 33a22229fe..aa21177411 100644 --- a/include/hw/pci/pcie_regs.h +++ b/include/hw/pci/pcie_regs.h @@ -182,4 +182,8 @@ typedef enum PCIExpLinkWidth { #define PCI_DOE_VER 0x1 #define PCI_DOE_SIZEOF 24 =20 +/* IDE */ +#define PCI_IDE_VER 0x1 +#define PCI_IDE_SIZEOF 12 + #endif /* QEMU_PCIE_REGS_H */ --=20 2.43.0 From nobody Mon Sep 28 00:10:28 2026 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=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787059985; cv=none; d=zohomail.com; s=zohoarc; b=mThTTxCr3STRlxchpU1PwuP04FXVZz087PQuzsVhrX9PeVc8bJI+txRawx5ZzN/yKOInrkGncb9MmD2PK9BtYorHw8CR19xNP1kMyJKdRVlQnZ0lKm05DjhhdOTeVkmJMN0/xsqXGFng7bBun93j7Kb5VxNdSx6Ssr73+Ztdc64= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787059985; 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=W+jDim19iBFmebWRV3oEtOp0uuBONKIVk2nTBz2GCZ0=; b=C/FIEI6UgAp1EGGZdRgjdEYnK045LEoz8KXwIyLzgMIXBEgd6Y6kZHwWokhmBC2hMjhSIsO8hpHIXt6cQ5QkMP/Gy5K2yyp65Fwtk8Ot3LtEkSSzFitllK1CPwlIBfrxLjoyVEbzcaNXb+hRgPBcDRCV1iU1oH79BMruL+a94tQ= 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= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787059985851519.3898773631726; Tue, 18 Aug 2026 06:33:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwJvq-0003n7-VA; Tue, 18 Aug 2026 09:32:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwJvm-0003lj-Sz for qemu-devel@nongnu.org; Tue, 18 Aug 2026 09:32:42 -0400 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwJvj-00008b-V4 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 09:32:42 -0400 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-4798bea72f9so2946856f8f.1 for ; Tue, 18 Aug 2026 06:32:39 -0700 (PDT) Received: from [127.0.1.1] ([2a10:d582:31e:0:c289:2687:e46c:f7e3]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49987b203cfsm298360625e9.3.2026.08.18.06.32.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 06:32:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787059958; x=1787664758; darn=nongnu.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=W+jDim19iBFmebWRV3oEtOp0uuBONKIVk2nTBz2GCZ0=; b=K5umEP1AHN3PDVMbLoSvqz3zB/o+Sa0/OdnzwlvlxneeOic4Q1/DOf/gq76sdsD8rx QeBvaQij732BdntOdrXwfRMPe/dYShyM3k2YJqJi2G/MRJc75f8jaQhKO5Jf8g+nFY4p k45RwgMve+B+Src2V1Nbb+DfKN5FPg2XxrFP4/FthOMWFILNBUBBYRn8v74EVDjQ4A2T eu4IC1XLeTTpc21Ux0YFhsBLEaeONkaBdLehiEyD5tMLq4sMauBSGetA+024HAnHR1+x YAayQ50pUuDZcX//5AiqqY5uNJXgd2qt6XNcrWeiUVbIJuXi812erhduMVD0MSkuagt1 riQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787059958; x=1787664758; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=W+jDim19iBFmebWRV3oEtOp0uuBONKIVk2nTBz2GCZ0=; b=clWXkZMpUCgkPWRylmxEGnFHCZflAgjoeeYWKav112vjr0WupT83tpbvmBdIOhWENk XuycP+gntK6gL//Lv+DipqmY01pY99k4fBLRJ2cnpSCtoQImu7O91946HqOfoeiYke+2 ArT5MWyQXgPKyWEocXFd3dHPgBQxeNSRyr776C5fsASODML2ZMVO3noSnLJThNP6n/+g TzpuKupgAVfp0Zr2sHB7k6fFiGiA0pDZX1CbjbfM2IA1q3hsNkSB4WFeP3hfq448G+9W av6vzza9SnAWkH6f3yaGVwOrzCkaiMufJstZVYHeYcYfh6RsX5BWuptVpnRLQ0CHQjc4 ucig== X-Gm-Message-State: AOJu0YzfOw8jUKHKUVWgZr+/L3sDDiRmB9zeQZrmqYr8kRDYly7pHart MTnNxjx79RvsiGz85UBb8uFlMvLtzvYwoGTz9vIBKrhRoedhahMO8RG4KqpiXVjBlNUy3H+1qVD P237FAtQ= X-Gm-Gg: AR+sD133kVdZ9O9YOb7Rv1Rnn0doIrlLOH/z9ECfKvrTeFPMJP4MfcEHP5jgwIc353o ICWs7yYactLMoV1jYUUXump5A2ZqCtsTlWq9l8Fs6iNc4lbpgMk9eQDUXTdAtr4ZV18dCt3jzgF sowS1pL7sEWEt7aPsFGjjsfyP2dCrgqcWLc6QR1LeSBKCw+Fs1i5hW3sOLl8GsnHmNg93WQYZSK QqeMnB7iF6PVoCHRdqFC3Wwu/Te8kPcrqsCQJ1bTsYA4uOC2j1CVNOsiS52LFuqS4J4vF8fsSXq bCIkYDevmjdjtwpxqmIZ0bhHZQBefJGeF3Fk1ajFrPwGqdlqElPCZIgi3wWFDGvHgUM2GbrGyPc FzpdLzlaF1GEzkk5lJ/GewHLXPqacaVswHPoOrAv1aKgkCvJjq6pbYgv51bI1NXyLSduZBx5Xsf 2C2jyOEALaEd8xguJYiQhsn3tGNODW9lb53p3jgWG9BoHoRwQAA2G+yUSFtJ0Lo1tZGLXSZw== X-Received: by 2002:a05:600c:64c6:b0:499:84ff:b16 with SMTP id 5b1f17b1804b1-4999fb4d60bmr167148815e9.14.1787059958322; Tue, 18 Aug 2026 06:32:38 -0700 (PDT) From: Jim MacArthur Date: Tue, 18 Aug 2026 14:32:00 +0100 Subject: [PATCH RFC 2/4] sata: add SPDM + IDE + TEE pci support MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260818-jmac-rme-da-prep-v1-2-30fab951bc75@linaro.org> References: <20260818-jmac-rme-da-prep-v1-0-30fab951bc75@linaro.org> In-Reply-To: <20260818-jmac-rme-da-prep-v1-0-30fab951bc75@linaro.org> To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , John Snow , "Denis V. Lunev" , qemu-block@nongnu.org, Jim MacArthur , Pierrick Bouvier , Pierrick Bouvier X-Mailer: b4 0.13.0 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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::42a; envelope-from=jim.macarthur@linaro.org; helo=mail-wr1-x42a.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, 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 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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 @linaro.org) X-ZM-MESSAGEID: 1787059987140158500 From: Pierrick Bouvier Replaces the ICH9 config_write/config_read which versions which will use DOE to write/read config if we have an SPDM port and DOE capability. Signed-off-by: Pierrick Bouvier Signed-off-by: Jim MacArthur --- hw/ide/ich.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++= +++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/hw/ide/ich.c b/hw/ide/ich.c index b00987f08d..d2731598ea 100644 --- a/hw/ide/ich.c +++ b/hw/ide/ich.c @@ -70,6 +70,7 @@ #include "hw/ide/pci.h" #include "hw/ide/ahci-pci.h" #include "ahci-internal.h" +#include "system/spdm-socket.h" =20 #define ICH9_MSI_CAP_OFFSET 0x80 #define ICH9_SATA_CAP_OFFSET 0xA8 @@ -90,6 +91,10 @@ static const VMStateDescription vmstate_ich9_ahci =3D { }, }; =20 +static const Property ich_props[] =3D { + DEFINE_PROP_UINT16("spdm_port", PCIDevice, spdm_port, 0), +}; + static void pci_ich9_ahci_update_irq(void *opaque, int irq_num, int level) { PCIDevice *pci_dev =3D opaque; @@ -120,6 +125,27 @@ static void pci_ich9_ahci_init(Object *obj) d->ahci.irq =3D &d->irq; } =20 +static bool pcie_doe_spdm_rsp(DOECap *doe_cap) +{ + void *req =3D pcie_doe_get_write_mbox_ptr(doe_cap); + uint32_t req_len =3D pcie_doe_get_obj_len(req) * 4; + void *rsp =3D doe_cap->read_mbox; + uint32_t rsp_len =3D SPDM_SOCKET_MAX_MESSAGE_BUFFER_SIZE; + + uint32_t recvd =3D spdm_socket_rsp(doe_cap->spdm_socket, + SPDM_SOCKET_TRANSPORT_TYPE_PCI_DOE, + req, req_len, rsp, rsp_len); + doe_cap->read_mbox_len +=3D DIV_ROUND_UP(recvd, 4); + + return recvd !=3D 0; +} + +static DOEProtocol doe_spdm_prot[] =3D { + { PCI_VENDOR_ID_PCI_SIG, PCI_SIG_DOE_CMA, pcie_doe_spdm_rsp }, + { PCI_VENDOR_ID_PCI_SIG, PCI_SIG_DOE_SECURED_CMA, pcie_doe_spdm_rsp }, + { } +}; + static void pci_ich9_ahci_realize(PCIDevice *dev, Error **errp) { AHCIPCIState *d; @@ -145,6 +171,8 @@ static void pci_ich9_ahci_realize(PCIDevice *dev, Error= **errp) pci_register_bar(dev, ICH9_MEM_BAR, PCI_BASE_ADDRESS_SPACE_MEMORY, &d->ahci.mem); =20 + pcie_endpoint_cap_init(dev, 0xa8 + 0x8); /* right after SATA */ + sata_cap_offset =3D pci_add_capability(dev, PCI_CAP_ID_SATA, ICH9_SATA_CAP_OFFSET, SATA_CAP_S= IZE, errp); @@ -165,6 +193,25 @@ static void pci_ich9_ahci_realize(PCIDevice *dev, Erro= r **errp) /* Any error other than -ENOTSUP(board's MSI support is broken) * is a programming error. Fall back to INTx silently on -ENOTSUP */ assert(!ret || ret =3D=3D -ENOTSUP); + + uint16_t cap_offset =3D PCI_CONFIG_SPACE_SIZE; + + if (dev->spdm_port) { + pcie_doe_init(dev, &dev->doe_spdm, cap_offset, + doe_spdm_prot, true, 0); + cap_offset +=3D PCI_DOE_SIZEOF; + + dev->doe_spdm.spdm_socket =3D spdm_socket_connect(dev->spdm_port, + errp); + assert(dev->doe_spdm.spdm_socket > 0); + } + + /* ide */ + pcie_ide_init(dev, cap_offset); + cap_offset +=3D PCI_IDE_SIZEOF; + + /* tee */ + pcie_cap_tee_init(dev); } =20 static void pci_ich9_uninit(PCIDevice *dev) @@ -176,18 +223,41 @@ static void pci_ich9_uninit(PCIDevice *dev) ahci_uninit(&d->ahci); } =20 +static uint32_t ich_read_config(PCIDevice *dev, uint32_t address, int len) +{ + uint32_t val; + if (dev->spdm_port && pcie_find_capability(dev, PCI_EXT_CAP_ID_DOE)) { + if (pcie_doe_read_config(&dev->doe_spdm, address, len, &val)) { + return val; + } + } + return pci_default_read_config(dev, address, len); +} + +static void ich_write_config(PCIDevice *dev, uint32_t address, + uint32_t val, int len) +{ + if (pcie_find_capability(dev, PCI_EXT_CAP_ID_DOE)) { + pcie_doe_write_config(&dev->doe_spdm, address, val, len); + } + pci_default_write_config(dev, address, val, len); +} + static void ich_ahci_class_init(ObjectClass *klass, const void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); PCIDeviceClass *k =3D PCI_DEVICE_CLASS(klass); =20 k->realize =3D pci_ich9_ahci_realize; + k->config_write =3D ich_write_config; + k->config_read =3D ich_read_config; k->exit =3D pci_ich9_uninit; k->vendor_id =3D PCI_VENDOR_ID_INTEL; k->device_id =3D PCI_DEVICE_ID_INTEL_82801IR; k->revision =3D 0x02; k->class_id =3D PCI_CLASS_STORAGE_SATA; dc->vmsd =3D &vmstate_ich9_ahci; + device_class_set_props(dc, ich_props); device_class_set_legacy_reset(dc, pci_ich9_reset); set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); } @@ -199,7 +269,7 @@ static const TypeInfo ich_ahci_info =3D { .instance_init =3D pci_ich9_ahci_init, .class_init =3D ich_ahci_class_init, .interfaces =3D (const InterfaceInfo[]) { - { INTERFACE_CONVENTIONAL_PCI_DEVICE }, + { INTERFACE_PCIE_DEVICE }, { }, }, }; --=20 2.43.0 From nobody Mon Sep 28 00:10:28 2026 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=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787060015; cv=none; d=zohomail.com; s=zohoarc; b=L/LwrOqET17ZO8nPdisJDF/d1YrPGEKrY10Uea/JxZbMj2OuGcmuvYlTtqbSAm1effZYE2EhlgKCr3zPxFNPGRVSo6CFSTr84027zJe6dJynStBnwFQAbbpoHuub1qO6ozvGoYKEW3I4MpQ5uK1+UOXNOtwMPexDW/jeuCqqjcw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787060015; 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=MaRWsfYXrPCYR0C2SN+evr+3/kSgvPxmaScaetm9/p4=; b=HjKugbE4sZQVUmYvl/n+f23kS09BwfBnDPDNaUAFK90YpWrYPkGQCgsekBF8r6t66m4sWghWwQbeGIvmrB+LNgzwptAU6jn7uCUvQCajaNkb6BkNhYsYnl57ihW3yonrDmXGTfezYF03zH1+DnJRnsXJJ4JdTww/tsImESZMvCU= 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= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787060015301554.1899030832435; Tue, 18 Aug 2026 06:33:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwJvr-0003nU-HA; Tue, 18 Aug 2026 09:32:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwJvo-0003mO-DX for qemu-devel@nongnu.org; Tue, 18 Aug 2026 09:32:44 -0400 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwJvk-00008h-JZ for qemu-devel@nongnu.org; Tue, 18 Aug 2026 09:32:44 -0400 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-499840a2575so35052785e9.3 for ; Tue, 18 Aug 2026 06:32:40 -0700 (PDT) Received: from [127.0.1.1] ([2a10:d582:31e:0:c289:2687:e46c:f7e3]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49987b203cfsm298360625e9.3.2026.08.18.06.32.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 06:32:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787059959; x=1787664759; darn=nongnu.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=MaRWsfYXrPCYR0C2SN+evr+3/kSgvPxmaScaetm9/p4=; b=UQqzeIpkRTwfUFEgxrCZkKVrDmm+VGkQfED3MentPTAW42/ZXYneoIzZSrQNDOO13B YIsJ89ZZdaNypctS3zdvbKWY5o0XIJvHR90sB54lqtRCDsgQNRftyWEvjD2+d4WhSW/x R4r0uZGxC+ywvmfBD1Ofx5YjjL+GIMFDM/0wN5RyVgOEGhD27tLZSPFs8wHi2lDJktqS dLs6HzlqmnVKjv0nApYihr/azxcLrcl+TE3piVHUnQ446wg0XFvLwt7UxVoGsaWtB43+ mkJ95kEN0Thb0JJkrzGapUxTMX9V4K9O0Ucs+joz/ZarKPQ9JU0lT4rvAk69I0Wtz95z gsjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787059959; x=1787664759; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=MaRWsfYXrPCYR0C2SN+evr+3/kSgvPxmaScaetm9/p4=; b=d6rNGdtCdmQhEael6A1npOnlQMniOE58Ai10T5OdPSEockNiZA3te8JIS9akdCvVwF oqiZBvwDPJgHAtGF5zQZz7KfCQFhNidGRxyniUb28nv7DbG4JguXzKaCumRvpjJCaDe4 3CNJvkJful4mYrumM5S1vpZUqBchZWAI5sj0WEaDoiVSJyhqaF5v9vavNJOJlH8CRNdi DhPtC3fkQgshzMqIpVN9j5KdzZUI+2Sgjf9hSFmxKyVieEMAXlIxZODz/tpb3p4Am1sM lxv3YVlnA04Il3veoWzsK24Ueq/UwkLBWkttcCVNax1ZFoh16BQRxH/Ah9O08yMJqjk/ F/nA== X-Gm-Message-State: AOJu0YzhMRPwcqhgjFhYUuoWJ81pPKDykD5lpmDOZZj068OXgVqYk2JO xf761h6K45WcSOl7b6xB/v579c5LiHNw7coegeQ2uk6GJljKbm63ZhlbevThuGqn2XUcUg2Y0Ay ikWbO6oE= X-Gm-Gg: AR+sD10egPNQPl66MoS/ex1tzBezRLeZr/xZqnwwuGYIe7SbSezzlxezZQi7orfMKZP PLkTna65EE8Xnol4lMCZQBArAtcOHJT/+vEroru3hNF9wWDK5eVmeZNMMx7ZaXGhPAaZdM4ccyJ 5KyNScM+8duR2Jt1aTAv4VaT5kZmut7dsTrMx4HrUjxjZE0m45ffqsUZAJjs7nG2xMNXdTEFZ62 2VT4EWmBFjOE2vEAadh9CSoHG5YNW0Fl7IjuugC9HiLPKMF4ZKYLt9x1713B7lAjPmNdBM2sI2f xpJQIEXy6E10uMBLbgW5pkjHshJcI8QwHA4IvB2V0lCkNpPTq0/w+XCxMajzftgUFJ50GfG/++m cYd6kvPyILZdRgyaik9GQvemYuOSvDpd5QQZRYIxddz0yAsDO2Gs0PpNQal8HlrFJFdjj/a64pb BZtsrkkMNHRvlwkrX4PsTeq0mJTUCSf1yZnZrcFQc0ezDVdKYMWMNTYNhjp5voYd48 X-Received: by 2002:a05:600c:608a:b0:493:bd2a:93be with SMTP id 5b1f17b1804b1-499a202cb4cmr123021975e9.6.1787059959140; Tue, 18 Aug 2026 06:32:39 -0700 (PDT) From: Jim MacArthur Date: Tue, 18 Aug 2026 14:32:01 +0100 Subject: [PATCH RFC 3/4] hw/pci: add DVSEC RMEDA capability to PCIe root port MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260818-jmac-rme-da-prep-v1-3-30fab951bc75@linaro.org> References: <20260818-jmac-rme-da-prep-v1-0-30fab951bc75@linaro.org> In-Reply-To: <20260818-jmac-rme-da-prep-v1-0-30fab951bc75@linaro.org> To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , John Snow , "Denis V. Lunev" , qemu-block@nongnu.org, Jim MacArthur , Pierrick Bouvier , Viresh Kumar , Pierrick Bouvier X-Mailer: b4 0.13.0 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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32d; envelope-from=jim.macarthur@linaro.org; helo=mail-wm1-x32d.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, 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 development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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 @linaro.org) X-ZM-MESSAGEID: 1787060017336158500 From: Pierrick Bouvier Signed-off-by: Pierrick Bouvier Signed-off-by: Viresh Kumar Signed-off-by: Jim MacArthur After this we can see all the capabilities listed for the PCIe bridge: 00:05.0 PCI bridge: Red Hat, Inc. QEMU PCIe Root port (prog-if 00 [Normal d= ecode]) ... Capabilities: [54] Express (v2) Root Port (Slot+), IntMsgNum 0 ... Capabilities: [48] MSI-X: Enable+ Count=3D1 Masked- Vector table: BAR=3D0 offset=3D00000000 PBA: BAR=3D0 offset=3D00000800 Capabilities: [40] Subsystem: Red Hat, Inc. Device 0000 Capabilities: [100 v2] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UncorrIntErr- BlockedTLP- AtomicOpBlocked- TLPB= lockedErr- PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXl= atBlocked- UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UncorrIntErr+ BlockedTLP- AtomicOpBlocked- TLPB= lockedErr+ PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXl= atBlocked- UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- UncorrIntErr+ BlockedTLP- AtomicOpBlocked- TLPB= lockedErr- PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXl= atBlocked- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr- CorrInt= Err- HeaderOF- CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+ CorrInt= Err+ HeaderOF+ AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCC= hkEn- MultHdrRecCap+ MultHdrRecEn- TLPPfxPres- HdrLogCap- HeaderLog: 00000000 00000000 00000000 00000000 RootCmd: CERptEn+ NFERptEn+ FERptEn+ RootSta: CERcvd- MultCERcvd- UERcvd- MultUERcvd- FirstFatal- NonFatalMsg- FatalMsg- IntMsgNum 0 ErrorSrc: ERR_COR: 0000 ERR_FATAL/NONFATAL: 0000 Capabilities: [148 v1] Access Control Services ACSCap: SrcValid+ TransBlk+ ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl= - DirectTrans+ ACSCtl: SrcValid+ TransBlk- ReqRedir+ CmpltRedir+ UpstreamFwd+ EgressCtrl= - DirectTrans- Capabilities: [150 v1] Designated Vendor-Specific: Vendor=3D13b5 ID=3Dff01= Rev=3D0 Len=3D16 Capabilities: [164 v1] Integrity & Data Encryption IDECap: Lnk=3D0 Sel=3D1 FlowThru- PartHdr- Aggr- PCPC- IDE_KM- Alg=3D'AES= -GCM-256-96b' TCs=3D1 TeeLim- IDECtl: FTEn- [170]SelectiveIDE#0 Cap: RID#=3D0 [174]SelectiveIDE#0 Ctl: En- NPR- PR- CPL- PCRC- CFG- HdrEnc=3Dno Alg=3D'= AES-GCM-256-96b' TC0 ID0 [178]SelectiveIDE#0 Sta: insecure RecvChkFail- [17c]SelectiveIDE#0 RID: Valid- Base=3D0 Limit=3D0 SegBase=3D0 Kernel driver in use: pcieport --- hw/pci-bridge/gen_pcie_root_port.c | 30 ++++++++++++++++++++++++++++++ include/hw/pci/pcie_regs.h | 4 ++++ 2 files changed, 34 insertions(+) diff --git a/hw/pci-bridge/gen_pcie_root_port.c b/hw/pci-bridge/gen_pcie_ro= ot_port.c index 452ebf69b3..035212508d 100644 --- a/hw/pci-bridge/gen_pcie_root_port.c +++ b/hw/pci-bridge/gen_pcie_root_port.c @@ -104,6 +104,36 @@ static void gen_rp_realize(DeviceState *dev, Error **e= rrp) } =20 uint32_t offset =3D GEN_PCIE_ROOT_PORT_ACS_END; + /* + * dvsec rme-da + * https://developer.arm.com/documentation/den0129/latest/ + * Arm RME System Architecture + * 0x0000 RMEDA_ECH See B3.2.6.2.1 RME-DA Extended Capability Header + * 0x0004 RMEDA_HEAD1 See B3.2.6.2.2 RME-DA DVSEC Header 1 + * 0x0008 RMEDA_HEAD2 See B3.2.6.2.3 RME-DA DVSEC Header 2 + * 0x000C RMEDA_CTL1 See B3.2.6.2.4 RME-DA Control register 1 + * 0x0010 RMEDA_CTL2 See B3.2.6.2.5 RME-DA Control register 2 + */ + pcie_add_capability(d, PCI_EXT_CAP_ID_DVSEC, PCI_RMEDA_VER, offset, + PCI_RMEDA_SIZEOF); + const uint32_t header1 =3D 0x010013b5; + const uint32_t header2 =3D 0xFF01; + const uint32_t ctl1 =3D 0x1; /* support tdisp */ + const uint32_t ctl2 =3D 0x0; /* unlocked */ + pci_set_long(d->config + offset + 0x4, header1); + pci_set_long(d->config + offset + 0x8, header2); + pci_set_long(d->config + offset + 0xC, ctl1); + pci_set_long(d->config + offset + 0x10, ctl2); + d->wmask[offset + 0xC] =3D 0xff; + d->wmask[offset + 0xC + 1] =3D 0xff; + d->wmask[offset + 0xC + 2] =3D 0xff; + d->wmask[offset + 0xC + 3] =3D 0xff; + d->wmask[offset + 0x10] =3D 0xff; + d->wmask[offset + 0x10 + 1] =3D 0xff; + d->wmask[offset + 0x10 + 2] =3D 0xff; + d->wmask[offset + 0x10 + 3] =3D 0xff; + offset +=3D PCI_RMEDA_SIZEOF; + pcie_ide_init(d, offset); offset +=3D PCI_IDE_SIZEOF; =20 diff --git a/include/hw/pci/pcie_regs.h b/include/hw/pci/pcie_regs.h index aa21177411..233378fd79 100644 --- a/include/hw/pci/pcie_regs.h +++ b/include/hw/pci/pcie_regs.h @@ -186,4 +186,8 @@ typedef enum PCIExpLinkWidth { #define PCI_IDE_VER 0x1 #define PCI_IDE_SIZEOF 12 =20 +/* RME-DA */ +#define PCI_RMEDA_VER 0x1 +#define PCI_RMEDA_SIZEOF 20 + #endif /* QEMU_PCIE_REGS_H */ --=20 2.43.0 From nobody Mon Sep 28 00:10:28 2026 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=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1787059999; cv=none; d=zohomail.com; s=zohoarc; b=Dya2DwmmLJBs+4JdmzIore6nmvcBvI6jALmqf7zBU94LNNzQGkCtvo7+v8cvaQVExJY8/1IIZsf/lVSL6omcXcw4SQRHAlER7AMwoa2kisu7I4yhv91ZjzyIy/pjRPcqOzkRM6L0fIeaaBitM5HQ2qmsl6VkNdLhW79zikaRfhk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787059999; 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=0bkQ7XcsLrO7GnW6QWyxFWLeTXrsnESl6attSVhp0hY=; b=exMWfRdwhGCrBGnULXE+9s2pYaxyGO4AhgLdkFhgbtz6DawOQ5z4hikubWoZViPk09YQCFHT5+Vgt6Ky1Gmefwa+Iy39GIZ/XpRP5VqE/oVoPFa6EhGl+hMI1eR2dwIh2IuzLckPl2cu8zyj2LwX3tMt+pYAJ0inN2YdNfnwnJw= 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= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787059999645493.355611517855; Tue, 18 Aug 2026 06:33:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwJvp-0003n2-9g; Tue, 18 Aug 2026 09:32:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwJvo-0003m8-3z for qemu-devel@nongnu.org; Tue, 18 Aug 2026 09:32:44 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwJvl-00008r-7m for qemu-devel@nongnu.org; Tue, 18 Aug 2026 09:32:43 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-4955aa106b1so42313995e9.0 for ; Tue, 18 Aug 2026 06:32:40 -0700 (PDT) Received: from [127.0.1.1] ([2a10:d582:31e:0:c289:2687:e46c:f7e3]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49987b203cfsm298360625e9.3.2026.08.18.06.32.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 06:32:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787059960; x=1787664760; darn=nongnu.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=0bkQ7XcsLrO7GnW6QWyxFWLeTXrsnESl6attSVhp0hY=; b=Zwgj1UyqHyCo8yOfidSMB1geDe5gb3BPtv880s0BQH81TgpFWpp7zh81D8WevR0rvv gAoCVU4lJEqqW2NtQQTswtWvfF1nQXzAUfybmJe8IQcmbg3axMzVhjBt0ngfYdBoYhkV 1vzxWs6m2lIckMAC4O17hq3m2LI63K39eLFFF3eUDlUIX2SP5MM2daMcFYHTgfuZZItp mOj57jj/poCijicKW4cN2B8svkaDLxsbz0yco3XzoYcHoHDSOFOwEDrN5hxQYbyw1ODW DjVKxtVqqNRx709M9XzrOFVIcqZyxb2MaD94MD/kaKQ4x0L5eGOfvMDN8PLSkRyxHlYY l7Tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787059960; x=1787664760; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=0bkQ7XcsLrO7GnW6QWyxFWLeTXrsnESl6attSVhp0hY=; b=SQQGGLuG45nWyL2bKCzetn1JDarjozznYTR6KGo/OxIb7ozpXvuUIyl783cwWMX84P xl19VTeD1F8EKE4SkKLNOHyC6rv9AQ/XduZjV6UBL+KQh0OkBHxnQNOhEdr+Lu2f82n0 GNSG44ZzTH4N5O30YGU+/pCJZRkp7JJCDzDjXRI7fnlLXO8k/VcQnk/rFrzIhTpfFlHX XIIV6Ag6exjHfXwMm3tnTtMyr+E829mU6mbedS0RYbDudFdqU7ni7G6tms8HgskcALgi jRafytDVQEOPKPRwMnOU73OowaIytggJrlvbv8EOHAlSY240tpleqVv4UZtS0Bn0w3zG qerg== X-Gm-Message-State: AOJu0Yx2/tXlK3nf1fjDXHjnnt80Fmv40aFAfXrq6R7YHeBQRmP1JJ4J wVtcfJb14j7FFCXPfUYesnXBJyLNuTX9+7XLeY2Sd+W4N6hRN98OtgvrqE+JH4qCFsLrTa21+Ai CaC8Bg2I= X-Gm-Gg: AR+sD116R6Olrsl5UcIx0r2v9IvPxHWE/imYeM0+dOZeQqE9YV7lABmYSVWFoyI8/IJ 25t1gMX1E+2yBJzn7EDAf7wks5ZswXQUWbIVGd3P+0PtFI6CTnO2YKBBO909IaJ5NXsKsM23eYl P8iWURefRUYKt7V1IJ5cfPNFA/FOS/CLqlXTZkqPhWIskyTYuM00rTDIknZp23+nFTsnrD3dgXV 1vKc0LjBxZIl7ptajw/kBhomNGVffVIUaNF0vBkapraN+QicSL8WZ6c4XNFgAgLbIsjNXMPEsrs W41FAGg+JS8y5tIAsie9TE1KZcOF1slMSF7FS5HwPCq11MyqMZFdfDCbvHDTwlPJcJEt7Pt922E vCMw1+6c1Q9G+EmVgFGVQktumwTlWwRvuXzynVv28tNJg84GiTUwErMLJ4pT7TXa+Yp3+OjXp6j oBG2EuDTfNVPl3B3vFYzgAYBg4rYCmnusPz5jAnImUlTCMOyytPRyXqsGgJYwRdXn0 X-Received: by 2002:a05:600c:6b72:b0:499:7a19:408b with SMTP id 5b1f17b1804b1-4998795f96bmr430405615e9.11.1787059959875; Tue, 18 Aug 2026 06:32:39 -0700 (PDT) From: Jim MacArthur Date: Tue, 18 Aug 2026 14:32:02 +0100 Subject: [PATCH RFC 4/4] hw/pci/msi: extract msi_message_address_register MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260818-jmac-rme-da-prep-v1-4-30fab951bc75@linaro.org> References: <20260818-jmac-rme-da-prep-v1-0-30fab951bc75@linaro.org> In-Reply-To: <20260818-jmac-rme-da-prep-v1-0-30fab951bc75@linaro.org> To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , John Snow , "Denis V. Lunev" , qemu-block@nongnu.org, Jim MacArthur , Pierrick Bouvier , Pierrick Bouvier X-Mailer: b4 0.13.0 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=lists1p.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::332; envelope-from=jim.macarthur@linaro.org; helo=mail-wm1-x332.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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 @linaro.org) X-ZM-MESSAGEID: 1787060001075158500 From: Pierrick Bouvier We need to access this address from smmu, to know if we are translating an MSI. Signed-off-by: Pierrick Bouvier Signed-off-by: Jim MacArthur --- hw/pci/msi.c | 19 +++++++++++++------ include/hw/pci/msi.h | 1 + 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/hw/pci/msi.c b/hw/pci/msi.c index b9f5b45920..7361776ace 100644 --- a/hw/pci/msi.c +++ b/hw/pci/msi.c @@ -137,6 +137,18 @@ void msi_set_message(PCIDevice *dev, MSIMessage msg) pci_set_word(dev->config + msi_data_off(dev, msi64bit), msg.data); } =20 +uint64_t msi_message_address_register(PCIDevice *dev) +{ + uint16_t flags =3D pci_get_word(dev->config + msi_flags_off(dev)); + bool msi64bit =3D flags & PCI_MSI_FLAGS_64BIT; + + if (msi64bit) { + return pci_get_quad(dev->config + msi_address_lo_off(dev)); + } else { + return pci_get_long(dev->config + msi_address_lo_off(dev)); + } +} + static MSIMessage msi_prepare_message(PCIDevice *dev, unsigned int vector) { uint16_t flags =3D pci_get_word(dev->config + msi_flags_off(dev)); @@ -146,12 +158,7 @@ static MSIMessage msi_prepare_message(PCIDevice *dev, = unsigned int vector) =20 assert(vector < nr_vectors); =20 - if (msi64bit) { - msg.address =3D pci_get_quad(dev->config + msi_address_lo_off(dev)= ); - } else { - msg.address =3D pci_get_long(dev->config + msi_address_lo_off(dev)= ); - } - + msg.address =3D msi_message_address_register(dev); /* upper bit 31:16 is zero */ msg.data =3D pci_get_word(dev->config + msi_data_off(dev, msi64bit)); if (nr_vectors > 1) { diff --git a/include/hw/pci/msi.h b/include/hw/pci/msi.h index abcfd13925..6f0e02c0fb 100644 --- a/include/hw/pci/msi.h +++ b/include/hw/pci/msi.h @@ -32,6 +32,7 @@ extern bool msi_nonbroken; =20 void msi_set_message(PCIDevice *dev, MSIMessage msg); MSIMessage msi_get_message(PCIDevice *dev, unsigned int vector); +uint64_t msi_message_address_register(PCIDevice *dev); bool msi_enabled(const PCIDevice *dev); void msi_set_enabled(PCIDevice *dev); int msi_init(struct PCIDevice *dev, uint8_t offset, --=20 2.43.0