From nobody Sat Feb 7 08:53:46 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=1768934538; cv=none; d=zohomail.com; s=zohoarc; b=AC3ZqTet70JjjmVhlfv3FqkdWs9ZDagGWBOSED0UfgDvdV8C9fJ1AvaYnNcxFwuP88p/T+bhiN+WQlo3EEN85ZJwzszs2crF9mqBBweBH0SXzfpHmPrLEnr8exDP7+HRrh/+UsxTUJCt7iuhymHkYcf8LtawlSFr/RoiTQPYzjc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934538; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=z+/IfCOOQHd614qj42ctysWvaB7Y8AkyWHk+0TA5fIE=; b=KnmmZR1SRuh0q7a+24ldWR7c/wH/2mg+B3n1Rjlwe8fognmcFydTTL5zOnqd5mMm9/LD42uq85qJdbBXE5BnIqR33esXCZVXOetobTIILyKddiK9JyyyWC/EnnOVNLlZTspH2OZEnG2hNtnHO7ljayiLIDJhfP7DleVVEtji8o8= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934538863214.0814401904821; Tue, 20 Jan 2026 10:42:18 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGdd-00085c-C0; Tue, 20 Jan 2026 13:39:37 -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 ) id 1viGdN-0007k5-2V for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:39:21 -0500 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 1viGdI-0005vM-Pl for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:39:20 -0500 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-47ee76e8656so66898365e9.0 for ; Tue, 20 Jan 2026 10:39:14 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48042694e77sm587205e9.12.2026.01.20.10.39.11 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:39:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934353; x=1769539153; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=z+/IfCOOQHd614qj42ctysWvaB7Y8AkyWHk+0TA5fIE=; b=PLYN9zFnzOYpMWWziu0w5ynkafnwT6p3ICoi/QEdxRoEjyOY1cNhz2DRJP7nNb4wSN cFc5x6sl3UBdIL2JaqXrk7z3bdoTEd95PZF9RBZxZqYI0ID1vK3EdMVHJNSrRRK07Btm L07oHa0cRGMuatKdzRqRNmtPo4aS2q16pl1BM3KvFflcpAG1NxLYKW4t9cAb27rh7gfB Ldswh55IvrDUI0fpK01SxnPNIkoBDOfGbxBM2y/WaSvOQG9hjIYxBh0ZpJmG8VvcG72+ vhx+TCl/6NIbUtqffzx6JrMJelY2h0PmFssRRwgAJN2jiRQE9OoyRxo2hmmghUbr3gIH BNoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934353; x=1769539153; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=z+/IfCOOQHd614qj42ctysWvaB7Y8AkyWHk+0TA5fIE=; b=JdekUB9ysEb9xpqo3lR/2XKw2tNx8zQuGkPqLSwMFmqQGVWrByaVe4BC/q+hwOgz/2 fA2tJs3+/mbyRIqmNCjPKgu6ll4C/TYN55i7pQGeZlCrdlJMEmEoVrN4gSL5FPGK9N8D r11FZDM+NWswgBAcRXCA975k3313yoJ8ZCY8+3YZnuEYUjVLO0i+hRl36MGi4295/oey eF2uU1Ll2JkWdaWkXqQmWRBMUT/ZvVJ4EOamEO/+jjNlG3ZfBb2TYq6DEjZ14HYg7bI4 IkGCT+WuByLZUoc3Aa6fd5b6UWG4/mnbkJerY2xWL3MNFZSQOPu4XO5YOGq7eVZ8hAGE poFg== X-Gm-Message-State: AOJu0YzLHjDGD2gEUk4thgWQ2hQmKxXq3dwnaTTl5ApRahrryFB+xr8k D2alW7aHM0RPPYbDWuNy1CcxCyPmiHEkve60ysJ1BY3bRk5dxXdue4r1xVjVaxrh0nmvUxc5i1M jil0iNww= X-Gm-Gg: AY/fxX7ZkN/2ibcgOep1S4xyx49Oyd+wehbMYZnrxawvrb2/+lEBff2xQZb5/ExCYQH yaQJzPj21ARrMFmelMhE3XLttR+Mck3xbfsurAT059cVzJWamnloThP18OrdiNcHaaBnpWbzSxO oVxyOo8vWLN5FbksQwqXemWIhw6lx/b5Q2ItoMylAeSGpcYXNWTU51eLJl1NHe1RtBYMilqWtIL TQjZVlB/vQ9bQOU2O8ZTNHBORyA/50L7PkyOARoAXFPWvBFvKfM6qPv0V43HwDVGfiDAiga8RFr VC59VWV1eSkke8v8VTeFdp5hEpmvi9OlhC1KqlWypvrCzvJ430rBtyhg2A2f0v3gvD2MrWAyhEc DKMRdfsDsscHbXWk7+QoAfqrNm9okPwhrYFueKLU+m02nU/MTUAQVq2DdXeL7V58UEuUB85iv4B caY7aTcSnvkpIHYaYsLEwmUYtTH1nSuOwRntfr+Ij1m+CNKdh9Dq05EDM4m42Q X-Received: by 2002:a05:600c:458b:b0:46e:6d5f:f68 with SMTP id 5b1f17b1804b1-4803e7a2ce4mr39510835e9.12.1768934353103; Tue, 20 Jan 2026 10:39:13 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 01/29] hw/arm/smmuv3: Extract common definitions to smmuv3-common.h Date: Tue, 20 Jan 2026 19:38:34 +0100 Message-ID: <20260120183902.73845-2-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::330; envelope-from=philmd@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=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: 1768934539764154100 From: Tao Tang Move register definitions, command enums, and Stream Table Entry (STE) / Context Descriptor (CD) structure definitions from the internal header hw/arm/smmuv3-internal.h to a new common header include/hw/arm/smmuv3-common.h. This allows other components, such as generic SMMUv3 tests or test devices, to utilize these definitions without including the specific SMMUv3 device internal state. Signed-off-by: Tao Tang Reviewed-by: Pierrick Bouvier Reviewed-by: Eric Auger Message-ID: <20260119161112.3841386-2-tangtao1634@phytium.com.cn> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/arm/smmuv3-internal.h | 255 +------------------------------ include/hw/arm/smmuv3-common.h | 268 +++++++++++++++++++++++++++++++++ 2 files changed, 269 insertions(+), 254 deletions(-) create mode 100644 include/hw/arm/smmuv3-common.h diff --git a/hw/arm/smmuv3-internal.h b/hw/arm/smmuv3-internal.h index d15031f2651..687ee6aaca4 100644 --- a/hw/arm/smmuv3-internal.h +++ b/hw/arm/smmuv3-internal.h @@ -23,6 +23,7 @@ =20 #include "hw/core/registerfields.h" #include "hw/arm/smmu-common.h" +#include "hw/arm/smmuv3-common.h" =20 typedef enum SMMUTranslationStatus { SMMU_TRANS_DISABLE, @@ -38,147 +39,6 @@ typedef enum SMMUTranslationClass { SMMU_CLASS_IN, } SMMUTranslationClass; =20 -/* MMIO Registers */ - -REG32(IDR0, 0x0) - FIELD(IDR0, S2P, 0 , 1) - FIELD(IDR0, S1P, 1 , 1) - FIELD(IDR0, TTF, 2 , 2) - FIELD(IDR0, COHACC, 4 , 1) - FIELD(IDR0, BTM, 5 , 1) - FIELD(IDR0, HTTU, 6 , 2) - FIELD(IDR0, DORMHINT, 8 , 1) - FIELD(IDR0, HYP, 9 , 1) - FIELD(IDR0, ATS, 10, 1) - FIELD(IDR0, NS1ATS, 11, 1) - FIELD(IDR0, ASID16, 12, 1) - FIELD(IDR0, MSI, 13, 1) - FIELD(IDR0, SEV, 14, 1) - FIELD(IDR0, ATOS, 15, 1) - FIELD(IDR0, PRI, 16, 1) - FIELD(IDR0, VMW, 17, 1) - FIELD(IDR0, VMID16, 18, 1) - FIELD(IDR0, CD2L, 19, 1) - FIELD(IDR0, VATOS, 20, 1) - FIELD(IDR0, TTENDIAN, 21, 2) - FIELD(IDR0, ATSRECERR, 23, 1) - FIELD(IDR0, STALL_MODEL, 24, 2) - FIELD(IDR0, TERM_MODEL, 26, 1) - FIELD(IDR0, STLEVEL, 27, 2) - FIELD(IDR0, RME_IMPL, 30, 1) - -REG32(IDR1, 0x4) - FIELD(IDR1, SIDSIZE, 0 , 6) - FIELD(IDR1, SSIDSIZE, 6 , 5) - FIELD(IDR1, PRIQS, 11, 5) - FIELD(IDR1, EVENTQS, 16, 5) - FIELD(IDR1, CMDQS, 21, 5) - FIELD(IDR1, ATTR_PERMS_OVR, 26, 1) - FIELD(IDR1, ATTR_TYPES_OVR, 27, 1) - FIELD(IDR1, REL, 28, 1) - FIELD(IDR1, QUEUES_PRESET, 29, 1) - FIELD(IDR1, TABLES_PRESET, 30, 1) - FIELD(IDR1, ECMDQ, 31, 1) - -#define SMMU_IDR1_SIDSIZE 16 -#define SMMU_CMDQS 19 -#define SMMU_EVENTQS 19 - -REG32(IDR2, 0x8) - FIELD(IDR2, BA_VATOS, 0, 10) - -REG32(IDR3, 0xc) - FIELD(IDR3, HAD, 2, 1); - FIELD(IDR3, PBHA, 3, 1); - FIELD(IDR3, XNX, 4, 1); - FIELD(IDR3, PPS, 5, 1); - FIELD(IDR3, MPAM, 7, 1); - FIELD(IDR3, FWB, 8, 1); - FIELD(IDR3, STT, 9, 1); - FIELD(IDR3, RIL, 10, 1); - FIELD(IDR3, BBML, 11, 2); - FIELD(IDR3, E0PD, 13, 1); - FIELD(IDR3, PTWNNC, 14, 1); - FIELD(IDR3, DPT, 15, 1); - -REG32(IDR4, 0x10) - -REG32(IDR5, 0x14) - FIELD(IDR5, OAS, 0, 3); - FIELD(IDR5, GRAN4K, 4, 1); - FIELD(IDR5, GRAN16K, 5, 1); - FIELD(IDR5, GRAN64K, 6, 1); - FIELD(IDR5, VAX, 10, 2); - FIELD(IDR5, STALL_MAX, 16, 16); - -#define SMMU_IDR5_OAS 4 - -REG32(IIDR, 0x18) -REG32(AIDR, 0x1c) -REG32(CR0, 0x20) - FIELD(CR0, SMMU_ENABLE, 0, 1) - FIELD(CR0, EVENTQEN, 2, 1) - FIELD(CR0, CMDQEN, 3, 1) - -#define SMMU_CR0_RESERVED 0xFFFFFC20 - -REG32(CR0ACK, 0x24) -REG32(CR1, 0x28) -REG32(CR2, 0x2c) -REG32(STATUSR, 0x40) -REG32(GBPA, 0x44) - FIELD(GBPA, ABORT, 20, 1) - FIELD(GBPA, UPDATE, 31, 1) - -/* Use incoming. */ -#define SMMU_GBPA_RESET_VAL 0x1000 - -REG32(IRQ_CTRL, 0x50) - FIELD(IRQ_CTRL, GERROR_IRQEN, 0, 1) - FIELD(IRQ_CTRL, PRI_IRQEN, 1, 1) - FIELD(IRQ_CTRL, EVENTQ_IRQEN, 2, 1) - -REG32(IRQ_CTRL_ACK, 0x54) -REG32(GERROR, 0x60) - FIELD(GERROR, CMDQ_ERR, 0, 1) - FIELD(GERROR, EVENTQ_ABT_ERR, 2, 1) - FIELD(GERROR, PRIQ_ABT_ERR, 3, 1) - FIELD(GERROR, MSI_CMDQ_ABT_ERR, 4, 1) - FIELD(GERROR, MSI_EVENTQ_ABT_ERR, 5, 1) - FIELD(GERROR, MSI_PRIQ_ABT_ERR, 6, 1) - FIELD(GERROR, MSI_GERROR_ABT_ERR, 7, 1) - FIELD(GERROR, MSI_SFM_ERR, 8, 1) - -REG32(GERRORN, 0x64) - -#define A_GERROR_IRQ_CFG0 0x68 /* 64b */ -REG32(GERROR_IRQ_CFG1, 0x70) -REG32(GERROR_IRQ_CFG2, 0x74) - -#define A_STRTAB_BASE 0x80 /* 64b */ - -#define SMMU_BASE_ADDR_MASK 0xfffffffffffc0 - -REG32(STRTAB_BASE_CFG, 0x88) - FIELD(STRTAB_BASE_CFG, FMT, 16, 2) - FIELD(STRTAB_BASE_CFG, SPLIT, 6 , 5) - FIELD(STRTAB_BASE_CFG, LOG2SIZE, 0 , 6) - -#define A_CMDQ_BASE 0x90 /* 64b */ -REG32(CMDQ_PROD, 0x98) -REG32(CMDQ_CONS, 0x9c) - FIELD(CMDQ_CONS, ERR, 24, 7) - -#define A_EVENTQ_BASE 0xa0 /* 64b */ -REG32(EVENTQ_PROD, 0xa8) -REG32(EVENTQ_CONS, 0xac) - -#define A_EVENTQ_IRQ_CFG0 0xb0 /* 64b */ -REG32(EVENTQ_IRQ_CFG1, 0xb8) -REG32(EVENTQ_IRQ_CFG2, 0xbc) - -#define A_IDREGS 0xfd0 - static inline int smmu_enabled(SMMUv3State *s) { return FIELD_EX32(s->cr[0], CR0, SMMU_ENABLE); @@ -272,37 +132,6 @@ static inline void smmu_write_cmdq_err(SMMUv3State *s,= uint32_t err_type) s->cmdq.cons =3D FIELD_DP32(s->cmdq.cons, CMDQ_CONS, ERR, err_type); } =20 -/* Commands */ - -typedef enum SMMUCommandType { - SMMU_CMD_NONE =3D 0x00, - SMMU_CMD_PREFETCH_CONFIG , - SMMU_CMD_PREFETCH_ADDR, - SMMU_CMD_CFGI_STE, - SMMU_CMD_CFGI_STE_RANGE, - SMMU_CMD_CFGI_CD, - SMMU_CMD_CFGI_CD_ALL, - SMMU_CMD_CFGI_ALL, - SMMU_CMD_TLBI_NH_ALL =3D 0x10, - SMMU_CMD_TLBI_NH_ASID, - SMMU_CMD_TLBI_NH_VA, - SMMU_CMD_TLBI_NH_VAA, - SMMU_CMD_TLBI_EL3_ALL =3D 0x18, - SMMU_CMD_TLBI_EL3_VA =3D 0x1a, - SMMU_CMD_TLBI_EL2_ALL =3D 0x20, - SMMU_CMD_TLBI_EL2_ASID, - SMMU_CMD_TLBI_EL2_VA, - SMMU_CMD_TLBI_EL2_VAA, - SMMU_CMD_TLBI_S12_VMALL =3D 0x28, - SMMU_CMD_TLBI_S2_IPA =3D 0x2a, - SMMU_CMD_TLBI_NSNH_ALL =3D 0x30, - SMMU_CMD_ATC_INV =3D 0x40, - SMMU_CMD_PRI_RESP, - SMMU_CMD_RESUME =3D 0x44, - SMMU_CMD_STALL_TERM, - SMMU_CMD_SYNC, -} SMMUCommandType; - static const char *cmd_stringify[] =3D { [SMMU_CMD_PREFETCH_CONFIG] =3D "SMMU_CMD_PREFETCH_CONFIG", [SMMU_CMD_PREFETCH_ADDR] =3D "SMMU_CMD_PREFETCH_ADDR", @@ -525,64 +354,6 @@ typedef struct SMMUEventInfo { =20 void smmuv3_record_event(SMMUv3State *s, SMMUEventInfo *event); =20 -/* Configuration Data */ - -/* STE Level 1 Descriptor */ -typedef struct STEDesc { - uint32_t word[2]; -} STEDesc; - -/* CD Level 1 Descriptor */ -typedef struct CDDesc { - uint32_t word[2]; -} CDDesc; - -/* Stream Table Entry(STE) */ -typedef struct STE { - uint32_t word[16]; -} STE; - -/* Context Descriptor(CD) */ -typedef struct CD { - uint32_t word[16]; -} CD; - -/* STE fields */ - -#define STE_VALID(x) extract32((x)->word[0], 0, 1) - -#define STE_CONFIG(x) extract32((x)->word[0], 1, 3) -#define STE_CFG_S1_ENABLED(config) (config & 0x1) -#define STE_CFG_S2_ENABLED(config) (config & 0x2) -#define STE_CFG_ABORT(config) (!(config & 0x4)) -#define STE_CFG_BYPASS(config) (config =3D=3D 0x4) - -#define STE_S1FMT(x) extract32((x)->word[0], 4 , 2) -#define STE_S1CDMAX(x) extract32((x)->word[1], 27, 5) -#define STE_S1STALLD(x) extract32((x)->word[2], 27, 1) -#define STE_EATS(x) extract32((x)->word[2], 28, 2) -#define STE_STRW(x) extract32((x)->word[2], 30, 2) -#define STE_S2VMID(x) extract32((x)->word[4], 0 , 16) -#define STE_S2T0SZ(x) extract32((x)->word[5], 0 , 6) -#define STE_S2SL0(x) extract32((x)->word[5], 6 , 2) -#define STE_S2TG(x) extract32((x)->word[5], 14, 2) -#define STE_S2PS(x) extract32((x)->word[5], 16, 3) -#define STE_S2AA64(x) extract32((x)->word[5], 19, 1) -#define STE_S2ENDI(x) extract32((x)->word[5], 20, 1) -#define STE_S2AFFD(x) extract32((x)->word[5], 21, 1) -#define STE_S2HD(x) extract32((x)->word[5], 23, 1) -#define STE_S2HA(x) extract32((x)->word[5], 24, 1) -#define STE_S2S(x) extract32((x)->word[5], 25, 1) -#define STE_S2R(x) extract32((x)->word[5], 26, 1) - -#define STE_CTXPTR(x) \ - ((extract64((x)->word[1], 0, 16) << 32) | \ - ((x)->word[0] & 0xffffffc0)) - -#define STE_S2TTB(x) \ - ((extract64((x)->word[7], 0, 16) << 32) | \ - ((x)->word[6] & 0xfffffff0)) - static inline int oas2bits(int oas_field) { switch (oas_field) { @@ -603,30 +374,6 @@ static inline int oas2bits(int oas_field) g_assert_not_reached(); } =20 -/* CD fields */ - -#define CD_VALID(x) extract32((x)->word[0], 31, 1) -#define CD_ASID(x) extract32((x)->word[1], 16, 16) -#define CD_TTB(x, sel) \ - ((extract64((x)->word[(sel) * 2 + 3], 0, 19) << 32) | \ - ((x)->word[(sel) * 2 + 2] & ~0xfULL)) - -#define CD_HAD(x, sel) extract32((x)->word[(sel) * 2 + 2], 1, 1) - -#define CD_TSZ(x, sel) extract32((x)->word[0], (16 * (sel)) + 0, 6) -#define CD_TG(x, sel) extract32((x)->word[0], (16 * (sel)) + 6, 2) -#define CD_EPD(x, sel) extract32((x)->word[0], (16 * (sel)) + 14, 1) -#define CD_ENDI(x) extract32((x)->word[0], 15, 1) -#define CD_IPS(x) extract32((x)->word[1], 0 , 3) -#define CD_AFFD(x) extract32((x)->word[1], 3 , 1) -#define CD_TBI(x) extract32((x)->word[1], 6 , 2) -#define CD_HD(x) extract32((x)->word[1], 10 , 1) -#define CD_HA(x) extract32((x)->word[1], 11 , 1) -#define CD_S(x) extract32((x)->word[1], 12, 1) -#define CD_R(x) extract32((x)->word[1], 13, 1) -#define CD_A(x) extract32((x)->word[1], 14, 1) -#define CD_AARCH64(x) extract32((x)->word[1], 9 , 1) - /** * tg2granule - Decodes the CD translation granule size field according * to the ttbr in use diff --git a/include/hw/arm/smmuv3-common.h b/include/hw/arm/smmuv3-common.h new file mode 100644 index 00000000000..9da817f41ae --- /dev/null +++ b/include/hw/arm/smmuv3-common.h @@ -0,0 +1,268 @@ +/* + * ARM SMMUv3 support - Common API + * + * Copyright (C) 2014-2016 Broadcom Corporation + * Copyright (c) 2017 Red Hat, Inc. + * Written by Prem Mallappa, Eric Auger + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef HW_ARM_SMMUV3_COMMON_H +#define HW_ARM_SMMUV3_COMMON_H + +/* Configuration Data */ + +/* STE Level 1 Descriptor */ +typedef struct STEDesc { + uint32_t word[2]; +} STEDesc; + +/* CD Level 1 Descriptor */ +typedef struct CDDesc { + uint32_t word[2]; +} CDDesc; + +/* Stream Table Entry(STE) */ +typedef struct STE { + uint32_t word[16]; +} STE; + +/* Context Descriptor(CD) */ +typedef struct CD { + uint32_t word[16]; +} CD; + +/* STE fields */ + +#define STE_VALID(x) extract32((x)->word[0], 0, 1) + +#define STE_CONFIG(x) extract32((x)->word[0], 1, 3) +#define STE_CFG_S1_ENABLED(config) (config & 0x1) +#define STE_CFG_S2_ENABLED(config) (config & 0x2) +#define STE_CFG_ABORT(config) (!(config & 0x4)) +#define STE_CFG_BYPASS(config) (config =3D=3D 0x4) + +#define STE_S1FMT(x) extract32((x)->word[0], 4 , 2) +#define STE_S1CDMAX(x) extract32((x)->word[1], 27, 5) +#define STE_S1STALLD(x) extract32((x)->word[2], 27, 1) +#define STE_EATS(x) extract32((x)->word[2], 28, 2) +#define STE_STRW(x) extract32((x)->word[2], 30, 2) +#define STE_S2VMID(x) extract32((x)->word[4], 0 , 16) +#define STE_S2T0SZ(x) extract32((x)->word[5], 0 , 6) +#define STE_S2SL0(x) extract32((x)->word[5], 6 , 2) +#define STE_S2TG(x) extract32((x)->word[5], 14, 2) +#define STE_S2PS(x) extract32((x)->word[5], 16, 3) +#define STE_S2AA64(x) extract32((x)->word[5], 19, 1) +#define STE_S2ENDI(x) extract32((x)->word[5], 20, 1) +#define STE_S2AFFD(x) extract32((x)->word[5], 21, 1) +#define STE_S2HD(x) extract32((x)->word[5], 23, 1) +#define STE_S2HA(x) extract32((x)->word[5], 24, 1) +#define STE_S2S(x) extract32((x)->word[5], 25, 1) +#define STE_S2R(x) extract32((x)->word[5], 26, 1) + +#define STE_CTXPTR(x) \ + ((extract64((x)->word[1], 0, 16) << 32) | \ + ((x)->word[0] & 0xffffffc0)) + +#define STE_S2TTB(x) \ + ((extract64((x)->word[7], 0, 16) << 32) | \ + ((x)->word[6] & 0xfffffff0)) + +/* CD fields */ + +#define CD_VALID(x) extract32((x)->word[0], 31, 1) +#define CD_ASID(x) extract32((x)->word[1], 16, 16) +#define CD_TTB(x, sel) \ + ((extract64((x)->word[(sel) * 2 + 3], 0, 19) << 32) | \ + ((x)->word[(sel) * 2 + 2] & ~0xfULL)) + +#define CD_HAD(x, sel) extract32((x)->word[(sel) * 2 + 2], 1, 1) + +#define CD_TSZ(x, sel) extract32((x)->word[0], (16 * (sel)) + 0, 6) +#define CD_TG(x, sel) extract32((x)->word[0], (16 * (sel)) + 6, 2) +#define CD_EPD(x, sel) extract32((x)->word[0], (16 * (sel)) + 14, 1) +#define CD_ENDI(x) extract32((x)->word[0], 15, 1) +#define CD_IPS(x) extract32((x)->word[1], 0 , 3) +#define CD_AFFD(x) extract32((x)->word[1], 3 , 1) +#define CD_TBI(x) extract32((x)->word[1], 6 , 2) +#define CD_HD(x) extract32((x)->word[1], 10 , 1) +#define CD_HA(x) extract32((x)->word[1], 11 , 1) +#define CD_S(x) extract32((x)->word[1], 12, 1) +#define CD_R(x) extract32((x)->word[1], 13, 1) +#define CD_A(x) extract32((x)->word[1], 14, 1) +#define CD_AARCH64(x) extract32((x)->word[1], 9 , 1) + +/* MMIO Registers */ + +REG32(IDR0, 0x0) + FIELD(IDR0, S2P, 0 , 1) + FIELD(IDR0, S1P, 1 , 1) + FIELD(IDR0, TTF, 2 , 2) + FIELD(IDR0, COHACC, 4 , 1) + FIELD(IDR0, BTM, 5 , 1) + FIELD(IDR0, HTTU, 6 , 2) + FIELD(IDR0, DORMHINT, 8 , 1) + FIELD(IDR0, HYP, 9 , 1) + FIELD(IDR0, ATS, 10, 1) + FIELD(IDR0, NS1ATS, 11, 1) + FIELD(IDR0, ASID16, 12, 1) + FIELD(IDR0, MSI, 13, 1) + FIELD(IDR0, SEV, 14, 1) + FIELD(IDR0, ATOS, 15, 1) + FIELD(IDR0, PRI, 16, 1) + FIELD(IDR0, VMW, 17, 1) + FIELD(IDR0, VMID16, 18, 1) + FIELD(IDR0, CD2L, 19, 1) + FIELD(IDR0, VATOS, 20, 1) + FIELD(IDR0, TTENDIAN, 21, 2) + FIELD(IDR0, ATSRECERR, 23, 1) + FIELD(IDR0, STALL_MODEL, 24, 2) + FIELD(IDR0, TERM_MODEL, 26, 1) + FIELD(IDR0, STLEVEL, 27, 2) + FIELD(IDR0, RME_IMPL, 30, 1) + +REG32(IDR1, 0x4) + FIELD(IDR1, SIDSIZE, 0 , 6) + FIELD(IDR1, SSIDSIZE, 6 , 5) + FIELD(IDR1, PRIQS, 11, 5) + FIELD(IDR1, EVENTQS, 16, 5) + FIELD(IDR1, CMDQS, 21, 5) + FIELD(IDR1, ATTR_PERMS_OVR, 26, 1) + FIELD(IDR1, ATTR_TYPES_OVR, 27, 1) + FIELD(IDR1, REL, 28, 1) + FIELD(IDR1, QUEUES_PRESET, 29, 1) + FIELD(IDR1, TABLES_PRESET, 30, 1) + FIELD(IDR1, ECMDQ, 31, 1) + +#define SMMU_IDR1_SIDSIZE 16 +#define SMMU_CMDQS 19 +#define SMMU_EVENTQS 19 + +REG32(IDR2, 0x8) + FIELD(IDR2, BA_VATOS, 0, 10) + +REG32(IDR3, 0xc) + FIELD(IDR3, HAD, 2, 1); + FIELD(IDR3, PBHA, 3, 1); + FIELD(IDR3, XNX, 4, 1); + FIELD(IDR3, PPS, 5, 1); + FIELD(IDR3, MPAM, 7, 1); + FIELD(IDR3, FWB, 8, 1); + FIELD(IDR3, STT, 9, 1); + FIELD(IDR3, RIL, 10, 1); + FIELD(IDR3, BBML, 11, 2); + FIELD(IDR3, E0PD, 13, 1); + FIELD(IDR3, PTWNNC, 14, 1); + FIELD(IDR3, DPT, 15, 1); + +REG32(IDR4, 0x10) + +REG32(IDR5, 0x14) + FIELD(IDR5, OAS, 0, 3); + FIELD(IDR5, GRAN4K, 4, 1); + FIELD(IDR5, GRAN16K, 5, 1); + FIELD(IDR5, GRAN64K, 6, 1); + FIELD(IDR5, VAX, 10, 2); + FIELD(IDR5, STALL_MAX, 16, 16); + +#define SMMU_IDR5_OAS 4 + +REG32(IIDR, 0x18) +REG32(AIDR, 0x1c) +REG32(CR0, 0x20) + FIELD(CR0, SMMU_ENABLE, 0, 1) + FIELD(CR0, EVENTQEN, 2, 1) + FIELD(CR0, CMDQEN, 3, 1) + +#define SMMU_CR0_RESERVED 0xFFFFFC20 + +REG32(CR0ACK, 0x24) +REG32(CR1, 0x28) +REG32(CR2, 0x2c) +REG32(STATUSR, 0x40) +REG32(GBPA, 0x44) + FIELD(GBPA, ABORT, 20, 1) + FIELD(GBPA, UPDATE, 31, 1) + +/* Use incoming. */ +#define SMMU_GBPA_RESET_VAL 0x1000 + +REG32(IRQ_CTRL, 0x50) + FIELD(IRQ_CTRL, GERROR_IRQEN, 0, 1) + FIELD(IRQ_CTRL, PRI_IRQEN, 1, 1) + FIELD(IRQ_CTRL, EVENTQ_IRQEN, 2, 1) + +REG32(IRQ_CTRL_ACK, 0x54) +REG32(GERROR, 0x60) + FIELD(GERROR, CMDQ_ERR, 0, 1) + FIELD(GERROR, EVENTQ_ABT_ERR, 2, 1) + FIELD(GERROR, PRIQ_ABT_ERR, 3, 1) + FIELD(GERROR, MSI_CMDQ_ABT_ERR, 4, 1) + FIELD(GERROR, MSI_EVENTQ_ABT_ERR, 5, 1) + FIELD(GERROR, MSI_PRIQ_ABT_ERR, 6, 1) + FIELD(GERROR, MSI_GERROR_ABT_ERR, 7, 1) + FIELD(GERROR, MSI_SFM_ERR, 8, 1) + +REG32(GERRORN, 0x64) + +#define A_GERROR_IRQ_CFG0 0x68 /* 64b */ +REG32(GERROR_IRQ_CFG1, 0x70) +REG32(GERROR_IRQ_CFG2, 0x74) + +#define A_STRTAB_BASE 0x80 /* 64b */ + +#define SMMU_BASE_ADDR_MASK 0xfffffffffffc0 + +REG32(STRTAB_BASE_CFG, 0x88) + FIELD(STRTAB_BASE_CFG, FMT, 16, 2) + FIELD(STRTAB_BASE_CFG, SPLIT, 6 , 5) + FIELD(STRTAB_BASE_CFG, LOG2SIZE, 0 , 6) + +#define A_CMDQ_BASE 0x90 /* 64b */ +REG32(CMDQ_PROD, 0x98) +REG32(CMDQ_CONS, 0x9c) + FIELD(CMDQ_CONS, ERR, 24, 7) + +#define A_EVENTQ_BASE 0xa0 /* 64b */ +REG32(EVENTQ_PROD, 0xa8) +REG32(EVENTQ_CONS, 0xac) + +#define A_EVENTQ_IRQ_CFG0 0xb0 /* 64b */ +REG32(EVENTQ_IRQ_CFG1, 0xb8) +REG32(EVENTQ_IRQ_CFG2, 0xbc) + +#define A_IDREGS 0xfd0 + +/* Commands */ + +typedef enum SMMUCommandType { + SMMU_CMD_NONE =3D 0x00, + SMMU_CMD_PREFETCH_CONFIG , + SMMU_CMD_PREFETCH_ADDR, + SMMU_CMD_CFGI_STE, + SMMU_CMD_CFGI_STE_RANGE, + SMMU_CMD_CFGI_CD, + SMMU_CMD_CFGI_CD_ALL, + SMMU_CMD_CFGI_ALL, + SMMU_CMD_TLBI_NH_ALL =3D 0x10, + SMMU_CMD_TLBI_NH_ASID, + SMMU_CMD_TLBI_NH_VA, + SMMU_CMD_TLBI_NH_VAA, + SMMU_CMD_TLBI_EL3_ALL =3D 0x18, + SMMU_CMD_TLBI_EL3_VA =3D 0x1a, + SMMU_CMD_TLBI_EL2_ALL =3D 0x20, + SMMU_CMD_TLBI_EL2_ASID, + SMMU_CMD_TLBI_EL2_VA, + SMMU_CMD_TLBI_EL2_VAA, + SMMU_CMD_TLBI_S12_VMALL =3D 0x28, + SMMU_CMD_TLBI_S2_IPA =3D 0x2a, + SMMU_CMD_TLBI_NSNH_ALL =3D 0x30, + SMMU_CMD_ATC_INV =3D 0x40, + SMMU_CMD_PRI_RESP, + SMMU_CMD_RESUME =3D 0x44, + SMMU_CMD_STALL_TERM, + SMMU_CMD_SYNC, +} SMMUCommandType; + +#endif /* HW_ARM_SMMUV3_COMMON_H */ --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934424; cv=none; d=zohomail.com; s=zohoarc; b=Za3cPgI8nhrQBIxmWLMOq+7D3n5fgWh2GFDVTXNiSyPWk0eB8UJ39TCoz2t8fYdidEVOoZGoYwoH0BJtlkatZqXy1SaB4ybfxZ/qbKrD9kyEb0Fn4bLzlw8ZtPvRtq86lN8WZyVaYoHbxhQGBFGOAMjQ3IGDaWBzOY0hOveIXqQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934424; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=lqWKXNkS+lhK9R8ZxTdq4h0qwdmbqs5rj8DgsXUvGtM=; b=ODDydA+2Nv2qHIHwqF/OwvMe93Ch1UfnS/MEEsc5+zqSsotqJm6yFi1h7ueDg5RuJ0Kk1IYwY+Fu/DGRLqNknD5kZn1xwDpG672kjzQUFykuF2reJpbluEce0wL1pw2R+kqM/fSh1a5x1Et4sPGCoJbhYCNY36jpSpcf1mVsBRM= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934424595260.75721529654027; Tue, 20 Jan 2026 10:40:24 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGdg-0008AZ-VP; Tue, 20 Jan 2026 13:39:41 -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 ) id 1viGdR-0007md-5N for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:39:26 -0500 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 1viGdP-0005w4-2J for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:39:24 -0500 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-47edd9024b1so37173965e9.3 for ; Tue, 20 Jan 2026 10:39:22 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47f4289b789sm317442675e9.1.2026.01.20.10.39.18 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:39:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934360; x=1769539160; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=lqWKXNkS+lhK9R8ZxTdq4h0qwdmbqs5rj8DgsXUvGtM=; b=gjmSbzg8a5NYPL+iP2dy1GtSbKjmDqu0gzr4KydXvQYYBG/XF68NJZAh36s/XEQXMK /fZUDRKLzGEAQ5x9+taJnilmYNTsaxueWR55FwTtV53o+lk9EG7zEt5nQPs/cNyEPwiD 9US5aZ02sRDb6uZSKGVwJCD0pYso/HlZ0QJUdEfpeFoEAjGs+8+eWCG+erCTiwId8liw UP3kkUneL720DgfY8oG+YtJOnrPblULT1eguzXf2k8rTnf/UKIaZjMXA5YywJpv5xk16 r7ieeUxmhrvoR4bYK8eqpImHR590agdM6r4ivo1QvRbhbgWg6V8+g6iktPKzuHGGNbT8 CExQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934360; x=1769539160; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=lqWKXNkS+lhK9R8ZxTdq4h0qwdmbqs5rj8DgsXUvGtM=; b=vbvR/cTDT902uhXfRqsfvEplq4U+mY3hCxDy2b7jyoTDTC8QpIIU4r4HOzlwt9msRC ZmSFZQGP5ScPAcegwK8uLi+Va/A41FfNWIkdBe0Xn+dRz+7Puf3NTB1fnCZyRAjb1Vde 44gr6UpaSldPwRBDBo1rfKbyklewzi+qDvfO3lUNuQtg5CEByTdSu6dZKQQy5h9DP+K7 9cI29rjEN0bHR/icZ1pu0pJPzXKtJU0GItUxbZhNbuoJt9bys6L4q/+HkxQ9D4hIbvDD XLPHLv+8QukxOXL6Nn4lKI/D1TMv2um/kXyL677IjTJRVOUm+10FmoufzXggbUNw567U FA2w== X-Gm-Message-State: AOJu0Ywi9sJPEELjZ+kMPnJSmhvz/Rd+WtvIfoi9isAOyFi4dR+eVsYB TBOnUDsUxqjUi7dISGTMlrTdv1/0ev2fh206CuvAi7hJWpn+7f2QNJs5IkofR0362HzlEeHZ45T Ssja1EBY= X-Gm-Gg: AY/fxX57AuQE54fmEnGTGlW7n3ezxdH55Uck6FmwDAG8E4b70vCdg3WDRZR2uy+1rjP /AnUOXjt+S5WcUBY+TGk5pAGzACniLbXTHRCgyCGV3wUNGiuQBCnrK4PJBketlM27CdypFaVvJP qeQq4Bt0vbdElURG77xNpuKrgjEN74cMvPJPufL/TnEcUJHhPTSkq+rC2V/pIt1y8InWt7mTgBd X4AMDVV7Ig1oPcEJkcl8iXP5KXYY9aKKXJpTJuDMgcyzPlI8rLNO/kYGtOQVYho0EHWtjGUSG3D OH39xwWTfmoOJb6zLmvW8ezb2NU8pV4XvUX3Ff8AINj1XNZep04tf5Rqvo03NPWkyBv/ajkuv3a PpfmZNxpSH5cxnzbaKwhF/leXLiUy5EA/gg1pwuE8YMCX+5qhrlNtRSM0/qTqq13UsTGm5mkDNi TOBzCWR0/0gj55wXJcV68h4PBtVeRSWJhTZXiV0yyiSGMZltq8i7iMQcNLveIG X-Received: by 2002:a05:600c:35c2:b0:46e:4586:57e4 with SMTP id 5b1f17b1804b1-4801eb09296mr215599455e9.24.1768934359979; Tue, 20 Jan 2026 10:39:19 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 02/29] hw/arm/smmuv3-common: Define STE/CD fields via registerfields Date: Tue, 20 Jan 2026 19:38:35 +0100 Message-ID: <20260120183902.73845-3-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::330; envelope-from=philmd@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=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: 1768934428301154100 From: Tao Tang Switch STE/CD bitfield definitions and accessors to the 'registerfields.h' REG/FIELD API. Signed-off-by: Tao Tang Reviewed-by: Pierrick Bouvier Reviewed-by: Eric Auger Message-ID: <20260119161112.3841386-3-tangtao1634@phytium.com.cn> [PMD: Updated STE_1::CTXPTR_HI and STE_7::S2TTB_HI length 16 -> 24] Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/arm/smmuv3-common.h | 167 +++++++++++++++++++++++---------- 1 file changed, 119 insertions(+), 48 deletions(-) diff --git a/include/hw/arm/smmuv3-common.h b/include/hw/arm/smmuv3-common.h index 9da817f41ae..f0e1dd85715 100644 --- a/include/hw/arm/smmuv3-common.h +++ b/include/hw/arm/smmuv3-common.h @@ -11,6 +11,8 @@ #ifndef HW_ARM_SMMUV3_COMMON_H #define HW_ARM_SMMUV3_COMMON_H =20 +#include "hw/core/registerfields.h" + /* Configuration Data */ =20 /* STE Level 1 Descriptor */ @@ -35,63 +37,132 @@ typedef struct CD { =20 /* STE fields */ =20 -#define STE_VALID(x) extract32((x)->word[0], 0, 1) +REG32(STE_0, 0) + FIELD(STE_0, VALID, 0, 1) + FIELD(STE_0, CONFIG, 1, 3) + FIELD(STE_0, S1FMT, 4, 2) + FIELD(STE_0, CTXPTR_LO, 6, 26) +REG32(STE_1, 4) + FIELD(STE_1, CTXPTR_HI, 0, 24) + FIELD(STE_1, S1CDMAX, 27, 5) +REG32(STE_2, 8) + FIELD(STE_2, S1STALLD, 27, 1) + FIELD(STE_2, EATS, 28, 2) + FIELD(STE_2, STRW, 30, 2) +REG32(STE_4, 16) + FIELD(STE_4, S2VMID, 0, 16) +REG32(STE_5, 20) + FIELD(STE_5, S2T0SZ, 0, 6) + FIELD(STE_5, S2SL0, 6, 2) + FIELD(STE_5, S2TG, 14, 2) + FIELD(STE_5, S2PS, 16, 3) + FIELD(STE_5, S2AA64, 19, 1) + FIELD(STE_5, S2ENDI, 20, 1) + FIELD(STE_5, S2AFFD, 21, 1) + FIELD(STE_5, S2HD, 23, 1) + FIELD(STE_5, S2HA, 24, 1) + FIELD(STE_5, S2S, 25, 1) + FIELD(STE_5, S2R, 26, 1) +REG32(STE_6, 24) + FIELD(STE_6, S2TTB_LO, 4, 28) +REG32(STE_7, 28) + FIELD(STE_7, S2TTB_HI, 0, 20) + +/* Get STE fields */ +#define STE_VALID(x) FIELD_EX32((x)->word[0], STE_0, VALID) +#define STE_CONFIG(x) FIELD_EX32((x)->word[0], STE_0, CONFIG) +#define STE_S1FMT(x) FIELD_EX32((x)->word[0], STE_0, S1FMT) +#define STE_CTXPTR(x) \ + (((uint64_t)FIELD_EX32((x)->word[0], STE_0, CTXPTR_LO) << 6) | \ + ((uint64_t)FIELD_EX32((x)->word[1], STE_1, CTXPTR_HI) << 32)) +#define STE_S1CDMAX(x) FIELD_EX32((x)->word[1], STE_1, S1CDMAX) +#define STE_S1STALLD(x) FIELD_EX32((x)->word[2], STE_2, S1STALLD) +#define STE_EATS(x) FIELD_EX32((x)->word[2], STE_2, EATS) +#define STE_STRW(x) FIELD_EX32((x)->word[2], STE_2, STRW) +#define STE_S2VMID(x) FIELD_EX32((x)->word[4], STE_4, S2VMID) +#define STE_S2T0SZ(x) FIELD_EX32((x)->word[5], STE_5, S2T0SZ) +#define STE_S2SL0(x) FIELD_EX32((x)->word[5], STE_5, S2SL0) +#define STE_S2TG(x) FIELD_EX32((x)->word[5], STE_5, S2TG) +#define STE_S2PS(x) FIELD_EX32((x)->word[5], STE_5, S2PS) +#define STE_S2AA64(x) FIELD_EX32((x)->word[5], STE_5, S2AA64) +#define STE_S2ENDI(x) FIELD_EX32((x)->word[5], STE_5, S2ENDI) +#define STE_S2AFFD(x) FIELD_EX32((x)->word[5], STE_5, S2AFFD) +#define STE_S2HD(x) FIELD_EX32((x)->word[5], STE_5, S2HD) +#define STE_S2HA(x) FIELD_EX32((x)->word[5], STE_5, S2HA) +#define STE_S2S(x) FIELD_EX32((x)->word[5], STE_5, S2S) +#define STE_S2R(x) FIELD_EX32((x)->word[5], STE_5, S2R) +#define STE_S2TTB(x) \ + (((uint64_t)FIELD_EX32((x)->word[6], STE_6, S2TTB_LO) << 4) | \ + ((uint64_t)FIELD_EX32((x)->word[7], STE_7, S2TTB_HI) << 32)) =20 -#define STE_CONFIG(x) extract32((x)->word[0], 1, 3) #define STE_CFG_S1_ENABLED(config) (config & 0x1) #define STE_CFG_S2_ENABLED(config) (config & 0x2) #define STE_CFG_ABORT(config) (!(config & 0x4)) #define STE_CFG_BYPASS(config) (config =3D=3D 0x4) =20 -#define STE_S1FMT(x) extract32((x)->word[0], 4 , 2) -#define STE_S1CDMAX(x) extract32((x)->word[1], 27, 5) -#define STE_S1STALLD(x) extract32((x)->word[2], 27, 1) -#define STE_EATS(x) extract32((x)->word[2], 28, 2) -#define STE_STRW(x) extract32((x)->word[2], 30, 2) -#define STE_S2VMID(x) extract32((x)->word[4], 0 , 16) -#define STE_S2T0SZ(x) extract32((x)->word[5], 0 , 6) -#define STE_S2SL0(x) extract32((x)->word[5], 6 , 2) -#define STE_S2TG(x) extract32((x)->word[5], 14, 2) -#define STE_S2PS(x) extract32((x)->word[5], 16, 3) -#define STE_S2AA64(x) extract32((x)->word[5], 19, 1) -#define STE_S2ENDI(x) extract32((x)->word[5], 20, 1) -#define STE_S2AFFD(x) extract32((x)->word[5], 21, 1) -#define STE_S2HD(x) extract32((x)->word[5], 23, 1) -#define STE_S2HA(x) extract32((x)->word[5], 24, 1) -#define STE_S2S(x) extract32((x)->word[5], 25, 1) -#define STE_S2R(x) extract32((x)->word[5], 26, 1) - -#define STE_CTXPTR(x) \ - ((extract64((x)->word[1], 0, 16) << 32) | \ - ((x)->word[0] & 0xffffffc0)) - -#define STE_S2TTB(x) \ - ((extract64((x)->word[7], 0, 16) << 32) | \ - ((x)->word[6] & 0xfffffff0)) - /* CD fields */ =20 -#define CD_VALID(x) extract32((x)->word[0], 31, 1) -#define CD_ASID(x) extract32((x)->word[1], 16, 16) -#define CD_TTB(x, sel) \ - ((extract64((x)->word[(sel) * 2 + 3], 0, 19) << 32) | \ - ((x)->word[(sel) * 2 + 2] & ~0xfULL)) +REG32(CD_0, 0) + FIELD(CD_0, TSZ0, 0, 6) + FIELD(CD_0, TG0, 6, 2) + FIELD(CD_0, EPD0, 14, 1) + FIELD(CD_0, ENDI, 15, 1) + FIELD(CD_0, TSZ1, 16, 6) + FIELD(CD_0, TG1, 22, 2) + FIELD(CD_0, EPD1, 30, 1) + FIELD(CD_0, VALID, 31, 1) +REG32(CD_1, 4) + FIELD(CD_1, IPS, 0, 3) + FIELD(CD_1, AFFD, 3, 1) + FIELD(CD_1, TBI, 6, 2) + FIELD(CD_1, AARCH64, 9, 1) + FIELD(CD_1, HD, 10, 1) + FIELD(CD_1, HA, 11, 1) + FIELD(CD_1, S, 12, 1) + FIELD(CD_1, R, 13, 1) + FIELD(CD_1, A, 14, 1) + FIELD(CD_1, ASID, 16, 16) +REG32(CD_2, 8) + FIELD(CD_2, HAD0, 1, 1) + FIELD(CD_2, TTB0_LO, 4, 28) +REG32(CD_3, 12) + FIELD(CD_3, TTB0_HI, 0, 20) +REG32(CD_4, 16) + FIELD(CD_4, HAD1, 1, 1) + FIELD(CD_4, TTB1_LO, 4, 28) +REG32(CD_5, 20) + FIELD(CD_5, TTB1_HI, 0, 20) =20 -#define CD_HAD(x, sel) extract32((x)->word[(sel) * 2 + 2], 1, 1) - -#define CD_TSZ(x, sel) extract32((x)->word[0], (16 * (sel)) + 0, 6) -#define CD_TG(x, sel) extract32((x)->word[0], (16 * (sel)) + 6, 2) -#define CD_EPD(x, sel) extract32((x)->word[0], (16 * (sel)) + 14, 1) -#define CD_ENDI(x) extract32((x)->word[0], 15, 1) -#define CD_IPS(x) extract32((x)->word[1], 0 , 3) -#define CD_AFFD(x) extract32((x)->word[1], 3 , 1) -#define CD_TBI(x) extract32((x)->word[1], 6 , 2) -#define CD_HD(x) extract32((x)->word[1], 10 , 1) -#define CD_HA(x) extract32((x)->word[1], 11 , 1) -#define CD_S(x) extract32((x)->word[1], 12, 1) -#define CD_R(x) extract32((x)->word[1], 13, 1) -#define CD_A(x) extract32((x)->word[1], 14, 1) -#define CD_AARCH64(x) extract32((x)->word[1], 9 , 1) +/* Get CD fields */ +#define CD_TSZ(x, sel) ((sel) ? \ + FIELD_EX32((x)->word[0], CD_0, TSZ1) : \ + FIELD_EX32((x)->word[0], CD_0, TSZ0)) +#define CD_TG(x, sel) ((sel) ? \ + FIELD_EX32((x)->word[0], CD_0, TG1) : \ + FIELD_EX32((x)->word[0], CD_0, TG0)) +#define CD_EPD(x, sel) ((sel) ? \ + FIELD_EX32((x)->word[0], CD_0, EPD1) : \ + FIELD_EX32((x)->word[0], CD_0, EPD0)) +#define CD_ENDI(x) FIELD_EX32((x)->word[0], CD_0, ENDI) +#define CD_VALID(x) FIELD_EX32((x)->word[0], CD_0, VALID) +#define CD_IPS(x) FIELD_EX32((x)->word[1], CD_1, IPS) +#define CD_AFFD(x) FIELD_EX32((x)->word[1], CD_1, AFFD) +#define CD_TBI(x) FIELD_EX32((x)->word[1], CD_1, TBI) +#define CD_AARCH64(x) FIELD_EX32((x)->word[1], CD_1, AARCH64) +#define CD_HD(x) FIELD_EX32((x)->word[1], CD_1, HD) +#define CD_HA(x) FIELD_EX32((x)->word[1], CD_1, HA) +#define CD_S(x) FIELD_EX32((x)->word[1], CD_1, S) +#define CD_R(x) FIELD_EX32((x)->word[1], CD_1, R) +#define CD_A(x) FIELD_EX32((x)->word[1], CD_1, A) +#define CD_ASID(x) FIELD_EX32((x)->word[1], CD_1, ASID) +#define CD_HAD(x, sel) ((sel) ? \ + FIELD_EX32((x)->word[4], CD_4, HAD1) : \ + FIELD_EX32((x)->word[2], CD_2, HAD0)) +#define CD_TTB(x, sel) \ + ((sel) ? (((uint64_t)FIELD_EX32((x)->word[5], CD_5, TTB1_HI) << 32) | \ + ((uint64_t)FIELD_EX32((x)->word[4], CD_4, TTB1_LO) << 4)) : \ + (((uint64_t)FIELD_EX32((x)->word[3], CD_3, TTB0_HI) << 32) | \ + ((uint64_t)FIELD_EX32((x)->word[2], CD_2, TTB0_LO) << 4))) =20 /* MMIO Registers */ =20 --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934420; cv=none; d=zohomail.com; s=zohoarc; b=ELppYGGKBwU9oi/E00rIgf6k6WGKtpx7w+NTi116etE5sF7kzmjP35NfUaPrtbkK8yxoWnbFhF55c4p64wcWsn45PeVRFL2JvdZXKIYTaDSa/fzh1+TsFiYe8ZwaJTEymX2na4+o7iTlVYGGoVQUk896RtJqY7W1itgrFtVzPJg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934420; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=MLnOJXLSgGcGwZZNvPsButwVtGAdAe/N7an6/c2DGGo=; b=HPjSxxSWzpKq/T3RK1RjLQF5IzI+bRRK5Ha7b0jS/mwbbX78HQCM/uI5k9fg2UUlAONdtXdgN7YUrWbnx39Y2svEdMd/RDmqDrJvUZf/6QvgNeSyIptBVYaoStK8Pip8z4ISczvZMpsf8GUFIWkCSp9HTFdFji0wDgkyE7xMD8c= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934420771165.15881423913095; Tue, 20 Jan 2026 10:40:20 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGdh-0008FB-Pt; Tue, 20 Jan 2026 13:39:41 -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 ) id 1viGdZ-0007xU-3e for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:39:33 -0500 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 1viGdV-0005xE-Nl for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:39:32 -0500 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-47edd6111b4so52422535e9.1 for ; Tue, 20 Jan 2026 10:39:29 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47f4289b789sm317446095e9.1.2026.01.20.10.39.25 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:39:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934368; x=1769539168; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=MLnOJXLSgGcGwZZNvPsButwVtGAdAe/N7an6/c2DGGo=; b=nFkMYOPqs3PBH+b2rLZ0pZVdLoIycb5z5znVIYcm7fN26/klZiJxWbcmixOWzj+b1a QhMQY4lLxNy0epApA+/gCtSLOUn9pfXOEZ7kVgTp47OtnLQBfPXB7PRFoVnE880paF2U aNu2+plggcy5iYuI9LouE/v/JarXb3EDTDIz0CVKJHzE6pOXSm4/zcUQehjN1MJXO0Ri l7bADDprxuDvpqX9Y+xyQHN02z8rpj1m8lgipTQ/WzEZ8Z7ehHQuBQMzwZkzd+BshAoL tAKcxGJDbBa7pTvd5v7cOEB3tIyIf3rsX6P2Z5BcfDHCX6I8VCsJHokVIjVsckxO3dgP +TJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934368; x=1769539168; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=MLnOJXLSgGcGwZZNvPsButwVtGAdAe/N7an6/c2DGGo=; b=Hrag5OwXzRIVsaXy2tfJvov0YpZkz3zoRmJC6AfqVZW601hcIDyXgCSCNGglFVVcGL emXyq1sKdo0P9JuTlTdt74sgJf6y5Eukr5kubGaKyfEqKAcOPmHrFmfNW1wQ7sY2NRAK p0JtVPvCGCATUOICpe9ZnBt6/oUzMXgI4o15/ZaRFv45sc/zDk29vuogT0g2ZpiwrBZe MZdMKmw7/ext3N+TzgislALctKen7sD7TrI3fdeMeNBhLIHnPl/TsMYTet29g4EjRLt3 CxXsvVxZcCWUENlrXpTpSMnHHpFFVcZehG51/kZYeLQJnH6nEWGQYnMD6gzPAyIVNMX2 U4Bw== X-Gm-Message-State: AOJu0YyFtSyvUcFraz5Tu3FJUpr0Hvmf2M8rKbeJP3+fmmoeGOiEk8nu W1o8suF0mDokFbtmeozn5BVE5iRHT+l5je9lW5GZF+ksD3mGOJskK6BymL2vl3jvYdHmUSMmJQJ nfWutHB4= X-Gm-Gg: AY/fxX5z0W/V+NpIog4ZwJ1fZGjqs12bxH2cmtFCxbAyBjqVHJqNF3AhomOXK74HW5z TUB5+gMME+WNzrWKiW6Cu8r+iwIoelWtNE8OjI3qSX++qSgq/mM2OSvf8U9Nl5GSeYTJ7yDajiu QsI9w2qV++tjhiYwetsbC1h0mKuU0vsnkNMpcShTinoqzhnBvnbQKStFAzSzyHYx1dXVhdKkxzv 7tne2IeEGwtD6iNfCaApKDwr7OnSNcAq5fa+xPzcKRHqo4S87RfRvAIGSHFPRqCG90LGol20hWQ +yjJo9RdFJPiVm4oV/UL0M3klP4XDK7WNv5KudaXDZ/248HjNDyaiKkNMFggFAU6drmL4raSZDK 1BW6NRcB3VexsKO8NEoYn6G2OPxmu7FiyrJKPk4tbh6TeJr3y4OVmtEe34UV9+11FxEyhNP1ZB4 NBr7UfYzCeythMLKJ4m+AGdZ0uZoubkQxE7K6mL4quEdF10lVKsTpCkOg6CMmw X-Received: by 2002:a05:600c:8189:b0:477:c478:46d7 with SMTP id 5b1f17b1804b1-4801e333f07mr183254535e9.22.1768934367403; Tue, 20 Jan 2026 10:39:27 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 03/29] hw/misc: Introduce iommu-testdev for bare-metal IOMMU testing Date: Tue, 20 Jan 2026 19:38:36 +0100 Message-ID: <20260120183902.73845-4-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::32d; envelope-from=philmd@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: 1768934424355154100 From: Tao Tang Add a minimal PCI test device designed to exercise IOMMU translation (such as ARM SMMUv3) without requiring guest firmware or OS. The device provides MMIO registers to configure and trigger DMA operations with controllable attributes (security state, address space), enabling deterministic IOMMU testing. Key features: - Bare-metal IOMMU testing via simple MMIO interface - Configurable DMA attributes for security states and address spaces - Write-then-read verification pattern with automatic result checking The device performs a deterministic DMA test pattern: write a known value (0x12345678) to a configured GVA, read it back, and verify data integrity. Results are reported through a dedicated result register, eliminating the need for complex interrupt handling or driver infrastructure in tests. This is purely a test device and not intended for production use or machine realism. It complements existing test infrastructure like pci-testdev but focuses specifically on IOMMU translation path validation. Signed-off-by: Tao Tang Reviewed-by: Pierrick Bouvier Reviewed-by: Cl=C3=A9ment Mathieu--Drif Reviewed-by: Fabiano Rosas Message-ID: <20260119161112.3841386-4-tangtao1634@phytium.com.cn> [PMD: Add SPDX-License-Identifier: GPL-2.0-or-later tag] Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- MAINTAINERS | 7 + docs/specs/index.rst | 1 + docs/specs/iommu-testdev.rst | 140 ++++++++++++++ include/hw/misc/iommu-testdev.h | 87 +++++++++ hw/misc/iommu-testdev.c | 318 ++++++++++++++++++++++++++++++++ hw/misc/Kconfig | 5 + hw/misc/meson.build | 1 + hw/misc/trace-events | 10 + 8 files changed, 569 insertions(+) create mode 100644 docs/specs/iommu-testdev.rst create mode 100644 include/hw/misc/iommu-testdev.h create mode 100644 hw/misc/iommu-testdev.c diff --git a/MAINTAINERS b/MAINTAINERS index c1e586c58f0..63a04350fb0 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2372,6 +2372,13 @@ F: include/hw/core/iommu.h F: util/chardev_open.c F: docs/devel/vfio-iommufd.rst =20 +iommu-testdev +M: Tao Tang +S: Maintained +F: hw/misc/iommu-testdev.c +F: include/hw/misc/iommu-testdev.h +F: docs/specs/iommu-testdev.rst + vhost M: Michael S. Tsirkin R: Stefano Garzarella diff --git a/docs/specs/index.rst b/docs/specs/index.rst index f19d73c9f6e..b7909a108ab 100644 --- a/docs/specs/index.rst +++ b/docs/specs/index.rst @@ -39,3 +39,4 @@ guest hardware that is specific to QEMU. riscv-iommu riscv-aia aspeed-intc + iommu-testdev diff --git a/docs/specs/iommu-testdev.rst b/docs/specs/iommu-testdev.rst new file mode 100644 index 00000000000..89929a307e2 --- /dev/null +++ b/docs/specs/iommu-testdev.rst @@ -0,0 +1,140 @@ +.. SPDX-License-Identifier: GPL-2.0-or-later + +iommu-testdev =E2=80=94 IOMMU test device for bare-metal testing +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D + +Overview +-------- +``iommu-testdev`` is a minimal, test-only PCI device designed to exercise +IOMMU translation (such as ARM SMMUv3) without requiring firmware or a gue= st +OS. Tests can populate IOMMU translation tables with known values and trig= ger +DMA operations that flow through the IOMMU translation path. It is **not**= a +faithful PCIe endpoint and must be considered a QEMU-internal test vehicle. + +Key Features +------------ +* **Bare-metal IOMMU testing**: No guest kernel or firmware required +* **Configurable DMA attributes**: Supports address space configuration via + MMIO registers +* **Deterministic verification**: Write-then-read DMA pattern with automat= ic + result checking + +Status +------ +* Location: ``hw/misc/iommu-testdev.c`` +* Header: ``include/hw/misc/iommu-testdev.h`` +* Build guard: ``CONFIG_IOMMU_TESTDEV`` + +Device Interface +---------------- +The device exposes a single PCI BAR0 with 32-bit MMIO registers: + +* ``ITD_REG_DMA_TRIGGERING`` (0x00): Read triggers DMA and consumes + the armed request +* ``ITD_REG_DMA_GVA_LO`` (0x04): DMA IOVA bits [31:0] +* ``ITD_REG_DMA_GVA_HI`` (0x08): DMA IOVA bits [63:32] +* ``ITD_REG_DMA_GPA_LO`` (0x1C): DMA GPA bits [31:0] for readback validati= on +* ``ITD_REG_DMA_GPA_HI`` (0x20): DMA GPA bits [63:32] for readback validat= ion +* ``ITD_REG_DMA_LEN`` (0x0C): DMA transfer length +* ``ITD_REG_DMA_RESULT`` (0x10): DMA result + (0=3Dsuccess, 0xffffffff=3Didle, 0xfffffffe=3Darmed) +* ``ITD_REG_DMA_DBELL`` (0x14): Write 1 to arm DMA, write 0 to disarm. + Arming only marks the request and sets BUSY (no latch/check), but it + provides an explicit gate for qtests and leaves room for async/latching. +* ``ITD_REG_DMA_ATTRS`` (0x18): DMA attributes which shadow some fields in + MemTxAttrs: + + - bit[0]: secure (1=3DSecure, 0=3DNon-Secure) + - bits[2:1]: ArmSecuritySpace (0=3DSecure, 1=3DNon-Secure) + - bit[3]: space_valid (1=3Dspace is valid, 0=3Dignore space and default = to Non-Secure) + ``space`` field in MemTxAttrs is consumed only when ``space_valid`` is= set. + For Secure/Non-Secure, ``secure`` and ``space`` must match; mismatches + return ``ITD_DMA_ERR_BAD_ATTRS``. Other bits are reserved but can be w= ired + up easily if future tests need to pass extra attributes. + +Translation Setup Workflow +-------------------------- +``iommu-testdev`` never builds SMMU/AMD-Vi/RISC-V IOMMU structures on its = own. +Architecture-specific construction lives entirely in qtest/libqos helpers. +Those helpers populate guest memory with page tables/architecture-specific +structures and program the emulated IOMMU registers directly. See the +``qsmmu_setup_and_enable_translation()`` function in +``tests/qtest/libqos/qos-smmuv3.c`` for an example of how SMMUv3 translati= on +is set up for this device. + +DMA Operation Flow +------------------ +Arming semantics: + +* Writing ``DMA_DBELL`` with bit0=3D1 marks the request armed and sets + ``DMA_RESULT`` to BUSY. It does not latch GVA/LEN/ATTRS; values are samp= led + when ``DMA_TRIGGERING`` is read. +* Writing ``DMA_DBELL`` with bit0=3D0 disarms the request and sets + ``DMA_RESULT`` to IDLE. +* Reading ``DMA_TRIGGERING`` consumes the armed request and clears the arm= ed + state, even on error. + +The flow would be split into these steps, mainly for timing control and +debuggability: qtests can easily exercise and assert distinct paths +(NOT_ARMED, BAD_LEN, TX/RD failures, mismatch) instead of having all side +effects hidden behind a single step: +1. Test programs IOMMU translation tables +2. Test configures DMA IOVA (GVA_LO/HI), GPA for readback, length, and att= ributes +3. Test writes 1 to DMA_DBELL to arm the operation +4. Test reads DMA_TRIGGERING to execute DMA +5. Test polls DMA_RESULT: + + - 0x00000000: Success + - 0xFFFFFFFE: Armed (waiting for trigger). DMA runs synchronously, so + BUSY is not observed once the trigger read completes. + - 0xDEAD0006: Bad attrs (secure/space mismatch for S/NS) + - 0xDEAD000X: Various error codes + +The device performs a write-then-read sequence using a known pattern +(0x12345678) and verifies data integrity automatically. + +Running the qtest +----------------- +The SMMUv3 test suite uses this device and covers multiple translation mod= es:: + + cd build + QTEST_QEMU_BINARY=3D./qemu-system-aarch64 \\ + ./tests/qtest/iommu-smmuv3-test --tap -k + +This test suite exercises: + +* Stage 1 only translation +* Stage 2 only translation +* Nested (Stage 1 + Stage 2) translation + +Instantiation +------------- +The device is not wired into any board by default. Tests instantiate it +via QEMU command line:: + + -device iommu-testdev + +For ARM platforms with SMMUv3:: + + -M virt,iommu=3Dsmmuv3 -device iommu-testdev + +When the IOMMU sits on the same PCI root complex (``pci.0``), the device is +placed behind it automatically. For other PCI topologies, specify the bus +explicitly. + +Limitations +----------- +* No realistic PCIe enumeration, MSI/MSI-X, or interrupt handling +* No ATS/PRI support +* No actual device functionality beyond DMA test pattern +* Test-only; not suitable for production or machine realism +* Address space support (Secure/Root/Realm) is architecture-dependent and + gated by ``space_valid`` +* Readback uses the programmed GPA and reads via system memory, avoiding a + second IOMMU access for the readback step + +See also +-------- +* ``tests/qtest/iommu-smmuv3-test.c`` =E2=80=94 SMMUv3 test suite +* ``tests/qtest/libqos/qos-smmuv3.{c,h}`` =E2=80=94 SMMUv3 test library +* SMMUv3 emulation: ``hw/arm/smmu*`` diff --git a/include/hw/misc/iommu-testdev.h b/include/hw/misc/iommu-testde= v.h new file mode 100644 index 00000000000..338365947c6 --- /dev/null +++ b/include/hw/misc/iommu-testdev.h @@ -0,0 +1,87 @@ +/* + * A test device for IOMMU + * + * Copyright (c) 2026 Phytium Technology + * + * Author: + * Tao Tang + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef HW_MISC_IOMMU_TESTDEV_H +#define HW_MISC_IOMMU_TESTDEV_H + +#include "hw/pci/pci.h" + +#define IOMMU_TESTDEV_VENDOR_ID PCI_VENDOR_ID_REDHAT +#define IOMMU_TESTDEV_DEVICE_ID PCI_DEVICE_ID_REDHAT_TEST + +/* DMA_ATTRS register bit definitions which shadow some fields in MemTxAtt= rs */ +#define ITD_ATTRS_SECURE_SHIFT 0 +#define ITD_ATTRS_SECURE_MASK 0x1 +#define ITD_ATTRS_SPACE_SHIFT 1 +#define ITD_ATTRS_SPACE_MASK 0x3 +#define ITD_ATTRS_SPACE_VALID_SHIFT 3 +#define ITD_ATTRS_SPACE_VALID_MASK 0x1 + +#define ITD_ATTRS_SPACE_SECURE 0 +#define ITD_ATTRS_SPACE_NONSECURE 1 + +/* Helper macros for setting fields */ +#define ITD_ATTRS_SET_SECURE(attrs, val) \ + (((attrs) & ~(ITD_ATTRS_SECURE_MASK << ITD_ATTRS_SECURE_SHIFT)) | \ + (((val) & ITD_ATTRS_SECURE_MASK) << ITD_ATTRS_SECURE_SHIFT)) + +#define ITD_ATTRS_SET_SPACE(attrs, val) \ + (((attrs) & ~(ITD_ATTRS_SPACE_MASK << ITD_ATTRS_SPACE_SHIFT)) | \ + (((val) & ITD_ATTRS_SPACE_MASK) << ITD_ATTRS_SPACE_SHIFT)) + +#define ITD_ATTRS_SET_SPACE_VALID(attrs, val) \ + (((attrs) & ~(ITD_ATTRS_SPACE_VALID_MASK << \ + ITD_ATTRS_SPACE_VALID_SHIFT)) | \ + (((val) & ITD_ATTRS_SPACE_VALID_MASK) << \ + ITD_ATTRS_SPACE_VALID_SHIFT)) + +/* Helper macros for getting fields */ +#define ITD_ATTRS_GET_SECURE(attrs) \ + (((attrs) >> ITD_ATTRS_SECURE_SHIFT) & ITD_ATTRS_SECURE_MASK) + +#define ITD_ATTRS_GET_SPACE(attrs) \ + (((attrs) >> ITD_ATTRS_SPACE_SHIFT) & ITD_ATTRS_SPACE_MASK) + +#define ITD_ATTRS_GET_SPACE_VALID(attrs) \ + (((attrs) >> ITD_ATTRS_SPACE_VALID_SHIFT) & \ + ITD_ATTRS_SPACE_VALID_MASK) + +/* DMA result/status values shared with tests */ +#define ITD_DMA_RESULT_IDLE 0xffffffffu +#define ITD_DMA_RESULT_BUSY 0xfffffffeu +#define ITD_DMA_ERR_BAD_LEN 0xdead0001u +#define ITD_DMA_ERR_TX_FAIL 0xdead0002u +#define ITD_DMA_ERR_RD_FAIL 0xdead0003u +#define ITD_DMA_ERR_MISMATCH 0xdead0004u +#define ITD_DMA_ERR_NOT_ARMED 0xdead0005u +#define ITD_DMA_ERR_BAD_ATTRS 0xdead0006u + +#define ITD_DMA_WRITE_VAL 0x12345678u + +/* DMA doorbell bits */ +#define ITD_DMA_DBELL_ARM 0x1u + +/* BAR0 layout of iommu-testdev */ +enum { + ITD_REG_DMA_TRIGGERING =3D 0x00, + ITD_REG_DMA_GVA_LO =3D 0x04, + ITD_REG_DMA_GVA_HI =3D 0x08, + ITD_REG_DMA_LEN =3D 0x0c, + ITD_REG_DMA_RESULT =3D 0x10, + ITD_REG_DMA_DBELL =3D 0x14, + /* [0] secure,[2:1] ArmSecuritySpace,[3] space_valid */ + ITD_REG_DMA_ATTRS =3D 0x18, + ITD_REG_DMA_GPA_LO =3D 0x1c, + ITD_REG_DMA_GPA_HI =3D 0x20, + BAR0_SIZE =3D 0x1000, +}; + +#endif /* HW_MISC_IOMMU_TESTDEV_H */ diff --git a/hw/misc/iommu-testdev.c b/hw/misc/iommu-testdev.c new file mode 100644 index 00000000000..15eb6de78a5 --- /dev/null +++ b/hw/misc/iommu-testdev.c @@ -0,0 +1,318 @@ +/* + * A test device for IOMMU + * + * Copyright (c) 2026 Phytium Technology + * + * Author: + * Tao Tang + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "system/address-spaces.h" +#include "system/memory.h" +#include "trace.h" +#include "hw/pci/pci_device.h" +#include "hw/core/qdev-properties.h" +#include "qom/object.h" +#include "hw/misc/iommu-testdev.h" + +#define TYPE_IOMMU_TESTDEV "iommu-testdev" +OBJECT_DECLARE_SIMPLE_TYPE(IOMMUTestDevState, IOMMU_TESTDEV) + +struct IOMMUTestDevState { + PCIDevice parent_obj; + MemoryRegion bar0; + uint64_t dma_vaddr; + uint64_t dma_paddr; + uint32_t dma_len; + uint32_t dma_result; + bool dma_armed; /* armed until a trigger consumes the request */ + + AddressSpace *dma_as; /* IOMMU-mediated DMA AS for this device */ + uint32_t dma_attrs_cfg; /* bit0 secure, bits[2:1] space, bit3 valid */ +}; + +static bool iommu_testdev_attrs_inconsistent(uint32_t cfg) +{ + uint32_t space; + bool secure; + + if (!ITD_ATTRS_GET_SPACE_VALID(cfg)) { + return false; + } + + space =3D ITD_ATTRS_GET_SPACE(cfg); + secure =3D ITD_ATTRS_GET_SECURE(cfg); + + if (space =3D=3D ITD_ATTRS_SPACE_SECURE || space =3D=3D ITD_ATTRS_SPAC= E_NONSECURE) { + return secure !=3D (space =3D=3D ITD_ATTRS_SPACE_SECURE); + } + + return false; +} + +static void iommu_testdev_maybe_run_dma(IOMMUTestDevState *s) +{ + uint32_t expected_val, actual_val; + g_autofree uint8_t *write_buf =3D NULL; + g_autofree uint8_t *read_buf =3D NULL; + MemTxResult write_res, read_res; + MemTxAttrs attrs =3D {}; + AddressSpace *as; + bool space_valid; + + if (!s->dma_armed) { + s->dma_result =3D ITD_DMA_ERR_NOT_ARMED; + trace_iommu_testdev_dma_result(s->dma_result); + return; + } + trace_iommu_testdev_dma_start(); + + if (!s->dma_len) { + s->dma_result =3D ITD_DMA_ERR_BAD_LEN; + goto out; + } + + write_buf =3D g_malloc(s->dma_len); + read_buf =3D g_malloc(s->dma_len); + + /* Initialize MemTxAttrs from generic register. */ + attrs.secure =3D ITD_ATTRS_GET_SECURE(s->dma_attrs_cfg); + + space_valid =3D ITD_ATTRS_GET_SPACE_VALID(s->dma_attrs_cfg); + if (space_valid) { + /* The 'space' field in MemTxAttrs is ARM-specific. */ + attrs.space =3D ITD_ATTRS_GET_SPACE(s->dma_attrs_cfg); + } else { + /* Default to Non-Secure when space is not valid. */ + attrs.space =3D ITD_ATTRS_SPACE_NONSECURE; + } + + if (iommu_testdev_attrs_inconsistent(s->dma_attrs_cfg)) { + s->dma_result =3D ITD_DMA_ERR_BAD_ATTRS; + goto out; + } + + as =3D s->dma_as; + + /* Step 1: Write ITD_DMA_WRITE_VAL to DMA address */ + trace_iommu_testdev_dma_write(s->dma_vaddr, s->dma_len); + + for (int i =3D 0; i < s->dma_len; i++) { + /* Data is written in little-endian order */ + write_buf[i] =3D (ITD_DMA_WRITE_VAL >> ((i % 4) * 8)) & 0xff; + } + write_res =3D dma_memory_write(as, s->dma_vaddr, write_buf, + s->dma_len, attrs); + + if (write_res !=3D MEMTX_OK) { + s->dma_result =3D ITD_DMA_ERR_TX_FAIL; + goto out; + } + + /* Step 2: Read back from the same DMA address */ + trace_iommu_testdev_dma_read(s->dma_vaddr, s->dma_len); + + read_res =3D address_space_read(&address_space_memory, s->dma_paddr, + attrs, read_buf, s->dma_len); + + if (read_res !=3D MEMTX_OK) { + s->dma_result =3D ITD_DMA_ERR_RD_FAIL; + goto out; + } + + /* Step 3: Verify the read data matches what we wrote */ + for (int i =3D 0; i < s->dma_len; i +=3D 4) { + int remaining_bytes =3D MIN(4, s->dma_len - i); + + expected_val =3D 0; + actual_val =3D 0; + + for (int j =3D 0; j < remaining_bytes; j++) { + expected_val |=3D ((uint32_t)write_buf[i + j]) << (j * 8); + actual_val |=3D ((uint32_t)read_buf[i + j]) << (j * 8); + } + + trace_iommu_testdev_dma_verify(expected_val, actual_val); + + if (expected_val !=3D actual_val) { + s->dma_result =3D ITD_DMA_ERR_MISMATCH; + goto out; + } + } + + /* All checks passed */ + s->dma_result =3D 0; +out: + trace_iommu_testdev_dma_result(s->dma_result); + s->dma_armed =3D false; +} + +static uint64_t iommu_testdev_mmio_read(void *opaque, hwaddr addr, + unsigned size) +{ + IOMMUTestDevState *s =3D opaque; + uint64_t value =3D 0; + + switch (addr) { + case ITD_REG_DMA_TRIGGERING: + /* + * This lets tests poll ITD_REG_DMA_RESULT to observe BUSY before + * consuming the DMA. + */ + iommu_testdev_maybe_run_dma(s); + value =3D 0; + break; + case ITD_REG_DMA_GVA_LO: + value =3D (uint32_t)(s->dma_vaddr & 0xffffffffu); + break; + case ITD_REG_DMA_GVA_HI: + value =3D (uint32_t)(s->dma_vaddr >> 32); + break; + case ITD_REG_DMA_GPA_LO: + value =3D (uint32_t)(s->dma_paddr & 0xffffffffu); + break; + case ITD_REG_DMA_GPA_HI: + value =3D (uint32_t)(s->dma_paddr >> 32); + break; + case ITD_REG_DMA_LEN: + value =3D s->dma_len; + break; + case ITD_REG_DMA_RESULT: + value =3D s->dma_result; + break; + case ITD_REG_DMA_ATTRS: + value =3D s->dma_attrs_cfg; + break; + default: + value =3D 0; + break; + } + + trace_iommu_testdev_mmio_read(addr, value, size); + return value; +} + +static void iommu_testdev_mmio_write(void *opaque, hwaddr addr, uint64_t v= al, + unsigned size) +{ + IOMMUTestDevState *s =3D opaque; + uint32_t data =3D val; + + trace_iommu_testdev_mmio_write(addr, val, size); + + switch (addr) { + case ITD_REG_DMA_GVA_LO: + s->dma_vaddr =3D (s->dma_vaddr & ~0xffffffffull) | data; + break; + case ITD_REG_DMA_GVA_HI: + s->dma_vaddr =3D (s->dma_vaddr & 0xffffffffull) | + ((uint64_t)data << 32); + break; + case ITD_REG_DMA_GPA_LO: + s->dma_paddr =3D (s->dma_paddr & ~0xffffffffull) | data; + break; + case ITD_REG_DMA_GPA_HI: + s->dma_paddr =3D (s->dma_paddr & 0xffffffffull) | + ((uint64_t)data << 32); + break; + case ITD_REG_DMA_LEN: + s->dma_len =3D data; + break; + case ITD_REG_DMA_RESULT: + s->dma_result =3D data; + break; + case ITD_REG_DMA_DBELL: + if (data & ITD_DMA_DBELL_ARM) { + /* Arm the DMA operation; repeated arm is idempotent. */ + s->dma_armed =3D true; + s->dma_result =3D ITD_DMA_RESULT_BUSY; + trace_iommu_testdev_dma_armed(true); + } else { + /* Disarm the DMA operation */ + s->dma_armed =3D false; + s->dma_result =3D ITD_DMA_RESULT_IDLE; + trace_iommu_testdev_dma_armed(false); + } + break; + case ITD_REG_DMA_ATTRS: + s->dma_attrs_cfg =3D data; + break; + default: + break; + } +} + +static const MemoryRegionOps iommu_testdev_mmio_ops =3D { + .read =3D iommu_testdev_mmio_read, + .write =3D iommu_testdev_mmio_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, + .valid =3D { + .min_access_size =3D 4, + .max_access_size =3D 4, + }, +}; + +static void iommu_testdev_realize(PCIDevice *pdev, Error **errp) +{ + IOMMUTestDevState *s =3D IOMMU_TESTDEV(pdev); + + s->dma_vaddr =3D 0; + s->dma_paddr =3D 0; + s->dma_len =3D 0; + s->dma_result =3D ITD_DMA_RESULT_IDLE; + s->dma_armed =3D false; + s->dma_attrs_cfg =3D ITD_ATTRS_SET_SPACE(0, ITD_ATTRS_SPACE_NONSECURE); + s->dma_as =3D pci_device_iommu_address_space(pdev); + + memory_region_init_io(&s->bar0, OBJECT(pdev), &iommu_testdev_mmio_ops,= s, + TYPE_IOMMU_TESTDEV ".bar0", BAR0_SIZE); + pci_register_bar(pdev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY, &s->bar0); +} + +static void iommu_testdev_reset(DeviceState *dev) +{ + IOMMUTestDevState *s =3D IOMMU_TESTDEV(dev); + + s->dma_vaddr =3D 0; + s->dma_paddr =3D 0; + s->dma_len =3D 0; + s->dma_result =3D ITD_DMA_RESULT_IDLE; + s->dma_armed =3D false; + s->dma_attrs_cfg =3D ITD_ATTRS_SET_SPACE(0, ITD_ATTRS_SPACE_NONSECURE); +} + +static void iommu_testdev_class_init(ObjectClass *klass, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + PCIDeviceClass *pc =3D PCI_DEVICE_CLASS(klass); + + pc->realize =3D iommu_testdev_realize; + pc->vendor_id =3D IOMMU_TESTDEV_VENDOR_ID; + pc->device_id =3D IOMMU_TESTDEV_DEVICE_ID; + pc->revision =3D 0; + pc->class_id =3D PCI_CLASS_OTHERS; + dc->desc =3D "A test device for IOMMU"; + set_bit(DEVICE_CATEGORY_MISC, dc->categories); + device_class_set_legacy_reset(dc, iommu_testdev_reset); +} + +static const TypeInfo iommu_testdev_info =3D { + .name =3D TYPE_IOMMU_TESTDEV, + .parent =3D TYPE_PCI_DEVICE, + .instance_size =3D sizeof(IOMMUTestDevState), + .class_init =3D iommu_testdev_class_init, + .interfaces =3D (const InterfaceInfo[]) { + { INTERFACE_CONVENTIONAL_PCI_DEVICE }, + { } + }, +}; + +static void iommu_testdev_register_types(void) +{ + type_register_static(&iommu_testdev_info); +} + +type_init(iommu_testdev_register_types); diff --git a/hw/misc/Kconfig b/hw/misc/Kconfig index 4a22d68233e..f4d49248c08 100644 --- a/hw/misc/Kconfig +++ b/hw/misc/Kconfig @@ -25,6 +25,11 @@ config PCI_TESTDEV default y if TEST_DEVICES depends on PCI =20 +config IOMMU_TESTDEV + bool + default y if TEST_DEVICES + depends on PCI + config EDU bool default y if TEST_DEVICES diff --git a/hw/misc/meson.build b/hw/misc/meson.build index 32b878e035d..c444e030ecd 100644 --- a/hw/misc/meson.build +++ b/hw/misc/meson.build @@ -4,6 +4,7 @@ system_ss.add(when: 'CONFIG_FW_CFG_DMA', if_true: files('vm= coreinfo.c')) system_ss.add(when: 'CONFIG_ISA_DEBUG', if_true: files('debugexit.c')) system_ss.add(when: 'CONFIG_ISA_TESTDEV', if_true: files('pc-testdev.c')) system_ss.add(when: 'CONFIG_PCI_TESTDEV', if_true: files('pci-testdev.c')) +system_ss.add(when: 'CONFIG_IOMMU_TESTDEV', if_true: files('iommu-testdev.= c')) system_ss.add(when: 'CONFIG_UNIMP', if_true: files('unimp.c')) system_ss.add(when: 'CONFIG_EMPTY_SLOT', if_true: files('empty_slot.c')) system_ss.add(when: 'CONFIG_LED', if_true: files('led.c')) diff --git a/hw/misc/trace-events b/hw/misc/trace-events index eeb9243898e..4cee8a2b454 100644 --- a/hw/misc/trace-events +++ b/hw/misc/trace-events @@ -409,3 +409,13 @@ ivshmem_flat_interrupt_peer(uint16_t peer_id, uint16_t= vector_id) "Interrupting i2c_echo_event(const char *id, const char *event) "%s: %s" i2c_echo_recv(const char *id, uint8_t data) "%s: recv 0x%02" PRIx8 i2c_echo_send(const char *id, uint8_t data) "%s: send 0x%02" PRIx8 + +# iommu-testdev.c +iommu_testdev_mmio_read(uint64_t addr, uint64_t value, unsigned size) "add= r=3D0x%" PRIx64 " value=3D0x%" PRIx64 " size=3D%u" +iommu_testdev_mmio_write(uint64_t addr, uint64_t value, unsigned size) "ad= dr=3D0x%" PRIx64 " value=3D0x%" PRIx64 " size=3D%u" +iommu_testdev_dma_start(void) "DMA operation started" +iommu_testdev_dma_write(uint64_t gva, uint32_t len) "gva=3D0x%" PRIx64 " l= en=3D%u" +iommu_testdev_dma_read(uint64_t gva, uint32_t len) "gva=3D0x%" PRIx64 " le= n=3D%u" +iommu_testdev_dma_verify(uint32_t expected, uint32_t actual) "expected=3D0= x%x actual=3D0x%x" +iommu_testdev_dma_result(uint32_t result) "DMA completed result=3D0x%x" +iommu_testdev_dma_armed(bool armed) "armed=3D%d" --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934485; cv=none; d=zohomail.com; s=zohoarc; b=VB0PDhn/m0pLsb5LWzyWGw5nPxj5yfPfVtjJiFmQbVm3ENG4h40BfbgaMgpxVMFNHLD8/Q6qa8cs1rwZVGq2BglCTMklyiTuTph/rKNCEwZsd3GPM+qK6JJMqsQLgGjPN6MfJ06aymFe30uPpYM+46hw4ki/BBZPzVwD40Bjatk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934485; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=bggCs3F8lakcGV/xgvsKOfncSaOjQlaK7c4RhIG7iho=; b=U32C4GaBOkV8Q31K29sm1lxi+hQA9uaaT/1qMsdbT7OqqYp7T1EMtyvt3G0bHBKC+M1e95NTpwzIdGG9nVUTqOAKqFEBVfC9cvmXNKw7QvII6DD8spPUQLecFOlsX4fIDThFzz6DfR8GZSD2CHC2qOKqFvbX717lAZd6zHdCg6o= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934485729140.49444548082624; Tue, 20 Jan 2026 10:41:25 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGeJ-0000Bu-Lw; Tue, 20 Jan 2026 13:40:20 -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 ) id 1viGdd-00087A-Vq for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:39:38 -0500 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGdc-00060b-Gb for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:39:37 -0500 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-47d59da3d81so976345e9.0 for ; Tue, 20 Jan 2026 10:39:36 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4801e8c0475sm310070555e9.10.2026.01.20.10.39.33 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:39:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934374; x=1769539174; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=bggCs3F8lakcGV/xgvsKOfncSaOjQlaK7c4RhIG7iho=; b=CYomyB/SAaD25aQtjZ2m3QIvch0dRmj5uvo9+0wemloHn2/qOhJRySz8hDQjyXAzR5 TOAqIB3w/NqIGi3+3OKhTSYvmV/Cj1WbdzjPPKbAWdPJS/BdcNkbL1nUp+wzoHbSkneF Agec+2/vZ5pD9VMlYLH6JYtojd4lw+c9324UlXoqDr430FosAz6xi/D7ZzlJ/zRJPFqg hno3deyRoa4Dr2YflrZ9BgYx3K2r2yiD7U8Ro2RgFBSRWYmG7xDgxM/SLbASdkWt6IKD GuR8t0YxsXoLckcfG/2rgue5JBH2saMnVnD6doGH/SGMpX4/+KK/mWZ2a2JWvTXMDJXC 00UQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934374; x=1769539174; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=bggCs3F8lakcGV/xgvsKOfncSaOjQlaK7c4RhIG7iho=; b=Jf1iLnfOv2UVCZg72fAcCkCp0CMKqtt6kZ6NKbhJjl3Z9o3tDSqx8cLt/U0WmI76ZE MH7AxaKk8zo0VZksmL++U0xmURP9Ez6EkVM8UWxixKI/kZE9gnN1Gtfsc+JbwEV1QFPe vP6ukVDh1ppnm2+t9A5+WOGjhC/9LwCeBjUZAvRUbbSq9VXN2d5IcY96tbUxd1hjT03k V2RnMN5WV1Y+AsppZPZH9AfpfMH0NqZ+XHvipqg5jD0p9L6soNRUo3TAzy69tdSCgmNw WE9Q6r8tzmDijfc+T7PqI5SJGVfyidMeiplorXd8PsaPMOREBCH0HwoE4ATsIcQ3sTnG F1yg== X-Gm-Message-State: AOJu0Yw8PQpcUaYpvy5ayA5D5BsQnLjSB9n5hRLXKZpreJH+KwU734uh kgB1pRadIwTL1aA7ZfOUhDN8OQm4PpaV2tj9sTKfM/g+8pybFpLWuUrrJvaYoqLMf2z8fgBbMP8 o2BTdHro= X-Gm-Gg: AY/fxX5qYgq0HXFRg6UKfQ2/IEq/A5wVMCpfU7uy4FR9I8Rhgsg1pxTcQvhaELj7IG4 oagjA+GJhbsi6G3UA4liT0qRQF+E0TAKldo/rY6X6KzIhNOrK0L8Z6xr99f1FjpKpKF1CCWLUEb I3bA2hDzTpcF/UHU9H0y2RpD9NA1FUEC0j5j7kKsW1xpcQXgbz4LwUkn3Jz9EVYLilsFJiPzMXC pRenIu+2gEWkbE1qy3Zuh+eTUCHlvgGx9WQZFpKMuqFn7M5xNmN1qSbYIMIYo7d53+SFQZKft0W +cK7JBsz1yhNle7gxoC66Ma/YgJiIp7Hkd3oOwoNu4ZU5+uq3rArO0Aj4YxTRBvGCCfS32rMc5z tQXvSoakvNRAVkyHxHVd93WV61xw8Zd+T4pKiLTG6xwjnyyVhPCb7L2YPRgjiqd/S5/FwY1kV/B TK7CsOamdaPug2FXcB1kUx6YLGK4MnxaYbaYNmBd0XRwRO+uksESTFRGcKU9W4 X-Received: by 2002:a05:600c:1c24:b0:47e:e2b8:66e6 with SMTP id 5b1f17b1804b1-4802590e305mr206894065e9.14.1768934374443; Tue, 20 Jan 2026 10:39:34 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 04/29] hw/arm/smmuv3-common: Add NSCFG bit definition for CD Date: Tue, 20 Jan 2026 19:38:37 +0100 Message-ID: <20260120183902.73845-5-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::334; envelope-from=philmd@linaro.org; helo=mail-wm1-x334.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: 1768934486966158500 From: Tao Tang Add NSCFG bit definition for CD structure. This allows proper configuration of non-secure access settings in CD. Signed-off-by: Tao Tang Reviewed-by: Pierrick Bouvier Reviewed-by: Eric Auger Message-ID: <20260119161112.3841386-5-tangtao1634@phytium.com.cn> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/arm/smmuv3-common.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/hw/arm/smmuv3-common.h b/include/hw/arm/smmuv3-common.h index f0e1dd85715..e8e7746d1fa 100644 --- a/include/hw/arm/smmuv3-common.h +++ b/include/hw/arm/smmuv3-common.h @@ -123,11 +123,13 @@ REG32(CD_1, 4) FIELD(CD_1, A, 14, 1) FIELD(CD_1, ASID, 16, 16) REG32(CD_2, 8) + FIELD(CD_2, NSCFG0, 0, 1) FIELD(CD_2, HAD0, 1, 1) FIELD(CD_2, TTB0_LO, 4, 28) REG32(CD_3, 12) FIELD(CD_3, TTB0_HI, 0, 20) REG32(CD_4, 16) + FIELD(CD_4, NSCFG1, 0, 1) FIELD(CD_4, HAD1, 1, 1) FIELD(CD_4, TTB1_LO, 4, 28) REG32(CD_5, 20) @@ -155,6 +157,9 @@ REG32(CD_5, 20) #define CD_R(x) FIELD_EX32((x)->word[1], CD_1, R) #define CD_A(x) FIELD_EX32((x)->word[1], CD_1, A) #define CD_ASID(x) FIELD_EX32((x)->word[1], CD_1, ASID) +#define CD_NSCFG(x, sel) ((sel) ? \ + FIELD_EX32((x)->word[4], CD_4, NSCFG1) : \ + FIELD_EX32((x)->word[2], CD_2, NSCFG0)) #define CD_HAD(x, sel) ((sel) ? \ FIELD_EX32((x)->word[4], CD_4, HAD1) : \ FIELD_EX32((x)->word[2], CD_2, HAD0)) --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934519; cv=none; d=zohomail.com; s=zohoarc; b=D3bF+EjJT1/FKgVx5NTz/e33Q2KPASado9bY/wvw313FhGAMEHm8/lVnO1LTs6sR629P4I7k56uM46tNGAlWhUUytN7D3G26gc1qet/W8uxXYjxPVPPzu8nPhosEN/NT5M+4XDYzv/wah3OV/TKH/mvO6J0V1kf9M1popyp7s78= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934519; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=RpgFu71iSgMMr/zkbX8X7POnwFWrfw1mWAO/J2FKty4=; b=PNTK1NLDV8IMqgQJJ+RSKThZQ4k+eGCcmYJpF2/Q7iqz9HKcrmpK8FZSrRZWOWSPFU/p/Jg3mg+GFa+BNcbToEyF/4wFBBGwbdJ7CyBSfC/+55Z2F1GVJwrNjUwrY+KLbCAi4AWSJipdV8bea0F0+OhdGLtsPUG+srAG4BygwbE= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934519761151.29423690222802; Tue, 20 Jan 2026 10:41:59 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGeO-0000RO-QT; Tue, 20 Jan 2026 13:40:25 -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 ) id 1viGdm-0008I0-8J for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:39:51 -0500 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 1viGdj-00063e-0p for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:39:44 -0500 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-47ee974e230so45715215e9.2 for ; Tue, 20 Jan 2026 10:39:42 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4801fe6e703sm110306665e9.18.2026.01.20.10.39.40 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:39:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934381; x=1769539181; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=RpgFu71iSgMMr/zkbX8X7POnwFWrfw1mWAO/J2FKty4=; b=PCfdDspYs9ArUXw2mpUrGApZPUbO56JQLpwD/dMmsVG1vTOfR+7gETs0P1JpTrmC/A XNHHo87qsUc78Pw+Woy9EaSJWxeQ8zV3ARtlmyOowbYXEeME8/+2wnWZIO8klcq2bFQk ktUw6MJ5TBmCvbsilGeQJdnjD/Rn2HZs9mlzE+srQ6CiAkk55kf9GD81Fci89T6nBXm6 MGmuG34cAoFhxJZS8Af9JO2SKp5lT7/RC5a00+/PHFhOnifkQzxGBdDhegQNIxMYvVNG m/G7XgBuZP/7EzYwUBpCD4qyJMda4cf2DDHNrjndp5dcZb2BtWU6/y5D/AOdq1FL1AFO koRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934381; x=1769539181; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=RpgFu71iSgMMr/zkbX8X7POnwFWrfw1mWAO/J2FKty4=; b=tx8pRip8arwl+1wTrVIRm3MaUr8Iv2v0bkBe0LmF7MrLRTtWf2QUlhth5m1HQlzBOi ro7tlqwBW27nBo8/gG1FyC/UQCtYgulnyoy+C9bNnzge5h0qZhZ2wwSOFTWiru9iGDx5 F8movteBvqIL6Cc4H1OzsNn3yShifOYPLGwOkmS/UmBbNxKPFVc/nG0HATSS40B+THkH lxXjlKX6yqil6LR2kTeAh/kjkbOnTvvGkbQoyBUeHkVgi1Rf4nuodEWRClaNyBNaNmvp tcyxmklMsCEe5s9F0p9agTl0MmTsrkThyzyLiJW1RFoPJT5AajBnab2ulkLK62/zbhrq RNkg== X-Gm-Message-State: AOJu0Yz8szGJ0PNRhxTgiKlRYhh35OHARSifMGRokCqriUCBsNihoIMQ Rtho2H3ikxoF8xPpK5UT48TEGdtYLoab0NBANcQWd0/zYSTp1O9VBXdwAyVHYUhBzuJU03+J7Wu 0suVBgmk= X-Gm-Gg: AY/fxX4vqeqRvPs1wf0vJtYTnG4NX8V3oAfJofz6GftfkjUmeDB7dRqOmnUMigwU5no W/FgleB/xViFNC0FxNKE/AggvobnNSSDTvNtXUtdgFOOenXo7HAdn4c3q86lMd1+O7ciRIDTyiY dd/axHivHsDFa1Qwt3NFon60iS+Ngz0S0TgIDIq7Dvn/I+qisblF8SbNTfLP0sECGwYkZ0qJEol 3SGrE7okkCsrHwWbGReS6M1ooH83QLwOsT00Yy2jVJY9UP4DXKoTrU0fvpw7qajkIE+4B1jDMa1 8ijUnDq4NVe/q9BavHtB92kFqU2PKpuN2eYLV6xcNUkB+h+XyYKExoViN/V7E5E0ndxZjbdbJoc ag5j1vlgWpBOlgzm33gF069LDrGnHilPxIXrw8ExooDuqDx1zdePIDonlQ5CZMsFPu/5sS52XeL wkIMueBOvtRFzbuwHXqIQuPrqv/extDHICMi+2RUFapCnDRYprR2SgzzA+f6jy X-Received: by 2002:a05:600c:5299:b0:477:a9e:859a with SMTP id 5b1f17b1804b1-4803e7e859dmr41492995e9.22.1768934381153; Tue, 20 Jan 2026 10:39:41 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 05/29] hw/arm/smmuv3-common: Add STE/CD set helpers for repeated field setup Date: Tue, 20 Jan 2026 19:38:38 +0100 Message-ID: <20260120183902.73845-6-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::32d; envelope-from=philmd@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: 1768934521382154100 From: Tao Tang This change introduces STE_SET_* and CD_SET_* helpers to centralize and simplify repeated field setting logic. Signed-off-by: Tao Tang Reviewed-by: Pierrick Bouvier Reviewed-by: Eric Auger Message-ID: <20260119161112.3841386-6-tangtao1634@phytium.com.cn> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/arm/smmuv3-common.h | 79 ++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/include/hw/arm/smmuv3-common.h b/include/hw/arm/smmuv3-common.h index e8e7746d1fa..f644618f38b 100644 --- a/include/hw/arm/smmuv3-common.h +++ b/include/hw/arm/smmuv3-common.h @@ -100,6 +100,37 @@ REG32(STE_7, 28) #define STE_CFG_ABORT(config) (!(config & 0x4)) #define STE_CFG_BYPASS(config) (config =3D=3D 0x4) =20 +/* Update STE fields */ +#define STE_SET_VALID(ste, v) = \ + ((ste)->word[0] =3D FIELD_DP32((ste)->word[0], STE_0, VALID, (v))) +#define STE_SET_CONFIG(ste, v) = \ + ((ste)->word[0] =3D FIELD_DP32((ste)->word[0], STE_0, CONFIG, (v))) + +#define STE_SET_CTXPTR(ste, v) do { = \ + (ste)->word[0] =3D FIELD_DP32((ste)->word[0], STE_0, CTXPTR_LO, (v) >>= 6); \ + (ste)->word[1] =3D FIELD_DP32((ste)->word[1], STE_1, CTXPTR_HI, (v) >>= 32); \ +} while (0) +#define STE_SET_S2T0SZ(ste, v) = \ + ((ste)->word[5] =3D FIELD_DP32((ste)->word[5], STE_5, S2T0SZ, (v))) +#define STE_SET_S2SL0(ste, v) = \ + ((ste)->word[5] =3D FIELD_DP32((ste)->word[5], STE_5, S2SL0, (v))) +#define STE_SET_S2TG(ste, v) = \ + ((ste)->word[5] =3D FIELD_DP32((ste)->word[5], STE_5, S2TG, (v))) +#define STE_SET_S2PS(ste, v) = \ + ((ste)->word[5] =3D FIELD_DP32((ste)->word[5], STE_5, S2PS, (v))) +#define STE_SET_S2AA64(ste, v) = \ + ((ste)->word[5] =3D FIELD_DP32((ste)->word[5], STE_5, S2AA64, (v))) +#define STE_SET_S2ENDI(ste, v) = \ + ((ste)->word[5] =3D FIELD_DP32((ste)->word[5], STE_5, S2ENDI, (v))) +#define STE_SET_S2AFFD(ste, v) = \ + ((ste)->word[5] =3D FIELD_DP32((ste)->word[5], STE_5, S2AFFD, (v))) +#define STE_SET_S2S(ste, v) = \ + ((ste)->word[5] =3D FIELD_DP32((ste)->word[5], STE_5, S2S, (v))) +#define STE_SET_S2TTB(ste, v) do { = \ + (ste)->word[6] =3D FIELD_DP32((ste)->word[6], STE_6, S2TTB_LO, (v) >> = 4); \ + (ste)->word[7] =3D FIELD_DP32((ste)->word[7], STE_7, S2TTB_HI, (v) >> = 32); \ +} while (0) + /* CD fields */ =20 REG32(CD_0, 0) @@ -169,6 +200,54 @@ REG32(CD_5, 20) (((uint64_t)FIELD_EX32((x)->word[3], CD_3, TTB0_HI) << 32) | \ ((uint64_t)FIELD_EX32((x)->word[2], CD_2, TTB0_LO) << 4))) =20 +/* Update CD fields */ +#define CD_SET_VALID(cd, v) = \ + ((cd)->word[0] =3D FIELD_DP32((cd)->word[0], CD_0, VALID, (v))) +#define CD_SET_ASID(cd, v) = \ + ((cd)->word[1] =3D FIELD_DP32((cd)->word[1], CD_1, ASID, (v))) +#define CD_SET_TTB(cd, sel, v) do { = \ + if (sel) { = \ + (cd)->word[4] =3D FIELD_DP32((cd)->word[4], CD_4, TTB1_LO, (v) >> = 4); \ + (cd)->word[5] =3D FIELD_DP32((cd)->word[5], CD_5, TTB1_HI, (v) >> = 32); \ + } else { = \ + (cd)->word[2] =3D FIELD_DP32((cd)->word[2], CD_2, TTB0_LO, (v) >> = 4); \ + (cd)->word[3] =3D FIELD_DP32((cd)->word[3], CD_3, TTB0_HI, (v) >> = 32); \ + } = \ +} while (0) + +#define CD_SET_TSZ(cd, sel, v) = \ + ((cd)->word[0] =3D (sel) ? FIELD_DP32((cd)->word[0], CD_0, TSZ1, (v)) = : \ + FIELD_DP32((cd)->word[0], CD_0, TSZ0, (v))) +#define CD_SET_TG(cd, sel, v) = \ + ((cd)->word[0] =3D (sel) ? FIELD_DP32((cd)->word[0], CD_0, TG1, (v)) := \ + FIELD_DP32((cd)->word[0], CD_0, TG0, (v))) +#define CD_SET_EPD(cd, sel, v) = \ + ((cd)->word[0] =3D (sel) ? FIELD_DP32((cd)->word[0], CD_0, EPD1, (v)) = : \ + FIELD_DP32((cd)->word[0], CD_0, EPD0, (v))) +#define CD_SET_ENDI(cd, v) = \ + ((cd)->word[0] =3D FIELD_DP32((cd)->word[0], CD_0, ENDI, (v))) +#define CD_SET_IPS(cd, v) = \ + ((cd)->word[1] =3D FIELD_DP32((cd)->word[1], CD_1, IPS, (v))) +#define CD_SET_AFFD(cd, v) = \ + ((cd)->word[1] =3D FIELD_DP32((cd)->word[1], CD_1, AFFD, (v))) +#define CD_SET_TBI(cd, v) = \ + ((cd)->word[1] =3D FIELD_DP32((cd)->word[1], CD_1, TBI, (v))) +#define CD_SET_HD(cd, v) = \ + ((cd)->word[1] =3D FIELD_DP32((cd)->word[1], CD_1, HD, (v))) +#define CD_SET_HA(cd, v) = \ + ((cd)->word[1] =3D FIELD_DP32((cd)->word[1], CD_1, HA, (v))) +#define CD_SET_S(cd, v) = \ + ((cd)->word[1] =3D FIELD_DP32((cd)->word[1], CD_1, S, (v))) +#define CD_SET_R(cd, v) = \ + ((cd)->word[1] =3D FIELD_DP32((cd)->word[1], CD_1, R, (v))) +#define CD_SET_A(cd, v) = \ + ((cd)->word[1] =3D FIELD_DP32((cd)->word[1], CD_1, A, (v))) +#define CD_SET_AARCH64(cd, v) = \ + ((cd)->word[1] =3D FIELD_DP32((cd)->word[1], CD_1, AARCH64, (v))) +#define CD_SET_NSCFG(cd, sel, v) = \ + ((sel) ? ((cd)->word[4] =3D FIELD_DP32((cd)->word[4], CD_4, NSCFG1, (v= ))) : \ + ((cd)->word[2] =3D FIELD_DP32((cd)->word[2], CD_2, NSCFG0, (v= )))) + /* MMIO Registers */ =20 REG32(IDR0, 0x0) --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934468; cv=none; d=zohomail.com; s=zohoarc; b=STKzthIBkS6Ijwc/ubdmuUIFPHSxj89s6rjsvYL9j5Epo9fp5SitZWyeKm1qGAk9gGwes/YSxx707PNeMj4oFjbDJKZm/fdyPSB5K1dyilsSRyx6EHcwx+kA/V1Nt+I+GMPGcc+FuBuRtK/wR+9/5CulYBCvDMRHWzAOR5km66M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934468; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=wGGJfg7cdndkR9NDz3LfOfgo5mhBYtHV0xGydFpvfG8=; b=QYiq6WH7kkX0Qh2eM9hoDICOoZ2cFU3KzByZpuWei/O5KLRcG+V9Fk/omLZjt2Uib6mh2vCkM93ho0HFsjqv5+gPbV0Ui7UypdWEOqPMfLqfbBVp9YLYeNyJTSEMtIP5zi1g285FUaPGMMhsXKbz4EzpYGm8JyeRUh/8mc6I9PA= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17689344683911023.8992448882354; Tue, 20 Jan 2026 10:41:08 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGeS-0000kl-5p; Tue, 20 Jan 2026 13:40:28 -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 ) id 1viGds-0008KC-9Y for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:39:56 -0500 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 1viGdq-000645-2K for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:39:51 -0500 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-47f3b7ef761so33432155e9.0 for ; Tue, 20 Jan 2026 10:39:49 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4801e86c00esm256288795e9.2.2026.01.20.10.39.46 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:39:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934388; x=1769539188; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=wGGJfg7cdndkR9NDz3LfOfgo5mhBYtHV0xGydFpvfG8=; b=C+PiqdzFCzMNUE7mVu8EPEKgaXdds+kjK9kK87/9UdsV+cCMzMXFVCLf10TT4IfMVJ P3Wfq6h372MS3VgcEGm7EuQbJDsOpyxrRgmnTcMWHCPWigwf8mR3KHb0lyvqJ3ou0Ywn kxNDRfTL3I5PySc8+q637dv0qMKRlES/M17bVJGgxp/0DMrKmJT30w+8z2+IMhZdilo8 1b0FSLaZWEqnfXD8OSASV+q87DogWD8xllK7PjJPbvtb/xgK7dzeAEBpGEQeB50+vgTg 8iI9RMlckSL0GUqfu4hu7fnX+bDxnAPl2P4IsmO19eF8G3OsUQpHTgSBfCcoksUuJrDq fvSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934388; x=1769539188; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=wGGJfg7cdndkR9NDz3LfOfgo5mhBYtHV0xGydFpvfG8=; b=IfNioW3PQTCzQ22ksSuyxXXwAEbCJe6718uZQwQpzba3w5EOeP9qS4RLW/zxUsy4HE KXlnHBNmFls5hrooJ2KaD0W1+wXQBbEe16kK7RIWlwD2t2zc7cF9qXKQ1tTHjFKgP6dq 7i0+taqTHSZHjiADj3nRLtCEQuYo6DYZrqlujyN6XzgyNFzQvCFU07AF1ToGE+JCI3fh sji18fdRY3umXXg2FKzHWemREGFPZV9w/dUmmyLNhMiT8B0iat4ndZVJiDwdjTldCqB/ 7NLwpjj+4xwLsMoxgPEP+AeasMvKcSkHmiPNvuK8k1RVXD2/PYJjr2T2QD9X8CP7Mbg1 vHBQ== X-Gm-Message-State: AOJu0YwFc8ClIVOUjuBZIxTZd+IfJI+OzLK2dr2/sP60HD7bp0pUTweG cuCC8WLq8e7QFpLcy8T8HuHRz3Xr8bvlDd9bwc+7lcETQ0nLNxauv5Pkzqea81cFK/RcSViogwK sBQ6zhYI= X-Gm-Gg: AY/fxX6OMb0T989Hb88E5mhsMtMz5sdslDTFLj1dndvZjJPy9dacTcMjJuxr58QNXde kCN03O1l9ZIdeMe5CRlu++dHrRYHOB04oeWl+guNcMwxH8bayvk4ptD+2A6lLQnqIcX8HrqlXzX o5i/6C7gp3OpRL1/e0FlXuJWkpVSd9t4R2Q1VMIDuzNABkgZZMgg8ba7zc0WSmrMCraWFovOdhs SlHIPx88VdMIDTEaIdy3x0EzIVKiCRYJB7Cyw1kYt5mcPJS1pUpy+r9flTLAfN8jLGnUMHjFlji xcViyF3NVpBBTRkGaQJIIk6xaDmAlCMhCv8HYiQPaCoBTzliCF3V+d/n5zi+rSK+nTY0E1F82rk F6cn8rniRctollEEvdV1zXIJZr11wp6G2/ni/maSleksYWFBztLOMI2g/tWANyEM2UGL3KV/poK ovRYxh6XecVI+vDPuUCONNSJM3746bHIFug3m+C/VvtGcg3pj28C+7fEhM23m4 X-Received: by 2002:a05:600c:4e05:b0:45d:d97c:236c with SMTP id 5b1f17b1804b1-480416867d8mr19644505e9.21.1768934387889; Tue, 20 Jan 2026 10:39:47 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 06/29] tests/qtest: Add libqos iommu-testdev helpers Date: Tue, 20 Jan 2026 19:38:39 +0100 Message-ID: <20260120183902.73845-7-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::332; envelope-from=philmd@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=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: 1768934470732154100 From: Tao Tang Introduce a libqos helper module for the iommu-testdev device used by qtests. This module provides some common functions to all IOMMU test cases using iommu-testdev. Wire the new sources into tests/qtest/libqos/meson.build so they are built as part of the qtest support library. Signed-off-by: Tao Tang Message-ID: <20260119161112.3841386-7-tangtao1634@phytium.com.cn> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- MAINTAINERS | 5 ++ tests/qtest/libqos/qos-iommu-testdev.h | 43 ++++++++++++++ tests/qtest/libqos/qos-iommu-testdev.c | 82 ++++++++++++++++++++++++++ tests/qtest/libqos/meson.build | 3 + 4 files changed, 133 insertions(+) create mode 100644 tests/qtest/libqos/qos-iommu-testdev.h create mode 100644 tests/qtest/libqos/qos-iommu-testdev.c diff --git a/MAINTAINERS b/MAINTAINERS index 63a04350fb0..cc219e39b98 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3578,6 +3578,11 @@ F: docs/devel/testing/qtest.rst X: tests/qtest/bios-tables-test* X: tests/qtest/migration-* =20 +QTest IOMMU helpers +M: Tao Tang +S: Maintained +F: tests/qtest/libqos/qos-iommu* + Device Fuzzing M: Alexander Bulekov R: Paolo Bonzini diff --git a/tests/qtest/libqos/qos-iommu-testdev.h b/tests/qtest/libqos/qo= s-iommu-testdev.h new file mode 100644 index 00000000000..3713b89ea4c --- /dev/null +++ b/tests/qtest/libqos/qos-iommu-testdev.h @@ -0,0 +1,43 @@ +/* + * IOMMU test device helpers for libqos qtests + * + * Copyright (c) 2026 Phytium Technology + * + * Author: + * Tao Tang + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef QTEST_LIBQOS_IOMMU_TESTDEV_H +#define QTEST_LIBQOS_IOMMU_TESTDEV_H + +#include "pci.h" +#include "hw/misc/iommu-testdev.h" + +typedef uint32_t (*QOSIOMMUTestdevSetupFn)(void *opaque); +typedef uint32_t (*QOSIOMMUTestdevAttrsFn)(void *opaque); +typedef bool (*QOSIOMMUTestdevValidateFn)(void *opaque); +typedef void (*QOSIOMMUTestdevReportFn)(void *opaque, uint32_t dma_result); + +typedef struct QOSIOMMUTestdevDmaCfg { + QPCIDevice *dev; + QPCIBar bar; + uint64_t iova; + uint64_t gpa; + uint32_t len; +} QOSIOMMUTestdevDmaCfg; + +uint32_t qos_iommu_testdev_trigger_dma(QPCIDevice *dev, QPCIBar bar, + uint64_t iova, uint64_t gpa, + uint32_t len, uint32_t attrs); + +void qos_iommu_testdev_single_translation(const QOSIOMMUTestdevDmaCfg *dma, + void *opaque, + QOSIOMMUTestdevSetupFn setup_fn, + QOSIOMMUTestdevAttrsFn attrs_fn, + QOSIOMMUTestdevValidateFn valida= te_fn, + QOSIOMMUTestdevReportFn report_f= n, + uint32_t *dma_result_out); + +#endif /* QTEST_LIBQOS_IOMMU_TESTDEV_H */ diff --git a/tests/qtest/libqos/qos-iommu-testdev.c b/tests/qtest/libqos/qo= s-iommu-testdev.c new file mode 100644 index 00000000000..91718a56738 --- /dev/null +++ b/tests/qtest/libqos/qos-iommu-testdev.c @@ -0,0 +1,82 @@ +/* + * IOMMU test device helpers for libqos qtests + * + * Copyright (c) 2026 Phytium Technology + * + * Author: + * Tao Tang + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "../libqtest.h" +#include "pci.h" +#include "qos-iommu-testdev.h" + +uint32_t qos_iommu_testdev_trigger_dma(QPCIDevice *dev, QPCIBar bar, + uint64_t iova, uint64_t gpa, + uint32_t len, uint32_t attrs) +{ + uint32_t result =3D ITD_DMA_RESULT_BUSY; + + qpci_io_writel(dev, bar, ITD_REG_DMA_GVA_LO, (uint32_t)iova); + qpci_io_writel(dev, bar, ITD_REG_DMA_GVA_HI, (uint32_t)(iova >> 32)); + qpci_io_writel(dev, bar, ITD_REG_DMA_GPA_LO, (uint32_t)gpa); + qpci_io_writel(dev, bar, ITD_REG_DMA_GPA_HI, (uint32_t)(gpa >> 32)); + qpci_io_writel(dev, bar, ITD_REG_DMA_LEN, len); + qpci_io_writel(dev, bar, ITD_REG_DMA_ATTRS, attrs); + + qpci_io_writel(dev, bar, ITD_REG_DMA_DBELL, ITD_DMA_DBELL_ARM); + qpci_io_readl(dev, bar, ITD_REG_DMA_TRIGGERING); + + for (int i =3D 0; i < 1000; i++) { + result =3D qpci_io_readl(dev, bar, ITD_REG_DMA_RESULT); + if (result !=3D ITD_DMA_RESULT_BUSY) { + break; + } + g_usleep(1000); + } + + if (result =3D=3D ITD_DMA_RESULT_BUSY) { + return ITD_DMA_ERR_TX_FAIL; + } + + return result; +} + +void qos_iommu_testdev_single_translation(const QOSIOMMUTestdevDmaCfg *dma, + void *opaque, + QOSIOMMUTestdevSetupFn setup_fn, + QOSIOMMUTestdevAttrsFn attrs_fn, + QOSIOMMUTestdevValidateFn valida= te_fn, + QOSIOMMUTestdevReportFn report_f= n, + uint32_t *dma_result_out) +{ + uint32_t config_result; + uint32_t dma_result; + uint32_t attrs_val; + + g_assert(dma); + g_assert(setup_fn); + g_assert(attrs_fn); + + config_result =3D setup_fn(opaque); + g_assert_cmpuint(config_result, =3D=3D, 0); + + attrs_val =3D attrs_fn(opaque); + dma_result =3D qos_iommu_testdev_trigger_dma(dma->dev, dma->bar, + dma->iova, dma->gpa, + dma->len, attrs_val); + if (dma_result_out) { + *dma_result_out =3D dma_result; + } + + if (report_fn) { + report_fn(opaque, dma_result); + } + + if (validate_fn) { + g_assert_true(validate_fn(opaque)); + } +} diff --git a/tests/qtest/libqos/meson.build b/tests/qtest/libqos/meson.build index 1ddaf7b095b..9805d63a290 100644 --- a/tests/qtest/libqos/meson.build +++ b/tests/qtest/libqos/meson.build @@ -60,6 +60,9 @@ libqos_srcs =3D files( 'x86_64_pc-machine.c', 'riscv-virt-machine.c', 'loongarch-virt-machine.c', + + # SMMU: + 'qos-iommu-testdev.c', ) =20 if have_virtfs --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934484; cv=none; d=zohomail.com; s=zohoarc; b=WB+55WV8Qb23tRbhFJlvT1sTehQ7l0v4IjNMgnwNJNuoG8m2CBZbASzsnB/eXOtCrayGBAbRlojZlXV3gmQQM1inWvrhqzD9Y3BDQFVUJfNCUoQ1i54txKa2swudxlsuWUa6WNiJQFJTkhPpxELlaJJC7j390pjPhwtMKkZvQKM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934484; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=qeRefDc4UWGe3k05tsHGAgyGgQvBhPXs0rdg1kfPac8=; b=jfUSNBytaytabvun9qxAVzx57WosrWC3wPr9l+dge7HTuJMhL+vEsioR6pmQYbxd4jtljtBxOJDLF+0+oY7cSPu/tTvP9LxE8kU1go9IHxrfdBDtyzIOg5WAFZ+dQBZ0nfN1/KMxVHMRohi0hY3mY/QULw0JeVkX15rpWxFZ4Ok= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934484731837.8976028228836; Tue, 20 Jan 2026 10:41:24 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGeT-0000sR-Ew; Tue, 20 Jan 2026 13:40:29 -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 ) id 1viGe0-0008MF-Vy for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:40:05 -0500 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGdx-00064U-Ct for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:40:00 -0500 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-47edffe5540so49507345e9.0 for ; Tue, 20 Jan 2026 10:39:57 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47f4289b789sm317460355e9.1.2026.01.20.10.39.53 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:39:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934395; x=1769539195; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=qeRefDc4UWGe3k05tsHGAgyGgQvBhPXs0rdg1kfPac8=; b=gSZZK+NXhj+1I1CYa+sVoeeTC1EcoMlZ2uuLXq0bPpxlCZc7a5ZqcL8ho5jUN5+XZ1 GZKKt26DczkQXT4UiScHc3AjnSg/uEvbY4W/Z9mUAUZO5xrX1SUUjRFzRxID0LTS1LAt qoIcz6WubvNaRUmNzoMtsk1GgLDvOkWrU8buo5aWNpWiBjp4uem5xKGl30PEu+izx68M /V0H5WVJFENMcr6EnmEFNz6g5wHDCcGRZNJVvYMgv4crG42J5s5sJBaiPZz0CeD1slCw +3bOymxfM/YZMD9OYkU/zYJ3//BhwxSERRHFLXcPZhtQYpB3z7XM9u+sv04tkJBhUzNy Od9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934395; x=1769539195; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=qeRefDc4UWGe3k05tsHGAgyGgQvBhPXs0rdg1kfPac8=; b=Ss8SYkQlWMK4YFl+Re94unCO4g8bEMR2DQFXR4xVhZ7JLtBesjb/eqDPUJIuz/WQBF diqCnPVvfbs8GkCvv1h0xvBUPGj+AkU+yVolP5FeAajAK07yWx7gNGc6AAdK0QFtnDES OLESPFr+3vhJouBDWMfbu5ncNT7u55iK2aeY/p5njNwlR7iwEd6T3bX8dXzxNJJITD9L 3jCsDpqscl/AnN/2mdKsaisOZW0Xl1uHJpsdYGnn+xP4oRRYL55iQ5GWsf0yWsr+Jgnh oYCX1AW29v7exWP907iVWIi+xw41QYIO5bwGyCvXyLJttYTodfVbRBioKVJJ11oV46+T SxhA== X-Gm-Message-State: AOJu0YxhKszqIFv+P4ble5tk7X5iUjacfBTWIcmTZtSwnBL/J3YUG+9B lbFJmed4j22eLKHt2iAke3FVrU+Il2T/NHN0/0K/NA9ctUumMstdwQ1mOek5RtLOy7Wu4+z6onZ p7k6iLF0= X-Gm-Gg: AY/fxX6YPZ13LfRiFzuAtdcxk1Mjg6JrDboE4EBhI6o+Fgcz0qBle0yWozgU+4NLAMS VdRiHA1YX4miSppsLL2Q1qU7lDfGpw2LKkDqEBB0VGl6KcqonRS0iXkD5wOzlnSbxXtM8dEpi6X fiEcpW9oIvHnpvKm5INQ3eYDGJBDfpP6Mr5/4NPGm0dejATgEBKFfWy3WtK2eU0c273rSOawBOb F4v43zoqIJyQpWGLXUi7R1Wt3XpI19wu9ZSm3rpFcbm34CYMUahBJ9GxdZh7qAuqvPkcfq9vYmO qR5kh/WNuzN1HKIByBVLwYQ8j7085SK1zPhJzsPAyXBbmviFY3pUtNcUKgQKk7RLk/l+2S87z3M d4qAJfXYBkM5PreD1mYBI00pIX8qFy5p8E78R1/Ca9DnE+8raNIoU6QGhQXkX1e831UTB2qRIg+ YOsuNCQdQwe5nNNkek3rO9yHQG4XrO+cJ8J2eFufA93Xcx09Ovdf5kpf4FcIGJJYaYCVjwX0Y= X-Received: by 2002:a05:600c:8b75:b0:477:9574:d641 with SMTP id 5b1f17b1804b1-4803e7e8531mr41469055e9.22.1768934394817; Tue, 20 Jan 2026 10:39:54 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 07/29] tests/qtest/libqos: Add SMMUv3 helper library Date: Tue, 20 Jan 2026 19:38:40 +0100 Message-ID: <20260120183902.73845-8-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::32c; envelope-from=philmd@linaro.org; helo=mail-wm1-x32c.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: 1768934487143154100 From: Tao Tang Introduce qos-smmuv3, a reusable library for SMMUv3-related qtest operations. This module encapsulates common tasks like: - SMMUv3 initialization (enabling, configuring command/event queues) - Stream Table Entry (STE) and Context Descriptor (CD) setup - Multi-level page table construction (L0-L3 for 4KB granules) - Support for Stage 1, Stage 2, and nested translation modes - Could be easily extended to support multi-space testing infrastructure (Non-Secure, Secure, Root, Realm) The library provides high-level abstractions that allow test code to focus on IOMMU behavior validation rather than low-level register manipulation and page table encoding. Key features include: - Provide memory allocation for translation structures with proper alignment - Helper functions to build valid STEs/CDs for different translation scenarios - Page table walkers that handle address offset calculations per security space This infrastructure is designed to be used by iommu-testdev-based tests and future SMMUv3 test suites, reducing code duplication and improving test maintainability. Signed-off-by: Tao Tang Reviewed-by: Pierrick Bouvier Reviewed-by: Fabiano Rosas Message-ID: <20260119161112.3841386-8-tangtao1634@phytium.com.cn> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- MAINTAINERS | 1 + tests/qtest/libqos/qos-smmuv3.h | 242 ++++++++++++ tests/qtest/libqos/qos-smmuv3.c | 629 ++++++++++++++++++++++++++++++++ tests/qtest/libqos/meson.build | 1 + 4 files changed, 873 insertions(+) create mode 100644 tests/qtest/libqos/qos-smmuv3.h create mode 100644 tests/qtest/libqos/qos-smmuv3.c diff --git a/MAINTAINERS b/MAINTAINERS index cc219e39b98..dc31be033ee 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3582,6 +3582,7 @@ QTest IOMMU helpers M: Tao Tang S: Maintained F: tests/qtest/libqos/qos-iommu* +F: tests/qtest/libqos/qos-smmuv3* =20 Device Fuzzing M: Alexander Bulekov diff --git a/tests/qtest/libqos/qos-smmuv3.h b/tests/qtest/libqos/qos-smmuv= 3.h new file mode 100644 index 00000000000..4a3c43f765c --- /dev/null +++ b/tests/qtest/libqos/qos-smmuv3.h @@ -0,0 +1,242 @@ +/* + * QOS SMMUv3 Module + * + * This module provides SMMUv3-specific helper functions for libqos tests, + * encapsulating SMMUv3 setup, and assertions. + * + * Copyright (c) 2026 Phytium Technology + * + * Author: + * Tao Tang + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef QTEST_LIBQOS_SMMUV3_H +#define QTEST_LIBQOS_SMMUV3_H + +#include "hw/misc/iommu-testdev.h" + +/* + * SMMU MMIO register base for virt machine-wide SMMU. This does not + * apply to user-creatable device such as -device arm-smmuv3. + */ +#define VIRT_SMMU_BASE 0x0000000009050000ull + +/* SMMU queue and table base addresses */ +#define QSMMU_CMDQ_BASE_ADDR 0x000000000e16b000ull +#define QSMMU_EVENTQ_BASE_ADDR 0x000000000e170000ull + +/* + * Translation tables and descriptors for a mapping of + * - IOVA (Stage 1 only or nested translation stage) + * - IPA (Stage 2 only) + * to GPA. + * + * The translation is based on the Arm architecture with the following + * prerequisites: + * - Granule size: 4KB pages. + * - Page table levels: 4 levels (L0, L1, L2, L3), starting at level 0. + * - IOVA size: The walk resolves a IOVA: 0x8080604567 + * - Address space: The 4-level lookup with 4KB granules supports up to a + * 48-bit (256TB) virtual address space. Each level uses a 9-bit index + * (512 entries per table). The breakdown is: + * - L0 index: IOVA bits [47:39] + * - L1 index: IOVA bits [38:30] + * - L2 index: IOVA bits [29:21] + * - L3 index: IOVA bits [20:12] + * - Page offset: IOVA bits [11:0] + * + * NOTE: All physical addresses defined here (QSMMU_VTTB, table addresses,= etc.) + * appear to be within a secure RAM region. In practice, an offset is added + * to these values to place them in non-secure RAM. For example, when runn= ing + * in a virt machine type, the RAM base address (e.g., 0x40000000) is adde= d to + * these constants. + */ +#define QSMMU_IOVA 0x0000008080604567ull +#define QSMMU_VTTB 0x000000000e4d0000ull +#define QSMMU_STR_TAB_BASE 0x000000000e179000ull +#define QSMMU_CD_GPA (QSMMU_STR_TAB_BASE - 0x40ull) + + +#define QSMMU_L0_PTE_VAL 0x000000000e4d1000ull +#define QSMMU_L1_PTE_VAL 0x000000000e4d2000ull +#define QSMMU_L2_PTE_VAL 0x000000000e4d3000ull +#define QSMMU_L3_PTE_VAL 0x000000000ecba000ull + +#define QSMMU_NON_LEAF_PTE_MASK 0x8000000000000003ull +#define QSMMU_LEAF_PTE_RO_MASK 0x04000000000007e3ull +#define QSMMU_LEAF_PTE_RW_MASK 0x0400000000000763ull +#define QSMMU_PTE_MASK 0x0000fffffffff000ull + +/* + * Address-space base offsets for test tables. + * - Non-Secure uses a fixed offset, keeping internal layout identical. + * + * Note: Future spaces (e.g. Secure/Realm/Root) are not implemented here. + * When needed, introduce new offsets and reuse the helpers below so relat= ive + * layout stays identical across spaces. + */ +#define QSMMU_SPACE_OFFS_NS 0x0000000040000000ull + +typedef enum QSMMUSecSID { + QSMMU_SEC_SID_NONSECURE =3D 0, +} QSMMUSecSID; + +typedef enum QSMMUSpace { + QSMMU_SPACE_NONSECURE =3D 1, +} QSMMUSpace; + +typedef enum QSMMUTransMode { + QSMMU_TM_S1_ONLY =3D 0, + QSMMU_TM_S2_ONLY =3D 1, + QSMMU_TM_NESTED =3D 2, +} QSMMUTransMode; + +typedef struct QSMMUTestConfig { + QSMMUTransMode trans_mode; /* Translation mode (S1, S2, Nested)= */ + QSMMUSecSID sec_sid; /* SEC_SID of test device */ + uint64_t dma_gpa; /* GPA for readback validation */ + uint32_t dma_len; /* DMA length for testing */ + uint32_t expected_result; /* Expected DMA result for validatio= n */ +} QSMMUTestConfig; + +typedef struct QSMMUTestContext { + QTestState *qts; /* QTest state handle */ + QPCIDevice *dev; /* PCI device handle */ + QPCIBar bar; /* PCI BAR for MMIO access */ + QSMMUTestConfig config; /* Test configuration */ + uint64_t smmu_base; /* SMMU base address */ + uint32_t trans_status; /* Translation configuration status */ + uint32_t dma_result; /* DMA operation result */ + uint32_t sid; /* Stream ID for the test */ + QSMMUSpace tx_space; /* Cached transaction space */ +} QSMMUTestContext; + +/* Convert SEC_SID to corresponding Security Space */ +QSMMUSpace qsmmu_sec_sid_to_space(QSMMUSecSID sec_sid); + +/* Get base offset of the specific Security space */ +uint64_t qsmmu_space_offset(QSMMUSpace sp); + +uint32_t qsmmu_build_dma_attrs(QSMMUSpace space); + +/* + * qsmmu_setup_and_enable_translation - Complete translation setup and ena= ble + * + * @ctx: Test context containing configuration and device handles + * + * Returns: Translation status (0 =3D success, non-zero =3D error) + * + * This function performs the complete translation setup sequence: + * 1. Builds all required SMMU structures (STE, CD, page tables) + * 2. Programs SMMU registers for the appropriate security space + * 3. Returns configuration status + */ +uint32_t qsmmu_setup_and_enable_translation(QSMMUTestContext *ctx); + +/* + * qsmmu_build_translation - Build SMMU translation structures + * + * @qts: QTest state handle + * @mode: Translation mode (S1_ONLY, S2_ONLY, NESTED) + * @tx_space: Transaction security space + * @sid: Stream ID + * + * Returns: Build status (0 =3D success, non-zero =3D error) + * + * Constructs all necessary SMMU translation structures in guest memory + * using the fixed QSMMU_IOVA constant: + * - Stream Table Entry (STE) for the given SID + * - Context Descriptor (CD) if Stage 1 translation is involved + * - Complete page table hierarchy based on translation mode + * + * The structures are written to security-space-specific memory regions. + */ +uint32_t qsmmu_build_translation(QTestState *qts, QSMMUTransMode mode, + QSMMUSpace tx_space, uint32_t sid); + +/* + * qsmmu_bank_base - Get SMMU control bank base address + * + * @base: SMMU base address + * @sp: Security space + * + * Returns: Bank base address for the given security space + * + * Maps security space to the corresponding SMMU control register bank. + * Currently only Non-Secure bank is supported. + */ +uint64_t qsmmu_bank_base(uint64_t base, QSMMUSpace sp); + +/* + * qsmmu_program_bank - Program SMMU control bank registers + * + * @qts: QTest state handle + * @bank_base: SMMU bank base address + * @sp: Security space + * + * Programs a specific SMMU control bank with minimal configuration: + * - Global Bypass Attribute (GBPA) + * - Control registers (CR0, CR1) + * - Command queue (base, producer, consumer) + * - Event queue (base, producer, consumer) + * - Stream table configuration (base, format) + * + * Addresses are adjusted based on security space offset. + */ +void qsmmu_program_bank(QTestState *qts, uint64_t bank_base, QSMMUSpace sp= ); + +/* + * qsmmu_program_regs - Program all required SMMU register banks + * + * @qts: QTest state handle + * @smmu_base: SMMU base address + * @space: Target security space + * + * Programs SMMU registers for the requested security space which is calle= d in + * qsmmu_setup_and_enable_translation. Always programs Non-Secure bank fir= st, + * then the target space if different. + */ +void qsmmu_program_regs(QTestState *qts, uint64_t smmu_base, QSMMUSpace sp= ace); + +/* qsmmu_expected_dma_result - Calculate expected DMA result */ +uint32_t qsmmu_expected_dma_result(QSMMUTestContext *ctx); + +/* + * qsmmu_setup_translation_tables - Setup complete SMMU page table hierarc= hy + * + * @qts: QTest state handle + * @iova: Input Virtual Address or IPA to translate + * @space: Security space (NONSECURE, SECURE, REALM, ROOT) + * @is_cd: Whether translating CD address (vs regular IOVA) + * @mode: Translation mode (S1_ONLY, S2_ONLY, NESTED) + * + * This function builds the complete page table structure for translating + * the given IOVA through the SMMU. The structure varies based on mode: + * + * - S1_ONLY: Single Stage 1 walk (IOVA -> PA) + * - S2_ONLY: Single Stage 2 walk (IPA -> PA) + * - NESTED: Stage 1 walk (IOVA -> IPA) with nested S2 walks for each + * S1 table access, plus final S2 walk for the result IPA + * + * For nested mode, this creates a complex hierarchy: + * - 4 Stage 1 levels (L0-L3), each requiring a 4-level Stage 2 walk + * - 1 final Stage 2 walk for the resulting IPA + * + * The function writes all necessary Page Table Entries (PTEs) to guest + * memory using qtest_writeq(), setting up the complete translation path + * that the SMMU hardware will traverse during DMA operations. + */ +void qsmmu_setup_translation_tables(QTestState *qts, + uint64_t iova, + QSMMUSpace space, + bool is_cd, + QSMMUTransMode mode); + +/* High-level test execution helpers */ +void qsmmu_run_translation_case(QTestState *qts, QPCIDevice *dev, + QPCIBar bar, uint64_t smmu_base, + const QSMMUTestConfig *cfg); + +#endif /* QTEST_LIBQOS_SMMUV3_H */ diff --git a/tests/qtest/libqos/qos-smmuv3.c b/tests/qtest/libqos/qos-smmuv= 3.c new file mode 100644 index 00000000000..710a04d98da --- /dev/null +++ b/tests/qtest/libqos/qos-smmuv3.c @@ -0,0 +1,629 @@ +/* + * QOS SMMUv3 Module + * + * This module provides SMMUv3-specific helper functions for libqos tests, + * encapsulating SMMUv3 setup, and assertions. + * + * Copyright (c) 2026 Phytium Technology + * + * Author: + * Tao Tang + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "hw/arm/smmuv3-common.h" +#include "tests/qtest/libqos/pci.h" +#include "qos-iommu-testdev.h" +#include "qos-smmuv3.h" + +#define QSMMU_STE_S2T0SZ_VAL 0x14 + +/* Apply space offset to address */ +static inline uint64_t qsmmu_apply_space_offs(QSMMUSpace sp, + uint64_t address) +{ + return address + qsmmu_space_offset(sp); +} + +uint32_t qsmmu_expected_dma_result(QSMMUTestContext *ctx) +{ + /* Currently only non-secure space is supported. */ + if (ctx->tx_space !=3D QSMMU_SPACE_NONSECURE) { + return ITD_DMA_ERR_TX_FAIL; + } + return ctx->config.expected_result; +} + +uint32_t qsmmu_build_dma_attrs(QSMMUSpace space) +{ + uint32_t attrs =3D 0; + switch (space) { + case QSMMU_SPACE_NONSECURE: + /* Non-secure: secure=3D0, space=3D1, space_valid=3D1 */ + attrs =3D ITD_ATTRS_SET_SECURE(attrs, 0); + attrs =3D ITD_ATTRS_SET_SPACE(attrs, QSMMU_SPACE_NONSECURE); + attrs =3D ITD_ATTRS_SET_SPACE_VALID(attrs, 1); + break; + default: + g_assert_not_reached(); + } + + return attrs; +} + +uint32_t qsmmu_setup_and_enable_translation(QSMMUTestContext *ctx) +{ + uint32_t build_result; + + /* Build page tables and SMMU structures first */ + build_result =3D qsmmu_build_translation( + ctx->qts, ctx->config.trans_mode, + ctx->tx_space, ctx->sid); + if (build_result !=3D 0) { + g_test_message("Build failed: mode=3D%u sid=3D%u status=3D0x%x", + ctx->config.trans_mode, ctx->sid, build_result); + ctx->trans_status =3D build_result; + return ctx->trans_status; + } + + /* Program SMMU registers for the appropriate security space */ + qsmmu_program_regs(ctx->qts, ctx->smmu_base, ctx->tx_space); + + ctx->trans_status =3D 0; + return ctx->trans_status; +} + +static bool qsmmu_validate_test_result(QSMMUTestContext *ctx) +{ + uint32_t expected =3D qsmmu_expected_dma_result(ctx); + g_test_message("-> Validating result: expected=3D0x%x actual=3D0x%x", + expected, ctx->dma_result); + return (ctx->dma_result =3D=3D expected); +} + +QSMMUSpace qsmmu_sec_sid_to_space(QSMMUSecSID sec_sid) +{ + switch (sec_sid) { + case QSMMU_SEC_SID_NONSECURE: + return QSMMU_SPACE_NONSECURE; + default: + g_assert_not_reached(); + } +} + +uint64_t qsmmu_space_offset(QSMMUSpace sp) +{ + switch (sp) { + case QSMMU_SPACE_NONSECURE: + return QSMMU_SPACE_OFFS_NS; + default: + g_assert_not_reached(); + } +} + +static uint32_t qsmmu_single_translation_setup(void *opaque) +{ + return qsmmu_setup_and_enable_translation(opaque); +} + +static uint32_t qsmmu_single_translation_attrs(void *opaque) +{ + QSMMUTestContext *ctx =3D opaque; + + return qsmmu_build_dma_attrs(ctx->tx_space); +} + +static bool qsmmu_single_translation_validate(void *opaque) +{ + return qsmmu_validate_test_result(opaque); +} + +static void qsmmu_single_translation_report(void *opaque, + uint32_t dma_result) +{ + QSMMUTestContext *ctx =3D opaque; + + if (dma_result !=3D 0) { + g_test_message("DMA failed: mode=3D%u result=3D0x%x", + ctx->config.trans_mode, dma_result); + } else { + g_test_message("-> DMA succeeded: mode=3D%u", + ctx->config.trans_mode); + } +} + +void qsmmu_run_translation_case(QTestState *qts, QPCIDevice *dev, + QPCIBar bar, uint64_t smmu_base, + const QSMMUTestConfig *cfg) +{ + QSMMUTestContext ctx =3D { + .qts =3D qts, + .dev =3D dev, + .bar =3D bar, + .smmu_base =3D smmu_base, + .config =3D *cfg, + .sid =3D dev->devfn, + .tx_space =3D qsmmu_sec_sid_to_space(cfg->sec_sid), + }; + + QOSIOMMUTestdevDmaCfg dma =3D { + .dev =3D dev, + .bar =3D bar, + .iova =3D QSMMU_IOVA, + .gpa =3D ctx.config.dma_gpa, + .len =3D ctx.config.dma_len, + }; + + qtest_memset(qts, cfg->dma_gpa, 0x00, cfg->dma_len); + qos_iommu_testdev_single_translation(&dma, &ctx, + qsmmu_single_translation_setup, + qsmmu_single_translation_attrs, + qsmmu_single_translation_validate, + qsmmu_single_translation_report, + &ctx.dma_result); + + if (ctx.dma_result =3D=3D 0 && ctx.config.expected_result =3D=3D 0) { + g_autofree uint8_t *buf =3D NULL; + + buf =3D g_malloc(ctx.config.dma_len); + qtest_memread(ctx.qts, ctx.config.dma_gpa, buf, ctx.config.dma_len= ); + + for (int i =3D 0; i < ctx.config.dma_len; i++) { + uint8_t expected; + + expected =3D (ITD_DMA_WRITE_VAL >> ((i % 4) * 8)) & 0xff; + g_assert_cmpuint(buf[i], =3D=3D, expected); + } + } +} + +uint32_t qsmmu_build_translation(QTestState *qts, QSMMUTransMode mode, + QSMMUSpace tx_space, uint32_t sid) +{ + uint64_t ste_addr, ste_addr_real, cd_addr_real; + uint64_t cd_ttb, vttb, vttb_real; + uint8_t nscfg0, nscfg1; + QSMMUSpace build_space; + size_t ste_cd_entry_bytes =3D sizeof(STE); + STE ste; + CD cd; + + build_space =3D tx_space; + if (build_space !=3D QSMMU_SPACE_NONSECURE) { + return 0xdeadbeafu; + } + + /* Build STE image */ + memset(&ste, 0, sizeof(ste)); + switch (mode) { + case QSMMU_TM_S1_ONLY: + STE_SET_CONFIG(&ste, 0x5); + break; + case QSMMU_TM_S2_ONLY: + STE_SET_CONFIG(&ste, 0x6); + break; + case QSMMU_TM_NESTED: + default: + STE_SET_CONFIG(&ste, 0x7); + break; + } + + STE_SET_VALID(&ste, 1); + STE_SET_S2T0SZ(&ste, QSMMU_STE_S2T0SZ_VAL); + STE_SET_S2SL0(&ste, 0x2); + STE_SET_S2TG(&ste, 0); + STE_SET_S2PS(&ste, 0x5); + STE_SET_S2AA64(&ste, 1); + STE_SET_S2ENDI(&ste, 0); + STE_SET_S2AFFD(&ste, 0); + + /* + * The consistent policy also extends to pointer fetches. For cases th= at + * require reading STE.S1ContextPtr or STE.S2TTB, we still follow the = same + * policy: + * - The PA space security attribute of the address pointed to + * (e.g., the CD or S2L1 table) must also match the input 'SEC_SID'. + */ + cd_addr_real =3D qsmmu_apply_space_offs(build_space, QSMMU_CD_GPA); + STE_SET_CTXPTR(&ste, cd_addr_real); + + vttb =3D QSMMU_VTTB; + vttb_real =3D qsmmu_apply_space_offs(build_space, vttb); + STE_SET_S2TTB(&ste, vttb_real); + + ste_addr =3D sid * ste_cd_entry_bytes + QSMMU_STR_TAB_BASE; + ste_addr_real =3D qsmmu_apply_space_offs(build_space, ste_addr); + + /* Write STE to memory */ + for (int i =3D 0; i < ARRAY_SIZE(ste.word); i++) { + qtest_writel(qts, ste_addr_real + i * 4, ste.word[i]); + } + + switch (tx_space) { + case QSMMU_SPACE_NONSECURE: + nscfg0 =3D 0x1; + nscfg1 =3D 0x1; + break; + default: + g_assert_not_reached(); + } + /* Build CD image for S1 path if needed */ + if (mode !=3D QSMMU_TM_S2_ONLY) { + memset(&cd, 0, sizeof(cd)); + + CD_SET_ASID(&cd, 0x1e20); + CD_SET_AARCH64(&cd, 1); + CD_SET_VALID(&cd, 1); + CD_SET_A(&cd, 1); + CD_SET_S(&cd, 0); + CD_SET_HD(&cd, 0); + CD_SET_HA(&cd, 0); + CD_SET_IPS(&cd, 0x4); + CD_SET_TBI(&cd, 0x0); + CD_SET_AFFD(&cd, 0x0); + CD_SET_EPD(&cd, 0, 0x0); + CD_SET_EPD(&cd, 1, 0x1); + CD_SET_TSZ(&cd, 0, 0x10); + CD_SET_TG(&cd, 0, 0x0); + CD_SET_ENDI(&cd, 0x0); + + CD_SET_NSCFG(&cd, 0, nscfg0); + CD_SET_NSCFG(&cd, 1, nscfg1); + CD_SET_R(&cd, 0x1); + cd_ttb =3D vttb_real; + CD_SET_TTB(&cd, 0, cd_ttb); + + for (int i =3D 0; i < ARRAY_SIZE(cd.word); i++) { + /* TODO: Maybe need more work to write to secure RAM in future= */ + qtest_writel(qts, cd_addr_real + i * 4, cd.word[i]); + g_assert_cmpint(qtest_readl(qts, cd_addr_real + i * 4), =3D=3D, + cd.word[i]); + } + } + + qsmmu_setup_translation_tables(qts, QSMMU_IOVA, build_space, + false, mode); + /* Nested extras: CD S2 tables */ + if (mode =3D=3D QSMMU_TM_NESTED) { + /* + * Extra Stage 2 page tables is needed if + * SMMUTranslationClass =3D=3D SMMU_CLASS_CD + * as smmuv3_do_translate would translate an IPA of the CD to the = final + * output CD after a Stage 2 translation. + */ + qsmmu_setup_translation_tables(qts, cd_addr_real, build_space, + true, mode); + } + + return 0; +} + +uint64_t qsmmu_bank_base(uint64_t base, QSMMUSpace sp) +{ + switch (sp) { + case QSMMU_SPACE_NONSECURE: + return base; + default: + g_assert_not_reached(); + } +} + +void qsmmu_program_bank(QTestState *qts, uint64_t bank_base, QSMMUSpace sp) +{ + uint64_t cmdq_base, eventq_base, strtab_base; + + qtest_writel(qts, bank_base + A_GBPA, 0x80000000); /* UPDATE */ + qtest_writel(qts, bank_base + A_CR0, 0x0); /* Disable */ + qtest_writel(qts, bank_base + A_CR1, 0x0d75); /* Config */ + + /* CMDQ_BASE: add address-space offset*/ + cmdq_base =3D qsmmu_apply_space_offs(sp, QSMMU_CMDQ_BASE_ADDR); + cmdq_base |=3D 0x0a; /* Size and valid bits */ + qtest_writeq(qts, bank_base + A_CMDQ_BASE, cmdq_base); + + qtest_writel(qts, bank_base + A_CMDQ_CONS, 0x0); + qtest_writel(qts, bank_base + A_CMDQ_PROD, 0x0); + + /* EVENTQ_BASE: add address-space offset */ + eventq_base =3D qsmmu_apply_space_offs(sp, QSMMU_EVENTQ_BASE_ADDR); + eventq_base |=3D 0x0a; /* Size and valid bits */ + qtest_writeq(qts, bank_base + A_EVENTQ_BASE, eventq_base); + + qtest_writel(qts, bank_base + A_EVENTQ_PROD, 0x0); + qtest_writel(qts, bank_base + A_EVENTQ_CONS, 0x0); + + /* STRTAB_BASE_CFG: linear stream table, LOG2SIZE=3D5 */ + qtest_writel(qts, bank_base + A_STRTAB_BASE_CFG, 0x5); + + /* STRTAB_BASE: add address-space offset */ + strtab_base =3D qsmmu_apply_space_offs(sp, QSMMU_STR_TAB_BASE); + qtest_writeq(qts, bank_base + A_STRTAB_BASE, strtab_base); + + /* CR0: Enable SMMU with appropriate flags */ + qtest_writel(qts, bank_base + A_CR0, 0xd); +} + +void qsmmu_program_regs(QTestState *qts, uint64_t smmu_base, QSMMUSpace sp= ace) +{ + uint64_t sp_base; + /* Always program Non-Secure bank first */ + uint64_t ns_base =3D qsmmu_bank_base(smmu_base, QSMMU_SPACE_NONSECURE); + qsmmu_program_bank(qts, ns_base, QSMMU_SPACE_NONSECURE); + + /* Program the requested space if different from Non-Secure */ + sp_base =3D qsmmu_bank_base(smmu_base, space); + if (sp_base !=3D ns_base) { + qsmmu_program_bank(qts, sp_base, space); + } +} + +static uint32_t qsmmu_get_table_index(uint64_t addr, int level) +{ + switch (level) { + case 0: + return (addr >> 39) & 0x1ff; + case 1: + return (addr >> 30) & 0x1ff; + case 2: + return (addr >> 21) & 0x1ff; + case 3: + return (addr >> 12) & 0x1ff; + default: + g_assert_not_reached(); + } +} + +static uint64_t qsmmu_get_table_addr(uint64_t base, int level, uint64_t io= va) +{ + uint32_t index =3D qsmmu_get_table_index(iova, level); + return (base & QSMMU_PTE_MASK) + (index * 8); +} + +/* + * qsmmu_get_pte_attrs - Calculate the S1 leaf PTE value + * + * IOMMU need to set different attributes for PTEs based on the translatio= n mode + */ +static uint64_t qsmmu_get_pte_attrs(QSMMUTransMode mode, bool is_leaf, + QSMMUSpace space) +{ + uint64_t rw_mask =3D QSMMU_LEAF_PTE_RW_MASK; + uint64_t ro_mask =3D QSMMU_LEAF_PTE_RO_MASK; + uint64_t non_leaf_mask =3D QSMMU_NON_LEAF_PTE_MASK; + + switch (space) { + case QSMMU_SPACE_NONSECURE: + break; + default: + g_assert_not_reached(); + } + + if (!is_leaf) { + return non_leaf_mask; + } + + /* For leaf PTE */ + if (mode =3D=3D QSMMU_TM_NESTED || mode =3D=3D QSMMU_TM_S1_ONLY) { + return rw_mask; + } + + return ro_mask; +} + +/* + * qsmmu_setup_s2_walk_for_ipa - Setup Stage 2 page table walk for an IPA + * + * @qts: QTest state handle + * @space: Security space + * @ipa: Intermediate Physical Address to translate + * @s2_vttb: Stage 2 VTTB (page table base) + * @mode: Translation mode + * @is_final: Whether this is the final S2 walk (not nested within S1) + * + * Calculates and writes a 4-level Stage 2 page table walk for the given I= PA. + * This function dynamically generates and writes all page table entries + * (L0-L3) to guest memory based on the input IPA and configuration. + */ +static void qsmmu_setup_s2_walk_for_ipa(QTestState *qts, + QSMMUSpace space, + uint64_t ipa, + uint64_t s2_vttb, + QSMMUTransMode mode, + bool is_final) +{ + uint64_t all_s2_l0_pte_val; + uint64_t all_s2_l1_pte_val; + uint64_t all_s2_l2_pte_val; + uint64_t all_s2_l3_pte_val; + uint64_t s2_l0_addr, s2_l1_addr, s2_l2_addr, s2_l3_addr; + + /* Shared intermediate PTE values for all S2 walks */ + all_s2_l0_pte_val =3D qsmmu_apply_space_offs( + space, QSMMU_L0_PTE_VAL | qsmmu_get_pte_attrs(mode, false, space)); + all_s2_l1_pte_val =3D qsmmu_apply_space_offs( + space, QSMMU_L1_PTE_VAL | qsmmu_get_pte_attrs(mode, false, space)); + all_s2_l2_pte_val =3D qsmmu_apply_space_offs( + space, QSMMU_L2_PTE_VAL | qsmmu_get_pte_attrs(mode, false, space)); + + /* Stage 2 Level 0 */ + s2_l0_addr =3D qsmmu_get_table_addr(s2_vttb, 0, ipa); + qtest_writeq(qts, s2_l0_addr, all_s2_l0_pte_val); + + /* Stage 2 Level 1 */ + s2_l1_addr =3D qsmmu_get_table_addr(all_s2_l0_pte_val, 1, ipa); + qtest_writeq(qts, s2_l1_addr, all_s2_l1_pte_val); + + /* Stage 2 Level 2 */ + s2_l2_addr =3D qsmmu_get_table_addr(all_s2_l1_pte_val, 2, ipa); + qtest_writeq(qts, s2_l2_addr, all_s2_l2_pte_val); + + /* Stage 2 Level 3 (leaf) */ + s2_l3_addr =3D qsmmu_get_table_addr(all_s2_l2_pte_val, 3, ipa); + + /* + * Stage 2 L3 PTE attributes depend on the context: + * - For nested S1 table address translations (!is_final): + * Use LEAF attrs (0x763) because these PTEs map S1 table pages dire= ctly + * - For final S2 walk (is_final): + * Use TABLE attrs (0x7e3) for the final IPA=E2=86=92PA mapping + */ + if (!is_final) { + all_s2_l3_pte_val =3D + (ipa & QSMMU_PTE_MASK) | + qsmmu_get_pte_attrs(QSMMU_TM_NESTED, true, space); + } else { + all_s2_l3_pte_val =3D + (ipa & QSMMU_PTE_MASK) | + qsmmu_get_pte_attrs(QSMMU_TM_S2_ONLY, true, space); + } + + qtest_writeq(qts, s2_l3_addr, all_s2_l3_pte_val); +} + +/* + * qsmmu_setup_s1_level_with_nested_s2 - Setup S1 level with nested S2 walk + * + * @qts: QTest state handle + * @space: Security space + * @s1_level: Stage 1 level (0-3) + * @s1_pte_addr: Stage 1 PTE address (as IPA) + * @s1_pte_val: Stage 1 PTE value to write + * @s2_vttb: Stage 2 VTTB for nested translation + * @mode: Translation mode + * + * For nested translation, each S1 table access requires a full S2 walk + * to translate the S1 table's IPA to PA. This function performs the nested + * S2 walk and writes the S1 PTE value to guest memory. + */ +static void qsmmu_setup_s1_level_with_nested_s2(QTestState *qts, + QSMMUSpace space, + int s1_level, + uint64_t s1_pte_addr, + uint64_t s1_pte_val, + uint64_t s2_vttb, + QSMMUTransMode mode) +{ + /* + * Perform nested S2 walk to translate S1 table IPA to PA. + * This is always needed for S1_ONLY/S2_ONLY/NESTED modes because: + * - S1_ONLY: Needs S2 tables for "IPA as PA" mapping (for testing) + * - S2_ONLY: Needs S2 tables for direct translation + * - NESTED: Needs S2 tables for nested translation + */ + qsmmu_setup_s2_walk_for_ipa(qts, space, s1_pte_addr, + s2_vttb, mode, false); + + /* Write the S1 PTE value */ + qtest_writeq(qts, s1_pte_addr, s1_pte_val); +} + +/* + * qsmmu_setup_translation_tables - Setup SMMU translation tables + * + * The 'SEC_SID' represents the input security state of the device/transac= tion, + * whether it's a static Secure state or a dynamically-switched Realm stat= e. + * SEC_SID has been converted to the corresponding Security Space (QSMMUSp= ace) + * before calling this function. + * + * In a real SMMU translation, this input security state does not unilater= ally + * determine the output Physical Address (PA) space. The output PA space is + * ultimately determined by attributes encountered during the page table w= alk, + * such as NSCFG and NSTable. + * + * However, for the specific context of testing the SMMU with the iommu-te= stdev, + * and to simplify the future support for Secure and Realm states, we adop= t a + * consistent policy: + * + * - We always ensure that the page table attributes (e.g., nscfg, nstable) + * *match* the input 'SEC_SID' of the test case. + * + * For example: If 'SEC_SID' is Non-Secure, the corresponding nscfg and ns= table + * attributes in the translation tables will always be set to 1. + * + */ +void qsmmu_setup_translation_tables(QTestState *qts, + uint64_t iova, + QSMMUSpace space, + bool is_cd, + QSMMUTransMode mode) +{ + uint64_t all_s2_l0_pte_val, all_s2_l1_pte_val, all_s2_l2_pte_val; + uint64_t s1_vttb, s2_vttb, s1_leaf_pte_val; + uint64_t l0_addr, l1_addr, l2_addr, l3_addr; + + g_test_message("Begin of construction: IOVA=3D0x%" PRIx64 + " mode=3D%d is_building_CD=3D%s =3D=3D=3D", + iova, mode, is_cd ? "yes" : "no"); + + /* Initialize shared S2 PTE values used across all walks */ + all_s2_l0_pte_val =3D qsmmu_apply_space_offs( + space, QSMMU_L0_PTE_VAL | qsmmu_get_pte_attrs(mode, false, space)); + all_s2_l1_pte_val =3D qsmmu_apply_space_offs( + space, QSMMU_L1_PTE_VAL | qsmmu_get_pte_attrs(mode, false, space)); + all_s2_l2_pte_val =3D qsmmu_apply_space_offs( + space, QSMMU_L2_PTE_VAL | qsmmu_get_pte_attrs(mode, false, space)); + + /* Both S1 and S2 share the same VTTB base */ + s1_vttb =3D qsmmu_apply_space_offs(space, QSMMU_VTTB & QSMMU_PTE_MASK); + s2_vttb =3D s1_vttb; + + if (!is_cd) { + /* + * Setup Stage 1 page tables with nested Stage 2 walks. + * For each S1 level (L0-L3), we need to: + * 1. Calculate S1 PTE address (as IPA) + * 2. Perform nested S2 walk to translate that IPA to PA + * 3. Write the S1 PTE value + */ + + /* Stage 1 Level 0 */ + l0_addr =3D qsmmu_get_table_addr(s1_vttb, 0, iova); + qsmmu_setup_s1_level_with_nested_s2(qts, space, 0, l0_addr, + all_s2_l0_pte_val, s2_vttb, mo= de); + + /* Stage 1 Level 1 */ + l1_addr =3D qsmmu_get_table_addr(all_s2_l0_pte_val & QSMMU_PTE_MAS= K, + 1, iova); + qsmmu_setup_s1_level_with_nested_s2(qts, space, 1, l1_addr, + all_s2_l1_pte_val, s2_vttb, mo= de); + + /* Stage 1 Level 2 */ + l2_addr =3D qsmmu_get_table_addr(all_s2_l1_pte_val & QSMMU_PTE_MAS= K, + 2, iova); + qsmmu_setup_s1_level_with_nested_s2(qts, space, 2, l2_addr, + all_s2_l2_pte_val, s2_vttb, mo= de); + + /* Stage 1 Level 3 (leaf) */ + l3_addr =3D qsmmu_get_table_addr(all_s2_l2_pte_val & QSMMU_PTE_MAS= K, + 3, iova); + + s1_leaf_pte_val =3D qsmmu_apply_space_offs( + space, QSMMU_L3_PTE_VAL | qsmmu_get_pte_attrs(mode, true, spac= e) + ); + + qsmmu_setup_s1_level_with_nested_s2(qts, space, 3, l3_addr, + s1_leaf_pte_val, s2_vttb, mode= ); + } else { + /* + * For CD address translation, we start directly with the IPA. + */ + s1_leaf_pte_val =3D iova | qsmmu_get_pte_attrs(QSMMU_TM_NESTED, + false, space); + } + + /* + * Final Stage 2 walk: Translate the result from Stage 1. + * - For S1_ONLY: This is skipped in hardware but we set it up for tes= ting + * - For S2_ONLY: This is the only walk + * - For NESTED: This translates the IPA from S1 to final PA + * - For CD address (is_cd=3Dtrue): This is a table address, use !is_f= inal + */ + qsmmu_setup_s2_walk_for_ipa(qts, space, s1_leaf_pte_val, s2_vttb, + mode, !is_cd); + + /* Calculate and log final translated PA */ + g_test_message("End of construction: PA=3D0x%llx =3D=3D=3D", + (s1_leaf_pte_val & QSMMU_PTE_MASK) + (iova & 0xfff)); +} diff --git a/tests/qtest/libqos/meson.build b/tests/qtest/libqos/meson.build index 9805d63a290..b4daec808fe 100644 --- a/tests/qtest/libqos/meson.build +++ b/tests/qtest/libqos/meson.build @@ -63,6 +63,7 @@ libqos_srcs =3D files( =20 # SMMU: 'qos-iommu-testdev.c', + 'qos-smmuv3.c', ) =20 if have_virtfs --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934480; cv=none; d=zohomail.com; s=zohoarc; b=fKGkzkvWJLSlxy/wWTSlbcx2jCr7W5YYemzxxzqXjb4D7lCjo3ITf9xX217PJfYnPicZAPjUyW+zPYVz4l3/2jhAEMCiIAkZ2C3ehDQlQgEO1LY3DnN1bHWj5QelfXBeJ8/2SirV3eOx+6s77fXh8OQs2MVDjUcFQK/lJANomeM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934480; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=e4gxd66dOh4tOv5D7U9La3ZeijNhZLZnwQsS37ikc3o=; b=KgXBq4V+JUzdrb6ee+Q4jZEC6FDUM0N/AxXNDb5giaio0uunQ6CiqXucBgax1S/339i9EAASDwPHryqXaNE/CzDn2GWsK+wZm1GNHI+whkgZq4YEBAE1DVmG2DfxA1cuKJ2A/VI/d3Ltjqy/RYJ5QjLkTrlj3V4nsAz6aiadqLQ= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934480583737.208984279518; Tue, 20 Jan 2026 10:41:20 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGeV-00010S-2a; Tue, 20 Jan 2026 13:40:31 -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 ) id 1viGe5-0008Q0-W4 for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:40:07 -0500 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGe4-0006Ce-1R for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:40:05 -0500 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-432d28870ddso3192175f8f.3 for ; Tue, 20 Jan 2026 10:40:03 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4356997e6dasm31427885f8f.32.2026.01.20.10.40.00 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:40:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934402; x=1769539202; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=e4gxd66dOh4tOv5D7U9La3ZeijNhZLZnwQsS37ikc3o=; b=dwNicf36zHvi2jUwatO9z1LV89WTBQOOgQ9/eBTsGkD8cPtehR/CqFU3Vtq/NH63G/ SLdgY614gQ4fHLYyTb5lNR0utPzpycmJKNKTTqucAlPGgE5aXX4hiA6xvybA8XjMUAah NKCszB2mDxfOKPQWbwuJH9bjdhmmwYB+PDWp38vLwL+dbgnF5qYbrpqKnSxxfuEaLHrP UnbQP6HlwGkjUErOQMLAciAt1US2bOADBVRdl1VbeuGEu44+gMbR1CSK+WF0mOdcnJqh DqGBKtXT6lqltZT5ebPmZ/KwJl9gdI5TeNLXzhHxKdLfjoDwRkz8rKQCQOfYhHd3RYWq q4uQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934402; x=1769539202; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=e4gxd66dOh4tOv5D7U9La3ZeijNhZLZnwQsS37ikc3o=; b=v3i2QiXvT331VG2TrXbZZ7FAl8UcxWDA0nvpgGuTcHDTpRxtkYEOjluSkDG+XA4vIr SoBtVgGzsuVALTOdtVcqKvrBSGkQnbCEXqMNxmgLkYr8wqV4gCHY5OK1DcKUtUYEuD1g 7JRpAd48EKerIjwL+AdlpxvafIUt9jWN3fUh4eSJfW7LQNUon44bBbJUrb88Pj9O8IYn npOR3tBhADkyNU77mn7ZL3X23i7V6rAbbHQ/XREhCtIU0pCjGQ3aoK8jCuUYBwB4bZ5P bnnR8STcuT9qXkjus32xY65Ua5mavz7pwNQvpRjLEz4GpeFYB5wvlr+aRrnv5+mRl2L7 Ah1g== X-Gm-Message-State: AOJu0Yz+LUMOaGVNnCYNtnRTOtFPkA30SJBKyWnyElv1eAj4mny28a04 a/KBbBRFWkXvN+9tQHL5rcYB3kpigI6ddVbQ1ltiVsSP57ESF5nK8EWn5DzA7LQmx9m1GRrRpxX LbW7jK6c= X-Gm-Gg: AZuq6aI72lQSMdcRZDSE4sfW9GTFaGi/hrZZPa/rfv5C/QXF/jvqrudxJoTKT2yQj/x aeF1sRhcpjoEb9Z/VwVCbyA/rkB0TqaSNfZ6hng/34NZoQoD9rPcL+FnqGDoiTs3j2uC6pDxOCg dVW5n4pgqhO9EdHHGeUx4Phuj42+Y7PUxetZCUzAks95bECj9THMCEiwQCZFbk6uJh+bZmGesRZ VIQbx2cCZAKrAkQkzCkPT55ypJ+BlSFf9PcNqbIbaDIa5ncQ31iPgkVcE4OwaaKPoJ0zMGnEVGT 56wyBDOXbjnSCXkvwbBYaMV6ZEC9o0664ydwDv4FLDIw0R+Lmcn/tjdZVtwMxRCTL2KkYjL9iMd wIen9R+6/CTPK9nS56UOKGvxmlQBKbtxCYn9orveJOd8VRuX2Rb4rYSE8ZibP02fQTHAWjvoaIB AQncW+u7R6JR7SF+m66qRb1UgVE9a2PexpDDCFsEdCJbonKlR8N0fsx35dFJVf X-Received: by 2002:a05:6000:2910:b0:42f:b0ab:7b48 with SMTP id ffacd0b85a97d-43569979c52mr19861251f8f.1.1768934402016; Tue, 20 Jan 2026 10:40:02 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 08/29] tests/qtest: Add SMMUv3 bare-metal test using iommu-testdev Date: Tue, 20 Jan 2026 19:38:41 +0100 Message-ID: <20260120183902.73845-9-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::430; envelope-from=philmd@linaro.org; helo=mail-wr1-x430.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: 1768934482959158500 From: Tao Tang Add a qtest suite that validates ARM SMMUv3 translation without guest firmware or OS. The tests leverage iommu-testdev to trigger DMA operations and the qos-smmuv3 library to configure IOMMU translation structures. This test suite targets the virt machine and covers: - Stage 1 only translation (VA -> PA via CD page tables) - Stage 2 only translation (IPA -> PA via STE S2 tables) - Nested translation (VA -> IPA -> PA, Stage 1 + Stage 2) - Design to extended to support multiple security spaces (Non-Secure, Secure, Root, Realm) Each test case follows this sequence: 1. Initialize SMMUv3 with appropriate command/event queues 2. Build translation tables (STE/CD/PTE) for the target scenario 3. Configure iommu-testdev with IOVA and DMA attributes via MMIO 4. Trigger DMA and validate successful translation 5. Verify data integrity through a deterministic write-read pattern This bare-metal approach provides deterministic IOMMU testing with minimal dependencies, making failures directly attributable to the SMMU translation path. Signed-off-by: Tao Tang Tested-by: Pierrick Bouvier Reviewed-by: Pierrick Bouvier Message-ID: <20260119161112.3841386-9-tangtao1634@phytium.com.cn> [PMD: Cover tests/qtest/iommu-smmuv3-test.c in MAINTAINERS] Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- MAINTAINERS | 1 + tests/qtest/iommu-smmuv3-test.c | 132 ++++++++++++++++++++++++++++++++ tests/qtest/meson.build | 3 + 3 files changed, 136 insertions(+) create mode 100644 tests/qtest/iommu-smmuv3-test.c diff --git a/MAINTAINERS b/MAINTAINERS index dc31be033ee..1fd495ddd51 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -222,6 +222,7 @@ S: Maintained F: hw/arm/smmu* F: include/hw/arm/smmu* F: tests/functional/aarch64/test_smmu.py +F: tests/qtest/iommu-smmuv3-test.c =20 AVR TCG CPUs M: Michael Rolnik diff --git a/tests/qtest/iommu-smmuv3-test.c b/tests/qtest/iommu-smmuv3-tes= t.c new file mode 100644 index 00000000000..cced49a9b69 --- /dev/null +++ b/tests/qtest/iommu-smmuv3-test.c @@ -0,0 +1,132 @@ +/* + * QTest for SMMUv3 with iommu-testdev + * + * This QTest file is used to test the SMMUv3 with iommu-testdev so that w= e can + * test SMMUv3 without any guest kernel or firmware. + * + * Copyright (c) 2026 Phytium Technology + * + * Author: + * Tao Tang + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "libqtest.h" +#include "libqos/pci.h" +#include "libqos/generic-pcihost.h" +#include "hw/pci/pci_regs.h" +#include "hw/misc/iommu-testdev.h" +#include "libqos/qos-smmuv3.h" + +#define DMA_LEN 4 + +static uint64_t smmuv3_expected_gpa(uint64_t iova) +{ + return qsmmu_space_offset(QSMMU_SPACE_NONSECURE) + + QSMMU_L3_PTE_VAL + (iova & 0xfff); +} + +static void save_fn(QPCIDevice *dev, int devfn, void *data) +{ + QPCIDevice **pdev =3D (QPCIDevice **) data; + + *pdev =3D dev; +} + +static QPCIDevice *setup_qtest_pci_device(QTestState *qts, QGenericPCIBus = *gbus, + QPCIBar *bar) +{ + QPCIDevice *dev =3D NULL; + + qpci_init_generic(gbus, qts, NULL, false); + + qpci_device_foreach(&gbus->bus, IOMMU_TESTDEV_VENDOR_ID, + IOMMU_TESTDEV_DEVICE_ID, save_fn, &dev); + g_assert(dev); + + qpci_device_enable(dev); + *bar =3D qpci_iomap(dev, 0, NULL); + g_assert_false(bar->is_io); + + return dev; +} + +static void run_smmuv3_translation(const QSMMUTestConfig *cfg) +{ + QTestState *qts; + QGenericPCIBus gbus; + QPCIDevice *dev; + QPCIBar bar; + + if (!qtest_has_machine("virt")) { + g_test_skip("virt machine not available"); + return; + } + + /* Initialize QEMU environment for SMMU testing */ + qts =3D qtest_init("-machine virt,acpi=3Doff,gic-version=3D3,iommu=3Ds= mmuv3 " + "-smp 1 -m 512 -cpu max -net none " + "-device iommu-testdev"); + + /* Setup and configure PCI device */ + dev =3D setup_qtest_pci_device(qts, &gbus, &bar); + g_assert(dev); + + g_test_message("### SMMUv3 translation mode=3D%d sec_sid=3D%d ###", + cfg->trans_mode, cfg->sec_sid); + qsmmu_run_translation_case(qts, dev, bar, VIRT_SMMU_BASE, cfg); + qtest_quit(qts); +} + +static void test_smmuv3_ns_s1_only(void) +{ + QSMMUTestConfig cfg =3D { + .trans_mode =3D QSMMU_TM_S1_ONLY, + .sec_sid =3D QSMMU_SEC_SID_NONSECURE, + .dma_gpa =3D smmuv3_expected_gpa(QSMMU_IOVA), + .dma_len =3D DMA_LEN, + .expected_result =3D 0, + }; + + run_smmuv3_translation(&cfg); +} + +static void test_smmuv3_ns_s2_only(void) +{ + QSMMUTestConfig cfg =3D { + .trans_mode =3D QSMMU_TM_S2_ONLY, + .sec_sid =3D QSMMU_SEC_SID_NONSECURE, + .dma_gpa =3D smmuv3_expected_gpa(QSMMU_IOVA), + .dma_len =3D DMA_LEN, + .expected_result =3D 0, + }; + + run_smmuv3_translation(&cfg); +} + +static void test_smmuv3_ns_nested(void) +{ + QSMMUTestConfig cfg =3D { + .trans_mode =3D QSMMU_TM_NESTED, + .sec_sid =3D QSMMU_SEC_SID_NONSECURE, + .dma_gpa =3D smmuv3_expected_gpa(QSMMU_IOVA), + .dma_len =3D DMA_LEN, + .expected_result =3D 0, + }; + + run_smmuv3_translation(&cfg); +} + +int main(int argc, char **argv) +{ + g_test_init(&argc, &argv, NULL); + qtest_add_func("/iommu-testdev/translation/ns-s1-only", + test_smmuv3_ns_s1_only); + qtest_add_func("/iommu-testdev/translation/ns-s2-only", + test_smmuv3_ns_s2_only); + qtest_add_func("/iommu-testdev/translation/ns-nested", + test_smmuv3_ns_nested); + return g_test_run(); +} diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index 0f053fb56de..a8b09d065f9 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -264,6 +264,9 @@ qtests_aarch64 =3D \ config_all_devices.has_key('CONFIG_TPM_TIS_I2C') ? ['tpm-tis-i2c-test']= : []) + \ (config_all_devices.has_key('CONFIG_ASPEED_SOC') ? qtests_aspeed64 : [])= + \ (config_all_devices.has_key('CONFIG_NPCM8XX') ? qtests_npcm8xx : []) + \ + (config_all_devices.has_key('CONFIG_IOMMU_TESTDEV') and + config_all_devices.has_key('CONFIG_ARM_VIRT') ? + ['iommu-smmuv3-test'] : []) + \ qtests_cxl + = \ ['arm-cpu-features', 'numa-test', --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934453; cv=none; d=zohomail.com; s=zohoarc; b=DAxIxKlLWQBcgtfYBF6yfQnqntAUU8/RYQDlmidnPQFEYuTf5eqFdtA/e9BXKoGjoHZYumqsQ2uei7Rg1tlTLSxgrJ4eoyGML43byxfSNN18lB2K0hufLvd9ehIQ9UVwbzBUkJbApYrC82uW4l3jfceLByRPl732y72mNn38H6Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934453; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=rHYnLcWqPL3nm1YZeMaij1EJHr7gqZmxOOXoEH5DQLI=; b=Uyt7+OQC/tFloIUVbfBClEV0devhq4iL3l0ZpEalSffa5ZHYDfu6H+GDvrtQ9S/MS0yDHvOPIkAf+MbryHqiFhZr0NxYPtbYrm7lornhiiYRYPt9zeCVySEgkbgO3bsNCPq6/gU1AgpA7DMdY0ZrEq3sm3Z/GSvqhgU8qFiEUEY= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176893445341269.08952714498025; Tue, 20 Jan 2026 10:40:53 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGeR-0000fo-Cm; Tue, 20 Jan 2026 13:40:27 -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 ) id 1viGeC-00007H-3O for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:40:13 -0500 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGeA-0006HS-Kq for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:40:11 -0500 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-432d2c7a8b9so4902985f8f.2 for ; Tue, 20 Jan 2026 10:40:10 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4356996cf58sm31461782f8f.22.2026.01.20.10.40.07 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:40:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934409; x=1769539209; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=rHYnLcWqPL3nm1YZeMaij1EJHr7gqZmxOOXoEH5DQLI=; b=I5tmBOtNEhmAAOV567C3m/mmdSOwb8t+yvpoWHLYL4arFZ4HA5bOvN41qMsV8gejA1 VhINS73Mg7OQ+dWlxkiF+iWCZ5dQa2j1ityv9DdMrR6x/V6aOD7gxbGzz2rHt0cy9jMA 6TSE/wo69l9e67eJFm0PGlJArFzNXsJeQmmSzBYHFUV0otI1q+H44X4usEyeHynweSGT 2aoPut0WguYaa5LJL2FepLxi7cSw4rXcepL+FPLLcgIEuesn39/MZ/R1i2/cQHVSyUmn d4mncG+ECLjvCC0Wa4KUnnbyvK0lKnrqSurk39Pzbb6HLnicWKnZ+uBra2Fayrjq9z3I p4Eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934409; x=1769539209; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=rHYnLcWqPL3nm1YZeMaij1EJHr7gqZmxOOXoEH5DQLI=; b=JKEmBXBtt+twgZpgthHkhbBmPwWHd4OGcsFupaa8CmjFxo97ktHZEf88equ0cqa689 aqP2DZw1YXDNMPUyVX6hzlOAuzOUJkf2IOCTC+hp0cLvlbO345ZsMYKpCIVygSMpFTJ9 dzhEIM2UuwI+3RNL8NYvpG5YwDihRSv3DEucFjwU8yu4Shdb9BWPtvu80h9UuI8jyCPL BKdZ/hWurGS8rv4S8IEjhvGwF+TL56T2CHdv8yosxh/iwGh4T+RywPvH9sepBNpeNFLt Fp1cCtwdb1V+N/YVJcY72yvzvW/a3pfO7I16vtbQPgigfljTOopZPiFePvl8ZxYzMdIJ 2FXA== X-Gm-Message-State: AOJu0Yx1ket7sewbCcq1DlcTOy+J7eL/rgGYas6Q0b9gGm7nSszCBXfY CzO9plhSZNzPiFcTRaeov8leq876b7gvGl63f7OH0K3o5t/TpuHsfWrM3X5y1mI7x7N+6ICdpRF QdJvSHjQ= X-Gm-Gg: AZuq6aJZ4WeBonNGddpKSvSv8ft542eP+5eH25ulgJfa6MUUS6ZfBylNRckjE/u2KtA NZEyeHCC/1dl4Ousfxj/BqRRaWoZt5GEC+2kzGeb4LrCLvc/8gW0iOjToOCKbSSJ9RTcmq4C4uk UWfB67o4202wcvF/4Q0/usW/MgJFlVJ13oyBtjmOJHnNCHqWyfpLED3QI/CkhUzZ4dYiF+Xg2if uuh1xmKm1Hlw6TZG7h/RnTK61fk5GdhBGLWu0dv6c2YmJ5KO876JHT3wqw8fjB9vxyFEwNzQo3B wA0zWYSPuh4I9vWAuKtr+hc2IihpgzgCcZdvF6kDhxNPQMFo4rhlT9FmjSfkD6KSvr4/v02LbEP 6AqQey66+sqMQ02/OvO8TDiEWsyohgFPL77ayMfS4g+++bgYtusEFGO67iGjdgoiXjVqwyPIWQb LN3EDT9g+7bj6/EdfrDOg5ovqSfjA5zM4sVOWbkfGUIJLRQRK9ELDcYsy85Yzi X-Received: by 2002:a05:6000:2002:b0:435:930a:658e with SMTP id ffacd0b85a97d-435930a65c8mr4482016f8f.53.1768934408646; Tue, 20 Jan 2026 10:40:08 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 09/29] hw/sd/sdhci: Fix TYPE_IMX_USDHC to implement sd-spec-version 3 by default Date: Tue, 20 Jan 2026 19:38:42 +0100 Message-ID: <20260120183902.73845-10-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::42f; envelope-from=philmd@linaro.org; helo=mail-wr1-x42f.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: 1768934454814158500 From: Bernhard Beschow Fixes TYPE_FSL_IMX6UL, TYPE_FSL_IMX7, and TYPE_FSL_IMX8MP to implement version 3 of the SD specification. Note that TYPE_FSL_IMX6 already had "sd-spec-version" set accordingly and that TYPE_FSL_IMX25 correctly sets the same property to version 2 since the real hardware is an eSDHC which is the uSDHC's predecessor. Fixes: fd1e5c817964 ("sdhci: Add i.MX specific subtype of SDHCI") cc: qemu-stable Signed-off-by: Bernhard Beschow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: BALATON Zoltan Message-ID: <20260112145418.220506-2-shentey@gmail.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sdhci.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 9146e0cde06..23d8f7cbc8d 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1884,9 +1884,11 @@ static const MemoryRegionOps usdhc_mmio_ops =3D { static void imx_usdhc_init(Object *obj) { SDHCIState *s =3D SYSBUS_SDHCI(obj); + DeviceState *dev =3D DEVICE(obj); =20 s->io_ops =3D &usdhc_mmio_ops; s->quirks =3D SDHCI_QUIRK_NO_BUSY_IRQ; + qdev_prop_set_uint8(dev, "sd-spec-version", 3); } =20 /* --- qdev Samsung s3c --- */ --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934639; cv=none; d=zohomail.com; s=zohoarc; b=hIh+uDkzmoXfnlpghAHT2iLQ+w9+VjkRrkUzse/qIgkSL7o1dwMg3mP0oqIBxbOVtb0975+Pn0ZxjG1fcfaywPei6u7JRg5Rsmsb/3TTs5xkyLT4iq9HsSpF7JORcYEvSlW/AiP1E8qlzIcvdqA01konBH5/DYGLjIoqKdnWlDE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934639; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=9H+ku3kicwpTVsDL+ymVANL2vQb8RdWLt/npWzFJonM=; b=AaU4YtbpTP0c7AXIq5w5ELUx8fBVwGRGeP9YIjGsVrlmMZRLSz4BoUuy49EIucJGOGkWbKbfWyJNaQ7fMo+f+iShhcQEah+BCZHSuaI1S1TZVFq5ckwmpO+VCJfdvJIM88Ici5o0l3ScdnzTlBEnaeAhTx7jYgAIAo0gtrIX4GY= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934639250629.4658138215883; Tue, 20 Jan 2026 10:43:59 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGeV-00013Q-JY; Tue, 20 Jan 2026 13:40:31 -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 ) id 1viGeL-0000Ju-4R for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:40:23 -0500 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGeJ-0006Id-JP for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:40:20 -0500 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-4327555464cso3010241f8f.1 for ; Tue, 20 Jan 2026 10:40:17 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43595609c8asm2869271f8f.34.2026.01.20.10.40.14 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:40:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934416; x=1769539216; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=9H+ku3kicwpTVsDL+ymVANL2vQb8RdWLt/npWzFJonM=; b=WxiobAT7k2bfLR9wGulSeQHUvsqUXvY+vW2IFQWPE6Og2zn8pxMsyBdn4F8AArE1RC yG/xEOxuWOFwB054cCVrb3V3zJ+Q65y2YaD33GGG7Wx8xkLXKcIx66CpKi8/VuzlgNvQ 8W6qfSlrYuKLqxJXfZbKEsHQ7hj5tW7o97e/QLjM6tJE4KhpOJAXukfmtL4RXRlFGsuV g/7ADaFU7z3nO/s4aVVBDs9vaO4qGowRlimR+RTXIDDKlTy2+Pgj6I4btkyF9m1mTPuC ZQ2mcPlkSb+kj9zINIz3WZP16GbI/vzhst8qOfQS+SRAEGzLu5v+DUh6Ll1x5OPGJbQ2 TEew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934416; x=1769539216; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=9H+ku3kicwpTVsDL+ymVANL2vQb8RdWLt/npWzFJonM=; b=jiXiEgRIA2xtwd70n6plp0wlZP70Fgcpir4MC7SVqyBKWeqgWNXuXNRl+5bpEseyXq wGvdmXxBvKUtKM4Lzvp3kz8HJUObYx4mN8Ay0X1HeypSOobnReHrG7MnfOMC1gG5HdPq m2rVsj130Tv6p+SgtAuCc5F0Vu23tT3xMJQCu1zMRAXclH9/xDR3x005Dk5nudN4aCFC jAJ4JwssLoUQ8yePrjH2BWbyqX4Wagt0M2zh91Qld+Re3dZgmKssa7OGOnZ/MqrSX66d oYvLvZFucglLaMLYZQl+3BNWEEzA7AkUC6PNSLpViXNmpmMQPJ2L7DCzB/lNs/5CZEpJ Wm0g== X-Gm-Message-State: AOJu0Yz0Xd++2h5/f3Rtt5s/tn5JD/Lnvnsu7giv5dq31bSHlAsHU+jq 0OOnzo99AEY5UI/RN2rqS2ZhT1Fz8zpu5bkqXouAe6hjyAsSn8iH1Qi+OWSbld3eXUbRpyW+QCj hVvZjPJU= X-Gm-Gg: AZuq6aKUXbI09oaPlAnFW27+Dm5o4Y0ToxTzPO47QGOWonO0WD3szXtrr9K2XGGwP/J BT50+GQEYMFXjlXaRxl/DyvIoQjMnz4CJH3Yd5BsWWMM/bw7LNwGIr8tcSFXUHFggu/PbOO46Lo fLTiiaUjCNY8yjxS+bMMCkhmYp2AvuiqseBY6fhKsg10pZ7/oCP76+sCnIWdIfZvJ/BZu34V6Kf Alwo+Vw2ZQXceSoCfz/B7b35EMIirLW9WY2X7IZJ/1bucTR5EsuXc/DzJt0YgOWD072HBbxihIW k5ayfMN+eOghktxtzQbFlnFyf30yGuERn2aGHv5NmB58wsb+rrrmR+aB3EmY2kP2jjlxVE4zAIq 73fzM7RRNIkk9KOQMA/RL5wVeUH3+7AGV1VP4V7mx6ILN+QbkeP2fLWh2708rbI3DKRSZJXk86W E3L+3NUugZsDOBt9GTjaToxbYsXCVGxOaYWlUmoGNb/aJqnL/m3vGB7t7dDtnc X-Received: by 2002:a05:6000:40c9:b0:432:851d:35ef with SMTP id ffacd0b85a97d-4359017478bmr4363207f8f.42.1768934415417; Tue, 20 Jan 2026 10:40:15 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 10/29] hw/arm/fsl-imx6: Remove now redundant setting of "sd-spec-version" property Date: Tue, 20 Jan 2026 19:38:43 +0100 Message-ID: <20260120183902.73845-11-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::42d; envelope-from=philmd@linaro.org; helo=mail-wr1-x42d.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: 1768934641196154100 From: Bernhard Beschow Now that TYPE_IMX_USDHC sets this property internally it is not needed on the SoC level any longer. Signed-off-by: Bernhard Beschow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: BALATON Zoltan Message-ID: <20260112145418.220506-3-shentey@gmail.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/arm/fsl-imx6.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c index f3aa1d81501..46967b74882 100644 --- a/hw/arm/fsl-imx6.c +++ b/hw/arm/fsl-imx6.c @@ -323,8 +323,6 @@ static void fsl_imx6_realize(DeviceState *dev, Error **= errp) }; =20 /* UHS-I SDIO3.0 SDR104 1.8V ADMA */ - object_property_set_uint(OBJECT(&s->esdhc[i]), "sd-spec-version", = 3, - &error_abort); object_property_set_uint(OBJECT(&s->esdhc[i]), "capareg", IMX6_ESDHC_CAPABILITIES, &error_abort); if (!sysbus_realize(SYS_BUS_DEVICE(&s->esdhc[i]), errp)) { --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934590; cv=none; d=zohomail.com; s=zohoarc; b=DEEHMDD7Bk6RGOM89BlTVnXu1Epem8trBvFBT9eTn13bNuC7SjjhE5RI+lczCB1jqftYrK6gFHavfJ1avrWHZndfedpm5kNkbr/DwaxUt4mG/ILcbjXGA9f97YLj2lhynG1rKYnj8nrV56lnDWavzzOT/3AY37iNRl1F5L9zteI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934590; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=HMrUqacCaGVauSVeco7pmqIAM/xQRkgygcSUJ7ApSQw=; b=f4PFO5HNczanH2akp57szDe0Oy9Z7OgBo5ESsAFgSG9JKYH51UWBlsaQXGi0eTCIHVs8+LLwktkXdyC9Jes0rRKu2jAPx6ufXgRM+d6Q4GvsDBtcBGkQ+2MG5R5BjxHkJfL3RYxyMU+P1dpkHlVUjeAaNWYNuxQZwlH44qWaJ4I= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934590283606.3249110267918; Tue, 20 Jan 2026 10:43:10 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGeX-0001Bp-BJ; Tue, 20 Jan 2026 13:40:33 -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 ) id 1viGeQ-0000cm-RD for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:40:26 -0500 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGeO-0006Je-JO for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:40:26 -0500 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-47ee07570deso40114365e9.1 for ; Tue, 20 Jan 2026 10:40:24 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4801e8795f1sm262937425e9.6.2026.01.20.10.40.21 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:40:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934423; x=1769539223; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=HMrUqacCaGVauSVeco7pmqIAM/xQRkgygcSUJ7ApSQw=; b=YguxEK1/BliAkuf5SQNyLI1yltJKRrP6VmwDXUYWly8zoGMCEn0AQRJmo6KjFhZrKN 8YSVyRlI+RHu6Itz0aHzAHdQQ96w3lso+q3KzVAbHHApvBo5Kccfe4E09RbkRNK5M+jI hgXfhTkToN/B0XVyS8/iPsTJNKGc4eSJfj7WMLAFeLH9tmgixhQ2QFaIugegIWKx1fmL Mnm40ZlLGT4iaRb7vCX1rRi/42Uix65BF5ZHvUsteWBFvqXTIt9dZB6q2mLRS8x+Z59s MpoY3bypGisufQf+NhgdIB9U612XQY1pPZY4w15CrWftuXQ1KfzrpBZPTbEOwYRQ9X4D qXCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934423; x=1769539223; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=HMrUqacCaGVauSVeco7pmqIAM/xQRkgygcSUJ7ApSQw=; b=XLM2Qu7DFpzEii18d1/MemhvTdLJXNw0Q7+cQ7VfjqnhxgwX97l6lgSFS34ynIu9gv dL2+fD++/FcGG9MkklXzOg8byN9VuuLI8TKFBE3GLJougxGKFGnNoAI7hl4gM2EkvAqm CzseRexbAL2diX1rMajB26ofDkqyHmZ1CTUHut2VTsoAlEtHWjkiBoGhSMwUu2tem3nN BdMv6m4bV3GevqwdZWjKpjIMTznf5gsHWM4zoLSVuyKLFdXHODC/ezBDSVKLG9O3UIHt mYred5fYIcFh6HITXByigmWoXqI9z0Yjpj77khwXto5WVyq9/DX9Ydx2KOH7vP2Le6oy B/UA== X-Gm-Message-State: AOJu0YwX+YaZZ5viBjwr8XcHIjo8FJxFOXF++U45OxKu3dmc1sA7BTGL kYezFABMzPHSHK93pYiUFvq0J4Uo/i7XKxlbo2+Wz0kPj3KxKAyFzEN8eTZPhxoakPTbMcXJfoQ A4zwmOM4= X-Gm-Gg: AY/fxX6NGn41mLmraB3diiXEzzeWcspF+Qb181EEwktZWcygGzGT63CUPqdOEkqPvi7 R2E7VLXTdW0vIOlpDsFbQUlweS9ouJv6L9pPaQydT7Tr5f00xFBMqtI+8GDiXE1o2psRnk9G0tX yFTKgI3amvuDgJc+ALeUj4lQIJPzMNPFFCz7sS+hQDUn5D71qNxzHttN/tLnAoe3b1ubqZ77+YE SI9ucFXmP7nPWuDxkuCiQLgZonxR4uwNLeNkePEXqTLD9fF622LdJDFeP+C8gf9Oqhtm5soF77a n8DGqGcEdvnKdmFUgN1d8+GLygq/Cit0ZFhMCWFeXeKeyQS5e1lqBUo1b4wVNtp5w+bAlQHlzjM yJ7BMziWPZL+4sK6JPthzEeHzBGBfpapU/jBw64rQ19N5Nq7qqpp3t9ND1RFn/VDZOKC8DnDP+6 6ahQFzRKtQdb2sbCJdJj9oYDUwv9u0gjMx++92jJExuL4ADDzgDcUjiBcE2EClgmIw0qXdAHg= X-Received: by 2002:a05:600c:811a:b0:477:63db:c718 with SMTP id 5b1f17b1804b1-4801ead0fd1mr178347785e9.16.1768934422521; Tue, 20 Jan 2026 10:40:22 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 11/29] hw/arm/fsl-imx6: Fix naming of SDHCI related constants and attributes Date: Tue, 20 Jan 2026 19:38:44 +0100 Message-ID: <20260120183902.73845-12-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::329; envelope-from=philmd@linaro.org; helo=mail-wm1-x329.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: 1768934592469154100 From: Bernhard Beschow The i.MX 6 SoC features uSDHC controllers which are the successors of eSDHC. Fix the naming to make this clear. Fixes: ec46eaa83a3c ("i.MX: Add i.MX6 SOC implementation.") Signed-off-by: Bernhard Beschow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: BALATON Zoltan Message-ID: <20260112145418.220506-4-shentey@gmail.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/arm/fsl-imx6.h | 4 ++-- hw/arm/fsl-imx6.c | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/hw/arm/fsl-imx6.h b/include/hw/arm/fsl-imx6.h index 5520473ba0b..bb866994dff 100644 --- a/include/hw/arm/fsl-imx6.h +++ b/include/hw/arm/fsl-imx6.h @@ -46,7 +46,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(FslIMX6State, FSL_IMX6) #define FSL_IMX6_NUM_EPITS 2 #define FSL_IMX6_NUM_I2CS 3 #define FSL_IMX6_NUM_GPIOS 7 -#define FSL_IMX6_NUM_ESDHCS 4 +#define FSL_IMX6_NUM_USDHCS 4 #define FSL_IMX6_NUM_ECSPIS 5 #define FSL_IMX6_NUM_WDTS 2 #define FSL_IMX6_NUM_USB_PHYS 2 @@ -67,7 +67,7 @@ struct FslIMX6State { IMXEPITState epit[FSL_IMX6_NUM_EPITS]; IMXI2CState i2c[FSL_IMX6_NUM_I2CS]; IMXGPIOState gpio[FSL_IMX6_NUM_GPIOS]; - SDHCIState esdhc[FSL_IMX6_NUM_ESDHCS]; + SDHCIState usdhc[FSL_IMX6_NUM_USDHCS]; IMXSPIState spi[FSL_IMX6_NUM_ECSPIS]; IMX2WdtState wdt[FSL_IMX6_NUM_WDTS]; IMXUSBPHYState usbphy[FSL_IMX6_NUM_USB_PHYS]; diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c index 46967b74882..39667c4a49a 100644 --- a/hw/arm/fsl-imx6.c +++ b/hw/arm/fsl-imx6.c @@ -79,9 +79,9 @@ static void fsl_imx6_init(Object *obj) object_initialize_child(obj, name, &s->gpio[i], TYPE_IMX_GPIO); } =20 - for (i =3D 0; i < FSL_IMX6_NUM_ESDHCS; i++) { + for (i =3D 0; i < FSL_IMX6_NUM_USDHCS; i++) { snprintf(name, NAME_SIZE, "sdhc%d", i + 1); - object_initialize_child(obj, name, &s->esdhc[i], TYPE_IMX_USDHC); + object_initialize_child(obj, name, &s->usdhc[i], TYPE_IMX_USDHC); } =20 for (i =3D 0; i < FSL_IMX6_NUM_USB_PHYS; i++) { @@ -311,11 +311,11 @@ static void fsl_imx6_realize(DeviceState *dev, Error = **errp) } =20 /* Initialize all SDHC */ - for (i =3D 0; i < FSL_IMX6_NUM_ESDHCS; i++) { + for (i =3D 0; i < FSL_IMX6_NUM_USDHCS; i++) { static const struct { hwaddr addr; unsigned int irq; - } esdhc_table[FSL_IMX6_NUM_ESDHCS] =3D { + } esdhc_table[FSL_IMX6_NUM_USDHCS] =3D { { FSL_IMX6_uSDHC1_ADDR, FSL_IMX6_uSDHC1_IRQ }, { FSL_IMX6_uSDHC2_ADDR, FSL_IMX6_uSDHC2_IRQ }, { FSL_IMX6_uSDHC3_ADDR, FSL_IMX6_uSDHC3_IRQ }, @@ -323,13 +323,13 @@ static void fsl_imx6_realize(DeviceState *dev, Error = **errp) }; =20 /* UHS-I SDIO3.0 SDR104 1.8V ADMA */ - object_property_set_uint(OBJECT(&s->esdhc[i]), "capareg", + object_property_set_uint(OBJECT(&s->usdhc[i]), "capareg", IMX6_ESDHC_CAPABILITIES, &error_abort); - if (!sysbus_realize(SYS_BUS_DEVICE(&s->esdhc[i]), errp)) { + if (!sysbus_realize(SYS_BUS_DEVICE(&s->usdhc[i]), errp)) { return; } - sysbus_mmio_map(SYS_BUS_DEVICE(&s->esdhc[i]), 0, esdhc_table[i].ad= dr); - sysbus_connect_irq(SYS_BUS_DEVICE(&s->esdhc[i]), 0, + sysbus_mmio_map(SYS_BUS_DEVICE(&s->usdhc[i]), 0, esdhc_table[i].ad= dr); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->usdhc[i]), 0, qdev_get_gpio_in(gic, esdhc_table[i].irq)); } =20 --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934476; cv=none; d=zohomail.com; s=zohoarc; b=XZomLIyuxnm+Mgxn34KmOE7hRjlhIZr4QtQskOYIvExmR3A930NAoFh18DP1XCqnjWo5t8191r8wBTIWQLCzzdHBGKmelx3aiIMQ0lbHpIXIUnPJb90xY4e7F2Ef4nK8OSOBmpoCkCN8rM0IVBaNMDjIx2ZsCE0FpwYwGllpsfM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934476; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=WO00u8QI4LjWu8ts3L8aVvr3TmdkCu7ktpRhzvlacGU=; b=jIdB7SS1ukZLZYE4zORdDQwiut8yn9uj6JaQI2l4qOHJH9v8gfv2aLBfp41g11/kCbSRik6T0j1ZAF2Bgn7t4oZg7v1ySkyhWWD0p0/YBu9BlynFYATavTYqBnUhEyKVTMU6HmM7pSbIL9t/wNJdddYcDSKrXWOuQhUO0+2Ys04= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934476083516.8383828051186; Tue, 20 Jan 2026 10:41:16 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGeY-0001HW-G7; Tue, 20 Jan 2026 13:40:34 -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 ) id 1viGeX-0001CD-Bb for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:40:33 -0500 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGeV-0006KW-Ol for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:40:33 -0500 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-47eddddcdcfso28318515e9.1 for ; Tue, 20 Jan 2026 10:40:31 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4801e8d90b3sm264908825e9.15.2026.01.20.10.40.28 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:40:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934429; x=1769539229; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=WO00u8QI4LjWu8ts3L8aVvr3TmdkCu7ktpRhzvlacGU=; b=loIa0i1y+iYBrqftXvExlMrAMXxmCXeuJRf3+vJptUNnN3IHU2CMKNhoPKl2pjhzQH 4S77yCdC5Bxl9TW8OSW2CYMzX5MupPlSEqb2X+Kd0DTB1EMqwuuKh7GlnAnV6PHt7BUf KpshVR+1TwRK8LPf9PDmxtY0nG2PB/XVrvkANSNl5rhNCPl/dVqArn1n7XWG7+p5PK6n BVicdfH9ipahLjgIeTv0+XAbjVHBH4f+gQAjqJvfhRqHz98jafgPTBl7a/cSBw9nCrsE RZ/lwJommRSO6E21qV++RrGNgT1J3hh3SrXFiVTcOVPZaZjQcqccQ9S/tGi5mo4mPWpl EzAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934429; x=1769539229; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=WO00u8QI4LjWu8ts3L8aVvr3TmdkCu7ktpRhzvlacGU=; b=uK6A3+4Vi+LMUUHXQfcaQA67hbdG3hoZNNw2iJqhO7D68P3lJ1EF26obUyaUosGak6 ugCkG5Kof76t6bpM9aAbY34yYybmu+OczxGhQbsnMB4jUxgNIn2prj7Fi2jQ+2pEqMBz elCv9JuAu2PFqDVfJuYJuRVX/cCyEyT6gwbbXZBuAdAVDLwOPG94EWwVpsfpRkGu9gQm pcUpQRvoKc/mAscrHRTn9G+Mh//JjQBZh2kI15etod6PxcU5+N/CN9jxmZRsR/Wx4QJF MeIEMOBOAJGhCCoir3Tv+ixXfQwxHDdK/F4/4jk8yV1NLk4YxzR6E4Jd8DIrkQPZEE7b NLKw== X-Gm-Message-State: AOJu0YyJ5wOhrbWVS3VDGNaJpScY7wHnAeibP7NytAATMVK7jBomEbN4 YY21tapStnXMLQ9ltsfm3hHHn57hoQfgtZOtgPwxRXfZioaDnlZiXy7Y3CbB1ZQsva0jqjcpScF 9yGG6N4I= X-Gm-Gg: AY/fxX4lftTJJ+GlHp1RrNzxAMW/cXlLSPcg6iw36OjT0RsLSLM26WPk5YZxVLyT3Sg FMnWh0jN4DHm1E8d1IopLDG1MXaAqaVLQeHqES7nF+hM6Ir7mhAHzA74KCo7bcGo5s+Uza0nGwn Cun+wYFoaL4AxVBGwZRB2My0P2d4e72l2s6St+qCpXZCmDBJTRhDXtxGhUglL07xpg9W0KTidnK TGFvEQVtgfBRDnZQxD+VYPaimqaGpk4iLliITei/05USsgFVsUAzPvV1+N5hspnUtl8h5g46imU ckcBW7I37LQTibHMgc3NCN44COK2RLh8Vt+wFUZCJgvIh8WqjiWt0bO+UhV5PQ5yaInsz7h5BeQ 2taZxmBgPK60RjaqAmjK4XKZKlxD1zJYEku7JeQcB7851qJvmXQxJp//2cqpMonBu9cXD60/75t 4GE6PyD3QzfUYdA1MjFHnHwTh6k2GFQOscGsxHSyNtQDd6v9/meVAQoUIzcJdbDZ4ycr53rTw= X-Received: by 2002:a05:600c:8b82:b0:480:1b65:b744 with SMTP id 5b1f17b1804b1-4801eb0e10emr197899725e9.28.1768934429562; Tue, 20 Jan 2026 10:40:29 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 12/29] hw/arm/fsl-imx25: Apply missing reset quirk Date: Tue, 20 Jan 2026 19:38:45 +0100 Message-ID: <20260120183902.73845-13-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::32f; envelope-from=philmd@linaro.org; helo=mail-wm1-x32f.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: 1768934478806154100 From: Bernhard Beschow Just like the Freescale MPC8569E SoC the i.MX25 features an eSDHC but as little-endian variant. According to the datasheet TYPE_FSL_IMX25 requires the same reset quirk as the e500 machines. The quirk was introduced in d060b2789f71 ("hw/sd/sdhci: Set reset value of interrupt registers") for the e500 machines, so reuse it now in TYPE_FSL_IMX25. Signed-off-by: Bernhard Beschow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: BALATON Zoltan Message-ID: <20260112145418.220506-5-shentey@gmail.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/arm/fsl-imx25.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c index dd670827ff7..9e02063533c 100644 --- a/hw/arm/fsl-imx25.c +++ b/hw/arm/fsl-imx25.c @@ -243,6 +243,8 @@ static void fsl_imx25_realize(DeviceState *dev, Error *= *errp) &error_abort); object_property_set_uint(OBJECT(&s->esdhc[i]), "capareg", IMX25_ESDHC_CAPABILITIES, &error_abort); + object_property_set_uint(OBJECT(&s->esdhc[i]), "vendor", + SDHCI_VENDOR_FSL, &error_abort); if (!sysbus_realize(SYS_BUS_DEVICE(&s->esdhc[i]), errp)) { return; } --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934495; cv=none; d=zohomail.com; s=zohoarc; b=DIF4qAiylA3Nz+UUjPPnZl3mWRFHvjbJ/tsOwWi7hL6bQyepk6r4+BJVy7fADs/bvlr1KGNaHCVttM+nj0hmClgJvW5E4GvfKUSx0u0MXOfIydFSiizTplxaliO518W3rNJwSM+s0FAWab2PKWFOCPhmR3E/OVQ94t30a3VTzXc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934495; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=g2CdOzO4uzMuyL3eUd9Xq4lX5VlpfqF563IVR0wUOKc=; b=NFfsjyP8TRlFYNjfXasCBtZL8PhQAqT9bZ2fnm4DURMBJSm+SZjm5HLD7/Ps2Z9BdSnsZzQZcG/mcEIa6/OTBRzNlr74eMo+/i/V7zZ3AhEPAYhM9jvWl4MmuchpV6cW00vmOjCWqHrcuk/1uYhp2q6BDjKYT3FiymXe3yTd/GE= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934495962182.6488272761743; Tue, 20 Jan 2026 10:41:35 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGf0-0001rm-KH; Tue, 20 Jan 2026 13:41:02 -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 ) id 1viGef-0001aJ-1N for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:40:42 -0500 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGec-0006L6-7K for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:40:39 -0500 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-43596062728so79635f8f.1 for ; Tue, 20 Jan 2026 10:40:37 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4356997e6dasm31430283f8f.32.2026.01.20.10.40.35 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:40:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934436; x=1769539236; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=g2CdOzO4uzMuyL3eUd9Xq4lX5VlpfqF563IVR0wUOKc=; b=lRw8RMRtX73qGmiqzipqTRqiUaP1040I3S7WintEseBY+t+twHDvmgiHRnfljXLyeW pomnMRGXZrSGBSELNFpiTGIafs/pRh+bru/hgjpUb8kS81FHHCkSz9sVFoGrMGax+PZc xtLU+FwGbI0B27JoeDln1AP/nlUsxQtHvRDiESHyhhY6K/7a9ChqyDr03Pi4+xzmWSM5 ZFsAtxUE6vmsUMHC13eW0yU0NeqrflETit0DF1qI/IQ58oklsRd57v7fAJYGAUWjE13k N7F191Y5RRWiDFxVUr8hHckEYSYNY9orETbdjnsPKReWNVMsgqK2UJZJB0sYUlpWpbbZ /VZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934436; x=1769539236; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=g2CdOzO4uzMuyL3eUd9Xq4lX5VlpfqF563IVR0wUOKc=; b=F5Xih8dJJtIh/SB1HMh/WmuT6FMRMPGs7MUbq7GDtN2oErneAug5zUPz4Rqo9HfTco kjiNDMYj/3frIOKRzlcqaElCq+YFd9BIMRCIr0aGHMuQ/Q/wW4a62hyHBmCZlnVBBS84 GnJeSpPP7YUphnQ31Mzz0b1JQQOsRHlXuoyeszpUYCitBxY4q/UCr2KIx1859TsB4J8X zeTBYSzhiBWCV5HhRB51FFTxlYhbOm74aeSH2gf0ftruLAZyTAu0HJ1v627OtoNK7Yy7 1F/kZgLSy8wwVuw0b2o7jwIU4lroHwEfOZv/ShaVMsJfoMzvFkxXqtXjdff5v8GF5nLn Uc9Q== X-Gm-Message-State: AOJu0YydPs49Bq+t+E2P/lEsdS35VxE7Lfr6JdBo2v1fjRKycMbWW/Fi rHZmN8arJZEYk3LASlP9A1JXU9obBbQJsoxGE00usocavIqvcmBi2Fu7ZsLF/YVJe7m6xzpXqLQ yw4muNKk= X-Gm-Gg: AZuq6aI3JsuiZ40rxIEgOdBwwponPJSpypvbloX81EM8sx15TVgLsVtBRXBLQcCV1nw r/3fe8gcR+nGQq4V9PFFqqkgtsttCj/HQ3vNISFIkBAfxZoqHEKw3pP54fNHyk+KwhExmddX/2f 0SK7hEm6vP3EJTnLC/ZtlPAHwgzWXY2OkqB3Jxuj7kP5bSixnWLiz9m5wRKS0eckwFLtmbmcukH He+rFVuybTd19Esm9ZzH8VfKPlYcsCE7S1cQlC+/TE56hPFg9DmgVig/lRQzVyxmCx7PjdbTwuL wXHgbqgvcDwKd3CIy35xXxcL6j/batoDHkKsUgBsCWyRCOSCfdpwkZCh71CwwvAVDzLfTP7/uFJ 8RtRfTqtLPAzhGd+7JTn2aV/i2v/A+klh6tqJVOfRjR2bUHzRIw21jaKyLdwGV2+izJ8ciEP1TX bxHyLKAHNXSfmp45TYFG7n57qPrNlelXv8tjPKny7w8L8I9njjuVA4to2wSvBY X-Received: by 2002:a5d:588c:0:b0:432:c0b8:ee42 with SMTP id ffacd0b85a97d-434d7553187mr30023517f8f.11.1768934436253; Tue, 20 Jan 2026 10:40:36 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 13/29] Revert "hw/sd/sdhci: Rename ESDHC_* defines to USDHC_*" Date: Tue, 20 Jan 2026 19:38:46 +0100 Message-ID: <20260120183902.73845-14-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::430; envelope-from=philmd@linaro.org; helo=mail-wr1-x430.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: 1768934499229154100 From: Bernhard Beschow This reverts commit 1e76667f7adf48c6c3596aaa26b8886b57b8498d. Unaware that the constants were named after Linux and U-Boot code, commit 1e76667f7adf ("hw/sd/sdhci: Rename ESDHC_* defines to USDHC_*") changed the naming to be consistent with the function names. Fix the constant naming to be consistent with Linux and U-Boot again. In the next step, the function names will be renamed according to Linux and U-Boot code as well. Signed-off-by: Bernhard Beschow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: BALATON Zoltan Message-ID: <20260112145418.220506-6-shentey@gmail.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sdhci.c | 66 +++++++++++++++++++++++++-------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 23d8f7cbc8d..ccdfc59af85 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1639,24 +1639,24 @@ static void sdhci_bus_class_init(ObjectClass *klass= , const void *data) =20 /* --- qdev i.MX eSDHC --- */ =20 -#define USDHC_MIX_CTRL 0x48 +#define ESDHC_MIX_CTRL 0x48 =20 -#define USDHC_VENDOR_SPEC 0xc0 -#define USDHC_IMX_FRC_SDCLK_ON (1 << 8) +#define ESDHC_VENDOR_SPEC 0xc0 +#define ESDHC_IMX_FRC_SDCLK_ON (1 << 8) =20 -#define USDHC_DLL_CTRL 0x60 +#define ESDHC_DLL_CTRL 0x60 =20 -#define USDHC_TUNING_CTRL 0xcc -#define USDHC_TUNE_CTRL_STATUS 0x68 -#define USDHC_WTMK_LVL 0x44 +#define ESDHC_TUNING_CTRL 0xcc +#define ESDHC_TUNE_CTRL_STATUS 0x68 +#define ESDHC_WTMK_LVL 0x44 =20 /* Undocumented register used by guests working around erratum ERR004536 */ -#define USDHC_UNDOCUMENTED_REG27 0x6c +#define ESDHC_UNDOCUMENTED_REG27 0x6c =20 -#define USDHC_CTRL_4BITBUS (0x1 << 1) -#define USDHC_CTRL_8BITBUS (0x2 << 1) +#define ESDHC_CTRL_4BITBUS (0x1 << 1) +#define ESDHC_CTRL_8BITBUS (0x2 << 1) =20 -#define USDHC_PRNSTS_SDSTB (1 << 3) +#define ESDHC_PRNSTS_SDSTB (1 << 3) =20 static uint64_t usdhc_read(void *opaque, hwaddr offset, unsigned size) { @@ -1677,11 +1677,11 @@ static uint64_t usdhc_read(void *opaque, hwaddr off= set, unsigned size) hostctl1 =3D SDHC_DMA_TYPE(s->hostctl1) << (8 - 3); =20 if (s->hostctl1 & SDHC_CTRL_8BITBUS) { - hostctl1 |=3D USDHC_CTRL_8BITBUS; + hostctl1 |=3D ESDHC_CTRL_8BITBUS; } =20 if (s->hostctl1 & SDHC_CTRL_4BITBUS) { - hostctl1 |=3D USDHC_CTRL_4BITBUS; + hostctl1 |=3D ESDHC_CTRL_4BITBUS; } =20 ret =3D hostctl1; @@ -1692,21 +1692,21 @@ static uint64_t usdhc_read(void *opaque, hwaddr off= set, unsigned size) =20 case SDHC_PRNSTS: /* Add SDSTB (SD Clock Stable) bit to PRNSTS */ - ret =3D sdhci_read(opaque, offset, size) & ~USDHC_PRNSTS_SDSTB; + ret =3D sdhci_read(opaque, offset, size) & ~ESDHC_PRNSTS_SDSTB; if (s->clkcon & SDHC_CLOCK_INT_STABLE) { - ret |=3D USDHC_PRNSTS_SDSTB; + ret |=3D ESDHC_PRNSTS_SDSTB; } break; =20 - case USDHC_VENDOR_SPEC: + case ESDHC_VENDOR_SPEC: ret =3D s->vendor_spec; break; - case USDHC_DLL_CTRL: - case USDHC_TUNE_CTRL_STATUS: - case USDHC_UNDOCUMENTED_REG27: - case USDHC_TUNING_CTRL: - case USDHC_MIX_CTRL: - case USDHC_WTMK_LVL: + case ESDHC_DLL_CTRL: + case ESDHC_TUNE_CTRL_STATUS: + case ESDHC_UNDOCUMENTED_REG27: + case ESDHC_TUNING_CTRL: + case ESDHC_MIX_CTRL: + case ESDHC_WTMK_LVL: ret =3D 0; break; } @@ -1722,16 +1722,16 @@ usdhc_write(void *opaque, hwaddr offset, uint64_t v= al, unsigned size) uint32_t value =3D (uint32_t)val; =20 switch (offset) { - case USDHC_DLL_CTRL: - case USDHC_TUNE_CTRL_STATUS: - case USDHC_UNDOCUMENTED_REG27: - case USDHC_TUNING_CTRL: - case USDHC_WTMK_LVL: + case ESDHC_DLL_CTRL: + case ESDHC_TUNE_CTRL_STATUS: + case ESDHC_UNDOCUMENTED_REG27: + case ESDHC_TUNING_CTRL: + case ESDHC_WTMK_LVL: break; =20 - case USDHC_VENDOR_SPEC: + case ESDHC_VENDOR_SPEC: s->vendor_spec =3D value; - if (value & USDHC_IMX_FRC_SDCLK_ON) { + if (value & ESDHC_IMX_FRC_SDCLK_ON) { s->prnsts &=3D ~SDHC_IMX_CLOCK_GATE_OFF; } else { s->prnsts |=3D SDHC_IMX_CLOCK_GATE_OFF; @@ -1796,12 +1796,12 @@ usdhc_write(void *opaque, hwaddr offset, uint64_t v= al, unsigned size) * Second, split "Data Transfer Width" from bits 2 and 1 in to * bits 5 and 1 */ - if (value & USDHC_CTRL_8BITBUS) { + if (value & ESDHC_CTRL_8BITBUS) { hostctl1 |=3D SDHC_CTRL_8BITBUS; } =20 - if (value & USDHC_CTRL_4BITBUS) { - hostctl1 |=3D USDHC_CTRL_4BITBUS; + if (value & ESDHC_CTRL_4BITBUS) { + hostctl1 |=3D ESDHC_CTRL_4BITBUS; } =20 /* @@ -1824,7 +1824,7 @@ usdhc_write(void *opaque, hwaddr offset, uint64_t val= , unsigned size) sdhci_write(opaque, offset, value, size); break; =20 - case USDHC_MIX_CTRL: + case ESDHC_MIX_CTRL: /* * So, when SD/MMC stack in Linux tries to write to "Transfer * Mode Register", ESDHC i.MX quirk code will translate it --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934482; cv=none; d=zohomail.com; s=zohoarc; b=c0LYt9pqJJsMfusQY9SYlOVGItNKClk3rb9ANcsM6vlt+5DKEZ10/hvPGohK6waJToB29TIzvEn9mfENkx76tyD6NhWv/J8tpnfoEIylS22qAPpe6cDRoiJHAniYntbtbpQ9bROjGzD66h1+bkj4I7F+lsUI2maDGKrxF32zEXw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934482; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=8/8EVFYZXMFuk6VWmUP64vs2hU05CO6vz8Wwm+fVrOk=; b=WlXraTb6OYWz8VZDy4Cn75A4DwQ/mZfMc6CG2vpE3aYQAQaxmc/c9Ouaso1cL0vmxRdvWo413JfdhU0fHDQmbvjBSjZJfh0wb1uYiI9yGb+/jydmk0kq1vaYAw1HCRULaDN1Ohrwc+YgPVkG9v+wHflJ8tPh5HlKadmzW+FyyBM= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934482368516.1816293346823; Tue, 20 Jan 2026 10:41:22 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGf9-00020p-Nz; Tue, 20 Jan 2026 13:41:13 -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 ) id 1viGek-0001lJ-A0 for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:40:52 -0500 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGei-0006Lw-SQ for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:40:46 -0500 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-47ee301a06aso54007955e9.0 for ; Tue, 20 Jan 2026 10:40:44 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4801e8c05c3sm254264795e9.11.2026.01.20.10.40.42 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:40:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934443; x=1769539243; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=8/8EVFYZXMFuk6VWmUP64vs2hU05CO6vz8Wwm+fVrOk=; b=TBsA9neE0MQGzM2TKRc+CzVvRRwtKirrmKxato5zKdpXv4JsD3VnxfwMbsOEWs4c3n yhto7VqYOmT359PI9N2K23/sb2po1CHdRtzV8ukixC+0mEjExyW+Mvg52bxkZnOWlx4L kwx16Ocyq24j+qzlKHqWJjp3xdbclggdM+/tFuLdYm6ODAvj7vQRrT+IQgfrNEb1RKGu ttunH7HiT4qw1zVSo+bfngtOGFMUi8gARzJciOrjcxm4b9HyHJiXK9wo1hDoBwj9w6Wi SqXcWzwex2wIQQiLY7EAkgQlGEui+l9PySGGfX3uJGzrtdc/lLYqpKnGoIGx+OeCOfQk dEig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934443; x=1769539243; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=8/8EVFYZXMFuk6VWmUP64vs2hU05CO6vz8Wwm+fVrOk=; b=b7iZxolVLf14Cxi+p9CdcCOhmaJuPCMNdhYuHo/gLSnSzdoxg4V5Cqcte7SjLfDW5+ uGUgDiYe4AlPjng28DHrmUJNMGqGtdXBUML9Xfww3553mVKrnfTvFGcg/8vQEjVxJVhw uGS0rfXYwIcjsS0ul+XL5pF04/6uin+Q9Zu4ayz2Zhx6wSfBFJ/XWtQX3gUujGdvv8IX HpY7KODuEJYO9Xc53zJ6/4UKH82CziPVxAhUvmJT7Gi2XUGSLqOPDmiktvQevDVUe9k6 JwfO15uY+68LvY/C9PHZFZiglmhWGPhvW6v4+pDYfeTrOirTAGCVDywOcsRzRJ1Bjaay QznQ== X-Gm-Message-State: AOJu0YyanjoHtWekqbXxBl1bPLflX+1EOOt0eSUTrqJtQN0nAoxYB7ni 2VnxcR/aojC0SfadeL3EG12kliYjateliff7k6By+J5+KGoXr6vE0u0qJ6B6rcDy2DACalWBkRJ T3mqy68U= X-Gm-Gg: AY/fxX4p731rz2Pgsa0dOTUQ5+cnvKt0rTHfxt8EFTyEVF/KrgmA33/26ZR2KVINxsT wXkJZXh7W4bd0HFzNspPCU6kYLQ84DhtoKTWXQKt8nDINksrPZzYPe5oUTDlgRCrSTT3R/hH7FH hYZ25E/bAOoFzjH4DpDMYxAnw5S7nj0wcFXZVp9XZUZGqYc6ZokriWchXlv7uv2zAWyY7GUk6Ye 77SZApd++spNm7GFxg7uGpQwnPHhvV+q4OR7dBUmXXGrjJ9S31NEGw2pJEZ4672tZVUWgqYw1hw Rm5jtICY/72/tawU2hiCsJiS8dtsMcNTRfqFaxHzxfLLnnAoT19j8//2swelHCSf84s6NzAU5J2 L+zanJJgzWyhzKCpV7cG7e7OqKqs1IQ49Ibk5HBDkgf20CM2YestuIVegsL6j4YI9FymD+iWkIO FHh0NeEXVrUXz3vc7O67T/YzQEmp7pecrFUvvJUEgxwYLiULGhjzkHB3hjwnVvLKUIA9zE2Lk= X-Received: by 2002:a05:600c:1552:b0:47e:e946:3a72 with SMTP id 5b1f17b1804b1-4801eb0e021mr198656835e9.27.1768934443034; Tue, 20 Jan 2026 10:40:43 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 14/29] hw/sd/sdhci: Consolidate eSDHC constants Date: Tue, 20 Jan 2026 19:38:47 +0100 Message-ID: <20260120183902.73845-15-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::334; envelope-from=philmd@linaro.org; helo=mail-wm1-x334.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: 1768934482998158500 From: Bernhard Beschow Drop the "IMX_" part of the names since these are actually {E,U}SDHC specific and apply for PowerPC-based SoCs as well. While at it consolidate all ESDHC constants into the ESDHC section. Signed-off-by: Bernhard Beschow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: BALATON Zoltan Message-ID: <20260112145418.220506-7-shentey@gmail.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sdhci-internal.h | 1 - hw/sd/sdhci.c | 9 +++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index 3e81821dd1e..f24532eed28 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -75,7 +75,6 @@ #define SDHC_CMD_INHIBIT 0x00000001 #define SDHC_DATA_INHIBIT 0x00000002 #define SDHC_DAT_LINE_ACTIVE 0x00000004 -#define SDHC_IMX_CLOCK_GATE_OFF 0x00000080 #define SDHC_DOING_WRITE 0x00000100 #define SDHC_DOING_READ 0x00000200 #define SDHC_SPACE_AVAILABLE 0x00000400 diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index ccdfc59af85..779f411babe 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1642,7 +1642,7 @@ static void sdhci_bus_class_init(ObjectClass *klass, = const void *data) #define ESDHC_MIX_CTRL 0x48 =20 #define ESDHC_VENDOR_SPEC 0xc0 -#define ESDHC_IMX_FRC_SDCLK_ON (1 << 8) +#define ESDHC_FRC_SDCLK_ON (1 << 8) =20 #define ESDHC_DLL_CTRL 0x60 =20 @@ -1657,6 +1657,7 @@ static void sdhci_bus_class_init(ObjectClass *klass, = const void *data) #define ESDHC_CTRL_8BITBUS (0x2 << 1) =20 #define ESDHC_PRNSTS_SDSTB (1 << 3) +#define ESDHC_PRNSTS_CLOCK_GATE_OFF BIT(7) =20 static uint64_t usdhc_read(void *opaque, hwaddr offset, unsigned size) { @@ -1731,10 +1732,10 @@ usdhc_write(void *opaque, hwaddr offset, uint64_t v= al, unsigned size) =20 case ESDHC_VENDOR_SPEC: s->vendor_spec =3D value; - if (value & ESDHC_IMX_FRC_SDCLK_ON) { - s->prnsts &=3D ~SDHC_IMX_CLOCK_GATE_OFF; + if (value & ESDHC_FRC_SDCLK_ON) { + s->prnsts &=3D ~ESDHC_PRNSTS_CLOCK_GATE_OFF; } else { - s->prnsts |=3D SDHC_IMX_CLOCK_GATE_OFF; + s->prnsts |=3D ESDHC_PRNSTS_CLOCK_GATE_OFF; } break; =20 --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934517; cv=none; d=zohomail.com; s=zohoarc; b=d4URYww3ORXztOaFsegNh89PlDyXm9uHCrTe3837p7/J4pfzbhmWwpGlsQdLayBurZJtidwVIoYA6T8MENcBQCEGkLheLminYEn7b9oloWcZNMMhpRpzdPz7RMPpWzcmE6sFZEedYWW//0Plv/9JTtueqOYsLZVfqXm4EioBt64= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934517; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=pX41MIA/J+S5uTiA3L6aGtCdymy1tHeIDv8lBddp/TQ=; b=mZEcJ/dTIlJogi77xzL6Uv82oe1QFnRs/aNeW/Rb0TrLjHvDTFMJVegMSKuoz4BvPZADZPJie6SfYO6u7c6bWGk0NXPLJ0nTPHG+V6M27Bpm2quUph+8luErCinVPaCyScRyumJxXzGAvtapd8nzmkzfS8o+vYW8pevwRLgOAXs= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934517295352.2671111257655; Tue, 20 Jan 2026 10:41:57 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGfH-0002bI-Dx; Tue, 20 Jan 2026 13:41:19 -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 ) id 1viGer-0001rp-HA for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:40:56 -0500 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGep-0006MQ-OT for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:40:53 -0500 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-4801c314c84so37201445e9.0 for ; Tue, 20 Jan 2026 10:40:51 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43569921f6esm30225743f8f.4.2026.01.20.10.40.48 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:40:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934450; x=1769539250; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=pX41MIA/J+S5uTiA3L6aGtCdymy1tHeIDv8lBddp/TQ=; b=CoeS+qGTr3mXDvulK4x2oTD4UTgrCawQJkIJBqsebPeS5OZLSDDwhgjGvZ6Hfdhn3t YOyCWjbO9FCHP6LOOg9goEaQqtIpKKsd33/LZ5ESf5pUZdSlQ5hF/bHU5JjjeMUIEheB MI/vysI5tu4f3ycL0cC9ZqSJt1TtUBA6Hh6fqEvnN8cA7lO4maMyf6Eeyx2ZRQl3W1mB TdQWMA9Ws4zKAoNFBcxaZNrHLnYIoBl0M8VkPBs8+JDK5n6rRbY3T0VX0oWIIMxAL1aC LfnbE5M1hml5yt6KKA4Rk4ZmGlKjKKw5eiApUHYCrK+YPoGakHNF3ru61gm6+2bfiBWv qQqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934450; x=1769539250; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=pX41MIA/J+S5uTiA3L6aGtCdymy1tHeIDv8lBddp/TQ=; b=Sxab6SY+G+2CuTkSyHuIml+M46YxXgjShdjoTkl5pfZwcebQjTy4U8t2vqfz2U7SmR 7e2vansTC1ylRtfzBec2L4Lr/JKWryb0svxTDhrotpmkNtDXAFFQtR/Pbz3kUd9ZQ5OZ ThDeY7vGgrpynr9IuS0rLdV40/ELuoYrsVPw/Q1Adgni/WRaYGefN889U8XSMP99IWB5 ZeFaXesNcBlf9NdL5PIIgz4qKbjXq5QTsInSvJDYyyqQLUD+vjmn8JdwyjgQi7zMxHXC mQJ5CkB4Sug986aqke3bBpSoOM4rrb4TGJxVDKxLRXjUfk0s/yvoSomS79pMkdZ1tVVb wOkw== X-Gm-Message-State: AOJu0Yz7JoiSJopcSRHdMDINJcUvkEAOfWBCmsNyFtWoTchSgJ8T6QPV Fxp7/7pna9PMOZ/Rdrr59rNOhj804++CmI6PjfV/+8THT+Ag4q9sW6gwzrxf4g9J55C499ao1i1 X1yN5rAY= X-Gm-Gg: AY/fxX5nPCaF7+O4u/EngBabYlEmhEVAsLO6h1yjTMwsbGlDeW6nZ5Arkr5FBbI7Erc p6E++L3AZZKb+Y7YWgvCl0Y4LS9UfHvPMmv62pPiEtzQAeWb+j9F4pgt2ebfB5hPopwpFQu6n2+ SECHsG8o5EBA2nDLZzHgdMl1+u77jFVtWYIWUr25wn2mGmS1GzMM5hBJ2lSmyxV9kh3EhG4C2Wc vAIUbMi0C12Q5pS9ZfqapcwVCx2cTIkyJ+ZKnt+gkalPme0UrviXfdIqti5CkkGh/qJLZNt4/he Vpl/xtIvCtQ6+oQpwQR7MnDypIuJ5mYAt8SQT3HCGwe4BRl4Y5+uHeKDPYrBEC7doPj9z46m3Yh +CDsNjdTCBBb2Rm6/FmQEEGak/tw2XZARO36aA/jXkqlWpPOsqFGMJY5BjLuv7UqSatol7YWcY7 orinwMhg73YD22TISqIyHxSECgOT1TyZbb7VB6lIt4U7dIZqfw9wwWG/Kfa7VD X-Received: by 2002:a05:600c:3554:b0:47a:8154:33e3 with SMTP id 5b1f17b1804b1-4801e34cac0mr189196475e9.28.1768934449935; Tue, 20 Jan 2026 10:40:49 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 15/29] hw/sd/sdhci: Rename usdhc_ functions Date: Tue, 20 Jan 2026 19:38:48 +0100 Message-ID: <20260120183902.73845-16-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::32c; envelope-from=philmd@linaro.org; helo=mail-wm1-x32c.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: 1768934519378154100 From: Bernhard Beschow The next patches will introduce eSDHC device models (big and little endian). Prepare for that by renaming the functions. Also, this makes the code have similar conventions as in Linux and U-Boot. Signed-off-by: Bernhard Beschow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: BALATON Zoltan Message-ID: <20260112145418.220506-8-shentey@gmail.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sdhci.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 779f411babe..531dd3c2911 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1659,7 +1659,7 @@ static void sdhci_bus_class_init(ObjectClass *klass, = const void *data) #define ESDHC_PRNSTS_SDSTB (1 << 3) #define ESDHC_PRNSTS_CLOCK_GATE_OFF BIT(7) =20 -static uint64_t usdhc_read(void *opaque, hwaddr offset, unsigned size) +static uint64_t esdhc_read(void *opaque, hwaddr offset, unsigned size) { SDHCIState *s =3D SYSBUS_SDHCI(opaque); uint32_t ret; @@ -1673,7 +1673,7 @@ static uint64_t usdhc_read(void *opaque, hwaddr offse= t, unsigned size) /* * For a detailed explanation on the following bit * manipulation code see comments in a similar part of - * usdhc_write() + * esdhc_write() */ hostctl1 =3D SDHC_DMA_TYPE(s->hostctl1) << (8 - 3); =20 @@ -1716,7 +1716,7 @@ static uint64_t usdhc_read(void *opaque, hwaddr offse= t, unsigned size) } =20 static void -usdhc_write(void *opaque, hwaddr offset, uint64_t val, unsigned size) +esdhc_write(void *opaque, hwaddr offset, uint64_t val, unsigned size) { SDHCIState *s =3D SYSBUS_SDHCI(opaque); uint8_t hostctl1; @@ -1872,8 +1872,8 @@ usdhc_write(void *opaque, hwaddr offset, uint64_t val= , unsigned size) } =20 static const MemoryRegionOps usdhc_mmio_ops =3D { - .read =3D usdhc_read, - .write =3D usdhc_write, + .read =3D esdhc_read, + .write =3D esdhc_write, .valid =3D { .min_access_size =3D 1, .max_access_size =3D 4, --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934585; cv=none; d=zohomail.com; s=zohoarc; b=CrRRAmNV0ti2VcPCHV7/+dTAP/WbqMgOqPz6M5H2nGTU80NwD6JAMCPk4D0mHP6ul8jDrtF2f1SdtTx+88WfVQe6+VQHWeWuaK1WDc70PUUUMlLoxq1NkUvXsLbXqphbABHY1QA/sVsvPlMUGKDVkNAktixcqzQOiv4cJevW5NU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934585; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=71vYPuesJZVL1sHiUiUpnearbClouxECSoF3wg7sPq0=; b=LyRjQEzUFAHQa8SmK61Dsn0XC5DhOvoCmyk+sszyfRsHYIPDj+G72gggnV6mzKwS4c0PWUXK7uKHVMB8A7dbYy/XgSOyFLwdvAVF0f2qwyNX989b/Rn2BTaLEXq69gTuzj8NwSN2vyT8X3+XXTKi4FYaDIHluYWwR5hr/WSx5UY= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934585770972.5797123894608; Tue, 20 Jan 2026 10:43:05 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGfI-0002lA-00; Tue, 20 Jan 2026 13:41:20 -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 ) id 1viGf5-00024K-Ll for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:41:08 -0500 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGf2-0006NQ-3J for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:41:06 -0500 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-47d63594f7eso41051405e9.0 for ; Tue, 20 Jan 2026 10:40:58 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-480424a63f2sm1343625e9.6.2026.01.20.10.40.55 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:40:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934457; x=1769539257; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=71vYPuesJZVL1sHiUiUpnearbClouxECSoF3wg7sPq0=; b=ztQ8Yeb52iaOmkGGA3Zk7KP1l9jCfoLpM7JUOMenFMI71QT/sOlx/mXkkZB6vWqqE4 vCIaj4Ba2DTgE3lpGkh2YRgiW4qaZlK35asds1gf/T12R9RGZrGEQTFxXbfSq4tqWEgg JKafXbcrRkhvHf2DhbEFxz7j8geGr5kjdnP0OSTVhSnkBI3XxwKg4/Iy/rm1ku4oUWJE cxMWzTN2nc+SzhlhIG8BxP3bOxHkFRNb6q6oQo+0V0o30rU2NYGnufeIFGROTPpiJbEu r7kik9MB3QvBOPYNnLq42rB8CWwTVAE3QCWyHMVxiUp8Ko+zmVfBhHEGhzk6Jd+f0Xka q0bA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934457; x=1769539257; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=71vYPuesJZVL1sHiUiUpnearbClouxECSoF3wg7sPq0=; b=Ifsp9boEKEUSRW0HDIrdlNTpnXcSkdQNHRoDJwE3spJdeyfdZEHWAaoY+REA1DR+g/ QxctomYDSxJKpx4r0BGCzhvR5t05DoS5ClWQ1o+93PAbasODxqwg7c5FcGetv+7QPUqg ML2Li0XtO3LIUelLoLk+/00kIbJisyuUoF4uSyygqL2acQNa3r/b4DdHbKojNlv8tlXG 1XpTer+2Paqo4hIpiWibWvIYLdqJW7ossMvW+gQkXfMd/Nq8KOGkpCX88EheLHjDmX9w /VZzzdqI49mjwZipeptoFswG4/4DnTl9JoUxNrAcwfi2vRNDKMrrx90q2EW3TPFAY8tW 5HvQ== X-Gm-Message-State: AOJu0YxW7kdNazvGRGWNK0BULuO3gFvdrp6vYjybFxCmnyX7AgipsGlI jAnmuXFCxjTehdZY4zisQ2OJljDyQbIxap+uC21Xc8WyIePjGpNH5N47gFRkaUWl78yqG86UYVi qipYPYmE= X-Gm-Gg: AY/fxX5gLYJzZX95Hg4Z7R9bobHCsMqyLTpDTCN7GMnzqFRc0FQMZZfIGbwSvFmpuJV raDdPoDWTpBp4dgtcjyYDM174To+2G1LAx0bjOcFAANpqFGXB6gEeRJr2vhFwFERlDbr9LuwvG6 0LnzlIJXo9g67M9HeZWSMN5J7cnZu33mBj4W8ir4JmrRJQlotEAhoFXrNg4+JJpi83PJr7GqV66 pxMb0JQdQ5IYOIhKfo7lVEvQguZ03K5et4nRbP6Pa90CrPJZ/0twhfBWtrer/J5skLu0qj37Eqv +UazqXCtwJhASeun42nUq9S4mMahmDlTGzeHc9x7iDzTxtM2WdZ7pQkJyOF9sIF3OY6V94uqVD6 agd2hvqmaYxxPoyrv92Se+GuvqGnjnOMuPKNezR9+zyZ2QwoxMQmGk+pS51OXmU/XUMp+YciQ/t q+MNXGbJ2UWJPh1414eKj4U3nB2If7z5ub3mJNB1Lfl0j9TA2y2klrHEt4lVUC X-Received: by 2002:a05:600c:628c:b0:475:de12:d3b5 with SMTP id 5b1f17b1804b1-4801e34e809mr185825535e9.34.1768934456682; Tue, 20 Jan 2026 10:40:56 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 16/29] hw/sd/sdhci: Add TYPE_FSL_ESDHC_BE Date: Tue, 20 Jan 2026 19:38:49 +0100 Message-ID: <20260120183902.73845-17-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::32f; envelope-from=philmd@linaro.org; helo=mail-wm1-x32f.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: 1768934588377154100 From: Bernhard Beschow For now, TYPE_FSL_ESDHC_BE is basically a big-endian variant of TYPE_IMX_USDHC. It will be used in the e500 machines in the next step which prevents Linux to flood the console with "mmc0: Internal clock never stabilised" messages. Signed-off-by: Bernhard Beschow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: BALATON Zoltan Message-ID: <20260112145418.220506-9-shentey@gmail.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/sd/sdhci.h | 2 ++ hw/sd/sdhci.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/include/hw/sd/sdhci.h b/include/hw/sd/sdhci.h index 32962c210d7..3eb0684a890 100644 --- a/include/hw/sd/sdhci.h +++ b/include/hw/sd/sdhci.h @@ -128,6 +128,8 @@ DECLARE_INSTANCE_CHECKER(SDHCIState, PCI_SDHCI, DECLARE_INSTANCE_CHECKER(SDHCIState, SYSBUS_SDHCI, TYPE_SYSBUS_SDHCI) =20 +#define TYPE_FSL_ESDHC_BE "fsl-esdhc-be" + #define TYPE_IMX_USDHC "imx-usdhc" =20 #define TYPE_S3C_SDHCI "s3c-sdhci" diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 531dd3c2911..6277abe8702 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1871,6 +1871,32 @@ esdhc_write(void *opaque, hwaddr offset, uint64_t va= l, unsigned size) } } =20 +static const MemoryRegionOps esdhc_mmio_be_ops =3D { + .read =3D esdhc_read, + .write =3D esdhc_write, + .impl =3D { + .min_access_size =3D 4, + .max_access_size =3D 4, + }, + .valid =3D { + .min_access_size =3D 1, + .max_access_size =3D 4, + .unaligned =3D false + }, + .endianness =3D DEVICE_BIG_ENDIAN, +}; + +static void fsl_esdhc_be_init(Object *obj) +{ + SDHCIState *s =3D SYSBUS_SDHCI(obj); + DeviceState *dev =3D DEVICE(obj); + + s->io_ops =3D &esdhc_mmio_be_ops; + s->quirks =3D SDHCI_QUIRK_NO_BUSY_IRQ; + qdev_prop_set_uint8(dev, "sd-spec-version", 2); + qdev_prop_set_uint8(dev, "vendor", SDHCI_VENDOR_FSL); +} + static const MemoryRegionOps usdhc_mmio_ops =3D { .read =3D esdhc_read, .write =3D esdhc_write, @@ -1965,6 +1991,11 @@ static const TypeInfo sdhci_types[] =3D { .instance_finalize =3D sdhci_sysbus_finalize, .class_init =3D sdhci_sysbus_class_init, }, + { + .name =3D TYPE_FSL_ESDHC_BE, + .parent =3D TYPE_SYSBUS_SDHCI, + .instance_init =3D fsl_esdhc_be_init, + }, { .name =3D TYPE_IMX_USDHC, .parent =3D TYPE_SYSBUS_SDHCI, --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934502; cv=none; d=zohomail.com; s=zohoarc; b=CjTrEtOo3/1Ym7xxmJKvxeRyKJ/YQk0RtEYCYUM5bwYAESprhCFvr+RDgwmBZy5SCloLNXRNUCaTdjDtYYcIGV4Sv89cv1i8aZ9zZE60/oRF7yc1ZlP1lWOpjoagY0irTkrW3Ilksbz3Y/jd4iDI4dBUyLh9457GOuoY/zMCYNs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934502; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=783rdm+bkQ356/mKoFd+xki71gfr3hdbrK/yAD5kMUM=; b=SKIUWsqSftAn6q88JrQ0z2XF5wM5Xv628/AudLlwUm3SucQkwjgR0W5XnfOfE3jW00msjnfjeOAVEeP1T8IRC4pWbtWj7Uy5W8zL4HZpENM5vu+xHMgrhempN4ZyRwUOcfrJ4M5kBXy7XHXrIgiK2IMOBzhI+Kwgq/ic1BWQFEA= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934502411650.0677566849732; Tue, 20 Jan 2026 10:41:42 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGfJ-00030O-AF; Tue, 20 Jan 2026 13:41:21 -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 ) id 1viGf6-00027H-SH for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:41:13 -0500 Received: from mail-wr1-x436.google.com ([2a00:1450:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGf4-0006Nw-1d for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:41:08 -0500 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-432d256c2e6so4834781f8f.3 for ; Tue, 20 Jan 2026 10:41:04 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43569921f6esm30226717f8f.4.2026.01.20.10.41.02 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:41:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934463; x=1769539263; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=783rdm+bkQ356/mKoFd+xki71gfr3hdbrK/yAD5kMUM=; b=y+gpK5t4IeIk8HK+gUueHpxJp6Vk64TJaOtheLzmAHDT3Qi/ncAcD3rxJiRMs2Va/7 b1cPLDrGN1uuAwh/WJSKVS0rUBxNzj3Fh9+SX6Oj+akQdQO4z+xjnhc6ML6VYXEfsiQE jUOqcC2RucOt3aTfCLmaKrfQWNrvtFysvch6udB+Xkk+cswV1ShdOgPbOjKdtuQpxYs4 11ooAyNACIvwjKGY9VRzcORMHYA9e1ASww+C1woeR73b+3p6ft7qLIDFpEv77XBXUrpc v/ujyf86X86GC5NpCxnPGNkXJ/vv6QtHDWl+aM5hUre/xnONh7soepWISasoTcDzV2BT 3g0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934463; x=1769539263; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=783rdm+bkQ356/mKoFd+xki71gfr3hdbrK/yAD5kMUM=; b=tPKI4ItQnwGgd5PZvYucGSjGE3HJqCOUQqr5Ua6imz2D/+aH8dm//Zx7GzaxFjwlgt yovtsRCbjyl8c9zB3sVmvi8WVySyxi5wXsxTILISWWUKj4KYUgSkspYMeqZn96mO2mlt 2tBLU2Ki33tMdTca+uei80h3U3/a0aQk15eqfseApsDrIycrIsVqwUWkTApDACyDeUVA 2Iw7U5cFtOZ1BK6BQmb4wcxdb4Dj3mL0yc2wkhDEm4EYh4wOeWntxln4Uj3CPwXTjKpO LmAK+4iTXgpHbpd6+JsCBAF/NhEV3XthA3tLD7krQbNqorMf3pGtnyPMAsxIJWKFmfIJ PAvg== X-Gm-Message-State: AOJu0YwHVrJhdNqG4biwx7dIQp2YXQQi0HC9Hi/Jkc7Is9Z2YSM8iMuO JPEgqGe9gD/XdBuEa1isUbAIuqdwZoE2Gq9ioSY1eyWUBSAvvFJUbddtCwlUSiL5LxIrVio+8wr JwykweEI= X-Gm-Gg: AZuq6aJvAzU0sfiBDQCX2qUX4MlqEnItZv9aq9/dq8CU9LJJDycX0PUNm4aUsFs9nel Xe16dpTqp9Js2kqS+40soEteeW/HR1L39jYxaXVEzEsK+CTjCFzEJby2MfrZx4dFtx/Kn+7+36p qXgcQUqkt7ICBHSj9ZhBw4QmdHW0+E+3PnJh2+xa7pWvaK8Xt0MTfoO5vG5XUz0GhGA3Sw4jYED fLCx9uZmg6o+xjEjEeWy/NBHhTnZGMtUjDxazjiuKqnyUH0i5hM6RU19p3mWDXS36aTvP1At/3+ bl0dFbBU17lovFZI7q0/M7vdXlLK+Ic1ElABCOICj341oNhLS0DZX9MWcO+kgTPC7TC5W2OD5+V YVDS66K2IEjPTEVkilMOX7Zoci+HhoPLLN9TihtvVCUIAfK/7oUmEM6av5PCmbTbQFeR7O533AN 27bqFwsM1+tmxP1V/9ZHvYgSNpf4Ndki/nUqyJ6CdpfJKLdbFQ34/NNm9lEW2m X-Received: by 2002:a05:6000:26cb:b0:430:f1d3:f96 with SMTP id ffacd0b85a97d-4358fed1153mr3952291f8f.6.1768934463197; Tue, 20 Jan 2026 10:41:03 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 17/29] hw/ppc/e500: Use TYPE_FSL_ESDHC_BE Date: Tue, 20 Jan 2026 19:38:50 +0100 Message-ID: <20260120183902.73845-18-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::436; envelope-from=philmd@linaro.org; helo=mail-wr1-x436.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: 1768934503113158500 From: Bernhard Beschow TYPE_FSL_ESDHC_BE maches real hardware more closely by reusing code of TYPE_IMX_USDHC. For example, it fixes Linux to flood the guest console with "mmc0: Internal clock never stabilised" messages in the QEMU advent calendar 2018 day 19 image. Reported-by: Thomas Huth Signed-off-by: Bernhard Beschow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: BALATON Zoltan Message-ID: <20260112145418.220506-10-shentey@gmail.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/ppc/e500.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index eb0d3a418e2..d6ca2e8563a 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -1036,15 +1036,7 @@ void ppce500_init(MachineState *machine) memory_region_add_subregion(ccsr_addr_space, MPC85XX_ESDHC_REGS_OF= FSET, sysbus_mmio_get_region(s, 0)); =20 - /* - * Compatible with: - * - SD Host Controller Specification Version 2.0 Part A2 - * (See MPC8569E Reference Manual) - */ - dev =3D qdev_new(TYPE_SYSBUS_SDHCI); - qdev_prop_set_uint8(dev, "sd-spec-version", 2); - qdev_prop_set_uint8(dev, "endianness", DEVICE_BIG_ENDIAN); - qdev_prop_set_uint8(dev, "vendor", SDHCI_VENDOR_FSL); + dev =3D qdev_new(TYPE_FSL_ESDHC_BE); s =3D SYS_BUS_DEVICE(dev); sysbus_realize_and_unref(s, &error_fatal); sysbus_connect_irq(s, 0, qdev_get_gpio_in(mpicdev, MPC85XX_ESDHC_I= RQ)); --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934517; cv=none; d=zohomail.com; s=zohoarc; b=PnCco/y2VqfrEp5z0PcR1zeW3A4nwqGxcDJ4XLTEqoSiWMhVKh+SxZoD/BtlcM8pIJJvy3X4e3PqJbkcAIdMiEuwgterhHCZS9w0BqsqaeiSjpbTao6khi5Ho3U+MmsQK3R2rmTkfrlq+njqxPPrQQxT90kOyvkCITwddPAan0g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934517; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=oY/XtSQ2gGwc58E9vKBho+DUeDG3sgS/5ejQ5/WSECA=; b=i9Vo8H1TZwiUA50ZWvhUkC7c1T5ugXIn95S9KRhpgrGFJg3Q8yjgCKarNo9mv6WH7UBLBs303zaI0mQGiY6fTTaCQoZOi/xFjixBGUEWdi7anTOY9+7SihBPRbrDpwI2aQP362oRkXhZ+pmWB2T+dnG2IRGCupY7G3z4zmyI8hQ= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934517331490.5725381085057; Tue, 20 Jan 2026 10:41:57 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGfM-0003OR-UQ; Tue, 20 Jan 2026 13:41:25 -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 ) id 1viGfC-0002Hw-TQ for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:41:15 -0500 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGfA-0006Oq-8w for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:41:14 -0500 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-47eddddcdcfso28322765e9.1 for ; Tue, 20 Jan 2026 10:41:11 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47f4289b789sm317503165e9.1.2026.01.20.10.41.09 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:41:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934470; x=1769539270; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=oY/XtSQ2gGwc58E9vKBho+DUeDG3sgS/5ejQ5/WSECA=; b=HBF0tc8VoRm3/HISaW6SlRpcgyt4Gum3r/giCYXU9o5prArM7e+NJutRRKfTbOrLqu 9oXCACYaotGNSW410hcXKJ9FkyCcbW93xSyJ2wW/lQWPXEgO0khcRe5nSdfVk3nw7UJl BuI06spy+JE+CmfNmKTw6m6qhyfxVXPo2nP9MoAis6TBGlVf8v/N1X/R2Ku4gcb121X4 QwgeTust6DOe1wKTGce343+qxmy+Mbb5+Oc6Jc3Y3JN8mwKo2FxS+eAsYQT6asTqP5RO X34RCLeoPq+g9JPZdDzRd0QvDWZUXhvrkBzOq0aD7mIyf76nZ+bUVktiv649T3AnHW6C JWAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934470; x=1769539270; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=oY/XtSQ2gGwc58E9vKBho+DUeDG3sgS/5ejQ5/WSECA=; b=YHcvQFG5kdut9Vv27BS2O5HZfWCvzl1rVlTVD1THWH1HBUz7GvEpmUrUAV24ULhFQ1 O5nu9CzJ4miVT0CURr7V+k/EzOLuYhONdNgj9lVCpi7+p/7NK/M0nBFd4IV8g3Ld6CB/ ut2kp39nofQg/9XSJRuDAXBIAmfa+/I4LT7Ixzseloj0rJ8iEXTXeQNC1APc6+ASVuAy zKLapt/gMWRFjCUt9f1MmBLdgAGtsF3MmYZTrsZwkdCed7+P8lHIKKPSqp2O02rO28lg XE50ReDUHDba7LJqi5+V5nJ3kFkxjsDWGlM84z0uwENafeInubSD4Ni5GPjDpWp3beMu Xf7g== X-Gm-Message-State: AOJu0YzUahyw/XD6pMiwZJY+tPfAxNWFPnVQ6rcRFm9c3GeY7zz+NtBL n/rCHstEoaxt75w4/KxUDAQtE0Fleu1tgDna1Mo95Cc4tSm2dbKAw0r2e50Yh8PJQE5ir1FWcLT fKw2yGLU= X-Gm-Gg: AY/fxX4zFuOd7Ty2ThVEfn4MUfdLcDvkFAeYfzdgIjngE8EUOMeDiGDOvZvbv/olvC4 5l7S2oXOCmLiVFMqXApJh5gfjYGT6gAgy7ft81hrew4mhVfJgcjy2sAXO6/IXTekK2Nij0rs8j9 dF9gDA/u9hkw4BaUMf4/YB6TavdGUwFZ1WzMSzvXSA4BJi4N8FfbqJ3FharDZQb2F1PQxxMikJu qEiZO73eKDhQI8IYVGQ0t29LNE4QzwKHhamfs84UlpOegoMdj7ihK088Snl1JwKY9pw1RHrShBJ 6P14styLX6F/1H6a0MRFaD9j72hDtdZl48Sz9H9bz7o7FlK4mkDX62MNzrWFdEO2vfxWpxuMDTV 8QGVJY7jTpVe74dIeN1LV3dTOp0uvBEB3ndo+L+ftHqC5UfbyfIc9+NtPlQKNSmYECclfP73ZRV bAuSwc4ilrDZnOCNOEN11ongGtsM6jPVmeHZI7IlBqJ831fxVYCxQkvHq/f9IV X-Received: by 2002:a05:600c:3d97:b0:47d:403e:4eaf with SMTP id 5b1f17b1804b1-48029b7db7dmr151068165e9.10.1768934469910; Tue, 20 Jan 2026 10:41:09 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 18/29] hw/arm/fsl-imx25: Extract TYPE_FSL_ESDHC_LE Date: Tue, 20 Jan 2026 19:38:51 +0100 Message-ID: <20260120183902.73845-19-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::335; envelope-from=philmd@linaro.org; helo=mail-wm1-x335.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: 1768934519457154101 From: Bernhard Beschow Extract an eSDHC (little endian) device model since the uSDHC device model will get an uSDHC-specific MMIO quirk. Signed-off-by: Bernhard Beschow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: BALATON Zoltan Message-ID: <20260112145418.220506-11-shentey@gmail.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/sd/sdhci.h | 1 + hw/arm/fsl-imx25.c | 7 ++----- hw/sd/sdhci.c | 31 +++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/include/hw/sd/sdhci.h b/include/hw/sd/sdhci.h index 3eb0684a890..32c52c7d0be 100644 --- a/include/hw/sd/sdhci.h +++ b/include/hw/sd/sdhci.h @@ -129,6 +129,7 @@ DECLARE_INSTANCE_CHECKER(SDHCIState, SYSBUS_SDHCI, TYPE_SYSBUS_SDHCI) =20 #define TYPE_FSL_ESDHC_BE "fsl-esdhc-be" +#define TYPE_FSL_ESDHC_LE "fsl-esdhc-le" =20 #define TYPE_IMX_USDHC "imx-usdhc" =20 diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c index 9e02063533c..7f65f4ca4bb 100644 --- a/hw/arm/fsl-imx25.c +++ b/hw/arm/fsl-imx25.c @@ -68,7 +68,8 @@ static void fsl_imx25_init(Object *obj) } =20 for (i =3D 0; i < FSL_IMX25_NUM_ESDHCS; i++) { - object_initialize_child(obj, "sdhc[*]", &s->esdhc[i], TYPE_IMX_USD= HC); + object_initialize_child(obj, "sdhc[*]", &s->esdhc[i], + TYPE_FSL_ESDHC_LE); } =20 for (i =3D 0; i < FSL_IMX25_NUM_USBS; i++) { @@ -239,12 +240,8 @@ static void fsl_imx25_realize(DeviceState *dev, Error = **errp) { FSL_IMX25_ESDHC2_ADDR, FSL_IMX25_ESDHC2_IRQ }, }; =20 - object_property_set_uint(OBJECT(&s->esdhc[i]), "sd-spec-version", = 2, - &error_abort); object_property_set_uint(OBJECT(&s->esdhc[i]), "capareg", IMX25_ESDHC_CAPABILITIES, &error_abort); - object_property_set_uint(OBJECT(&s->esdhc[i]), "vendor", - SDHCI_VENDOR_FSL, &error_abort); if (!sysbus_realize(SYS_BUS_DEVICE(&s->esdhc[i]), errp)) { return; } diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 6277abe8702..6001b71c61d 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1897,6 +1897,32 @@ static void fsl_esdhc_be_init(Object *obj) qdev_prop_set_uint8(dev, "vendor", SDHCI_VENDOR_FSL); } =20 +static const MemoryRegionOps esdhc_mmio_le_ops =3D { + .read =3D esdhc_read, + .write =3D esdhc_write, + .impl =3D { + .min_access_size =3D 4, + .max_access_size =3D 4, + }, + .valid =3D { + .min_access_size =3D 1, + .max_access_size =3D 4, + .unaligned =3D false + }, + .endianness =3D DEVICE_LITTLE_ENDIAN, +}; + +static void fsl_esdhc_le_init(Object *obj) +{ + SDHCIState *s =3D SYSBUS_SDHCI(obj); + DeviceState *dev =3D DEVICE(obj); + + s->io_ops =3D &esdhc_mmio_le_ops; + s->quirks =3D SDHCI_QUIRK_NO_BUSY_IRQ; + qdev_prop_set_uint8(dev, "sd-spec-version", 2); + qdev_prop_set_uint8(dev, "vendor", SDHCI_VENDOR_FSL); +} + static const MemoryRegionOps usdhc_mmio_ops =3D { .read =3D esdhc_read, .write =3D esdhc_write, @@ -1996,6 +2022,11 @@ static const TypeInfo sdhci_types[] =3D { .parent =3D TYPE_SYSBUS_SDHCI, .instance_init =3D fsl_esdhc_be_init, }, + { + .name =3D TYPE_FSL_ESDHC_LE, + .parent =3D TYPE_SYSBUS_SDHCI, + .instance_init =3D fsl_esdhc_le_init, + }, { .name =3D TYPE_IMX_USDHC, .parent =3D TYPE_SYSBUS_SDHCI, --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934510; cv=none; d=zohomail.com; s=zohoarc; b=PEtMGtgp4xD+S6cGs6Agy1+KX3bv8ma6tGbur0a8B3YC4amfphVYSvDmVAItmUpvZMcjDcG8YWqm+2o8jyMgOpesRfBlyeV7MHbwQ10j+UnPacolTaTGmU1t34RL6Jz8B48mXrEVeF5Xjv44I2XE1LQfbRmsXcc34RYj0C5r2tw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934510; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=2cNvAef1f1a86mPi1RwfvIDzIhMfVvuK1vOhyNdPbjk=; b=m9W6u+aA2cEXzrmWQXcV9xPZuRkfg5ESYRLXaGFjFL5z7t5cAvWQqyncJF4ECWtWqW9DEXe012PluPY1UHjBpy6m2aOP8ozRySjTaRJhnuo2D5K894AVCpb++zbsoswCFN6Z7qEnmkSOqmkaXGxe5WWb/fHK4DxeuM6iiXuOdAo= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176893451060293.63748494076265; Tue, 20 Jan 2026 10:41:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGfQ-0003VK-GB; Tue, 20 Jan 2026 13:41:29 -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 ) id 1viGfI-0002tS-HA for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:41:20 -0500 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGfG-0006TB-Os for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:41:20 -0500 Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-432d2c7a8b9so4903757f8f.2 for ; Tue, 20 Jan 2026 10:41:18 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4356992c6f2sm30014190f8f.19.2026.01.20.10.41.15 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:41:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934477; x=1769539277; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=2cNvAef1f1a86mPi1RwfvIDzIhMfVvuK1vOhyNdPbjk=; b=N1CTsVwfZNgn2PjWDC4H8w8orPrrUSIybnNqiSeI9o1MNvArGYTTP78pydO5hCHS98 8ckuxvEy6FQCvCil8FGBAdiide7G+ZOAB/zvmL7oN8s5/1J4u4BsLDQjLp6g5O+M3s81 0eP/Z+TV4iR/X96pDuLcilugsvvwyURIn6WaDb2cR6unOZNbFs17a58OnKqx2W64myV3 Rc82zRTSiJpnYfx/TkTNwNnFxQ/aBFRIHUOTYa10MYfOAJ5G9sNmUloU6qe+2iXV/SSp 6HSXLyINgn4q0Ili7UjLotdbYMokmyrMiSIkVu+tjfU8Y6uwWCulRZPGmC40TdKgDerB YQgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934477; x=1769539277; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=2cNvAef1f1a86mPi1RwfvIDzIhMfVvuK1vOhyNdPbjk=; b=PC/uBvYuxSBc5VkJXu0fEH0F/Ar5Unuvsjsib50Y1r3/6Yq3TyF4H1w5oVS6AQRBpn LYemVCQC9X7sIKAsLoLri5iDdhV+2WhB9zo9fzpEPZBbs6b93XhNUDUe40FaY/yEo8Np yrI+p2JIlW2yyq1nLViiTNi0Sp1yv945h819JDNsZEN0JFz8Tdqc7GUwygC5T8WLwqmI ttPyPPPh6HXtCEV7MTiR7+v0KoP3pMfPqJ/tPjB4+51FMLBmOyLHBitfC2bw1G3s9lkx aRjiTkKStQy7BXlQh8OYRs10tpVsuf/PtcyOhPtcv1fdJIvzvZRlTRIVhrYojVJ3SRgM 6saA== X-Gm-Message-State: AOJu0Yw2W9jmhPRHGs63C7bTxgZ7h2wFe5MOKGcslkQMd5/L8sjYT2Bh yPt+p6u3hZBmbiBExZ2ALagj+V9p3LnpPDpZaZ+s62LAqFHvJp6GprLiPqEhJuqKBDdb6yxSHwa 4RYQK0NE= X-Gm-Gg: AZuq6aJmt2vQ+xSPF+ID1BRrY51lIG2dtfIWVhms7nx/+V4g7YkiGxXNuRpaAa071Pt heGxyPLozsb26MHDyg1iEyYr1DuZlUFhjA2D+r7kTgqGRKbKNCqZfDtGsa+rYfmyLNkIWTr9sxr /AM9s/auiEgG8F+3OSCHsNdtJdhSd/HA2wrPe7Cen4mvH4i+DmTIPH86/CUfYIhp92m5fHTyUnK dwPrTSQ9hm9hnjWrALXnf8Dcx/IP/zxI/BizkbDU+CAb5MX/WRg1odNq5vcbqAlLxiqElVurl4K CyF5RxZp/fw/KKTo5p/iWWQCxLq1qgIW2hosDziJoGpOTj6aFRXAx6xYj3tdvNGinQKwJH5WIdr qoNdDDlG9ptThRGleZUsxLArmW3m0zOCWlWjoBttFhzms6Z6MF8XNByzFq6smEOVGRmb4wSunTR oow9AIT6vvXyA1YXqofwW5/oK+a90vY1gFlENH38iCXbx7m6x+vbem/VETOWE9 X-Received: by 2002:a05:6000:2403:b0:42b:3c25:cd06 with SMTP id ffacd0b85a97d-4356a039bd5mr19947198f8f.22.1768934476565; Tue, 20 Jan 2026 10:41:16 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 19/29] hw/sd/sdhci: Remove endianness property Date: Tue, 20 Jan 2026 19:38:52 +0100 Message-ID: <20260120183902.73845-20-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::431; envelope-from=philmd@linaro.org; helo=mail-wr1-x431.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: 1768934513352154100 From: Bernhard Beschow The endianness property was only explicitly set in the e500 machine which now instantiates TYPE_FSL_ESDHC_BE. The property could also not be used meaningfully in a hypothetical, common TYPE_FSL_ESDHC device model since sdhci_common_realize() would fail in that case or it would need to know all MMIO implementations upfront. Remove the property in favor of dedicated device models. Signed-off-by: Bernhard Beschow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: BALATON Zoltan Message-ID: <20260112145418.220506-12-shentey@gmail.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sdhci-internal.h | 1 - include/hw/sd/sdhci.h | 1 - hw/sd/sdhci.c | 35 ++--------------------------------- 3 files changed, 2 insertions(+), 35 deletions(-) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index f24532eed28..50fb746a177 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -307,7 +307,6 @@ extern const VMStateDescription sdhci_vmstate; #define SDHC_CAPAB_REG_DEFAULT 0x057834b4 =20 #define DEFINE_SDHCI_COMMON_PROPERTIES(_state) \ - DEFINE_PROP_UINT8("endianness", _state, endianness, DEVICE_LITTLE_ENDI= AN), \ DEFINE_PROP_UINT8("sd-spec-version", _state, sd_spec_version, 2), \ DEFINE_PROP_UINT8("uhs", _state, uhs_mode, UHS_NOT_SUPPORTED), \ DEFINE_PROP_UINT8("vendor", _state, vendor, SDHCI_VENDOR_NONE), \ diff --git a/include/hw/sd/sdhci.h b/include/hw/sd/sdhci.h index 32c52c7d0be..51551348cf5 100644 --- a/include/hw/sd/sdhci.h +++ b/include/hw/sd/sdhci.h @@ -96,7 +96,6 @@ struct SDHCIState { /* Configurable properties */ bool pending_insert_quirk; /* Quirk for Raspberry Pi card insert int */ uint32_t quirks; - uint8_t endianness; uint8_t sd_spec_version; uint8_t uhs_mode; uint8_t vendor; /* For vendor specific functionality */ diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 6001b71c61d..eab814096d7 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1374,7 +1374,7 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t val= , unsigned size) value >> shift, value >> shift); } =20 -static const MemoryRegionOps sdhci_mmio_le_ops =3D { +static const MemoryRegionOps sdhci_mmio_ops =3D { .read =3D sdhci_read, .write =3D sdhci_write, .valid =3D { @@ -1385,21 +1385,6 @@ static const MemoryRegionOps sdhci_mmio_le_ops =3D { .endianness =3D DEVICE_LITTLE_ENDIAN, }; =20 -static const MemoryRegionOps sdhci_mmio_be_ops =3D { - .read =3D sdhci_read, - .write =3D sdhci_write, - .impl =3D { - .min_access_size =3D 4, - .max_access_size =3D 4, - }, - .valid =3D { - .min_access_size =3D 1, - .max_access_size =3D 4, - .unaligned =3D false - }, - .endianness =3D DEVICE_BIG_ENDIAN, -}; - static void sdhci_init_readonly_registers(SDHCIState *s, Error **errp) { ERRP_GUARD(); @@ -1430,7 +1415,7 @@ void sdhci_initfn(SDHCIState *s) s->transfer_timer =3D timer_new_ns(QEMU_CLOCK_VIRTUAL, sdhci_data_transfer, s); =20 - s->io_ops =3D &sdhci_mmio_le_ops; + s->io_ops =3D &sdhci_mmio_ops; } =20 void sdhci_uninitfn(SDHCIState *s) @@ -1446,22 +1431,6 @@ void sdhci_common_realize(SDHCIState *s, Error **err= p) { ERRP_GUARD(); =20 - switch (s->endianness) { - case DEVICE_LITTLE_ENDIAN: - /* s->io_ops is little endian by default */ - break; - case DEVICE_BIG_ENDIAN: - if (s->io_ops !=3D &sdhci_mmio_le_ops) { - error_setg(errp, "SD controller doesn't support big endianness= "); - return; - } - s->io_ops =3D &sdhci_mmio_be_ops; - break; - default: - error_setg(errp, "Incorrect endianness"); - return; - } - sdhci_init_readonly_registers(s, errp); if (*errp) { return; --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934583; cv=none; d=zohomail.com; s=zohoarc; b=T1IVxBPxyBuX06RLMe1mfRuIJOXQd0MWrRP/+jJpHJtYmM4svXuGpaI+o9pQY2oEGpD4J1mRQtF78y6lIXEqDxJyElQGc0YC9yLcXnj2YUoUncL9PFlJK4mVjQ6GrPf0OpEZxYfjRqSxbhsScTxt9VEhbVRscfLLiTZrO/MGKkU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934583; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=36oy4LpXeaubv2KU3/hvOkUmF2AsCyfbGtc0pgUrW5Y=; b=mpNoUGshI9um+4NwD5F3UywIlY91FxSUIUVVKkaX+jNG+ajaYVFtZQ6aJPsRKu1RnIjxZaS+u8NUqdIGTJJ0TBv1KnMlY9GILC1U1W8qvBId/0aWvziGAJcMh7gEGViBOIdLILnZZnXyndwD+aDW2a3KabUEjmOGTqCYuTVbxo0= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934583478800.3112894363661; Tue, 20 Jan 2026 10:43:03 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGfa-0004Lc-48; Tue, 20 Jan 2026 13:41: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 ) id 1viGfX-00048A-LS for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:41:35 -0500 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 1viGfU-0006Tl-79 for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:41:35 -0500 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-4801eb2c0a5so38009435e9.3 for ; Tue, 20 Jan 2026 10:41:24 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47f429071besm312546805e9.10.2026.01.20.10.41.22 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:41:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934483; x=1769539283; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=36oy4LpXeaubv2KU3/hvOkUmF2AsCyfbGtc0pgUrW5Y=; b=VX3VDbAP1WlCyr5/1QV0Xx8+Xox5o3+ANJws33YSuQFL/YHqJubVg9wutiRi8lOlCP bcFzKGmTARwB8iZDBc8hzlNCUYUQFID5JSxA6nl0Xk3xecVQAcf9OwETbAFHJu9NlvDM 3xeMS11NGydnaGJ0eik8FDQPWvv2AUiRfR/GYdFKTd24iKW3kC2RHH67lDMTHz0kNMDM DLYTqf5zhx960eQ6fol9vUK05QD4i+rf08foFVp6PDPKFNdhC6Eo03KVVED1Be0UK6dr MrwdCalvm7AtvES0P/XGU/2wVuS5tpx7B+Z0LBcIb/OVo7pTyAAzDqkyZl1++TMC/euU WAyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934483; x=1769539283; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=36oy4LpXeaubv2KU3/hvOkUmF2AsCyfbGtc0pgUrW5Y=; b=em0xkBI34jsjwUhK9Sp6x0opqr8VPu7i25NuZ3D0T4zIGfJx6TMiv8eFOis9hh4IAg BlTwFYsmMy6hlAM0k7KpXE8/Rtp7Mpn3AcBUJggvbeGQcxAwOTV4cmur3TYFXCQMg/ob 9YH1658W2pUawaj403ni/dg8+HYHuyaWe9ujy9+KQzPnOn21dLR+n3hqgYaeBQa+TRxY opMceTzi0RN+Fen4gtNkj3ggNTKxhdH4nHHvU/+OkxV5uuoJFu3yunmjFbzCREVvPII3 Oct2pHhwcy4YhhBYyaKEw5YC+IHcjpXSBRkhNH2tHZzkIrDLgyj0iXe/UXtUAQAjjkoG tL3g== X-Gm-Message-State: AOJu0YzzG+jbCjWOY1wzzElmPdtFzetKoDKzCnk+2mlFjvVOg7mkjg6Y IyEQQIkJemT92vrVgHdQl2WzOrRGoLXci07ne8hGW6HHurxrxxY/ffQbYGmaz7nemQob7IL/aAY 6pBMmHZ0= X-Gm-Gg: AY/fxX4glazd9iMuPCSRS5weGnaZ1z2XgqqnDmZOGz8z8M6jfOUjKSnGHTFhPXABCE+ iC1EibaLyH9rL1Ur24O5OdAMT9G+OIepycn4V5CZb8PLzQIuoaA0zMHs/DEGnkuaUGq04bgaPd0 GHRjpXMVrEco5LpTHPZuFEZfsR00dJ2Ee/PJ7w70H0N2Uuluunb+y1oLGQEL/heysWi0hZG8p73 td0K26GqC+aDr4jUs6M8I/e5iWloXUbeZeGVbqqu/v/pOYH+ZKISNKt1g6PKrf0DryQvJVGieDk ZKyYEecYLRLxe4Kl2fddqgb437aIVOfoa5jls71MTwJkRgBg9y+mwvhztiouWHsDfVxxGCQ6zLB hX1dWnRDC0ljiokZMNgEDvgrIzi6EGOxXg+cj/k/zb31KU/GV41qlVTaE2aG+rBh2PUIoZvh5an HcjjT9llPt6ot9bBhrNbFMzz3QCMW8Xq/b/UbnExIHrvB18Q6l3gpCNWlKalgpsR3QEJj9Sy8= X-Received: by 2002:a05:600c:1991:b0:47d:6140:3284 with SMTP id 5b1f17b1804b1-4801e34b5a7mr175900705e9.37.1768934483316; Tue, 20 Jan 2026 10:41:23 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 20/29] hw/sd/sdhci: Remove vendor property Date: Tue, 20 Jan 2026 19:38:53 +0100 Message-ID: <20260120183902.73845-21-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::330; envelope-from=philmd@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=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: 1768934586378154100 From: Bernhard Beschow Now that there are dedicated eSDHC device models it is possible to replace the "vendor" property (which is really a device-specific property) with a dynamic cast, "fishing" out only the device models which shall have the quirk applied. Signed-off-by: Bernhard Beschow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: BALATON Zoltan Message-ID: <20260112145418.220506-14-shentey@gmail.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sdhci-internal.h | 1 - include/hw/sd/sdhci.h | 4 ---- hw/sd/sdhci.c | 5 ++--- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/hw/sd/sdhci-internal.h b/hw/sd/sdhci-internal.h index 50fb746a177..4aeed120bf1 100644 --- a/hw/sd/sdhci-internal.h +++ b/hw/sd/sdhci-internal.h @@ -309,7 +309,6 @@ extern const VMStateDescription sdhci_vmstate; #define DEFINE_SDHCI_COMMON_PROPERTIES(_state) \ DEFINE_PROP_UINT8("sd-spec-version", _state, sd_spec_version, 2), \ DEFINE_PROP_UINT8("uhs", _state, uhs_mode, UHS_NOT_SUPPORTED), \ - DEFINE_PROP_UINT8("vendor", _state, vendor, SDHCI_VENDOR_NONE), \ \ /* Capabilities registers provide information on supported * features of this specific host controller implementation */ \ diff --git a/include/hw/sd/sdhci.h b/include/hw/sd/sdhci.h index 51551348cf5..a9da6203fcb 100644 --- a/include/hw/sd/sdhci.h +++ b/include/hw/sd/sdhci.h @@ -98,7 +98,6 @@ struct SDHCIState { uint32_t quirks; uint8_t sd_spec_version; uint8_t uhs_mode; - uint8_t vendor; /* For vendor specific functionality */ /* * Write Protect pin default active low for detecting SD card * to be protected. Set wp_inverted to invert the signal. @@ -107,9 +106,6 @@ struct SDHCIState { }; typedef struct SDHCIState SDHCIState; =20 -#define SDHCI_VENDOR_NONE 0 -#define SDHCI_VENDOR_FSL 2 - /* * Controller does not provide transfer-complete interrupt when not * busy. diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index eab814096d7..c86dfa281f4 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -307,7 +307,8 @@ static void sdhci_reset(SDHCIState *s) s->data_count =3D 0; s->stopped_state =3D sdhc_not_stopped; s->pending_insert_state =3D false; - if (s->vendor =3D=3D SDHCI_VENDOR_FSL) { + if (object_dynamic_cast(OBJECT(s), TYPE_FSL_ESDHC_BE) || + object_dynamic_cast(OBJECT(s), TYPE_FSL_ESDHC_LE)) { s->norintstsen =3D 0x013f; s->errintstsen =3D 0x117f; } @@ -1863,7 +1864,6 @@ static void fsl_esdhc_be_init(Object *obj) s->io_ops =3D &esdhc_mmio_be_ops; s->quirks =3D SDHCI_QUIRK_NO_BUSY_IRQ; qdev_prop_set_uint8(dev, "sd-spec-version", 2); - qdev_prop_set_uint8(dev, "vendor", SDHCI_VENDOR_FSL); } =20 static const MemoryRegionOps esdhc_mmio_le_ops =3D { @@ -1889,7 +1889,6 @@ static void fsl_esdhc_le_init(Object *obj) s->io_ops =3D &esdhc_mmio_le_ops; s->quirks =3D SDHCI_QUIRK_NO_BUSY_IRQ; qdev_prop_set_uint8(dev, "sd-spec-version", 2); - qdev_prop_set_uint8(dev, "vendor", SDHCI_VENDOR_FSL); } =20 static const MemoryRegionOps usdhc_mmio_ops =3D { --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934588; cv=none; d=zohomail.com; s=zohoarc; b=jBsbNeVTaY0TpFU0vOHNSy4L6K3w44KPjSQb5t2We7MIvOlmngp+q/Rs0XK1vtYd9havwyz0qKtzgTmBACelr5geBYS4DGcwNFawbX39oFiu8S+HoCwRQDV4Smd22NaPibFz8pOBnM9DJUZ+BFOuAbCp6xF8uQRFksOFXUyfUdw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934588; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=G8NbjUAXkrEVgPJyYlYat3VGaOk50clmb92i6sZEIyM=; b=nhncB+7n5kiWutvg2k4ArWprqOBF78KvkMYK//uv5v9l6MqJiGa7NdNMwTGRLH23uzllNiNnlZoVjnj/xNAzpIJbdTDdV4/5umQXy0M9e4Ibgb2ca5U7NHmTGwtSi3RAMzKBZxFX2FyxZqhkN7OmO3jw0lmdk5y3cyniSaVB7GM= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934588407441.6732408001436; Tue, 20 Jan 2026 10:43:08 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGfc-0004iT-75; Tue, 20 Jan 2026 13:41:40 -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 ) id 1viGfZ-0004J3-41 for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:41:37 -0500 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGfW-0006WA-0D for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:41:36 -0500 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-47d6a1f08bbso20747215e9.2 for ; Tue, 20 Jan 2026 10:41:31 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43597bda41esm1044942f8f.28.2026.01.20.10.41.29 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:41:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934490; x=1769539290; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=G8NbjUAXkrEVgPJyYlYat3VGaOk50clmb92i6sZEIyM=; b=PlHNELlZAlfuHLazql2MDL+0rSkneupSGBJKKtYA7A37aGhgHs4raOyMaaw8Yek4aj 6Sba5U7BptY/PoXT4Cc8cllXA5qcifI1B9n2FRJ4U2oRocbScWwAffxqNRxaBb+KoYQ7 PLeKS83dITzJqWF4BkILb1FhmyE1njU+peiBFbj5qlgjssT0zDUZSTi0hyij3T2ziRcv xkEFrdt+m6nxjILyopHSdhuGZn3FF4S8mnQ1snf7vPhXn6ZoASw3RlR48CvFihpILnog LLpTg9mOC1Y0UH2rDRUW8gG7wbKbalic5y66W/s6pAVhv0rnDLKlKSH8/ehVa5BbKsdc /WqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934490; x=1769539290; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=G8NbjUAXkrEVgPJyYlYat3VGaOk50clmb92i6sZEIyM=; b=VKtnZBedFYLwE1xUkQtBLsXqV1Qm+h64N+U92kQEtnAw0W2GXIURH8mwkTZCX5V+B9 /Iytiy0f1bstM1lWdbqWTwTzAENVFDMM+GSVY3PRcLVJNDFTIZ/YzYqOtbyjtx0IT9qN eNWGimlWOk17RiER3htCpAPcAWmyiVwsUvyeb7oCfWaGxYeFB1wk3h63wjZ9eW04nPrw krD9GoxL+hXv9xcYjO4r59iPg9E0K7CmSfWhKGY57K240WMHuPFySzZ5RVtqffPc82q1 xKTeF3KW/pljcXOdDn4LrfwpNY1qrM7ARNcFwCNc8Djf7ZQVvyAhWglgQQfhqHRt6dUq /zRA== X-Gm-Message-State: AOJu0YxTWWdFTMvCu83OIpnp02vexbIfRiItg1aI768iKXIwBEeOlQ2v 64r+EUB57WOQupt9JiY5n54lOS+xgTU/sPHRuDGeL3KWyooptCwLd/woFTS+6lt4Auo0UJkIwig JZVV9n74= X-Gm-Gg: AY/fxX4wxu0Pox+ChY/ZkNrikBeD4EK2W6bX9zuilKWPFdt2wpeSg0SbSRBEUW98shQ zg/pljstfwczq78haHZ7SU4X+TjDpy+zJT7lN1PLlRx7aiV9zqhzHl+N0jEfphRYXh6ikcfJODX 4FjjiIut3o5/erUqOIJB9EXG3iWCixxeelvv4F89qAnvSJSUKEqhzVZeTUtKWJT+aNrrAkzeI5o 02gr1g9zkTZBargc0ETsz1LZi9PrWUfrPmpL2mX9Ua+eYbxSi70lHkiOVaiutBnGHUGhHdPRWM9 vmKn+GoJiA2Hic6do6rYDc5+xMwZUhsg2s+zj0GpDpIgZkL52P4d043rm3gf+QwXMSdwNJGlrLu zZSgHiohiGo4IlI6A6VCBuB2zi77U3LTIYMkcmFFYcxfeZ+9fDKzl+zNenfJvVLYFtzvrjSnaR6 CvaPx5sr3Us5N13Wf+oxnp8agJVPmkGLGOD03kxbm4XumexYGzOan/zgUXdUxX X-Received: by 2002:a05:600c:474a:b0:477:5897:a0c4 with SMTP id 5b1f17b1804b1-4801eab5647mr200823895e9.4.1768934489782; Tue, 20 Jan 2026 10:41:29 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 21/29] hw/sd/trace-events: Remove redundant "SWITCH " command name Date: Tue, 20 Jan 2026 19:38:54 +0100 Message-ID: <20260120183902.73845-22-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::32f; envelope-from=philmd@linaro.org; helo=mail-wm1-x32f.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: 1768934590414154100 From: Bernhard Beschow "switch" is already part of the function name. No need to repeat it. Signed-off-by: Bernhard Beschow Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: BALATON Zoltan Message-ID: <20260112145418.220506-15-shentey@gmail.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/trace-events | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/sd/trace-events b/hw/sd/trace-events index d30daa21431..4ec52d2a819 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -58,7 +58,7 @@ sdcard_write_data(const char *proto, const char *cmd_desc= , uint8_t cmd, uint32_t sdcard_read_data(const char *proto, const char *cmd_desc, uint8_t cmd, uin= t32_t offset, uint64_t size, uint32_t blklen) "%s %20s/ CMD%02d ofs %"PRIu3= 2" size %"PRIu64" blklen %" PRIu32 sdcard_set_voltage(uint16_t millivolts) "%u mV" sdcard_ext_csd_update(unsigned index, uint8_t oval, uint8_t nval) "index %= u: 0x%02x -> 0x%02x" -sdcard_switch(unsigned access, unsigned index, unsigned value, unsigned se= t) "SWITCH acc:%u idx:%u val:%u set:%u" +sdcard_switch(unsigned access, unsigned index, unsigned value, unsigned se= t) "acc:%u idx:%u val:%u set:%u" sdcard_rpmb_read_block(uint16_t resp, uint16_t read_addr, uint16_t result)= "resp 0x%x read_addr 0x%x result 0x%x" sdcard_rpmb_write_block(uint16_t req, uint16_t result) "req 0x%x result 0x= %x" =20 --=20 2.52.0 From nobody Sat Feb 7 08:53:46 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=1768934509; cv=none; d=zohomail.com; s=zohoarc; b=hV6xsgpiVZAZfA+zCbE9db9OueNSJNfJPO7jXZd6otnQqdRRbHDFZN7MgM86goGU3geqP+fpA82PkmT5zDu4Q7/Bu3T2dmJZ98eRpQ6SbzrgBBvUt3NQZP77MYuk1LR0UDol/OjNY6GkfPfk8RtXLjcHLLYbJkG/5pcEyFMxhSo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934509; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=MIJXPRC0+/9WoWGyCOIUjQQBuO8DkQLYIb8yEgeRGpc=; b=LKCUQF6/2JpkbcR/GWFMkCFz8QOYwsxVb6akaEI83R4n+hi2Ca0u30kRctGJby8gffFkfO1FsNCgIC+yQpRpZmCtoBBRV1/3k2B6kPB7m7WduK44ibBaCJextlWgcexutQS3mccIkSXmQCnvvTWZkjoRRm0AnDU/fQ3tahs5VY4= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934509737634.5587921111945; Tue, 20 Jan 2026 10:41:49 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGff-0004vF-G7; Tue, 20 Jan 2026 13:41:43 -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 ) id 1viGfc-0004nC-LP for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:41:40 -0500 Received: from mail-wr1-x441.google.com ([2a00:1450:4864:20::441]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGfa-0006Y0-Lz for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:41:40 -0500 Received: by mail-wr1-x441.google.com with SMTP id ffacd0b85a97d-42fb6ce71c7so5015671f8f.1 for ; Tue, 20 Jan 2026 10:41:38 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4356997eb1fsm30853426f8f.35.2026.01.20.10.41.35 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:41:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934496; x=1769539296; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=MIJXPRC0+/9WoWGyCOIUjQQBuO8DkQLYIb8yEgeRGpc=; b=XlEADt+3OdMeGuOT0w6MBeCyrhM0vU/39TsyfBUCPUsTCYleUAgXtb/DLjrJ21Z7ju Sk/QcZGWiADITFR5xPoO+w/PsjaN326ucO6Iuxy7//ScSHRBgEBew0/JsiCRLq2EUOIs 15PaniAG3EH1egzctWbR06IPuSPosA94zTFFCpxYzYbS+KgZ9uDt4Px5srxYVYLSH7U/ 3n4EqShmer2T7t2Q4tac7wgaSQ+GRtlzUSUa4oDHl7bedED1p2s/tkdtWmd1wvizDHO1 GNgInqRyz9wgTdK8S8hzvpG0iyeWn+7ULhBOBJxQH8n/dWArryanRZuDQ8o7glek5Yjg ZLPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934496; x=1769539296; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=MIJXPRC0+/9WoWGyCOIUjQQBuO8DkQLYIb8yEgeRGpc=; b=AyWu04bLbpes6uD4xeTTIjGFp6IDB0VI1UnD9CHVjfhlbyLjqtkSMauGg6u6jW3ORr gitoELrQULyYsL/ImVuPtvnbxpcDZ9NgFyGJHQQ9gnkYuCxAVeRLlfGrBquM4Uy0Hci+ tV9QIniy1vQnciT9qFf6ympaCRy8zsRyE1ymm+QIO9NT5KqwugvznNonPtdGAtz16KTO faLFhyi/KGlKwxH7XiSFI0Zm/PAyGvI3NuCxjLsPQIo+393+VZs6htnPEPukdqygVOKH 6ZSsJ4dUbVAN2NfZ9kdl3JF/Ub2ow3SBtu9ZY3bAd2i7brEEj7kHDBaYr05XpeixVsF5 PLbg== X-Gm-Message-State: AOJu0YzPAjHC4CKcc4JQuDJ45m47cUvSH8tQV72JmFmOi8nHhxBL/iIm zAQA7fJikIDccZzPTlxJmuErUvIG9yNQi5wu8ga2ejOrDf2gUib4cQVeJ2/q4pQ/TD0JR8FzzcW XJVR2I90= X-Gm-Gg: AZuq6aInZA5oB0DOkRp1JTbSxBUkkNYx+uIFZaxQFMmwRwVI6lsSMW8CXRUC4nlKsGP w/710xQpkkeLvWVRULfCY/G8bTIkT/BEuwxMp/M949YSarZC5hJOTBQ1L4gZNtyvSlr1Qpx3waP fJnVNc5rLP9FAkooLkZ7R34TPRfInBZ9sl+DyzH4O1gxA0kN7zbXJQxjXZn6bPARhclg/5kV7Ko Y2tT4wEcKRcYI+niM4lFuJ/SwuoM5KmKKU9UCARaDlziaxKIE0V8dswgHYHjO8WQ9K689aEJuRu bmlbrT63HEOzeDZDISc2jqjIuTZ8wdlJnY1w8+LZeDJohK/99eZhBTQFOtLtnj9KhMOVo+unp64 ianIR0QHr7fPuGsniO9qUGC2MpGSYjleg8ppOWCLABf/v4vNoR2ZVUNkqBBpJWGo1sHGksL+lJ5 NE8oHYBeUxD+oq8ECWRCd0bMoLeWm84P2h085PN2xoYW2YQkYLxzPwH4axP1Gd X-Received: by 2002:a5d:5f95:0:b0:42f:b690:6788 with SMTP id ffacd0b85a97d-4356997f4afmr22400846f8f.10.1768934496478; Tue, 20 Jan 2026 10:41:36 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 22/29] hw/loader: Rename LOAD_IMAGE_MAX _GUNZIP_BYTES to _DECOMPRESSED_BYTES Date: Tue, 20 Jan 2026 19:38:55 +0100 Message-ID: <20260120183902.73845-23-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::441; envelope-from=philmd@linaro.org; helo=mail-wr1-x441.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: 1768934511343154100 From: Daan De Meyer Preparation for adding support for zstd compressed efi zboot kernel images. Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Daan De Meyer Message-ID: <20251124123521.1058183-2-daan.j.demeyer@gmail.com> [PMD: Wrap long line to avoid checkpatch.pl warning] Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/core/loader.h | 2 +- hw/arm/boot.c | 4 ++-- hw/core/loader.c | 9 +++++---- hw/nvram/fw_cfg.c | 3 ++- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/include/hw/core/loader.h b/include/hw/core/loader.h index 6f917035034..1f14dccbca9 100644 --- a/include/hw/core/loader.h +++ b/include/hw/core/loader.h @@ -82,7 +82,7 @@ ssize_t load_image_mr(const char *filename, MemoryRegion = *mr); * load_image_gzipped_buffer() will read. It prevents * g_malloc() in those functions from allocating a huge amount of memory. */ -#define LOAD_IMAGE_MAX_GUNZIP_BYTES (256 << 20) +#define LOAD_IMAGE_MAX_DECOMPRESSED_BYTES (256 << 20) =20 ssize_t load_image_gzipped_buffer(const char *filename, uint64_t max_sz, uint8_t **buffer); diff --git a/hw/arm/boot.c b/hw/arm/boot.c index e22609de93a..c97d4c4e118 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -816,14 +816,14 @@ static ssize_t arm_load_elf(struct arm_boot_info *inf= o, uint64_t *pentry, static uint64_t load_aarch64_image(const char *filename, hwaddr mem_base, hwaddr *entry, AddressSpace *as) { + const size_t max_bytes =3D LOAD_IMAGE_MAX_DECOMPRESSED_BYTES; hwaddr kernel_load_offset =3D KERNEL64_LOAD_ADDR; uint64_t kernel_size =3D 0; uint8_t *buffer; ssize_t size; =20 /* On aarch64, it's the bootloader's job to uncompress the kernel. */ - size =3D load_image_gzipped_buffer(filename, LOAD_IMAGE_MAX_GUNZIP_BYT= ES, - &buffer); + size =3D load_image_gzipped_buffer(filename, max_bytes, &buffer); =20 if (size < 0) { gsize len; diff --git a/hw/core/loader.c b/hw/core/loader.c index f4581f76b9a..79cb96b4664 100644 --- a/hw/core/loader.c +++ b/hw/core/loader.c @@ -829,8 +829,8 @@ ssize_t load_image_gzipped_buffer(const char *filename,= uint64_t max_sz, goto out; } =20 - if (max_sz > LOAD_IMAGE_MAX_GUNZIP_BYTES) { - max_sz =3D LOAD_IMAGE_MAX_GUNZIP_BYTES; + if (max_sz > LOAD_IMAGE_MAX_DECOMPRESSED_BYTES) { + max_sz =3D LOAD_IMAGE_MAX_DECOMPRESSED_BYTES; } =20 data =3D g_malloc(max_sz); @@ -896,6 +896,7 @@ struct linux_efi_zboot_header { */ ssize_t unpack_efi_zboot_image(uint8_t **buffer, ssize_t *size) { + const size_t max_bytes =3D LOAD_IMAGE_MAX_DECOMPRESSED_BYTES; const struct linux_efi_zboot_header *header; uint8_t *data =3D NULL; ssize_t ploff, plsize; @@ -931,8 +932,8 @@ ssize_t unpack_efi_zboot_image(uint8_t **buffer, ssize_= t *size) return -1; } =20 - data =3D g_malloc(LOAD_IMAGE_MAX_GUNZIP_BYTES); - bytes =3D gunzip(data, LOAD_IMAGE_MAX_GUNZIP_BYTES, *buffer + ploff, p= lsize); + data =3D g_malloc(max_bytes); + bytes =3D gunzip(data, max_bytes, *buffer + ploff, plsize); if (bytes < 0) { fprintf(stderr, "failed to decompress EFI zboot image\n"); g_free(data); diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index 437ab6e210f..69e97361453 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -1115,7 +1115,8 @@ void load_image_to_fw_cfg(FWCfgState *fw_cfg, uint16_= t size_key, =20 if (try_decompress) { size =3D load_image_gzipped_buffer(image_name, - LOAD_IMAGE_MAX_GUNZIP_BYTES, &dat= a); + LOAD_IMAGE_MAX_DECOMPRESSED_BYTES, + &data); } =20 if (size =3D=3D (size_t)-1) { --=20 2.52.0 From nobody Sat Feb 7 08:53:47 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=1768934531; cv=none; d=zohomail.com; s=zohoarc; b=nk8QX8ZDRNLKjCyiGnvfpG7swBsSBjYl787eezhbXpOqG1F7wR3pGHnVRAYtT182yVgfarqrvIFB/a05XyPfO1zZ7/FuKTs5N2Rf1MzPDniefaV1V9qdj3sheb7R9zikFjfUgowB72s4GW3hE2efF9cvHOzzwXx+Ri9cy7xpfa0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934531; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=6gIImb95v7u/uivF2HOogdepgZBf4tY1S5rNqmDkBu4=; b=XgN9koNwnE6xj1rvTjhzkJudzCDAaRYpzXMHVJlZvbyJqSFeSmveiziYTvM83Gk49rbB+XJv4ITPf4/SluyejBwji6XM/HMZ1GWovQCH0G0MsPrNpFm/c9wxZoUnkz9agxA2W2d2uh/2PnJuXc/X0TtdxSOXWE3Y15/17qDniz4= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176893453163598.8695326803263; Tue, 20 Jan 2026 10:42:11 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGfm-0006HR-LL; Tue, 20 Jan 2026 13:41:52 -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 ) id 1viGfi-0005ex-Sd for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:41:47 -0500 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGfg-0006Ye-Vp for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:41:46 -0500 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-47edd6111b4so52446545e9.1 for ; Tue, 20 Jan 2026 10:41:44 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4358f138e26sm5609384f8f.17.2026.01.20.10.41.42 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:41:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934503; x=1769539303; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=6gIImb95v7u/uivF2HOogdepgZBf4tY1S5rNqmDkBu4=; b=rCX7uMW4r4eQY4Hd99uf3w3Sr5pAzSgrQBILfG1J7dXkHJSiha/pmFiGqy2XxEuRfW twt3Cuy60TOS47XOYHwQCiETdSyvMA12YP7TOLL8bPceeEBzKfnIzcOEd442CO2MVIfz 7Xrw2YwkaH16x2ejQwTDsWcZCyDwJj+qPLAtDAs9YeMuhQ11DrF4M6e9AHcrA47Rvg6x +gL63GtLRGQB2tZSsYxwC21K65lmnaZMMCYnNl4sV8mY1twp6z6c/0ExHoH7NKioJ5PO Z/p50whBRxOSAi3Z57rcLoDJUoxd7NoPipJFKpB8yNAtgZAA9e9ZxZhcPSot524lPXJo TCXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934503; x=1769539303; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=6gIImb95v7u/uivF2HOogdepgZBf4tY1S5rNqmDkBu4=; b=eVfHmlcUQcyRpXWSN7UmQoJUhkD1RT6TvPSYja0qpbodd/SDSFDlXczZbSXswoA3ol z+T/tX5/uratkHKPSsL+F1veWO8ld8UzI0ibQps52K+isSgtensgdXgPAs0aO7bk4mSJ 1dhPjDQ5urp3LJaFooIoa5esjDaGwVv0Bari1PrQz3JF1OYcAYB1Am4zTHiTso9FJ1ZE u7kXExW57kwdKtjsMLupONA6D/aUGu05VNcGj/NNOnPoy4ebSJRDG1XKOlQCfnDZdfDn mi+J3SV5PYmWCfpa6FdmV+LudsAkKcZe3oMBjIulVXHT6EbQJBaijjJ45HZ+x4fAFp3p y6Dw== X-Gm-Message-State: AOJu0YxHTn2lqIDxGps1OaSPesK1tQTD3uuY8Q3pzX4G6uco65Sbqoe/ WY3hQ4+zg70/W4t/fYrt8QGEkEGBsAi/QFq9xf3BgBeHN2JwLiHU1ChLIqH8vTlYtsJ4TZZ0t8U gzf7Pkz8= X-Gm-Gg: AY/fxX5PxsYM7n9roPNhiBBrmkHr/2P5YQeBRah5tTrhxHPrTql90tFLju7yjw7yixQ URCT7o4tUrInbqqZo1kZ9slkaWfp+/dVf+nW73NoaV48OxkZbA1GhsFt9J9K6FeIxDg4t4X/JLT /ZYjB5BTPyXBS00k1EyN0/SN1IqBlF4+TgCD/4XHj0jdVa03zoG2UnJZ3Quf4sLYprCPtT1IFb6 xMHFTW+9yn8m7WEPkKMIWNtOJMihOBDWoVGkHXHavf8KcLHXWjjKt3cmMP78Ngjbq/lId63MkVL oEv2o5Ia8LbdgjYZlqb3PwrgsoLgGMZZ2KNY+PBq9R47a1JkT2PxwID8D1E2VMtlPZxlXXm5YGl hMy7kh4ITJViRa/MTuwUcteKPSsKPdH43SBNHF02BTtqYml5c1DgSVfA2ZTX/XcNrthjEeuWwxe FsEmWzsNCW+eb7FfVvY0cIV1/Uyr5TD2OJn6ptggoZhjaCeafGbey0belvvccF X-Received: by 2002:a05:600c:3b8e:b0:47b:d949:9ba9 with SMTP id 5b1f17b1804b1-4801e2fe362mr199027425e9.13.1768934503057; Tue, 20 Jan 2026 10:41:43 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 23/29] hw/loader: Rename UBOOT_MAX _GUNZIP_BYTES to _DECOMPRESSED_BYTES Date: Tue, 20 Jan 2026 19:38:56 +0100 Message-ID: <20260120183902.73845-24-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::32f; envelope-from=philmd@linaro.org; helo=mail-wm1-x32f.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: 1768934535613154100 From: Daan De Meyer For consistency with LOAD_IMAGE_MAX_DECOMPRESSED_BYTES. Signed-off-by: Daan De Meyer Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Philippe Mathieu-Daud=C3=A9 Message-ID: <20251124123521.1058183-3-daan.j.demeyer@gmail.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/core/loader.h | 2 +- hw/core/loader-fit.c | 2 +- hw/core/loader.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/hw/core/loader.h b/include/hw/core/loader.h index 1f14dccbca9..dd22cbb5e85 100644 --- a/include/hw/core/loader.h +++ b/include/hw/core/loader.h @@ -345,7 +345,7 @@ ssize_t rom_add_option(const char *file, int32_t bootin= dex); =20 /* This is the usual maximum in uboot, so if a uImage overflows this, it w= ould * overflow on real hardware too. */ -#define UBOOT_MAX_GUNZIP_BYTES (64 << 20) +#define UBOOT_MAX_DECOMPRESSED_BYTES (64 << 20) =20 typedef struct RomGap { hwaddr base; diff --git a/hw/core/loader-fit.c b/hw/core/loader-fit.c index 233a7f78c24..d29b2ff2231 100644 --- a/hw/core/loader-fit.c +++ b/hw/core/loader-fit.c @@ -70,7 +70,7 @@ static void *fit_load_image_alloc(const void *itb, const = char *name, } =20 if (!strcmp(comp, "gzip")) { - uncomp_len =3D UBOOT_MAX_GUNZIP_BYTES; + uncomp_len =3D UBOOT_MAX_DECOMPRESSED_BYTES; uncomp_data =3D g_malloc(uncomp_len); =20 uncomp_len =3D gunzip(uncomp_data, uncomp_len, (void *) data, sz); diff --git a/hw/core/loader.c b/hw/core/loader.c index 79cb96b4664..21204a0cb91 100644 --- a/hw/core/loader.c +++ b/hw/core/loader.c @@ -754,7 +754,7 @@ static ssize_t load_uboot_image(const char *filename, h= waddr *ep, ssize_t bytes; =20 compressed_data =3D data; - max_bytes =3D UBOOT_MAX_GUNZIP_BYTES; + max_bytes =3D UBOOT_MAX_DECOMPRESSED_BYTES; data =3D g_malloc(max_bytes); =20 bytes =3D gunzip(data, max_bytes, compressed_data, hdr->ih_size); --=20 2.52.0 From nobody Sat Feb 7 08:53:47 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=1768934583; cv=none; d=zohomail.com; s=zohoarc; b=Pfsn+iItG4CBLukgeC6lLLQXAmJq0c4TU1XpkF1nh7fK5qOfBzgwv7JcMlrtlXT3gUpWmZwwNlrzcq8yGTwRHSVBvD1/HqiD5zBsU5brVaAgR4Hw0yKf5Fkxcb9ZrsCAAgmNfehBZZRk9weQ6GT2C1DobEn1jX/+ULOyoPTW8/8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934583; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=uCSk1DF6Mp1gbYlF8coioEniIIt1yf0zOgnDdIi+mDU=; b=Ee9zueRMfsdmDt3f5qj1Bnpy+uBA1HQR1C8y+Ruh7K3FolAGc3ZDplfs64AIDvlEqINRVgj36jfCUIOsk7m481V/t56U65Sav+7b4La8uDwzyc9/QH4rEDdFCW0SSXjepcjwQrS10KEKscdNYPbkwwyCpGjC5VjPcFFyZA4uEGQ= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934583834915.748801429506; Tue, 20 Jan 2026 10:43:03 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGgC-0007TA-8l; Tue, 20 Jan 2026 13:42:20 -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 ) id 1viGfp-0006vG-1J for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:41:54 -0500 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGfn-0006Zu-FU for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:41:52 -0500 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-48039fdc8aeso9837045e9.3 for ; Tue, 20 Jan 2026 10:41:51 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-480424a37dasm1252525e9.2.2026.01.20.10.41.48 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:41:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934510; x=1769539310; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=uCSk1DF6Mp1gbYlF8coioEniIIt1yf0zOgnDdIi+mDU=; b=Qn5g07m9ViwDca5zkXSnT25Kv3pJuK8SqlofzLe0oJuD7Nb6ipPkaavZKNZHXgcKyh /5sxsEf3/gSdQoV7aV/QSQMJV5E4WBci64P9dBT9PajidpbrELBPIvAdJAoyQme2OfJp Sz4BKB/qKFmcmo0WudHp3Fzso2CeMZ8IHRNsi1zt46xcZKDGwI4DsO+E4iDQXebg2Hji /dVqeuaTAsKW5j6ougdK/Lik5fApTnphcwID/oVuo5YICMhaDTIo5fEZygOHMJPOU7LI 7iLat2SmM7jOo3z7DAS9wo3UaqeXM4gTI2NV6YVv88qAyZAZfPxaDd2WLMpumgTTNpUf gI5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934510; x=1769539310; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=uCSk1DF6Mp1gbYlF8coioEniIIt1yf0zOgnDdIi+mDU=; b=VBnn8Fc9XGScPrezFXYs+i9iSIRtQqUrG4mGZQcs+1s38mC4voaRvCrkxfu5cU5O6/ Cyp47usJ17/bHjazBeAKucqU+YysqCLZeooKCwt0ZA0BR8Ob+9YSR6tztrjXb6McGbes VSc9F2zQFtXz0pLe4Aia8dwjQnCHkgiMY7s5qMVviwQzaxtkA1EonF2rdLHiVQ6EEnFy l/18cFNypjVNbdk4XSrqFjefxc/6ylJKLSwD7/o56GL/5FW80/ZxQUCZjKpUm9+Mme+D 2290prVQBcuKRupsS+7vOF26VbAKLOja8VoB/7ic4vQ0+reqCJraLdU/89aZQxOOcEg7 dxEg== X-Gm-Message-State: AOJu0Yy4eBfrtcFOp1EjiK2ZgmvqtKASIPOWPHEg1/YYF7zx3qPbY97x VaaevJa156A//gFUd/2JmTd6H1HNYBpntUBLJal6LDxhe9EUHjbx17bS+Hk8b6x6CC3hwZ+n1kv ZdqSpH6U= X-Gm-Gg: AY/fxX6XzyJYAKZwc3dHvxtdp+R1nxR+R0MK0vHKS5Lmhmywai78Ya0ZseMSk9V6YDN zmyKwN1Rp/xrmvgX7ysM+TOBi4u8PGsOiEGu39RuJ5JSIg40gPNwKWBMWrNRbBxlTIGJwZz1zn7 8ZtTQNFOptKjONxVL03zYQ0DHQ658Ji8r1PmRcG6iLK+3A3Kqx8+//uudnuGUsCmyHyItxxYGP1 oI91JXmo9v4tcsI2ZZmHKcVnbOcSoua8g3cGyEoScNIMVIuaAPwhxEYp01XML4d3bw1RmPPGIF4 qQaSXcSDRxQrNv1Lrup76/p7tFR9IQRXwcSFq5rV5TEz0KvWudaQUIv/EYE7a5W/M4ppgRunMnT a/APv6IMI+6E7bKRHNB2B8Ie4SiNLLSqro/8KEIpG/By3IqucfoWB1dImbH1AeH+WVDUI0EYwof s+wd2wU6CqTonwz9TWDHi1X6f+lSBefLMyS5ooZ69mnZTCyBkPEgRMQmn64ntMOsK3c6R/5uM= X-Received: by 2002:a05:600c:3e0d:b0:479:3a86:dc1c with SMTP id 5b1f17b1804b1-4803e803c1amr44675355e9.36.1768934509643; Tue, 20 Jan 2026 10:41:49 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 24/29] hw/loader: Use g_autofree in unpack_efi_zboot_image() Date: Tue, 20 Jan 2026 19:38:57 +0100 Message-ID: <20260120183902.73845-25-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::334; envelope-from=philmd@linaro.org; helo=mail-wm1-x334.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: 1768934585508158500 From: Daan De Meyer Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Daan De Meyer Message-ID: <20251124123521.1058183-4-daan.j.demeyer@gmail.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/core/loader.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/hw/core/loader.c b/hw/core/loader.c index 21204a0cb91..4952443fe5d 100644 --- a/hw/core/loader.c +++ b/hw/core/loader.c @@ -898,7 +898,7 @@ ssize_t unpack_efi_zboot_image(uint8_t **buffer, ssize_= t *size) { const size_t max_bytes =3D LOAD_IMAGE_MAX_DECOMPRESSED_BYTES; const struct linux_efi_zboot_header *header; - uint8_t *data =3D NULL; + g_autofree uint8_t *data =3D NULL; ssize_t ploff, plsize; ssize_t bytes; =20 @@ -936,12 +936,11 @@ ssize_t unpack_efi_zboot_image(uint8_t **buffer, ssiz= e_t *size) bytes =3D gunzip(data, max_bytes, *buffer + ploff, plsize); if (bytes < 0) { fprintf(stderr, "failed to decompress EFI zboot image\n"); - g_free(data); return -1; } =20 g_free(*buffer); - *buffer =3D g_realloc(data, bytes); + *buffer =3D g_realloc(g_steal_pointer(&data), bytes); *size =3D bytes; return bytes; } --=20 2.52.0 From nobody Sat Feb 7 08:53:47 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=1768934590; cv=none; d=zohomail.com; s=zohoarc; b=B5piVV4WMyYpTVlwRVVVO8X4ifJqSIJL+UfqXXaWZxZ+BtuHGd4Yq0C/Ldw25PZmusTAo61/HjA/SJ0sOjtP1wjf6+h7YJ/KA2sn25J7IhTrs2Rzehjtv9QQDk1qL+DXjvxXNV52+t8fXZlARtqt3BoOnjd3r9O3Z+BGee1Iepc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934590; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=Ib53PlD3S0w6gRxWe/zwqKIeC2KiqAHtDoUd9k0AWPw=; b=acvPKAMiCSJd4XVtrHda/AZwUMeTNFH89Tn+wumvSecYhKNXDylXQwJAr+rSLECllEs4OHZs2ubf/UGCJp29JHzMw+lyzY1PkfDsiXIfcNP3vrJwFhQJwhUDiuWhD2yvHTHPM+StwwPdaT6Q+5V6HDqxdjVMzjPavuDKADg+lFc= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934590678444.2644675936633; Tue, 20 Jan 2026 10:43:10 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGgG-0007cO-JM; Tue, 20 Jan 2026 13:42:20 -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 ) id 1viGfv-00076q-Rg for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:42:00 -0500 Received: from mail-wr1-x436.google.com ([2a00:1450:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGfu-0006eX-8F for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:41:59 -0500 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-432d28870ddso3193145f8f.3 for ; Tue, 20 Jan 2026 10:41:57 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43597719d1fsm1267644f8f.23.2026.01.20.10.41.55 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:41:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934516; x=1769539316; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Ib53PlD3S0w6gRxWe/zwqKIeC2KiqAHtDoUd9k0AWPw=; b=hV9wYq+C+dpBHl0P1a37f4kRrusH6CI+QFPP7JUJu3ADd3Mb3NW9ZxP0vkBVeHGGnz zPWWwqH7blTWB1560rxphGDS/ADGZSuMkMLsamFvj0pJpMapoaoudJgM2JdUVskVtRqp PYNiERssHIsKRpORlYcco0nmIjVrfGEB4TdSG+SqDQcMN3xb7efMKaZtJ8RP00HhAcSt NYvXIMz0I5SyeGqEk1Dt0t6jlKZ2Q5AAISK7YSzKhmIr/ghYxWN5uPlpn5ymEOyQMZKk LvOEvGKUQLmyKAxaQNSNfp3i5clop1vVCXrhaE9brlbYOYDIrMgaiMdzjVDm5Oot7BoO gCJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934516; x=1769539316; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Ib53PlD3S0w6gRxWe/zwqKIeC2KiqAHtDoUd9k0AWPw=; b=iB3gomcF3oV5WEMYmQehnte48WDdcfdZD7DyiE32j6WoQXl6KRKGfc9ThhJMjreAQo lJp7ACOz8bqiAMfisi6lk5koTERkNTHdgYaOgYe8m9PwgrW36qk2fNAQseX6uE2maZeK gcslSd65YvB0Fj8KGwDJJdkPbdFUXiWHlB0SYeEbZ5oMyO4SWDixLcwcdk4cU9yX2PwF Y9aEsX3t0bGvY/qNsvoJ2vJrYMWIfBZSuZ59mDMvIhCqnchTAwjF1Tsz/R9R5FHxWlJY clhlD61tDVTk37AE92X1eOXPQUqrmu8xLLsk/hgEzVaBnSpyWPrwZY+le2XlQteBZqUQ 64EQ== X-Gm-Message-State: AOJu0YwpJ+kV/mCGolWZSuwQ0x33HvmV0PCZLPjzGzRLD8zSY3lpKumo WQF5l6zMmHx5TqVtCFKEXYfPTay+tWmO+nLPCyMc6Ctxq7/A1vxbzRsryguIXZNsM0+qhhVClxr 9EA9HvUo= X-Gm-Gg: AZuq6aJ8mH+mVF4W5KLfWa7VapJOAykPkCucQGn9lNardgClsvX54R+3yS45IHmul5j FpqJqAcMmMYKJoP6HWjjcYZIsLDMxl/oUk5GjVJLiAl2SfJOo2HBmqJu3UL7xLfxNTNSRkyV3bR Kwavccy1g1TNvK3HMvYhzzsuNTv0CEY47O1aexCdxtJyd9C4pOVeKQggxBmaxdu622vusOwMAPr 9FiTS2o1GOxPir4baMaKXeMoh4ORW/O9CvyA0JoBM5BmDwJ9ut9dBy8MrjJ5CwQptMN5iZNi3Q2 VqXi2XmRnZzoA9/l8QXi4O/U2SxhTsMWJ1fLJhbTLm/bGUyvlnOYI4MFRGgEHscQdUxdMigBqI/ PKve1j+DI/zhyyLitAojowtLSjjCHF8lmCMb3JIhZcI/kAp2TTI6jEJ2g0XAI050yuO/1ZNTgfZ l3ZyhqdnaySlkT9yb/nI87cwaoFhyHfBk4s+FTPqnkv0EJ/OMPUhrdPEFEzpsWzUezutvtjrU= X-Received: by 2002:a5d:5887:0:b0:432:8504:8d5b with SMTP id ffacd0b85a97d-43569bcb816mr19444229f8f.50.1768934516354; Tue, 20 Jan 2026 10:41:56 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 25/29] hw/loader: Add support for zboot images compressed with zstd Date: Tue, 20 Jan 2026 19:38:58 +0100 Message-ID: <20260120183902.73845-26-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::436; envelope-from=philmd@linaro.org; helo=mail-wr1-x436.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: 1768934592586154100 From: Daan De Meyer Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Daan De Meyer Message-ID: <20251124123521.1058183-5-daan.j.demeyer@gmail.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/core/loader.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/hw/core/loader.c b/hw/core/loader.c index 4952443fe5d..5cbfba0a86d 100644 --- a/hw/core/loader.c +++ b/hw/core/loader.c @@ -68,6 +68,11 @@ =20 #include =20 +#ifdef CONFIG_ZSTD +#include +#include +#endif + static int roms_loaded; =20 /* return the size or -1 if error */ @@ -916,14 +921,6 @@ ssize_t unpack_efi_zboot_image(uint8_t **buffer, ssize= _t *size) return 0; } =20 - if (strcmp(header->compression_type, "gzip") !=3D 0) { - fprintf(stderr, - "unable to handle EFI zboot image with \"%.*s\" compressio= n\n", - (int)sizeof(header->compression_type) - 1, - header->compression_type); - return -1; - } - ploff =3D ldl_le_p(&header->payload_offset); plsize =3D ldl_le_p(&header->payload_size); =20 @@ -933,7 +930,22 @@ ssize_t unpack_efi_zboot_image(uint8_t **buffer, ssize= _t *size) } =20 data =3D g_malloc(max_bytes); - bytes =3D gunzip(data, max_bytes, *buffer + ploff, plsize); + + if (strcmp(header->compression_type, "gzip") =3D=3D 0) { + bytes =3D gunzip(data, max_bytes, *buffer + ploff, plsize); +#ifdef CONFIG_ZSTD + } else if (strcmp(header->compression_type, "zstd") =3D=3D 0) { + size_t ret =3D ZSTD_decompress(data, max_bytes, *buffer + ploff, p= lsize); + bytes =3D ZSTD_isError(ret) ? -1 : (ssize_t) ret; +#endif + } else { + fprintf(stderr, + "unable to handle EFI zboot image with \"%.*s\" compressio= n\n", + (int)sizeof(header->compression_type) - 1, + header->compression_type); + return -1; + } + if (bytes < 0) { fprintf(stderr, "failed to decompress EFI zboot image\n"); return -1; --=20 2.52.0 From nobody Sat Feb 7 08:53:47 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=1768934603; cv=none; d=zohomail.com; s=zohoarc; b=V3gaagn0dBN0oczBHoqdKdozpIV/7m3MZ8J+mwekr50ChYVzmw489gMatxRvhR9I8+eTOO9E24FNQ+GCOQuEfGIjXuvuzgU1B+XF7IIiRRK04id7fF2a2V2Q+dtPWRI5FBD8jcUIQ4sWQHhexei6ivMGdi0qiXkREoArSMGtkF0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934603; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=Jd3E3cgQtLspUatXKsJv5d53ERg76xpdU3e+kzswFcU=; b=AD9nkq60fC5mYBbipA/VAqPmCz7k8xFBsgfSlbYLOxo2+1ALhnIydRxS9ki3RqcFJygm/B/eiabMTUxuv81DwGbe7U5d+QrB7szrKi2IGZFvTaC5pn9XkiKVuIBLQmjwy5C4rl0NM049uWfli0UVjgeCgLgQymbujnSTQpAjzsg= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934603303249.99504895973234; Tue, 20 Jan 2026 10:43:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGh0-0000J6-Cw; Tue, 20 Jan 2026 13:43: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 ) id 1viGg5-0007K5-5F for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:42:10 -0500 Received: from mail-wm1-x341.google.com ([2a00:1450:4864:20::341]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGg0-0006fS-Sf for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:42:07 -0500 Received: by mail-wm1-x341.google.com with SMTP id 5b1f17b1804b1-480142406b3so31098305e9.1 for ; Tue, 20 Jan 2026 10:42:04 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43595e0a705sm2697508f8f.14.2026.01.20.10.42.02 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:42:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934523; x=1769539323; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Jd3E3cgQtLspUatXKsJv5d53ERg76xpdU3e+kzswFcU=; b=mn7Kr+3Ydqdwp+WYs7EtgIyIjd80R2rMJ45fkqvY6lzaT75+y5U9dC4i+JI1efF2Hr 5OePBzi5NTpxXfzbStyxhDUTIl1V5LrfIdZVlSVIhWa9CI7VNTF5fXN9iyq9t9m+fhbr XcmLQROOjmrmqKhu1aRGDNBfuB/+7xGU0omyVyquqe77oP95ZKl+HbT7ju3K0z67LifV BM85d7EzbgmdEkMN831+/HBqgpHxGsdn5ZybWnWg3pIHDvjYVWhSAoVsKAEHVrZjTXUy qzA/uXyLr15Xs3z+8iryyyQy7Mg1afnpAmkefpy+QcfZ7xoWFxhnHP1C7adE5vg8l3Yd ACgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934523; x=1769539323; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Jd3E3cgQtLspUatXKsJv5d53ERg76xpdU3e+kzswFcU=; b=Q0GpJZGU9bIZhLbjIRGFTVRgQBlxaJVWkaYyWflt1EOYZSlp6VSyGTlSyz98eAM+tp NidtCL4Nwv8wmBHSlhO3eWm0ytblQJXxTgi9/4fbVMZ4FyHRxYkQvMMI6tAYUMKA4ovX dB8BhRigaSKvCZ5T0AYIbBvsvdM27spti2Uyjav496VzPBAoMvRRgXz+YWwdFVUzBolA gcrK/YGpARtAzBPfPII9au4CMHDf6Fria2JSSwfLEGSVLuu+vMED2CGwc1Vrm6qbl6+j 2Zy5Ri9A4ae8xguQubm8Wi945BTSmOn/3BwS9VjF4bchF6MnZJO8mF55bUa4wMppt6ln sWXw== X-Gm-Message-State: AOJu0YwofT5krF/5F88UbTZDD6qmsz1vHbxigkIO3PR4MuOmIAnjsas+ LrY3LkwuasFqA9/2bAuepr0lKgBYOHmmu5/auUAtmsEfa94jkpycEp5gFe1tEjEpoaCb7hWA9Rf z4vs+LZg= X-Gm-Gg: AY/fxX6FXC8w5OU/Q39qLj/ER2XEGFlDbDYvp5Acg5NeqmssmXrDKHJY8FJHlMbGOpr FMvH2EFPrnemByIMLVNCKMr6I3DtD+ktn32UggQttM9SJTmzJd29jwRDg9zJwYEmtXedQ1c2q4y 4ieLvr+McWtFzdsaA3qrIkxv9ZnQEzjLpxVeTR2LoYb6ImVSRpVpztZgfIUm00qnEyn+tbr6LtI GQoZOI215xrLVP2qEQPmNFUimNaCRjOkQbrGI3FUrCG8kEheirij30aDzgflaxCCYG79gRNNbT8 B2f+ECFeLEQ4gvmF8JZ9yr07hF/K6tZD4xY3+sAGN+ql2yciOsbtC5CXe/SxMHGMGLLQB0StWEX pO7mnXfBWLvhu0wdYBWHL1JkK/KyZRU1NTgA8utqqGL7UM5WcNAghfiKuCsbTrEJWueTof6LCtk 2mSh7JmJ7BcKdyXsXJA1pyPrUWFk4TeAuo4sV5WMNgdDr1dOst/BgefaQ6I8dB X-Received: by 2002:a05:600c:a305:b0:480:2521:4d92 with SMTP id 5b1f17b1804b1-4802521516emr147455075e9.24.1768934522907; Tue, 20 Jan 2026 10:42:02 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 26/29] hw: move pcap structs to header file Date: Tue, 20 Jan 2026 19:38:59 +0100 Message-ID: <20260120183902.73845-27-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::341; envelope-from=philmd@linaro.org; helo=mail-wm1-x341.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: 1768934604670154100 From: Gerd Hoffmann Allow reusing them elsewhere in qemu. Signed-off-by: Gerd Hoffmann Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-ID: <20260114110406.3500357-2-kraxel@redhat.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/qemu/pcap.h | 30 ++++++++++++++++++++++++++++++ hw/usb/pcap.c | 24 +----------------------- 2 files changed, 31 insertions(+), 23 deletions(-) create mode 100644 include/qemu/pcap.h diff --git a/include/qemu/pcap.h b/include/qemu/pcap.h new file mode 100644 index 00000000000..05aba83c15b --- /dev/null +++ b/include/qemu/pcap.h @@ -0,0 +1,30 @@ +/* + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#ifndef QEMU_PCAP_H +#define QEMU_PCAP_H + +#define PCAP_MAGIC 0xa1b2c3d4 +#define PCAP_MAJOR 2 +#define PCAP_MINOR 4 + +/* https://wiki.wireshark.org/Development/LibpcapFileFormat */ + +struct pcap_hdr { + uint32_t magic_number; /* magic number */ + uint16_t version_major; /* major version number */ + uint16_t version_minor; /* minor version number */ + int32_t thiszone; /* GMT to local correction */ + uint32_t sigfigs; /* accuracy of timestamps */ + uint32_t snaplen; /* max length of captured packets, in octets = */ + uint32_t network; /* data link type */ +}; + +struct pcaprec_hdr { + uint32_t ts_sec; /* timestamp seconds */ + uint32_t ts_usec; /* timestamp microseconds */ + uint32_t incl_len; /* number of octets of packet saved in file */ + uint32_t orig_len; /* actual length of packet */ +}; + +#endif /* QEMU_PCAP_H */ diff --git a/hw/usb/pcap.c b/hw/usb/pcap.c index bb74d046a59..1fe772d5066 100644 --- a/hw/usb/pcap.c +++ b/hw/usb/pcap.c @@ -8,31 +8,9 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/pcap.h" #include "hw/usb/usb.h" =20 -#define PCAP_MAGIC 0xa1b2c3d4 -#define PCAP_MAJOR 2 -#define PCAP_MINOR 4 - -/* https://wiki.wireshark.org/Development/LibpcapFileFormat */ - -struct pcap_hdr { - uint32_t magic_number; /* magic number */ - uint16_t version_major; /* major version number */ - uint16_t version_minor; /* minor version number */ - int32_t thiszone; /* GMT to local correction */ - uint32_t sigfigs; /* accuracy of timestamps */ - uint32_t snaplen; /* max length of captured packets, in octets = */ - uint32_t network; /* data link type */ -}; - -struct pcaprec_hdr { - uint32_t ts_sec; /* timestamp seconds */ - uint32_t ts_usec; /* timestamp microseconds */ - uint32_t incl_len; /* number of octets of packet saved in file */ - uint32_t orig_len; /* actual length of packet */ -}; - /* https://www.tcpdump.org/linktypes.html */ /* linux: Documentation/usb/usbmon.rst */ /* linux: drivers/usb/mon/mon_bin.c */ --=20 2.52.0 From nobody Sat Feb 7 08:53:47 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=1768934627; cv=none; d=zohomail.com; s=zohoarc; b=R7/cxWenZQ2/ypCkpNnzrin8YLf1qVyLFTYHMOFMXEzmbs9H/rMr9RMZZjCGCezs6xYrmSuoXPladd586OisRAZ2HYjboohGR9kvwlcOGaxLnH43X2pa7NORYJhL0MJ1BLU4mlnQe47V3MGs741Za1J9jIhZmqiZK9Iz2jH5DxU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934627; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=zqrLqq609CQUjCSSvXVi6semWi0zMFDysWxfDqV7aAs=; b=L7m66Q3dTPl1nBQzDaYHKbF9AMUWhPcfAk8LMPZcEU8fq4e7rqKUBzpN7F8/VfwldRi74E2OWMxObmm/xWE9DBZEu1ruN1gCIRWH1H12cXBY2ls0WE/TKZF330rsnvML0+SBFd+DaKN0/rBtwrj2YxLHB7FB1H9i/IvdnsT3AW4= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934627301467.64303912248306; Tue, 20 Jan 2026 10:43:47 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGh3-0000hK-Bw; Tue, 20 Jan 2026 13:43:09 -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 ) id 1viGgB-0007SP-CU for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:42:15 -0500 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGg8-0006g1-R3 for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:42:14 -0500 Received: by mail-wr1-x443.google.com with SMTP id ffacd0b85a97d-432d28870ddso3193281f8f.3 for ; Tue, 20 Jan 2026 10:42:11 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-435996540cesm56559f8f.43.2026.01.20.10.42.08 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:42:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934530; x=1769539330; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=zqrLqq609CQUjCSSvXVi6semWi0zMFDysWxfDqV7aAs=; b=g19OgJpocvMqwwOMK9MheMYi6iBgXp/UY1+dmW3fy4xlHeNwl51ti4yqZuRbNMzzFB yWQHmem8rtGBTMCRbs3F5f6iadwTctG/l7zydT8rnB2I15xmj3F2ZIzJLrYEpc6smrH0 HyO7y0BnMsX7IXVIYxtLIYqDEyVzSlD0hFHy1ouV9tSP6ooBGW169cVpX6z104pImjFW 6lDV5TJ/81CH+Rb2kP/qCt/IvlACqLaCsZiSI1b/zEKLGbuGL8GIyAM6sBBF8+h22Vl9 cdZl18FaCi+5l0reQg78U12TY/6VprF6GOHXoE8dusfngdGNy//aVhFLsSSCi9b1gN1d sEKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934530; x=1769539330; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=zqrLqq609CQUjCSSvXVi6semWi0zMFDysWxfDqV7aAs=; b=cuRQgNzVF/W/fRlP1xw18JtDpaHTevDiE1urUKB6S6qpF5PAJ3s+tQKu1sRcPooO6p om7zC3RnBY897maoGZu4Ma3H8fqfPpsdstQPieom0Num10/hfZq+agZjupJybtWBcPbV AU5+V6Hm+TFL81rRldg2tqDXcW/V8XDSuSGKpmkx0N5k5rk3/EceF4nH7W+EYUEQan3K RSROB6ALl/weANa1wM9rB8d88NWI8JmjdEkZ+nBgCxr96bCarhIBPRpttbThnT70KPlN ijCtol274Xq7x2gdIAVxHk5hA+S9WO+N942ad6sb8EZdnpvR4rkLsHWCHjllmNQacF+Q eCug== X-Gm-Message-State: AOJu0YwHO8jROQJxnzuMpIQTGPFjCFaMbdj1Uryh/vHnKBxiqUjzoGKa F107vrqHW3D7OurZXFocxcnfgygN8LyQCHdcM0ygABYf2tmhOpQwBr7RwSuxlYOj/xSpKDGiv5q avt48hRE= X-Gm-Gg: AZuq6aKQkSuy5F5dFIA9kFzhdgMD/fcaGRH0dlzDlOJPz6o7Suurc0Gd+DtdjHQzgp/ j+Nip0nsnN40f9vP9BNKDpMxI4DrTXzAFuMCy3To+EEpOn8rK/mDFOE/GaMDdt3kWf3Gh7JwF1r hdGSHp7iZcXOaoWXEVVZ9mS4UjIJaYCcqj8vJmBxartKxtuCORhkl8d/ejhdKK/yvKj+VYhwa6n 2QtPGtSl8mGYVdIyH02TvsesAaFvlJA0iue2ClfpqqoGpsdKxlzBbjP87GXe+Xq37rMDI8uUK3H jCBHCjdqz13E+ltMDnAR45xVm+95Jqnz0q/6IELKsPXU/H3K8XQdc8HiHpnAS60xOY5nK6Gid7U pYS9KP1dRbXpyaCUn8jELCMPyLHoZkdZMLZyTzsgK5QggG9ehxrKE9X4n5et4p69Zb4E+O1morL Bxue4tWHMnr7NfxOlyY5wb80ZhAljeJh2kFOeePbA797xpwtEldfHgeHf7WIZhYbw/z5UwhWk= X-Received: by 2002:a05:6000:2505:b0:432:5b81:49c with SMTP id ffacd0b85a97d-43569bd463bmr17900265f8f.55.1768934529487; Tue, 20 Jan 2026 10:42:09 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 27/29] hw/uefi: add pcap support Date: Tue, 20 Jan 2026 19:39:00 +0100 Message-ID: <20260120183902.73845-28-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::443; envelope-from=philmd@linaro.org; helo=mail-wr1-x443.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: 1768934627775158500 From: Gerd Hoffmann Add pcapfile property to uevi-vars-* devices, allowing to write out a capture of the communication traffic between uefi firmware and qemu. Signed-off-by: Gerd Hoffmann Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-ID: <20260114110406.3500357-3-kraxel@redhat.com> [PMD: Wrap long line to avoid checkpatch.pl warning] Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/uefi/var-service.h | 10 ++++ hw/uefi/var-service-core.c | 7 +++ hw/uefi/var-service-pcap.c | 95 +++++++++++++++++++++++++++++++++++ hw/uefi/var-service-sysbus.c | 1 + hw/uefi/meson.build | 1 + 5 files changed, 114 insertions(+) create mode 100644 hw/uefi/var-service-pcap.c diff --git a/include/hw/uefi/var-service.h b/include/hw/uefi/var-service.h index 91fb4a20918..7d84025cd58 100644 --- a/include/hw/uefi/var-service.h +++ b/include/hw/uefi/var-service.h @@ -77,6 +77,10 @@ struct uefi_vars_state { bool force_secure_boot; bool disable_custom_mode; bool use_pio; + + /* request + reply capture */ + char *pcapfile; + FILE *pcapfp; }; =20 struct uefi_vars_cert { @@ -189,4 +193,10 @@ uefi_var_policy *uefi_vars_add_policy(uefi_vars_state = *uv, variable_policy_entry *pe); uint32_t uefi_vars_mm_check_policy_proto(uefi_vars_state *uv); =20 +/* vars-service-pcap.c */ +void uefi_vars_pcap_init(uefi_vars_state *uv, Error **errp); +void uefi_vars_pcap_reset(uefi_vars_state *uv); +void uefi_vars_pcap_request(uefi_vars_state *uv, void *buffer, size_t size= ); +void uefi_vars_pcap_reply(uefi_vars_state *uv, void *buffer, size_t size); + #endif /* QEMU_UEFI_VAR_SERVICE_H */ diff --git a/hw/uefi/var-service-core.c b/hw/uefi/var-service-core.c index 6ab8df091aa..ce0628fa524 100644 --- a/hw/uefi/var-service-core.c +++ b/hw/uefi/var-service-core.c @@ -101,6 +101,8 @@ static uint32_t uefi_vars_cmd_mm(uefi_vars_state *uv, b= ool dma_mode) } memset(uv->buffer + size, 0, uv->buf_size - size); =20 + uefi_vars_pcap_request(uv, uv->buffer, size); + /* dispatch */ if (qemu_uuid_is_equal(&mhdr->guid, &EfiSmmVariableProtocolGuid)) { retval =3D uefi_vars_mm_vars_proto(uv); @@ -127,6 +129,8 @@ static uint32_t uefi_vars_cmd_mm(uefi_vars_state *uv, b= ool dma_mode) retval =3D UEFI_VARS_STS_ERR_NOT_SUPPORTED; } =20 + uefi_vars_pcap_reply(uv, uv->buffer, sizeof(*mhdr) + mhdr->length); + /* write buffer */ if (dma_mode) { dma_memory_write(&address_space_memory, dma, @@ -163,6 +167,8 @@ void uefi_vars_hard_reset(uefi_vars_state *uv) uefi_vars_clear_volatile(uv); uefi_vars_policies_clear(uv); uefi_vars_auth_init(uv); + + uefi_vars_pcap_reset(uv); } =20 static uint32_t uefi_vars_cmd(uefi_vars_state *uv, uint32_t cmd) @@ -319,4 +325,5 @@ void uefi_vars_realize(uefi_vars_state *uv, Error **err= p) { uefi_vars_json_init(uv, errp); uefi_vars_json_load(uv, errp); + uefi_vars_pcap_init(uv, errp); } diff --git a/hw/uefi/var-service-pcap.c b/hw/uefi/var-service-pcap.c new file mode 100644 index 00000000000..a09ee1d4c05 --- /dev/null +++ b/hw/uefi/var-service-pcap.c @@ -0,0 +1,95 @@ +/* + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#include "qemu/osdep.h" +#include "qemu/error-report.h" +#include "qemu/pcap.h" +#include "system/dma.h" + +#include "hw/uefi/var-service.h" + +#define LINKTYPE_EDK2_MM 302 + +#define SNAPLEN (64 * 1024) +#define TYPE_RESET 0x01 +#define TYPE_REQUEST 0x02 +#define TYPE_REPLY 0x03 + +static void uefi_vars_pcap_header(FILE *fp) +{ + static const struct pcap_hdr header =3D { + .magic_number =3D PCAP_MAGIC, + .version_major =3D PCAP_MAJOR, + .version_minor =3D PCAP_MINOR, + .snaplen =3D SNAPLEN, + .network =3D LINKTYPE_EDK2_MM, + }; + + fwrite(&header, sizeof(header), 1, fp); + fflush(fp); +} + +static void uefi_vars_pcap_packet(FILE *fp, uint32_t type, + void *buffer, size_t size) +{ + struct pcaprec_hdr header; + struct timeval tv; + uint32_t orig_len =3D size + sizeof(type); + uint32_t incl_len =3D MIN(orig_len, SNAPLEN); + + gettimeofday(&tv, NULL); + header.ts_sec =3D tv.tv_sec; + header.ts_usec =3D tv.tv_usec; + header.incl_len =3D incl_len; + header.orig_len =3D orig_len; + + fwrite(&header, sizeof(header), 1, fp); + fwrite(&type, sizeof(type), 1, fp); + if (buffer) { + fwrite(buffer, incl_len - sizeof(type), 1, fp); + } + fflush(fp); +} + +void uefi_vars_pcap_init(uefi_vars_state *uv, Error **errp) +{ + int fd; + + if (!uv->pcapfile) { + return; + } + + fd =3D qemu_create(uv->pcapfile, + O_WRONLY | O_TRUNC | O_BINARY, + 0666, errp); + if (fd < 0) { + return; + } + + uv->pcapfp =3D fdopen(fd, "wb"); + uefi_vars_pcap_header(uv->pcapfp); +} + +void uefi_vars_pcap_reset(uefi_vars_state *uv) +{ + if (!uv->pcapfp) { + return; + } + uefi_vars_pcap_packet(uv->pcapfp, TYPE_RESET, NULL, 0); +} + +void uefi_vars_pcap_request(uefi_vars_state *uv, void *buffer, size_t size) +{ + if (!uv->pcapfp) { + return; + } + uefi_vars_pcap_packet(uv->pcapfp, TYPE_REQUEST, buffer, size); +} + +void uefi_vars_pcap_reply(uefi_vars_state *uv, void *buffer, size_t size) +{ + if (!uv->pcapfp) { + return; + } + uefi_vars_pcap_packet(uv->pcapfp, TYPE_REPLY, buffer, size); +} diff --git a/hw/uefi/var-service-sysbus.c b/hw/uefi/var-service-sysbus.c index 75b07905184..97a96cae6a2 100644 --- a/hw/uefi/var-service-sysbus.c +++ b/hw/uefi/var-service-sysbus.c @@ -33,6 +33,7 @@ static const Property uefi_vars_sysbus_properties[] =3D { DEFINE_PROP_SIZE("size", uefi_vars_sysbus_state, state.max_storage, 256 * 1024), DEFINE_PROP_STRING("jsonfile", uefi_vars_sysbus_state, state.jsonfile), + DEFINE_PROP_STRING("pcapfile", uefi_vars_sysbus_state, state.pcapfile), DEFINE_PROP_BOOL("force-secure-boot", uefi_vars_sysbus_state, state.force_secure_boot, false), DEFINE_PROP_BOOL("disable-custom-mode", uefi_vars_sysbus_state, diff --git a/hw/uefi/meson.build b/hw/uefi/meson.build index c8f38dfae24..3eae4755331 100644 --- a/hw/uefi/meson.build +++ b/hw/uefi/meson.build @@ -3,6 +3,7 @@ system_ss.add(files('hardware-info.c', 'ovmf-log.c')) uefi_vars_ss =3D ss.source_set() if (config_all_devices.has_key('CONFIG_UEFI_VARS')) uefi_vars_ss.add(files('var-service-core.c', + 'var-service-pcap.c', 'var-service-json.c', 'var-service-vars.c', 'var-service-auth.c', --=20 2.52.0 From nobody Sat Feb 7 08:53:47 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=1768934631; cv=none; d=zohomail.com; s=zohoarc; b=SyARj4eT2aKPr6SMf9fQxgVo1oArLKP4wLaE5lm4Y82AmQWMbo1kTZ512LHSNaYYTjTvzBImWiMwJ4T0YUKms6ZleUONcdDUq1ERdRTrXIa+kfjRcmFOq9wZVNUuQYVQR0k1aq+yY9HUR/lGUsyFbtf+xxtpcwHieB7DDEZZZLs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934631; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=vWVxlgIOIG3Jwz+arTzaCTiEQKHvN9ANQV0FaiHKLv4=; b=nx0Zr2ifSWIk3YcbZCAQzf9geP4EQKVT6ZDz5Ww4zRJxsJn6QR5+mFCwZ5SEPdKhkzna1nPVuFJTEDlDbbD3CFXj74qXAcbshKIz4soDZCS7xGTw425qcjfIT6seJJhtx2Bzs07zqHR05JTZv7q18NcuGpWAEpbpxhi81Yi5g3U= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934631848873.1284417009882; Tue, 20 Jan 2026 10:43:51 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGh6-0001Bg-Am; Tue, 20 Jan 2026 13:43:12 -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 ) id 1viGgI-0007mh-U1 for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:42:25 -0500 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGgE-0006ga-It for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:42:21 -0500 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-47ee974e230so45731325e9.2 for ; Tue, 20 Jan 2026 10:42:17 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4801e86c197sm262675095e9.1.2026.01.20.10.42.15 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:42:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934536; x=1769539336; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=vWVxlgIOIG3Jwz+arTzaCTiEQKHvN9ANQV0FaiHKLv4=; b=H9pbWtA4EfNcwVgTrgrYmkn0//bLBQsVFkAHfjWtr6AcYKvLE83ToitwlqDeB5fBWi ifzMrr+XrgM25+nzYi+h2/+3kOEFxMQnHF5PN6KMTKrMOWbePEKV8IeViBOdR6C+zlN9 zf7raVQvhPT56Eyjxn8wd3PqooddqR388UCaX424g0x+H+1G5DrkfmbJoJ/kY8z+lvhN dPiJ/sWiMPIquyYnuXdG6J4lJivjSAQpLxGEP0qcSuDnL5VVS9rWEpbsPqAO49nWQrLB aqpw+mKKL13YqizgOLYMFNZRvGX8A+uUzOj9FtxWq6ZPT+SPS2vjwvPf5PclgMZgezWn Wv2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934536; x=1769539336; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=vWVxlgIOIG3Jwz+arTzaCTiEQKHvN9ANQV0FaiHKLv4=; b=buWptM98rUcouOrIRsQScBjF8z8o11waSuXYqyl+2WJ7VoZmybJ4lE/4G7Tl3zhCI5 v5cVqNuaEVC2tD4OuczDv1UyQKzl8WZRZ+qrbu+TRcrYRJT1RwLfzKByQEKTPWAPgSZu CIrK/8+GCobicuY+rhPitrjEil1+MGhJWCj7NklTewa+OAcjlK1SCLkp0q6Ldk1j8G8G ifJ+W2FNGF950gKZHDxE9Nr8aekED+7W8e4GbomN/R6ldBXOMnm2ol3XBLSnPVYYNq+f 6I8qMQLGhkY+CY8ffbMzQimoQd3AK95sCVoVG8wd/kJ7b4FbRh8SPvg5Z8aoQLPmdsw0 Xt7g== X-Gm-Message-State: AOJu0Yxa6fvaN4bbOln4SwHuvrQOzPMFXGkSiilblPQEU/7O/51nJ4iu 4ly0i8xb2PoiUYEa5OSlvSHqRON3vJLPjGs5key9UItHCJgbgxSrCCuF0xu0al06Hto07UzzKBz 0Q7z3BmI= X-Gm-Gg: AY/fxX4d20lTKAPZROPFWiR7rLRQnP9Vo8GIDvLZsBmmkHgSnl7gNumku5vcDCGIA4+ GKjLtcJbT5h73EH94rTalUWzVrJ7/Lyckclgzx8yWuyE5Fe1JEcLXOkxHyvF6RDAYChfWTvJfaE LD/+Uv44Bu5985QJqsmvNqNYJXOZDv+XMWjqopLAlYYlbc7YCR9SA+/3HGI9FEU/B3kIkCAg8wZ yQn73PbRuTPvyHgMDEUKLgjrd0rCnRCfySZjFvlFC/Xf2UUKr+GSvr8FZjzJYqq1aQCqPB/PIGy 9pxbtER1Y3T0HYEck9gdJnff4cU9isJJi5nR+W+wKB6yT5N8Yke5vYuCJBh4Gl1X5JpYoIboDHL gLUl99V/ejEPXTSvTJ+G0coFguusC2X6+0q+7W3NqTx8i0A+THpg4bk1TFSqp8G9N8Di6TjSxwA Yyac4s90AF226JYP+OFpF32v56B6dCTg/EzmoBBYGztetyl41AklijYh2f4jiw X-Received: by 2002:a05:600c:4fcb:b0:470:fe3c:a3b7 with SMTP id 5b1f17b1804b1-4803e79b805mr40526545e9.5.1768934536214; Tue, 20 Jan 2026 10:42:16 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 28/29] hw/virtio-nsm: include qemu/osdep.h Date: Tue, 20 Jan 2026 19:39:01 +0100 Message-ID: <20260120183902.73845-29-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::331; envelope-from=philmd@linaro.org; helo=mail-wm1-x331.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: 1768934633703158500 From: Paolo Bonzini The file hw/virtio/cbor-helpers.c does not include our standard qemu/osdep.h header, add it. Reported-by: Peter Maydell Signed-off-by: Paolo Bonzini Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Dorjoy Chowdhury Message-ID: <20260119120402.284985-1-pbonzini@redhat.com> Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/virtio/cbor-helpers.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/virtio/cbor-helpers.c b/hw/virtio/cbor-helpers.c index 49f55df3994..010454d5383 100644 --- a/hw/virtio/cbor-helpers.c +++ b/hw/virtio/cbor-helpers.c @@ -8,6 +8,7 @@ * top-level directory. */ =20 +#include "qemu/osdep.h" #include "hw/virtio/cbor-helpers.h" =20 bool qemu_cbor_map_add(cbor_item_t *map, cbor_item_t *key, cbor_item_t *va= lue) --=20 2.52.0 From nobody Sat Feb 7 08:53:47 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=1768934604; cv=none; d=zohomail.com; s=zohoarc; b=MyeI5EsltMZar+B6xn8zLwbDQHB34siZ8d9UM0bh1c6zJaOwm3xgZKWHfKREuh4FwSOXSQ92WEAL8ECtLxuUDoGiyVuR8UVBz+6L4MVDRh9UI7UnbLNXoiV6ksxFm4T1Pjljz8BFyptYlYaAmWHr+ZG8d4clRl59DuUcmQ1lea4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1768934604; h=Content-Type:Content-Transfer-Encoding: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:Cc; bh=lZ4calIf/kw/c+hbg+qyJSLSji7C9qv973kqSG9pMSs=; b=ka8JPau1IQnVx2O3Yoq5PrCQvNHKTSYwhWca9asP8BEd6btxga5sfXMM9XaqOy3+zHHFHSetf++TOVeSudrlZe4mY75rfp3U8G8afgXDCOZH+GSWpf51LamGt3O0Ea6cXhoEJ+dViL+F0Ssg31OjWXgttqsFKGWs4wW2L21/v30= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1768934604168408.2363428331439; Tue, 20 Jan 2026 10:43:24 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1viGgo-00089I-Gk; Tue, 20 Jan 2026 13:42:56 -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 ) id 1viGgP-0007ra-88 for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:42:34 -0500 Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1viGgL-0006hJ-45 for qemu-devel@nongnu.org; Tue, 20 Jan 2026 13:42:28 -0500 Received: by mail-wm1-x344.google.com with SMTP id 5b1f17b1804b1-47ee9817a35so33102395e9.1 for ; Tue, 20 Jan 2026 10:42:24 -0800 (PST) Received: from localhost.localdomain (88-187-86-199.subs.proxad.net. [88.187.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4801e8c0475sm310188685e9.10.2026.01.20.10.42.21 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Jan 2026 10:42:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1768934543; x=1769539343; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=lZ4calIf/kw/c+hbg+qyJSLSji7C9qv973kqSG9pMSs=; b=hqR+IxgFzMHAKJOkeKJ1FiyN8k6ATlJlgpSwHsDwCgt44y/isUhK8Bna3Z4WdOrQSd ezbXAeb1Z+CHjufDjV8WWyJiZuDA6ZnjuLeD+GVlDv5yGr2LUjd0TvkKKHULz5gOwu7W 87ac5itfGv08URVxhDSuR7Lt+/uj8Te6upxuUL1UzZB3YYFWEbiItimDVeVNqNI6soLj jpKMTrMRl5SYSSPOHVXkYgGis+qrxOgOlosbk8D0tzJoqBl7dajnPO9MmAW3pHEzslhD l6yw3Eg03ZPd9kwz3g98sbWCHWyOnJj3d1Vp3mZ3OrNm9zAh/E5IovOiyBosuQHvn/xF sXSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768934543; x=1769539343; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=lZ4calIf/kw/c+hbg+qyJSLSji7C9qv973kqSG9pMSs=; b=eClN9eCkoWcD8TF5nxAKLz3y5JIoTM8goKfaKJ/8S7fhNDEvgiMRk3rsc9xG+Bm0tI 6B7j4yaqTSSp5kkzN7+BvGmsN7ETdx9jVSkU/AX+I+SsH4Eq32v2f1i6Mg9FKyHrN8+E IizSSfMR7Mx2BV7xTq4halQn4bPBNvnzwSLZBV+8kA+8AEtXFQr9Gs2aAtcdSwg6zlTk KCKzTXz3W8HTnK2jj0gOHo/sI9CL1WVry2F7+RoSuvV9vEkNGzeonSWm9nTVZDTOsZAH isIzRi+/I6nxybtT9uGXKd1gArjWqp/fp1GfCvrfxpvtYlr1E91Cf8NXZFobSGh6y25h pSew== X-Gm-Message-State: AOJu0YxnvWQ9hzSpJKOQQM242XuSu4pZYnvhUFfy4D9ldnWvHD84XJ9p pIt7lx0Fj/db3H8oblWghhXc3O1Blk5Q+7AcG+Vk8S1U479ICyFffoe+j/+m4xBXtkGLFlzndpH nFD5NmvU= X-Gm-Gg: AY/fxX5eLc57tK6+QpUGB+MM9ePn6ZcWkvT95eoKDn8gv1rUdtiQQ7bC4G3rVRhnW76 NUZ17UOYFxzufAu9PFLV9r7ksbs+8fsFUfc8QvtAhF8T8BAZZL9jG4Vla0QdOicC0nvIvd3npF9 huOXN8sZWY9yonZ8vrxzP/pSbcaT+7fw9bio7+ofJ1YZgHbBT/oSVwT9yc+dOvb8Pezq4WjpYUX qo5OLFNiGUAnN18k5TaeC3zdMfHDvBvBtZrkE+Dfs1BO9oIxh0Wf+Xxm6nycbd4/tGJR9lZNIC1 aD14wjUqp/XmLFg4Z/4PK7RCkBXesoPMrPMdC7XJStNusiocbn1eHxcRDyflVxGmQ5iEaEFWnUB YcsXNCV2TjSGmVhkKy7Tmoju7cAmiuJGaVYNRJejFm1bw/feHBCFg8TOLzWy7LXelhtckoY2H7S HxykEJvsqmSIYtGboQsbkQ++zywNmonB07YYYYyhZbywB1hCmXZDZYE7QsEgu0 X-Received: by 2002:a05:600c:190d:b0:477:abea:9028 with SMTP id 5b1f17b1804b1-4803e79bbbamr40511875e9.6.1768934542723; Tue, 20 Jan 2026 10:42:22 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 29/29] meson: Do not try to build module for empty per-target hw/ directory Date: Tue, 20 Jan 2026 19:39:02 +0100 Message-ID: <20260120183902.73845-30-philmd@linaro.org> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260120183902.73845-1-philmd@linaro.org> References: <20260120183902.73845-1-philmd@linaro.org> 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 (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=2a00:1450:4864:20::344; envelope-from=philmd@linaro.org; helo=mail-wm1-x344.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: 1768934605622158500 In commit 83d5db95d38 ("meson: Allow system binaries to not have target-specific units") we allowed targets with empty target_system_arch[] source set, but missed hw_arch[] could also be empty when building modules. Skip such case, otherwise due to commit a1ced487549 ("hw/microblaze: Build files once"), building with --enable-modules triggers: ../meson.build:4034:14: ERROR: Key microblaze is not in the dictionary. Fixes: a1ced487549 ("hw/microblaze: Build files once") Reported-by: Frederic Bezies Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3272 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Pierrick Bouvier Message-Id: <20260116131817.38009-1-philmd@linaro.org> --- meson.build | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/meson.build b/meson.build index 3108f01e887..a84f14258b0 100644 --- a/meson.build +++ b/meson.build @@ -3957,6 +3957,11 @@ if enable_modules foreach target : target_dirs if target.endswith('-softmmu') config_target =3D config_target_mak[target] + arch =3D config_target['TARGET_NAME'] =3D=3D 'sparc64' ? 'sparc64' := config_target['TARGET_BASE_ARCH'] + if not hw_arch.has_key(arch) + continue + endif + config_devices_mak =3D target + '-config-devices.mak' modinfo_src =3D custom_target('modinfo-' + target + '.c', output: 'modinfo-' + target + '.c', @@ -3966,8 +3971,6 @@ if enable_modules =20 modinfo_lib =3D static_library('modinfo-' + target + '.c', modinfo_s= rc) modinfo_dep =3D declare_dependency(link_with: modinfo_lib) - - arch =3D config_target['TARGET_NAME'] =3D=3D 'sparc64' ? 'sparc64' := config_target['TARGET_BASE_ARCH'] hw_arch[arch].add(modinfo_dep) endif endforeach --=20 2.52.0