From nobody Fri Nov 14 22:21:22 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846392; cv=none; d=zohomail.com; s=zohoarc; b=RRrd6VnQrqYZq1iwmLA44O9YZuinuUtESgVRWUoKW2W3JGuxwYJkmTxg9Xa4jOHuW8fwLZ06QOOhjcprhDueEcI6ur5C9Bh0vlz1pxP0CQwbx51WEPsHXtSDNcNQVvPhtPDUx8loYIDhQtrzZu9eyjK22GS3Cc2B7yLyp2plnPY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846392; 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=7zJ9Hjqexkc3PQ97BESrWYieFpkrh4kVSJJTaYltMT4=; b=JxcWk1W0WPqRcRDmfeW5++DVxrLKP1kwW1CHzH6XDIA8iOFaSm5ldRAr6+v6bb2nj5qYcjkc8y7wO/IM1bCmzxLS1JkgrB2q2s01L5BZeMUrDwB7kVwgHK+JhbvHO8fL7DzzDfG7S0EpPkvOoFQWeW+brunfm8EQVeR22AR4Xnc= 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 175984639230616.947386454587445; Tue, 7 Oct 2025 07:13:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Pk-0005YJ-P3; Tue, 07 Oct 2025 10:11:40 -0400 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 1v68Pj-0005Xe-5x for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:39 -0400 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68PZ-00026D-Jp for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:37 -0400 Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-3ee64bc6b85so4910281f8f.3 for ; Tue, 07 Oct 2025 07:11:28 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846287; x=1760451087; 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=7zJ9Hjqexkc3PQ97BESrWYieFpkrh4kVSJJTaYltMT4=; b=Xk4o0RzHe4t+IghTsUUpOxyun6IuJzo7EPs64WTVKJ99rjywWxIhAyZ3gya/odDAAO 0iJbo+9b+BG6wZpXgGvt4t/cjNkB7pdxGUzArjlVAgLWVjwvRRQvy6tkWsczvrT62dsk MlOxSOG4uVU5kuuQREWLsPZB9G3tVc73PniMAGo5m7WjsIkjZSed1JcX7tHLdO100Pwr 0Hn4yqY+eP6zd5dflhArKTVE0kJeVSHI7a0xlMq/rfx0+Snar7u9vxS/6CgkXC0jOClj zSaxZCi/L/z46jM6frOxhOuw7KLhyPR9wEpxGO3VmvDa6KAGnBhepJR34lWztcfeuyo6 /dZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846287; x=1760451087; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7zJ9Hjqexkc3PQ97BESrWYieFpkrh4kVSJJTaYltMT4=; b=Yzs/nutJ2rS1nCe4t4GLhFy8YriJfBl3l+EomXTVo2DW41Blxbhzch6mFenxZY4+IH yS/57WKyz5awKLZL++KE3kJnTsUKVSFQcOgO7zbnqT1s3Q7biUcy6S1qJ9QXHyXe/ag1 9Pby+SXDMO3VaRZ+I3tqFkK3Mj3fAbQp36LfCdTg8Gm+y+On6j1aZA6UCMrN181V2aKj 0sG7M7g8eYykGROQNdglqnrXT4YmzYPGNj9OjOtwpBSLhg4ldwbpD5KndId/0C9UEk+B jMwMmvHtuvT/IjDavc5FzSH+S6Ol3cIbc0MpTlZqmLRRyEvbfrcg87uukljU8bK03Nik 5mFA== X-Gm-Message-State: AOJu0Yz4asDaxfQ+AhgpX0EAc5OfkzW59kq8al+RDQ4MuF/XWIIN+y48 bx7OrTrscZx3K3pXh3Zxl3025VG1yN0ZR2LkA6o44ikCG8W4+/h88HTFUv1dSKJFqfjFLiFCwXr Xqh4k X-Gm-Gg: ASbGncv6SpNVqs17C/g9bMPsbQ3jT11oUfaixTAbxOMjVPOs/TRTS8pVA6IL8NRnJNZ cukJf27zvv6lcqcQaJtwI1PEuYyj67PQhmU8+IfUkg7sSB9GyJL1gm5MczbAylQsvZiUp5G8RlP 3Jo59EcbNlucjVEoyTh8HILq2yhJrAdUzKJ8yazS23ZZEm2IHsNy3sR+4YdM0kND4xCOaTkSwQN PZ98T+YAC7+unJ14ixQHawapLfVh2uHel6FadSzaVXrFpn8ylQ66ehElqMkOZJJfdH1WcY1BU+l jtkIk7zaD0pL3F4mH/NaaHTtQ3ZCZvKDLy51+8LMVt+g2zFwNhiQSLyziBIvkgVo8F4o5zvhxMH lhdQO+M5js1w0osT1ka5hm42TYxR0N88C/kVJhfA7OmVkk88IQpQ6ldNHHkFZcRp6nuo= X-Google-Smtp-Source: AGHT+IE+tQLHRS57fSmzAgzshH4ytNxuKQPIJOnZcp6B0UP6bGlhfe7yBgC/UbBubxzf9rG/rwKqfQ== X-Received: by 2002:a05:6000:310a:b0:425:7f11:3159 with SMTP id ffacd0b85a97d-4257f113337mr4455839f8f.63.1759846286671; Tue, 07 Oct 2025 07:11:26 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 01/62] target/arm: Don't set HCR.RW for AArch32 only CPUs Date: Tue, 7 Oct 2025 15:10:21 +0100 Message-ID: <20251007141123.3239867-2-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::42c; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42c.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: 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: 1759846394948154100 In commit 39ec3fc0301 we fixed a bug where we were not implementing HCR_EL2.RW as RAO/WI for CPUs where EL1 doesn't support AArch32. However, we got the condition wrong, so we now set this bit even on CPUs which have no AArch64 support at all. This is wrong because the AArch32 HCR register defines this bit as RES0. Correct the condition we use for forcing HCR_RW to be set. Cc: qemu-stable@nongnu.org Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3128 Fixes: 39ec3fc0301 ("target/arm: HCR_EL2.RW should be RAO/WI if EL1 doesn't= support AArch32") Signed-off-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Richard Henderson Message-id: 20250925115723.1293233-1-peter.maydell@linaro.org --- target/arm/helper.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index aa730addf2f..792a47a9c50 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -3742,7 +3742,8 @@ static void do_hcr_write(CPUARMState *env, uint64_t v= alue, uint64_t valid_mask) value &=3D valid_mask; =20 /* RW is RAO/WI if EL1 is AArch64 only */ - if (!cpu_isar_feature(aa64_aa32_el1, cpu)) { + if (arm_feature(env, ARM_FEATURE_AARCH64) && + !cpu_isar_feature(aa64_aa32_el1, cpu)) { value |=3D HCR_RW; } =20 --=20 2.43.0 From nobody Fri Nov 14 22:21:22 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846739; cv=none; d=zohomail.com; s=zohoarc; b=h+oOlehVT43gBRa1VxSRgR01tg12fwUlBc7PpzZRnxTAt5qPQoH2Kr5DHaxZJOQkCprJolPAKM8dhWAo4870rbXzg3f+Gcw9iXzYTF0JNgUHBmIHVlbCdGsjigkUybSdFcIJxz7T/UixIBSBtgB3FTEID0T/z/5LhaFbnZBlDI0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846739; 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=oX2FCvIB4I7ri29/FyaOfLvbFk1Cxz3ulaGtZkX8IS8=; b=PDc288kpICQfmfNrYQRGBEEbNk8ihbjzRbl7MGh5KFLk4bsy5a7Okb8rjkc23zCSmb6PL4Svm9zsrxA3Ai/z59caQdeLDJzCZJlbEGDXjqeySQuWYHH1RjFDHjzOZTer0PfyaE3WlWvOtYFmppwQNd54EExYINlW5FV6VH9+8cU= 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 175984673914781.86246826241938; Tue, 7 Oct 2025 07:18:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Pr-0005bP-P9; Tue, 07 Oct 2025 10:11:47 -0400 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 1v68Po-0005ai-Ld for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:44 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Pd-00026R-8j for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:44 -0400 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-46e4ad36541so68178785e9.0 for ; Tue, 07 Oct 2025 07:11:30 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846288; x=1760451088; 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=oX2FCvIB4I7ri29/FyaOfLvbFk1Cxz3ulaGtZkX8IS8=; b=MxT7ICH3iFBIwWfEvYy4A1Z6P5JlWx7adplQMGAclQVkUWr1O3B859geX16hTU+QM7 0TpIEwqhW0BKCmWwYRbBqqKuEsbVs8ORAqiFpv4Ey40aI+mEWtb8jb6tTvqP8Ze8nWSR 7eumgRxcoe1cmI+Wd9O0PSMrXHsXfQ3DPx+XEijs6MtCs8+YUpAY5hwp4nlLXX5p1ci6 OM/rErsJAPr8WHTOfNWnikmAVwZH8RHoskPub7Cm7s6l251Hx/JkjNfV0EqxGpFa96cL qmJKe/bcbpCmCCJsNuEQkA+3c2nn2Oa+qR5udxiu3DsdvmalfM7T/2f3/Ti1sYe5kPIA kjqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846288; x=1760451088; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oX2FCvIB4I7ri29/FyaOfLvbFk1Cxz3ulaGtZkX8IS8=; b=g3+aHSREK357/FiqbHZTjkfhH9V6b143JqQnwzhphqg2HxnFXXu5sBQ1qocLZQxSbJ vcQWLbjPNta/I2O7UIW3gzxkKed9sP1r1JRKTQDN9flendliwVKNnzcdDc8iZE3AVA8C HwEFtoWWh6LCgob4mwryQRFUB0X8Z5IBivqkkg1ntzXKf212bLJLb+nh7SBIdFJTifVG M2XX8JyZ7BQJejMbHn/W04wdf8aJ4dC/IVHpiI35dem4sHnYIozV0UJUi/NE0fwDQ/qf oVwe34KmncsSEpkGL5DvToaDqJTOaTGfJ3aC3Agnddq50jsrTo46cXRrsbLtLVXuufJv UuTw== X-Gm-Message-State: AOJu0YzU+q/xwivYzeCftMFUjzYVqmwEqnbSWWJBKt9ONrfv+TDbmhc9 4jRpIJE1JU8dTWqavLwEjQPBxoLxFYfXwr8pMrbDFUs7DYQ8g/cMFCCArgTADeKFDGTAnS09tyR 5nF1F X-Gm-Gg: ASbGnctFPG4P0AgkfNCC33Nbc9H58sGJ+ryXlNuxIuj7Llg6MprRzqft1A8zXcpeRJ8 G4xjCws3hcjUl1clsqkAOWtbDvmJ4Bn9oSCzmV200x1lYMDl9d/AhahT0K3OseHQl72IXnY8tSE 6nqT+Ev7Tv7aa5SEzFgGP8As+gLkD5sA+FEaW5JXKUkmMu7dFQmlEc1NKqpoKvFkO4If61XGN3P lH0H4p9vNxqajrjujcY3Pt0pWYtFEauOLTQoJ/CP6S0j9CNZN+niQP6g9CTRIn3QI8UV+lUwjjS xjEckY6VRW9EVo2TvrDZyylUxmMelORmXEgQSneJbNMzbIPJ72Q2jguJinvYW7b/oBXXhjalMgn JeeqlkNh4HnRXRFA8sn0b78aIF10t1pGV6NI0ZLvyOjqWBXQKtKiHuePa X-Google-Smtp-Source: AGHT+IFO9sYj0iJIOkTbH5ZUnYWrBPt7MVtPkfd7jkiS09x3M/ybUg6EPQKUSZd/QTXP8/c8ol6zxg== X-Received: by 2002:a05:600c:4e0e:b0:46e:5df3:190d with SMTP id 5b1f17b1804b1-46f9d694446mr47402235e9.11.1759846287886; Tue, 07 Oct 2025 07:11:27 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 02/62] hw/arm/xlnx-versal: split the xlnx-versal type Date: Tue, 7 Oct 2025 15:10:22 +0100 Message-ID: <20251007141123.3239867-3-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.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: 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: 1759846741635154100 From: Luc Michel Split the xlnx-versal device into two classes, a base, abstract class and the existing concrete one. Introduce a VersalVersion type that will be used across several device models when versal2 implementation is added. This is in preparation for versal2 implementation. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-2-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal-version.h | 15 ++++++++++++++ include/hw/arm/xlnx-versal.h | 12 ++++++++++- hw/arm/xlnx-versal.c | 31 +++++++++++++++++++++------- 3 files changed, 50 insertions(+), 8 deletions(-) create mode 100644 include/hw/arm/xlnx-versal-version.h diff --git a/include/hw/arm/xlnx-versal-version.h b/include/hw/arm/xlnx-ver= sal-version.h new file mode 100644 index 00000000000..c4307d1304a --- /dev/null +++ b/include/hw/arm/xlnx-versal-version.h @@ -0,0 +1,15 @@ +/* + * AMD Versal versions + * + * Copyright (c) 2025 Advanced Micro Devices, Inc. + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef HW_ARM_XLNX_VERSAL_VERSION_H +#define HW_ARM_XLNX_VERSAL_VERSION_H + +typedef enum VersalVersion { + VERSAL_VER_VERSAL, +} VersalVersion; + +#endif diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 05ed641b6b6..1f92e314d6c 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -2,6 +2,7 @@ * Model of the Xilinx Versal * * Copyright (c) 2018 Xilinx Inc. + * Copyright (c) 2025 Advanced Micro Devices, Inc. * Written by Edgar E. Iglesias * * This program is free software; you can redistribute it and/or modify @@ -35,9 +36,12 @@ #include "hw/misc/xlnx-versal-cfu.h" #include "hw/misc/xlnx-versal-cframe-reg.h" #include "target/arm/cpu.h" +#include "hw/arm/xlnx-versal-version.h" + +#define TYPE_XLNX_VERSAL_BASE "xlnx-versal-base" +OBJECT_DECLARE_TYPE(Versal, VersalClass, XLNX_VERSAL_BASE) =20 #define TYPE_XLNX_VERSAL "xlnx-versal" -OBJECT_DECLARE_SIMPLE_TYPE(Versal, XLNX_VERSAL) =20 #define XLNX_VERSAL_NR_ACPUS 2 #define XLNX_VERSAL_NR_RCPUS 2 @@ -137,6 +141,12 @@ struct Versal { } cfg; }; =20 +struct VersalClass { + SysBusDeviceClass parent; + + VersalVersion version; +}; + /* Memory-map and IRQ definitions. Copied a subset from * auto-generated files. */ =20 diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index a42b9e7140b..4da656318f6 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -2,6 +2,7 @@ * Xilinx Versal SoC model. * * Copyright (c) 2018 Xilinx Inc. + * Copyright (c) 2025 Advanced Micro Devices, Inc. * Written by Edgar E. Iglesias * * This program is free software; you can redistribute it and/or modify @@ -920,7 +921,7 @@ static void versal_unimp(Versal *s) =20 static void versal_realize(DeviceState *dev, Error **errp) { - Versal *s =3D XLNX_VERSAL(dev); + Versal *s =3D XLNX_VERSAL_BASE(dev); qemu_irq pic[XLNX_VERSAL_NR_IRQS]; =20 versal_create_apu_cpus(s); @@ -955,9 +956,9 @@ static void versal_realize(DeviceState *dev, Error **er= rp) &s->lpd.rpu.mr_ps_alias, 0); } =20 -static void versal_init(Object *obj) +static void versal_base_init(Object *obj) { - Versal *s =3D XLNX_VERSAL(obj); + Versal *s =3D XLNX_VERSAL_BASE(obj); =20 memory_region_init(&s->fpd.apu.mr, obj, "mr-apu", UINT64_MAX); memory_region_init(&s->lpd.rpu.mr, obj, "mr-rpu", UINT64_MAX); @@ -975,7 +976,7 @@ static const Property versal_properties[] =3D { TYPE_CAN_BUS, CanBusState *), }; =20 -static void versal_class_init(ObjectClass *klass, const void *data) +static void versal_base_class_init(ObjectClass *klass, const void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); =20 @@ -984,16 +985,32 @@ static void versal_class_init(ObjectClass *klass, con= st void *data) /* No VMSD since we haven't got any top-level SoC state to save. */ } =20 -static const TypeInfo versal_info =3D { - .name =3D TYPE_XLNX_VERSAL, +static void versal_class_init(ObjectClass *klass, const void *data) +{ + VersalClass *vc =3D XLNX_VERSAL_BASE_CLASS(klass); + + vc->version =3D VERSAL_VER_VERSAL; +} + +static const TypeInfo versal_base_info =3D { + .name =3D TYPE_XLNX_VERSAL_BASE, .parent =3D TYPE_SYS_BUS_DEVICE, .instance_size =3D sizeof(Versal), - .instance_init =3D versal_init, + .instance_init =3D versal_base_init, + .class_init =3D versal_base_class_init, + .class_size =3D sizeof(VersalClass), + .abstract =3D true, +}; + +static const TypeInfo versal_info =3D { + .name =3D TYPE_XLNX_VERSAL, + .parent =3D TYPE_XLNX_VERSAL_BASE, .class_init =3D versal_class_init, }; =20 static void versal_register_types(void) { + type_register_static(&versal_base_info); type_register_static(&versal_info); } =20 --=20 2.43.0 From nobody Fri Nov 14 22:21:22 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847245; cv=none; d=zohomail.com; s=zohoarc; b=U9Zlg+tsxcqJLmYcx8v1HP5e7Dcv5oppXBvfFDrr7fIjmhcBUOx6ZHqdvRBSSfixzWMotY3z/Sh1YdhzyHYhgEdVSdn10quVRts1e0Huj1l2gT/o2OjXuavmIveOu8y3YlJfhhUhh8IHOcVKBfeldX9uY3TzRyPb0IoezbCU6KM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847245; 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=HcGA0MU3t/BPjbWYACikPE9NikWXY3MIgX4mWa0jOjU=; b=AN9xsvC73ly3TTDC+mJINxiBavYCaj0ZD98MGpjI5RmXfVCZ7yMNENI9XzMZB/sU5klUOFYQ0i0K8AIbDI1xN5TSQFDT46FtVZGW6y6u6bMyuavmsBWrBjd2wA7ggT2JcgetSMh8M6w/B/6TypguzHLTKCjVudlK3I+Jvs3rh44= 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 17598472454271019.1330572924027; Tue, 7 Oct 2025 07:27:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Pv-0005dW-RD; Tue, 07 Oct 2025 10:11:51 -0400 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 1v68Ps-0005bm-A8 for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:48 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Ph-00026c-KR for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:47 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-46e430494ccso36940285e9.1 for ; Tue, 07 Oct 2025 07:11:32 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846289; x=1760451089; 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=HcGA0MU3t/BPjbWYACikPE9NikWXY3MIgX4mWa0jOjU=; b=rE1K/ZlrixAP1UCaVCGlYTayLqe+Jgy3Zc60muNTTY0nlG3G/WipyRcT/uJufFdZ5w w3HTTjJO5W0dE+zpOSWyjD1j91qfESLU3MdK4sNpc1YvVrpx3N52QROVgeoqgrdzJ46U lmgLhxZKBgcKdKiONQtoOMWnm82V8s681AlrQOgh02TQhfkqlLKXnhSG0h+z7NfTMy6q gtw6WJ9Twv8NmsXQPG3tIkKnn18FIuxGoZ22CmmwioIMoMhm+lyOg5GuuojLROj++NmP t0cYfPAFwThdHt3/vEnjEUbYH06BRCytXQksXFmUfT2Kp+m3RaEQcvNjYcA6f9zWGgeG dIOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846289; x=1760451089; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HcGA0MU3t/BPjbWYACikPE9NikWXY3MIgX4mWa0jOjU=; b=IKizsQznkCHUuDTTwmoLQVKOyYMYymHod7hkYo4r/8FgmIRgsTLTnBLr3c7V7Bq64w 9Elmvpktss3+tFPeQVWmpL+/mh+K/3DJc5mdW7lM5jlozU4HcXST0WMCALWor/BP7Mzy FpqAJcHBcdURElIMKvrJ0Ab0sOl8dFP3tiyeLQQ1MOtI7u/XqgXE5aJAI5iy0IuvnqP7 /CxHS8Mv/5jcfUMVJoAnOzAOl6orsMf16T1lqPNActERjm2BqAZOePrfcndnlTPS6T9C yQtK15yreXqEmfh75Zys3P0o50QJYz8kaHyNtYtr2qacFL0xWL4Fl/KI3w4dwRTfV+SW MpcA== X-Gm-Message-State: AOJu0YxPnp4LDs9fm99PfI9GXcvHkt/jzpeXWRaMFerddUpSlqfkOyOh lKvkkne33njRBhydRvpjPOjQPdgZZoyC7GefYjRkGKEetlkvO/jU179XyBTQBZVU+jZwiGqnNbZ +MHXI X-Gm-Gg: ASbGnct+r+76Kqum3ZevnK1pew5pplyUOmlNeTN/6iF4ajmE1W9+lSgQ0THeP0ka8ql DpYtnImwA/dQFwAMN4dLGClyZI6YjzqhF+bat12fkRZ9o0DStLpp7OYmQluFtnUGIkj2IYis+19 cke0YGK88z1gwgdWj+ybvJAsqv9eAdqWjrhYQvZzNoCE22/LBbK/SGBbvSVhOEsoZawq45WmkjC l6JaP9DOy+XELGpELXhx+u5z/GuI+zAQ1gzNd1LV1JXPyberFkhzkT9qfijE8pB3/k/0GdlfTiP UKPOrmkX6svMfnUzRnPDhcjnVwr8+HWgp4LpR0bVmOX9es4jOryjet2PrUsco5nxNJTsR2UsDrg nxdWwceJHSEoyJJ+nmQtVNO17XDBf7CB+5JelS8hwu97vCDosK3Vf7IO6 X-Google-Smtp-Source: AGHT+IFLHBFrkNSjpZGUmf15qMcuDMoo2a2r1frt9u/E8XXdLpTgftuRowTqovkWOjtR7b+D9wlyow== X-Received: by 2002:a05:600c:8b83:b0:45b:8adf:cf2b with SMTP id 5b1f17b1804b1-46e71142e6fmr105903785e9.21.1759846288921; Tue, 07 Oct 2025 07:11:28 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 03/62] hw/arm/xlnx-versal: prepare for FDT creation Date: Tue, 7 Oct 2025 15:10:23 +0100 Message-ID: <20251007141123.3239867-4-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::332; envelope-from=peter.maydell@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: 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: 1759847247339154100 From: Luc Michel The following commits will move FDT creation logic from the xlnx-versal-virt machine to the xlnx-versal SoC itself. Prepare this by passing the FDT handle to the SoC before it is realized. For now the SoC only creates the two clock nodes. The ones from the xlnx-versal virt machine are renamed with a `old-' prefix and will be removed once they are not referenced anymore. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-3-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 12 ++++++++++++ hw/arm/xlnx-versal-virt.c | 9 ++++++--- hw/arm/xlnx-versal.c | 24 ++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 1f92e314d6c..f2a62b43552 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -136,8 +136,14 @@ struct Versal { OrIRQState apb_irq_orgate; } pmc; =20 + struct { + uint32_t clk_25mhz; + uint32_t clk_125mhz; + } phandle; + struct { MemoryRegion *mr_ddr; + void *fdt; } cfg; }; =20 @@ -147,6 +153,12 @@ struct VersalClass { VersalVersion version; }; =20 +static inline void versal_set_fdt(Versal *s, void *fdt) +{ + g_assert(!qdev_is_realized(DEVICE(s))); + s->cfg.fdt =3D fdt; +} + /* Memory-map and IRQ definitions. Copied a subset from * auto-generated files. */ =20 diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index adadbb72902..d1c65afa2ac 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -2,6 +2,7 @@ * Xilinx Versal Virtual board. * * Copyright (c) 2018 Xilinx Inc. + * Copyright (c) 2025 Advanced Micro Devices, Inc. * Written by Edgar E. Iglesias * * This program is free software; you can redistribute it and/or modify @@ -697,10 +698,12 @@ static void versal_virt_init(MachineState *machine) &error_abort); object_property_set_link(OBJECT(&s->soc), "canbus1", OBJECT(s->canbus[= 1]), &error_abort); - sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal); =20 fdt_create(s); + versal_set_fdt(&s->soc, s->fdt); + sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal); create_virtio_regions(s); + fdt_add_gem_nodes(s); fdt_add_uart_nodes(s); fdt_add_canfd_nodes(s); @@ -714,8 +717,8 @@ static void versal_virt_init(MachineState *machine) fdt_add_efuse_ctrl_node(s); fdt_add_efuse_cache_node(s); fdt_add_cpu_nodes(s, psci_conduit); - fdt_add_clk_node(s, "/clk125", 125000000, s->phandle.clk_125Mhz); - fdt_add_clk_node(s, "/clk25", 25000000, s->phandle.clk_25Mhz); + fdt_add_clk_node(s, "/old-clk125", 125000000, s->phandle.clk_125Mhz); + fdt_add_clk_node(s, "/old-clk25", 25000000, s->phandle.clk_25Mhz); =20 /* Make the APU cpu address space visible to virtio and other * modules unaware of multiple address-spaces. */ diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 4da656318f6..3b596219561 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -24,6 +24,8 @@ #include "qemu/log.h" #include "target/arm/cpu-qom.h" #include "target/arm/gtimer.h" +#include "system/device_tree.h" +#include "hw/arm/fdt.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -919,11 +921,33 @@ static void versal_unimp(Versal *s) gpio_in); } =20 +static uint32_t fdt_add_clk_node(Versal *s, const char *name, + unsigned int freq_hz) +{ + uint32_t phandle; + + phandle =3D qemu_fdt_alloc_phandle(s->cfg.fdt); + + qemu_fdt_add_subnode(s->cfg.fdt, name); + qemu_fdt_setprop_cell(s->cfg.fdt, name, "phandle", phandle); + qemu_fdt_setprop_cell(s->cfg.fdt, name, "clock-frequency", freq_hz); + qemu_fdt_setprop_cell(s->cfg.fdt, name, "#clock-cells", 0x0); + qemu_fdt_setprop_string(s->cfg.fdt, name, "compatible", "fixed-clock"); + qemu_fdt_setprop(s->cfg.fdt, name, "u-boot,dm-pre-reloc", NULL, 0); + + return phandle; +} + static void versal_realize(DeviceState *dev, Error **errp) { Versal *s =3D XLNX_VERSAL_BASE(dev); qemu_irq pic[XLNX_VERSAL_NR_IRQS]; =20 + g_assert(s->cfg.fdt !=3D NULL); + + s->phandle.clk_25mhz =3D fdt_add_clk_node(s, "/clk25", 25 * 1000 * 100= 0); + s->phandle.clk_125mhz =3D fdt_add_clk_node(s, "/clk125", 125 * 1000 * = 1000); + versal_create_apu_cpus(s); versal_create_apu_gic(s, pic); versal_create_rpu_cpus(s); --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847649; cv=none; d=zohomail.com; s=zohoarc; b=LHeZkTnlnPKjQlGZMxNw7LVbvc5dbFaJSGtJJBHL7yNmBExgoCdDu4p7/2ckA/6BTzWNkr0Npu7Zj9RrilNiBcXrpIHfe35vrlbBXW+kqNsl0Xrx4u7zHLl9tFjZrxGeYdOxCf0hDohZbIwRpQ4HeQSI95F7/eiMZio8qJp+n9A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847649; 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=C9h8WM4gxi2sTa+iZ6czhn/Kjg3vyz44CeCkzLnEM/U=; b=eRlsx3G3TUprVKfspKL5WISjuL2gRoftYmEkEv6SItdyPLFi0XWVJ5MwGMJ709LF0LQHXsdVbovLmSol/mpvKwD4WNVIcwAUEfJKX6OXr+E4+/gJOCeQhJ9uWDYH+dxjVaYHaXUHPeeCQaXUfvN6+6WP+9yc7I/3/hGgEJGWAJ0= 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 17598476493565.432484990185458; Tue, 7 Oct 2025 07:34:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Pu-0005bQ-79; Tue, 07 Oct 2025 10:11:50 -0400 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 1v68Pp-0005ax-Bz for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:45 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Ph-00026p-82 for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:44 -0400 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-46e6ba26c50so38027165e9.2 for ; Tue, 07 Oct 2025 07:11:33 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846290; x=1760451090; 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=C9h8WM4gxi2sTa+iZ6czhn/Kjg3vyz44CeCkzLnEM/U=; b=qyOq77TJU95ax4nkzkrtQg5IkyP4wNp9A5aMueqpTUUjCGiT5NmWxZespDMqahucWz eAlMvUqMWmukcbwnoFLoGyPgSSUsmj0ot2RPTFxPOFGO+6p3o6Xp3NEHSw3OZ6Gb2AVx 26j8OrqNfKqWasDdZlUib625Yh8+yuIxCk+hppOERRMeV5WstUsomTlM4hQw3hJ35Mmk rEUhq6MC33Iz1/E/zJTrcVYcM2sDamhcXEtK71210YhTXgQ4Pvo9o+a9a99fi7x2qPol kbLnsC2qt4cOdlup54X3HqPsv3BH82iApMYVm9qk6qWGadBB0UDxW3YmK2NX0T983SNV dxDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846290; x=1760451090; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=C9h8WM4gxi2sTa+iZ6czhn/Kjg3vyz44CeCkzLnEM/U=; b=DFfk4e6RitWeuI3gXt8SIvK4Hx+rR51MV0hBEU9/x+9xFO3Csq4zDhV+DAoMons5Fg VyBZFLHgsEYQtaFWwsp77rclLD1k2n8DPELq5o1aUMdAEh1N3KfYioQurEeb0YcdraBy +fZX48QTCWBkXlfjDR1eWgsyxH6PPUtNXnOjOFk+HSJkXwwSZPejXYo9ijwPo1y1N/SA KWM3WOYfVJHdHrGaXlGwvlrvhf/h2DnTsMqvhReALazjUM1JSbZNDgUyDq9hdG6DZ00S 5QqneV01FxFwusdZrwTHElZSbSUSFap0vQcRYAe3fmOdcXvpia4C4lQqiT50yfUcEuOt 4bsw== X-Gm-Message-State: AOJu0Yw+pxifJIcwN/rRrtuv1daNXWOl4hPLkG5mBiFXc0sOEqLJKFm/ 4U1+ITRrdAQzcGEv7PfYITOpLmyIQ76pyYAzpnVRibTGyg20w6tQmA3ZbCoPZkImIyG2r1rjpBC RJvsL X-Gm-Gg: ASbGnctq+Asg1AbJ5kSthEYgJpg0JGIi34/3lUYbQ3j+kcaSzWWr8c0Ln49fJq/yats PZ9CviwBlNqfTF0Qtvemx6s7edhhirB8aRIYuOwwtX0N8YCJ93B1U8gSaOwxhE+iV20B79q6nAJ ValTuCj/boJrIk1ja3aoQvBluzEV0fH3vRJzmw/OsP2dwhBIz+CSnmEEkUnPAHVUTk33B4vvVij aOpULLzGAFJDiLJvehKyU2E3z3OZcRREgXT1HFrgmhT9BW7PWMLJUG2VIJVfTnUQAz0O2ZjX4/J 8IF56UhSaEdhauwUg7Nb9vciCHCZhhRXsHM5toTkzCnG0PP27RHQjWosx3gk8eexhRg2IXuU7uX inTrXIQ59kbT2G2+J0Uk0rtidrcY2E/Y2xYoep/ke6G/Bdfq1/DaMtsrF X-Google-Smtp-Source: AGHT+IE/rpGjAUHFt8v/f1f1RboB9iN7wHuCf1RSgO8xZnfit1h2qBSnablpEncWfQBrNeLt8w30lw== X-Received: by 2002:a05:600c:529a:b0:46d:9d28:fb5e with SMTP id 5b1f17b1804b1-46e710ffb36mr115555445e9.5.1759846289997; Tue, 07 Oct 2025 07:11:29 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 04/62] hw/arm/xlnx-versal: uart: refactor creation Date: Tue, 7 Oct 2025 15:10:24 +0100 Message-ID: <20251007141123.3239867-5-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.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: 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: 1759847656946116600 From: Luc Michel Refactor the UARTs creations. The VersalMap struct is now used to describe the SoC and its peripherals. For now it contains the two UARTs mapping information. The creation function now embeds the FDT creation logic as well. The devices are now created dynamically using qdev_new and (qdev|sysbus)_realize_and_unref. This will allow to rely entirely on the VersalMap structure to create the SoC and allow easy addition of new SoCs of the same family (like versal2 coming with next commits). Note that the connection to the CRL is removed for now and will be re-added by next commits. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-4-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 2 - hw/arm/xlnx-versal-virt.c | 36 +-------- hw/arm/xlnx-versal.c | 144 ++++++++++++++++++++++++++++------- 3 files changed, 119 insertions(+), 63 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index f2a62b43552..b01ddeb1423 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -18,7 +18,6 @@ #include "hw/or-irq.h" #include "hw/sd/sdhci.h" #include "hw/intc/arm_gicv3.h" -#include "hw/char/pl011.h" #include "hw/dma/xlnx-zdma.h" #include "hw/net/cadence_gem.h" #include "hw/rtc/xlnx-zynqmp-rtc.h" @@ -80,7 +79,6 @@ struct Versal { MemoryRegion mr_ocm; =20 struct { - PL011State uart[XLNX_VERSAL_NR_UARTS]; CadenceGEMState gem[XLNX_VERSAL_NR_GEMS]; OrIRQState gem_irq_orgate[XLNX_VERSAL_NR_GEMS]; XlnxZDMA adma[XLNX_VERSAL_NR_ADMAS]; diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index d1c65afa2ac..e1deae11317 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -77,6 +77,7 @@ static void fdt_create(VersalVirt *s) s->phandle.dwc =3D qemu_fdt_alloc_phandle(s->fdt); /* Create /chosen node for load_dtb. */ qemu_fdt_add_subnode(s->fdt, "/chosen"); + qemu_fdt_add_subnode(s->fdt, "/aliases"); =20 /* Header */ qemu_fdt_setprop_cell(s->fdt, "/", "interrupt-parent", s->phandle.gic); @@ -208,40 +209,6 @@ static void fdt_add_usb_xhci_nodes(VersalVirt *s) g_free(name); } =20 -static void fdt_add_uart_nodes(VersalVirt *s) -{ - uint64_t addrs[] =3D { MM_UART1, MM_UART0 }; - unsigned int irqs[] =3D { VERSAL_UART1_IRQ_0, VERSAL_UART0_IRQ_0 }; - const char compat[] =3D "arm,pl011\0arm,sbsa-uart"; - const char clocknames[] =3D "uartclk\0apb_pclk"; - int i; - - for (i =3D 0; i < ARRAY_SIZE(addrs); i++) { - char *name =3D g_strdup_printf("/uart@%" PRIx64, addrs[i]); - qemu_fdt_add_subnode(s->fdt, name); - qemu_fdt_setprop_cell(s->fdt, name, "current-speed", 115200); - qemu_fdt_setprop_cells(s->fdt, name, "clocks", - s->phandle.clk_125Mhz, s->phandle.clk_125Mh= z); - qemu_fdt_setprop(s->fdt, name, "clock-names", - clocknames, sizeof(clocknames)); - - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, irqs[i], - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, addrs[i], 2, 0x1000); - qemu_fdt_setprop(s->fdt, name, "compatible", - compat, sizeof(compat)); - qemu_fdt_setprop(s->fdt, name, "u-boot,dm-pre-reloc", NULL, 0); - - if (addrs[i] =3D=3D MM_UART0) { - /* Select UART0. */ - qemu_fdt_setprop_string(s->fdt, "/chosen", "stdout-path", name= ); - } - g_free(name); - } -} - static void fdt_add_canfd_nodes(VersalVirt *s) { uint64_t addrs[] =3D { MM_CANFD1, MM_CANFD0 }; @@ -705,7 +672,6 @@ static void versal_virt_init(MachineState *machine) create_virtio_regions(s); =20 fdt_add_gem_nodes(s); - fdt_add_uart_nodes(s); fdt_add_canfd_nodes(s); fdt_add_gic_nodes(s); fdt_add_timer_nodes(s); diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 3b596219561..b16af79e8a9 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -26,6 +26,7 @@ #include "target/arm/gtimer.h" #include "system/device_tree.h" #include "hw/arm/fdt.h" +#include "hw/char/pl011.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -34,6 +35,83 @@ #define VERSAL_NUM_PMC_APB_IRQS 18 #define NUM_OSPI_IRQ_LINES 3 =20 +typedef struct VersalSimplePeriphMap { + uint64_t addr; + int irq; +} VersalSimplePeriphMap; + +typedef struct VersalMap { + VersalSimplePeriphMap uart[2]; + size_t num_uart; +} VersalMap; + +static const VersalMap VERSAL_MAP =3D { + .uart[0] =3D { 0xff000000, 18 }, + .uart[1] =3D { 0xff010000, 19 }, + .num_uart =3D 2, +}; + +static const VersalMap *VERSION_TO_MAP[] =3D { + [VERSAL_VER_VERSAL] =3D &VERSAL_MAP, +}; + +static inline VersalVersion versal_get_version(Versal *s) +{ + return XLNX_VERSAL_BASE_GET_CLASS(s)->version; +} + +static inline const VersalMap *versal_get_map(Versal *s) +{ + return VERSION_TO_MAP[versal_get_version(s)]; +} + + +static qemu_irq versal_get_irq(Versal *s, int irq_idx) +{ + return qdev_get_gpio_in(DEVICE(&s->fpd.apu.gic), irq_idx); +} + +static void versal_sysbus_connect_irq(Versal *s, SysBusDevice *sbd, + int sbd_idx, int irq_idx) +{ + qemu_irq irq =3D versal_get_irq(s, irq_idx); + + if (irq =3D=3D NULL) { + return; + } + + sysbus_connect_irq(sbd, sbd_idx, irq); +} + +static inline char *versal_fdt_add_subnode(Versal *s, const char *path, + uint64_t at, const char *compat, + size_t compat_sz) +{ + char *p; + + p =3D g_strdup_printf("%s@%" PRIx64, path, at); + qemu_fdt_add_subnode(s->cfg.fdt, p); + + if (!strncmp(compat, "memory", compat_sz)) { + qemu_fdt_setprop(s->cfg.fdt, p, "device_type", compat, compat_sz); + } else { + qemu_fdt_setprop(s->cfg.fdt, p, "compatible", compat, compat_sz); + } + + return p; +} + +static inline char *versal_fdt_add_simple_subnode(Versal *s, const char *p= ath, + uint64_t addr, uint64_t = len, + const char *compat, + size_t compat_sz) +{ + char *p =3D versal_fdt_add_subnode(s, path, addr, compat, compat_sz); + + qemu_fdt_setprop_sized_cells(s->cfg.fdt, p, "reg", 2, addr, 2, len); + return p; +} + static void versal_create_apu_cpus(Versal *s) { int i; @@ -167,28 +245,44 @@ static void versal_create_rpu_cpus(Versal *s) qdev_realize(DEVICE(&s->lpd.rpu.cluster), NULL, &error_fatal); } =20 -static void versal_create_uarts(Versal *s, qemu_irq *pic) +static void versal_create_uart(Versal *s, + const VersalSimplePeriphMap *map, + int chardev_idx) { - int i; + DeviceState *dev; + MemoryRegion *mr; + g_autofree char *node; + g_autofree char *alias; + const char compatible[] =3D "arm,pl011\0arm,sbsa-uart"; + const char clocknames[] =3D "uartclk\0apb_pclk"; =20 - for (i =3D 0; i < ARRAY_SIZE(s->lpd.iou.uart); i++) { - static const int irqs[] =3D { VERSAL_UART0_IRQ_0, VERSAL_UART1_IRQ= _0}; - static const uint64_t addrs[] =3D { MM_UART0, MM_UART1 }; - char *name =3D g_strdup_printf("uart%d", i); - DeviceState *dev; - MemoryRegion *mr; + dev =3D qdev_new(TYPE_PL011); + object_property_add_child(OBJECT(s), "uart[*]", OBJECT(dev)); + qdev_prop_set_chr(dev, "chardev", serial_hd(chardev_idx)); + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 - object_initialize_child(OBJECT(s), name, &s->lpd.iou.uart[i], - TYPE_PL011); - dev =3D DEVICE(&s->lpd.iou.uart[i]); - qdev_prop_set_chr(dev, "chardev", serial_hd(i)); - sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); + mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); + memory_region_add_subregion(&s->mr_ps, map->addr, mr); =20 - mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); - memory_region_add_subregion(&s->mr_ps, addrs[i], mr); + versal_sysbus_connect_irq(s, SYS_BUS_DEVICE(dev), 0, map->irq); =20 - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[irqs[i]]); - g_free(name); + node =3D versal_fdt_add_simple_subnode(s, "/uart", map->addr, 0x1000, + compatible, sizeof(compatible)); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "current-speed", 115200); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "clocks", + s->phandle.clk_125mhz, s->phandle.clk_125mhz); + qemu_fdt_setprop(s->cfg.fdt, node, "clock-names", clocknames, + sizeof(clocknames)); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "interrupts", + GIC_FDT_IRQ_TYPE_SPI, map->irq, + GIC_FDT_IRQ_FLAGS_LEVEL_HI); + qemu_fdt_setprop(s->cfg.fdt, node, "u-boot,dm-pre-reloc", NULL, 0); + + alias =3D g_strdup_printf("serial%d", chardev_idx); + qemu_fdt_setprop_string(s->cfg.fdt, "/aliases", alias, node); + + if (chardev_idx =3D=3D 0) { + qemu_fdt_setprop_string(s->cfg.fdt, "/chosen", "stdout-path", node= ); } } =20 @@ -783,14 +877,6 @@ static void versal_create_crl(Versal *s, qemu_irq *pic) &error_abort); } =20 - for (i =3D 0; i < ARRAY_SIZE(s->lpd.iou.uart); i++) { - g_autofree gchar *name =3D g_strdup_printf("uart[%d]", i); - - object_property_set_link(OBJECT(&s->lpd.crl), - name, OBJECT(&s->lpd.iou.uart[i]), - &error_abort); - } - object_property_set_link(OBJECT(&s->lpd.crl), "usb", OBJECT(&s->lpd.iou.usb), &error_abort); @@ -942,6 +1028,8 @@ static void versal_realize(DeviceState *dev, Error **e= rrp) { Versal *s =3D XLNX_VERSAL_BASE(dev); qemu_irq pic[XLNX_VERSAL_NR_IRQS]; + const VersalMap *map =3D versal_get_map(s); + size_t i; =20 g_assert(s->cfg.fdt !=3D NULL); =20 @@ -951,7 +1039,11 @@ static void versal_realize(DeviceState *dev, Error **= errp) versal_create_apu_cpus(s); versal_create_apu_gic(s, pic); versal_create_rpu_cpus(s); - versal_create_uarts(s, pic); + + for (i =3D 0; i < map->num_uart; i++) { + versal_create_uart(s, &map->uart[i], i); + } + versal_create_canfds(s, pic); versal_create_usbs(s, pic); versal_create_gems(s, pic); --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847070; cv=none; d=zohomail.com; s=zohoarc; b=ZjKuaxpROOA2ZA+3KEWOpsCo5JI+Ppxz0CNaMAyV069Pk0l3K1NyWBbw5nimX1ERJXu74Xy3fVsj2R5JmDSNTWJQgXc0SFLGF0OJ5Ju8mkP9aEv2wON1llbSlmZ31AredkrloUG7E8DpguPaeMFdE6ke8p0VZR1wvY8wOjJ5Hl8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847070; 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=jArA7Esvg64NrfHlt/LBEhrn290ZO8SS+I/X/+Cb/CI=; b=l3U88/7mzzzyRcb+QZgxu3hLmFNrTOOlmD/XzHVOiHtDEZN+BCCXHQtJdslN5U3V1FHaCBBw3KOyhjjg/B1PhM9xClbzsJ5UHGI9FW1594nidSsTdxjgJEQRRqSYTpioBi0RJHbYQ24zuOFJSltPesIQgVuxNmLAdKOPdcG/JVY= 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 1759847065168166.97245047771298; Tue, 7 Oct 2025 07:24:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Po-0005ae-Ks; Tue, 07 Oct 2025 10:11:44 -0400 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 1v68Pm-0005ZO-7O for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:42 -0400 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 1v68Pf-000274-82 for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:41 -0400 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-46e34bd8eb2so70682985e9.3 for ; Tue, 07 Oct 2025 07:11:33 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846291; x=1760451091; 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=jArA7Esvg64NrfHlt/LBEhrn290ZO8SS+I/X/+Cb/CI=; b=wfb4kbFQOoD+uP3LEpQcatLHI+msG1gB8PT38pXLAluDm9gyMzcuih91Ei0I7BmF5+ M+7p5fZGGbZiRHZppn+e+qJUPek2RvGB18may4r+3vLbu2tQKS7/tDpXSU5aE1cMOXaP d3jfbDj4fvq3DwDgqht1/h4v8/D8lsU9rr7qMqg+7n45I0w5ithoiZt9Y2pOQGrUpSTc bykyAOdSv26lwnMKZ2i5DZ5yR7wbr/o2tBIWWCjy9brCQL538zCUkCYxcsv7gktq+/gI 8t/dQBRnWJBiqNgEHc0ORFNofQpsV59y7wFTnM0LFkIxEjvbb5PuM9NFfhbZToQGiwa3 uK5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846291; x=1760451091; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jArA7Esvg64NrfHlt/LBEhrn290ZO8SS+I/X/+Cb/CI=; b=JFQ6CpU143lLWBNj6cwJZqlTEJ/irQxR2oUPFC95RLnHBtx3fEIks6cKp6B0igTV6i ELjxQIH03f/lEc0u2LmOY8RcBU59Qtj/OPbWDQjFaDVzoxwRcbF/opVNeLT/BsH3RKb5 OQQvF8jW2fxJsspPoHTVV8FmrbjltkCQ/5JdbnMfybfCO5XMt4CduH75qefjGzw3aE4M tg7zNiM8XpR88We26nCo9QzZaaLWa4G8fxIw+0FICfcWiLB/KYm1frdRjdVSygTDyunB sb3Q0SImUN+dTVcf8tjc4PtMiSYzYN+pVizOC8SPkVyhkBisN9BYHmLtcv5kFSY/pJzv +k0w== X-Gm-Message-State: AOJu0YzpyTHr6eOYWOnY4O5T+qpg47Ve81wvtf6QmSSZNCZkJonCP5an UxfWiAnGIT45l9+aCjCOXiSpsHim8xjx1wnXxDYsM1Ce14pevaG6JF0WmOZT2VKe0g8iMxXp124 A6Sxb X-Gm-Gg: ASbGncsvelLvM5EuKcB3qTvwSue3oX+czt4R4S7NQC3NWjbgj0vBQX4IMtw0ihRoaeL cMLkvfwgpEVg1yiyG66qaOy1onQtXmJ/bQLEbaKmaHfpJMdawyJurMBbvPSULQeyav8ft77jV+m pbQKi24sLzSYLJsv6KVfb+I4U5YHEelO0AVmu6jl1ItVA5uVUvtk4IYfbb2iFfN+Pe1RjzyFm9W 8tlMN6hKoW/GaH//TPp4ohddpbg6E1BqzKzgv10syzlU9bgPGxACMCPR4adaoQYbaALuHeyNxXw ax6Zj9ZLzgMQU7h3Sps8NRkvuecRHmO7ZDv/UyaaInStPag3iaNZGLXU1b2qtNFgqJIPczXU/lH KC8/VAoC/1NSawzdtXirESdwUpOagKfmjUnYdQEpAc2SkQvKbxuj9bWuO X-Google-Smtp-Source: AGHT+IEPcAJ29SK6Yai68K+KE6boAnBeYfIEC96nVANzWPNCsckjBUBCE6Pkl9IORpLure14G/yn/Q== X-Received: by 2002:a05:600c:3b0f:b0:46e:59dd:1b4d with SMTP id 5b1f17b1804b1-46e7110a268mr150212375e9.16.1759846291063; Tue, 07 Oct 2025 07:11:31 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 05/62] hw/arm/xlnx-versal: canfd: refactor creation Date: Tue, 7 Oct 2025 15:10:25 +0100 Message-ID: <20251007141123.3239867-6-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::334; envelope-from=peter.maydell@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: 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: 1759847071098116600 From: Luc Michel Refactor the CAN controllers creation using the VersalMap structure. Note that the connection to the CRL is removed for now and will be re-added by next commits. The xlnx-versal-virt machine now dynamically creates the correct amount of CAN bus link properties based on the number of CAN controller advertised by the SoC. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-5-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 7 +-- hw/arm/xlnx-versal-virt.c | 73 +++++++++------------------- hw/arm/xlnx-versal.c | 94 +++++++++++++++++++++++++----------- 3 files changed, 95 insertions(+), 79 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index b01ddeb1423..007c91b596e 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -31,7 +31,7 @@ #include "hw/misc/xlnx-versal-crl.h" #include "hw/misc/xlnx-versal-pmc-iou-slcr.h" #include "hw/misc/xlnx-versal-trng.h" -#include "hw/net/xlnx-versal-canfd.h" +#include "net/can_emu.h" #include "hw/misc/xlnx-versal-cfu.h" #include "hw/misc/xlnx-versal-cframe-reg.h" #include "target/arm/cpu.h" @@ -83,8 +83,6 @@ struct Versal { OrIRQState gem_irq_orgate[XLNX_VERSAL_NR_GEMS]; XlnxZDMA adma[XLNX_VERSAL_NR_ADMAS]; VersalUsb2 usb; - CanBusState *canbus[XLNX_VERSAL_NR_CANFD]; - XlnxVersalCANFDState canfd[XLNX_VERSAL_NR_CANFD]; } iou; =20 /* Real-time Processing Unit. */ @@ -141,6 +139,7 @@ struct Versal { =20 struct { MemoryRegion *mr_ddr; + CanBusState **canbus; void *fdt; } cfg; }; @@ -157,6 +156,8 @@ static inline void versal_set_fdt(Versal *s, void *fdt) s->cfg.fdt =3D fdt; } =20 +int versal_get_num_can(VersalVersion version); + /* Memory-map and IRQ definitions. Copied a subset from * auto-generated files. */ =20 diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index e1deae11317..334252564be 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -43,11 +43,11 @@ struct VersalVirt { uint32_t clk_25Mhz; uint32_t usb; uint32_t dwc; - uint32_t canfd[2]; } phandle; struct arm_boot_info binfo; =20 - CanBusState *canbus[XLNX_VERSAL_NR_CANFD]; + CanBusState **canbus; + struct { bool secure; } cfg; @@ -209,38 +209,6 @@ static void fdt_add_usb_xhci_nodes(VersalVirt *s) g_free(name); } =20 -static void fdt_add_canfd_nodes(VersalVirt *s) -{ - uint64_t addrs[] =3D { MM_CANFD1, MM_CANFD0 }; - uint32_t size[] =3D { MM_CANFD1_SIZE, MM_CANFD0_SIZE }; - unsigned int irqs[] =3D { VERSAL_CANFD1_IRQ_0, VERSAL_CANFD0_IRQ_0 }; - const char clocknames[] =3D "can_clk\0s_axi_aclk"; - int i; - - /* Create and connect CANFD0 and CANFD1 nodes to canbus0. */ - for (i =3D 0; i < ARRAY_SIZE(addrs); i++) { - char *name =3D g_strdup_printf("/canfd@%" PRIx64, addrs[i]); - qemu_fdt_add_subnode(s->fdt, name); - - qemu_fdt_setprop_cell(s->fdt, name, "rx-fifo-depth", 0x40); - qemu_fdt_setprop_cell(s->fdt, name, "tx-mailbox-count", 0x20); - - qemu_fdt_setprop_cells(s->fdt, name, "clocks", - s->phandle.clk_25Mhz, s->phandle.clk_25Mhz); - qemu_fdt_setprop(s->fdt, name, "clock-names", - clocknames, sizeof(clocknames)); - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, irqs[i], - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, addrs[i], 2, size[i]); - qemu_fdt_setprop_string(s->fdt, name, "compatible", - "xlnx,canfd-2.0"); - - g_free(name); - } -} - static void fdt_add_fixed_link_nodes(VersalVirt *s, char *gemname, uint32_t phandle) { @@ -661,10 +629,14 @@ static void versal_virt_init(MachineState *machine) TYPE_XLNX_VERSAL); object_property_set_link(OBJECT(&s->soc), "ddr", OBJECT(machine->ram), &error_abort); - object_property_set_link(OBJECT(&s->soc), "canbus0", OBJECT(s->canbus[= 0]), - &error_abort); - object_property_set_link(OBJECT(&s->soc), "canbus1", OBJECT(s->canbus[= 1]), - &error_abort); + + for (i =3D 0; i < versal_get_num_can(VERSAL_VER_VERSAL); i++) { + g_autofree char *prop_name =3D g_strdup_printf("canbus%d", i); + + object_property_set_link(OBJECT(&s->soc), prop_name, + OBJECT(s->canbus[i]), + &error_abort); + } =20 fdt_create(s); versal_set_fdt(&s->soc, s->fdt); @@ -672,7 +644,6 @@ static void versal_virt_init(MachineState *machine) create_virtio_regions(s); =20 fdt_add_gem_nodes(s); - fdt_add_canfd_nodes(s); fdt_add_gic_nodes(s); fdt_add_timer_nodes(s); fdt_add_zdma_nodes(s); @@ -755,19 +726,22 @@ static void versal_virt_init(MachineState *machine) static void versal_virt_machine_instance_init(Object *obj) { VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(obj); + size_t i, num_can; + + num_can =3D versal_get_num_can(VERSAL_VER_VERSAL); + s->canbus =3D g_new0(CanBusState *, num_can); =20 /* - * User can set canbus0 and canbus1 properties to can-bus object and c= onnect - * to socketcan(optional) interface via command line. + * User can set canbusx properties to can-bus object and optionally co= nnect + * to socketcan interface via command line. */ - object_property_add_link(obj, "canbus0", TYPE_CAN_BUS, - (Object **)&s->canbus[0], - object_property_allow_set_link, - 0); - object_property_add_link(obj, "canbus1", TYPE_CAN_BUS, - (Object **)&s->canbus[1], - object_property_allow_set_link, - 0); + for (i =3D 0; i < num_can; i++) { + g_autofree char *prop_name =3D g_strdup_printf("canbus%zu", i); + + object_property_add_link(obj, prop_name, TYPE_CAN_BUS, + (Object **) &s->canbus[i], + object_property_allow_set_link, 0); + } } =20 static void versal_virt_machine_finalize(Object *obj) @@ -775,6 +749,7 @@ static void versal_virt_machine_finalize(Object *obj) VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(obj); =20 g_free(s->ospi_model); + g_free(s->canbus); } =20 static void versal_virt_machine_class_init(ObjectClass *oc, const void *da= ta) diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index b16af79e8a9..3d2e33d3dac 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -27,6 +27,7 @@ #include "system/device_tree.h" #include "hw/arm/fdt.h" #include "hw/char/pl011.h" +#include "hw/net/xlnx-versal-canfd.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -43,12 +44,19 @@ typedef struct VersalSimplePeriphMap { typedef struct VersalMap { VersalSimplePeriphMap uart[2]; size_t num_uart; + + VersalSimplePeriphMap canfd[4]; + size_t num_canfd; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, .num_uart =3D 2, + + .canfd[0] =3D { 0xff060000, 20 }, + .canfd[1] =3D { 0xff070000, 21 }, + .num_canfd =3D 2, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { @@ -286,36 +294,42 @@ static void versal_create_uart(Versal *s, } } =20 -static void versal_create_canfds(Versal *s, qemu_irq *pic) +static void versal_create_canfd(Versal *s, const VersalSimplePeriphMap *ma= p, + CanBusState *bus) { - int i; - uint32_t irqs[] =3D { VERSAL_CANFD0_IRQ_0, VERSAL_CANFD1_IRQ_0}; - uint64_t addrs[] =3D { MM_CANFD0, MM_CANFD1 }; + SysBusDevice *sbd; + MemoryRegion *mr; + g_autofree char *node; + const char compatible[] =3D "xlnx,canfd-2.0"; + const char clocknames[] =3D "can_clk\0s_axi_aclk"; =20 - for (i =3D 0; i < ARRAY_SIZE(s->lpd.iou.canfd); i++) { - char *name =3D g_strdup_printf("canfd%d", i); - SysBusDevice *sbd; - MemoryRegion *mr; + sbd =3D SYS_BUS_DEVICE(qdev_new(TYPE_XILINX_CANFD)); + object_property_add_child(OBJECT(s), "canfd[*]", OBJECT(sbd)); =20 - object_initialize_child(OBJECT(s), name, &s->lpd.iou.canfd[i], - TYPE_XILINX_CANFD); - sbd =3D SYS_BUS_DEVICE(&s->lpd.iou.canfd[i]); + object_property_set_int(OBJECT(sbd), "ext_clk_freq", + 25 * 1000 * 1000 , &error_abort); =20 - object_property_set_int(OBJECT(&s->lpd.iou.canfd[i]), "ext_clk_fre= q", - XLNX_VERSAL_CANFD_REF_CLK , &error_abort); + object_property_set_link(OBJECT(sbd), "canfdbus", OBJECT(bus), + &error_abort); =20 - object_property_set_link(OBJECT(&s->lpd.iou.canfd[i]), "canfdbus", - OBJECT(s->lpd.iou.canbus[i]), - &error_abort); + sysbus_realize_and_unref(sbd, &error_fatal); =20 - sysbus_realize(sbd, &error_fatal); + mr =3D sysbus_mmio_get_region(sbd, 0); + memory_region_add_subregion(&s->mr_ps, map->addr, mr); =20 - mr =3D sysbus_mmio_get_region(sbd, 0); - memory_region_add_subregion(&s->mr_ps, addrs[i], mr); + versal_sysbus_connect_irq(s, sbd, 0, map->irq); =20 - sysbus_connect_irq(sbd, 0, pic[irqs[i]]); - g_free(name); - } + node =3D versal_fdt_add_simple_subnode(s, "/canfd", map->addr, 0x10000, + compatible, sizeof(compatible)); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "rx-fifo-depth", 0x40); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "tx-mailbox-count", 0x20); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "clocks", + s->phandle.clk_25mhz, s->phandle.clk_25mhz); + qemu_fdt_setprop(s->cfg.fdt, node, "clock-names", + clocknames, sizeof(clocknames)); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "interrupts", + GIC_FDT_IRQ_TYPE_SPI, map->irq, + GIC_FDT_IRQ_FLAGS_LEVEL_HI); } =20 static void versal_create_usbs(Versal *s, qemu_irq *pic) @@ -1044,7 +1058,10 @@ static void versal_realize(DeviceState *dev, Error *= *errp) versal_create_uart(s, &map->uart[i], i); } =20 - versal_create_canfds(s, pic); + for (i =3D 0; i < map->num_canfd; i++) { + versal_create_canfd(s, &map->canfd[i], s->cfg.canbus[i]); + } + versal_create_usbs(s, pic); versal_create_gems(s, pic); versal_create_admas(s, pic); @@ -1072,24 +1089,46 @@ static void versal_realize(DeviceState *dev, Error = **errp) &s->lpd.rpu.mr_ps_alias, 0); } =20 +int versal_get_num_can(VersalVersion version) +{ + const VersalMap *map =3D VERSION_TO_MAP[version]; + + return map->num_canfd; +} + static void versal_base_init(Object *obj) { Versal *s =3D XLNX_VERSAL_BASE(obj); + size_t i, num_can; =20 memory_region_init(&s->fpd.apu.mr, obj, "mr-apu", UINT64_MAX); memory_region_init(&s->lpd.rpu.mr, obj, "mr-rpu", UINT64_MAX); memory_region_init(&s->mr_ps, obj, "mr-ps-switch", UINT64_MAX); memory_region_init_alias(&s->lpd.rpu.mr_ps_alias, OBJECT(s), "mr-rpu-ps-alias", &s->mr_ps, 0, UINT64_MAX); + + num_can =3D versal_get_map(s)->num_canfd; + s->cfg.canbus =3D g_new0(CanBusState *, num_can); + + for (i =3D 0; i < num_can; i++) { + g_autofree char *prop_name =3D g_strdup_printf("canbus%zu", i); + + object_property_add_link(obj, prop_name, TYPE_CAN_BUS, + (Object **) &s->cfg.canbus[i], + object_property_allow_set_link, 0); + } +} + +static void versal_base_finalize(Object *obj) +{ + Versal *s =3D XLNX_VERSAL_BASE(obj); + + g_free(s->cfg.canbus); } =20 static const Property versal_properties[] =3D { DEFINE_PROP_LINK("ddr", Versal, cfg.mr_ddr, TYPE_MEMORY_REGION, MemoryRegion *), - DEFINE_PROP_LINK("canbus0", Versal, lpd.iou.canbus[0], - TYPE_CAN_BUS, CanBusState *), - DEFINE_PROP_LINK("canbus1", Versal, lpd.iou.canbus[1], - TYPE_CAN_BUS, CanBusState *), }; =20 static void versal_base_class_init(ObjectClass *klass, const void *data) @@ -1113,6 +1152,7 @@ static const TypeInfo versal_base_info =3D { .parent =3D TYPE_SYS_BUS_DEVICE, .instance_size =3D sizeof(Versal), .instance_init =3D versal_base_init, + .instance_finalize =3D versal_base_finalize, .class_init =3D versal_base_class_init, .class_size =3D sizeof(VersalClass), .abstract =3D true, --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846394; cv=none; d=zohomail.com; s=zohoarc; b=iVJhQPV1w2ZFUwRW03Y+raSrYsnNrveaUViLfQ2PI66ivPkpSd54GaAzTMsILD03GmSjX1jQqmo5RtqI0RmQT56/K3aoCdMTy+HFXyt5PF7yMv6V0d/+JAgAQ1wYI5+oZHD/zvYJLCDw8kwBnzETcVCF0dz1GhTKVEg2s967lI0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846394; 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=0cMdDKIQDg7CKjwcQRQZC4ht62S9Iu7Xq9R+UBWw6U8=; b=PhVHMD3hnSYHCD8F4l1dG/K99He7Ia1u6lPErD20LPTKIsmrguJ6SHW9baRvtrskgCxKUz4nrC+iOTpM0Oxme4Z3lqOc/y3h/WrOAkyItg+VN13N9a2t6wj3al7jkmpTU+c4gGYi7VAyyQKBAarG091LKQpe+D48qdlj3n2jUU8= 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 1759846394823165.7190157265021; Tue, 7 Oct 2025 07:13:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Pr-0005b1-0C; Tue, 07 Oct 2025 10:11:47 -0400 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 1v68Pm-0005Zy-ON for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:43 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Pg-00027F-Sw for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:42 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-46e2e363118so57800195e9.0 for ; Tue, 07 Oct 2025 07:11:35 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846292; x=1760451092; 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=0cMdDKIQDg7CKjwcQRQZC4ht62S9Iu7Xq9R+UBWw6U8=; b=OWrXdlzrbp6egNXPQfXH/Xnelw/ZIlvlvDEyAu3fmOLeGJIkhkCXnKogfBo3oOfHPi ugGcUPMo0Fff5VxnpM2FiaLmsJXPB1GzprISTHGedzAJXvzzPadIJPZgoieWcmkhgANa 8cPm6jx39vyciaMc7k9O2+pj6QPsjDpzlWCAal8QXB5IMpjLddP8volI6dLDhaUEM42t T/ody0UPjr4YTwY4E3tkr2dmhkTapr4QgNxmoja7EBpJ1qz9xd47JWmESHI1Ru+WVdKu 7YZblf34dSv9lCicCzTL9n6EGJBy+vy3hvYMtoTBhdujoaSjyL3M/RoQdTpL7mzy6idq xBDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846292; x=1760451092; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0cMdDKIQDg7CKjwcQRQZC4ht62S9Iu7Xq9R+UBWw6U8=; b=p1GYz5tzw29tLwqwB0sf3BSLPJu0mNAApfXLvO3yDuJU978uTKG52FNRUu6SuEzO9y 9Yb/FHjZhUEfMK1/6sdw3Z9lIb29zy3hvyZDCW90Vs1MWnrCcOYbXF7LzfE8BfR+9s6Y N1bMig73p3LrVHzDEWBOGfqzD3pfNFxVDsFWuhaJSRQD9fZ7lAgdLNh532HEkBnYcp7G wK71V7ZHTjP4XeDboWtCAWmhd0EQXW3pKfs7GSXwk/ypPdw+ECL6QaC5o+Ir9FCObssA 3y741d4uCKSUkS+NYgKsrhtEUZdEXWV1rkZJskmiuVoRLyqXbCt6A3vDbZV9SbmRVnxW 5H+g== X-Gm-Message-State: AOJu0YxQwNVek4EqLlrf14xWB+Kj/S8hR/ILYstv4sEcvUbOdEj8d6rz ExR5CIjLQYtpS6WUDtR+l4wdq3mLjpzAtHPC7JGsYNUrhoN7wYulXMhionokXFcCmsF8cV/RSEK VtEn8 X-Gm-Gg: ASbGncvHL1UHoMsE0RRwk1XYFQ2+35QTZivlxwJwS+Oir79LvfuELcb3nJndI/+gWO8 PhM6RCzKH10PZGcoUvQg5+P4osq/1dXKFpsHSU/GAaF0SwVUsH/7sh4H5dm4zRnZvp3jnQvddAE trC3TvkfqJA1W4IpXgcHKNH6nXWdMsfALrUbVIBGhxcF+6R4Epa6z/JkSEnuoiNBykZa7mYgrs0 xUzQA0C89bzsxwr/SX9yNqhWcKQlaoInhouELSVbj7BG+VcpiWaiBbp8SG3l8LMAXaSLh+ploxb QeIB3HtOkGMVXNqtFUE5On3aHtalag9c4o52jYWWP0+hyUpncY8A9ccYkUbneFjpPWcNCvewbHU XVhnB8wp8eAGMu66otMF2XFinHDTRIVXMbCXfaud4zRKHvXAWudZYSOey X-Google-Smtp-Source: AGHT+IFRKUy6uKjh7VNdWcA+mWw8qpQJqoMnxHgQ6RnnFAge+szw492vho3fw5aY0jRD+X75/tcgHA== X-Received: by 2002:a05:600c:3541:b0:46e:3d41:5fe7 with SMTP id 5b1f17b1804b1-46e71168cd8mr102460955e9.29.1759846292322; Tue, 07 Oct 2025 07:11:32 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 06/62] hw/arm/xlnx-versal: sdhci: refactor creation Date: Tue, 7 Oct 2025 15:10:26 +0100 Message-ID: <20251007141123.3239867-7-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::332; envelope-from=peter.maydell@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: 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: 1759846400364116600 From: Luc Michel Refactor the SDHCI controllers creation using the VersalMap structure. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-6-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 5 +- hw/arm/xlnx-versal-virt.c | 43 ++-------------- hw/arm/xlnx-versal.c | 96 ++++++++++++++++++++++++++++-------- 3 files changed, 83 insertions(+), 61 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 007c91b596e..4a7a2d85aac 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -16,7 +16,6 @@ #include "hw/sysbus.h" #include "hw/cpu/cluster.h" #include "hw/or-irq.h" -#include "hw/sd/sdhci.h" #include "hw/intc/arm_gicv3.h" #include "hw/dma/xlnx-zdma.h" #include "hw/net/cadence_gem.h" @@ -105,7 +104,6 @@ struct Versal { /* The Platform Management Controller subsystem. */ struct { struct { - SDHCIState sd[XLNX_VERSAL_NR_SDS]; XlnxVersalPmcIouSlcr slcr; =20 struct { @@ -156,7 +154,10 @@ static inline void versal_set_fdt(Versal *s, void *fdt) s->cfg.fdt =3D fdt; } =20 +void versal_sdhci_plug_card(Versal *s, int sd_idx, BlockBackend *blk); + int versal_get_num_can(VersalVersion version); +int versal_get_num_sdhci(VersalVersion version); =20 /* Memory-map and IRQ definitions. Copied a subset from * auto-generated files. */ diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 334252564be..52852082d4b 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -284,32 +284,6 @@ static void fdt_add_zdma_nodes(VersalVirt *s) } } =20 -static void fdt_add_sd_nodes(VersalVirt *s) -{ - const char clocknames[] =3D "clk_xin\0clk_ahb"; - const char compat[] =3D "arasan,sdhci-8.9a"; - int i; - - for (i =3D ARRAY_SIZE(s->soc.pmc.iou.sd) - 1; i >=3D 0; i--) { - uint64_t addr =3D MM_PMC_SD0 + MM_PMC_SD0_SIZE * i; - char *name =3D g_strdup_printf("/sdhci@%" PRIx64, addr); - - qemu_fdt_add_subnode(s->fdt, name); - - qemu_fdt_setprop_cells(s->fdt, name, "clocks", - s->phandle.clk_25Mhz, s->phandle.clk_25Mhz); - qemu_fdt_setprop(s->fdt, name, "clock-names", - clocknames, sizeof(clocknames)); - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, VERSAL_SD0_IRQ_0 + i = * 2, - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, addr, 2, MM_PMC_SD0_SIZE); - qemu_fdt_setprop(s->fdt, name, "compatible", compat, sizeof(compat= )); - g_free(name); - } -} - static void fdt_add_rtc_node(VersalVirt *s) { const char compat[] =3D "xlnx,zynqmp-rtc"; @@ -564,16 +538,11 @@ static void efuse_attach_drive(XlnxEFuse *dev) } } =20 -static void sd_plugin_card(SDHCIState *sd, DriveInfo *di) +static void sd_plug_card(VersalVirt *s, int idx, DriveInfo *di) { BlockBackend *blk =3D di ? blk_by_legacy_dinfo(di) : NULL; - DeviceState *card; =20 - card =3D qdev_new(TYPE_SD_CARD); - object_property_add_child(OBJECT(sd), "card[*]", OBJECT(card)); - qdev_prop_set_drive_err(card, "drive", blk, &error_fatal); - qdev_realize_and_unref(card, qdev_get_child_bus(DEVICE(sd), "sd-bus"), - &error_fatal); + versal_sdhci_plug_card(&s->soc, idx, blk); } =20 static char *versal_get_ospi_model(Object *obj, Error **errp) @@ -648,7 +617,6 @@ static void versal_virt_init(MachineState *machine) fdt_add_timer_nodes(s); fdt_add_zdma_nodes(s); fdt_add_usb_xhci_nodes(s); - fdt_add_sd_nodes(s); fdt_add_rtc_node(s); fdt_add_bbram_node(s); fdt_add_efuse_ctrl_node(s); @@ -668,10 +636,9 @@ static void versal_virt_init(MachineState *machine) /* Attach efuse backend, if given */ efuse_attach_drive(&s->soc.pmc.efuse); =20 - /* Plugin SD cards. */ - for (i =3D 0; i < ARRAY_SIZE(s->soc.pmc.iou.sd); i++) { - sd_plugin_card(&s->soc.pmc.iou.sd[i], - drive_get(IF_SD, 0, i)); + /* Plug SD cards */ + for (i =3D 0; i < versal_get_num_sdhci(VERSAL_VER_VERSAL); i++) { + sd_plug_card(s, i, drive_get(IF_SD, 0, i)); } =20 s->binfo.ram_size =3D machine->ram_size; diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 3d2e33d3dac..ff2f47daad9 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -28,6 +28,7 @@ #include "hw/arm/fdt.h" #include "hw/char/pl011.h" #include "hw/net/xlnx-versal-canfd.h" +#include "hw/sd/sdhci.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -47,6 +48,9 @@ typedef struct VersalMap { =20 VersalSimplePeriphMap canfd[4]; size_t num_canfd; + + VersalSimplePeriphMap sdhci[2]; + size_t num_sdhci; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { @@ -57,6 +61,10 @@ static const VersalMap VERSAL_MAP =3D { .canfd[0] =3D { 0xff060000, 20 }, .canfd[1] =3D { 0xff070000, 21 }, .num_canfd =3D 2, + + .sdhci[0] =3D { 0xf1040000, 126 }, + .sdhci[1] =3D { 0xf1050000, 128 }, + .num_sdhci =3D 2, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { @@ -73,6 +81,18 @@ static inline const VersalMap *versal_get_map(Versal *s) return VERSION_TO_MAP[versal_get_version(s)]; } =20 +static inline Object *versal_get_child(Versal *s, const char *child) +{ + return object_resolve_path_at(OBJECT(s), child); +} + +static inline Object *versal_get_child_idx(Versal *s, const char *child, + size_t idx) +{ + g_autofree char *n =3D g_strdup_printf("%s[%zu]", child, idx); + + return versal_get_child(s, n); +} =20 static qemu_irq versal_get_irq(Versal *s, int irq_idx) { @@ -424,32 +444,39 @@ static void versal_create_admas(Versal *s, qemu_irq *= pic) } =20 #define SDHCI_CAPABILITIES 0x280737ec6481 /* Same as on ZynqMP. */ -static void versal_create_sds(Versal *s, qemu_irq *pic) +static void versal_create_sdhci(Versal *s, + const VersalSimplePeriphMap *map) { - int i; + DeviceState *dev; + MemoryRegion *mr; + g_autofree char *node; + const char compatible[] =3D "arasan,sdhci-8.9a"; + const char clocknames[] =3D "clk_xin\0clk_ahb"; =20 - for (i =3D 0; i < ARRAY_SIZE(s->pmc.iou.sd); i++) { - DeviceState *dev; - MemoryRegion *mr; + dev =3D qdev_new(TYPE_SYSBUS_SDHCI); + object_property_add_child(OBJECT(s), "sdhci[*]", OBJECT(dev)); =20 - object_initialize_child(OBJECT(s), "sd[*]", &s->pmc.iou.sd[i], - TYPE_SYSBUS_SDHCI); - dev =3D DEVICE(&s->pmc.iou.sd[i]); + object_property_set_uint(OBJECT(dev), "sd-spec-version", 3, + &error_fatal); + object_property_set_uint(OBJECT(dev), "capareg", SDHCI_CAPABILITIES, + &error_fatal); + object_property_set_uint(OBJECT(dev), "uhs", UHS_I, &error_fatal); + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 - object_property_set_uint(OBJECT(dev), "sd-spec-version", 3, - &error_fatal); - object_property_set_uint(OBJECT(dev), "capareg", SDHCI_CAPABILITIE= S, - &error_fatal); - object_property_set_uint(OBJECT(dev), "uhs", UHS_I, &error_fatal); - sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); + mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); + memory_region_add_subregion(&s->mr_ps, map->addr, mr); =20 - mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); - memory_region_add_subregion(&s->mr_ps, - MM_PMC_SD0 + i * MM_PMC_SD0_SIZE, mr); + versal_sysbus_connect_irq(s, SYS_BUS_DEVICE(dev), 0, map->irq); =20 - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, - pic[VERSAL_SD0_IRQ_0 + i * 2]); - } + node =3D versal_fdt_add_simple_subnode(s, "/sdhci", map->addr, 0x10000, + compatible, sizeof(compatible)); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "clocks", + s->phandle.clk_25mhz, s->phandle.clk_25mhz); + qemu_fdt_setprop(s->cfg.fdt, node, "clock-names", + clocknames, sizeof(clocknames)); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "interrupts", + GIC_FDT_IRQ_TYPE_SPI, map->irq, + GIC_FDT_IRQ_FLAGS_LEVEL_HI); } =20 static void versal_create_pmc_apb_irq_orgate(Versal *s, qemu_irq *pic) @@ -1062,10 +1089,13 @@ static void versal_realize(DeviceState *dev, Error = **errp) versal_create_canfd(s, &map->canfd[i], s->cfg.canbus[i]); } =20 + for (i =3D 0; i < map->num_sdhci; i++) { + versal_create_sdhci(s, &map->sdhci[i]); + } + versal_create_usbs(s, pic); versal_create_gems(s, pic); versal_create_admas(s, pic); - versal_create_sds(s, pic); versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); versal_create_trng(s, pic); @@ -1089,6 +1119,23 @@ static void versal_realize(DeviceState *dev, Error *= *errp) &s->lpd.rpu.mr_ps_alias, 0); } =20 +void versal_sdhci_plug_card(Versal *s, int sd_idx, BlockBackend *blk) +{ + DeviceState *sdhci, *card; + + sdhci =3D DEVICE(versal_get_child_idx(s, "sdhci", sd_idx)); + + if (sdhci =3D=3D NULL) { + return; + } + + card =3D qdev_new(TYPE_SD_CARD); + object_property_add_child(OBJECT(sdhci), "card[*]", OBJECT(card)); + qdev_prop_set_drive_err(card, "drive", blk, &error_fatal); + qdev_realize_and_unref(card, qdev_get_child_bus(DEVICE(sdhci), "sd-bus= "), + &error_fatal); +} + int versal_get_num_can(VersalVersion version) { const VersalMap *map =3D VERSION_TO_MAP[version]; @@ -1096,6 +1143,13 @@ int versal_get_num_can(VersalVersion version) return map->num_canfd; } =20 +int versal_get_num_sdhci(VersalVersion version) +{ + const VersalMap *map =3D VERSION_TO_MAP[version]; + + return map->num_sdhci; +} + static void versal_base_init(Object *obj) { Versal *s =3D XLNX_VERSAL_BASE(obj); --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847062; cv=none; d=zohomail.com; s=zohoarc; b=JJr/Rk9p7J919FjigZ1lymf9gbmS0BciLBuPjNELqeli4hRwfNa5hsq5MW7hX9WcGQEA1Pq2WQgcFumRsmcRk09QSWupPqaNi5N2rc5n1tO4/e/vphxAz08s0NGuGYr3tlLb+k1HATm3URwDDR+xvsAZJwLhdFDihMFW7nKGCls= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847062; 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=ENve6wMxdaDDH0x9jtLf9GkL8jPXA7Ca2HYte//Nd6I=; b=Mn/TLUPEPIIGQJvwTqvStvAm4wlfXfRmglOZgeHKkpWAwzeNDIuB1x9j3suf+SZ6CdZv+yxUag/Fu7/KnME59NiFCTRyowT0hqjTK5NbtTeuCi4VmCiLlrOi+QSHTe9x/qUCQ4eed3oGmxYVtFmcA9qDFlfq2vkk86WcA7N8WDE= 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 1759847062419458.9024110141004; Tue, 7 Oct 2025 07:24:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Px-0005eI-Bg; Tue, 07 Oct 2025 10:11:53 -0400 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 1v68Ps-0005bw-Ee for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:48 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Pi-00027P-1R for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:47 -0400 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-46e5b7dfeb0so26502805e9.1 for ; Tue, 07 Oct 2025 07:11:35 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846293; x=1760451093; 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=ENve6wMxdaDDH0x9jtLf9GkL8jPXA7Ca2HYte//Nd6I=; b=ILNZj92cslw2XB5l4LE2dBs6G4HAlemIItY9sXvSY9UHcuWuh6lPKtZKcv1XUQIA4J NfGbMFSrxnEDhsNjs+5eoOmlor3leabB2Dhh1D5E+OfqQk6iC72IxP1HNlvX0jZETrf5 itpjae6ov6fuwquQV29VNRvpO0P40GL9o5QiK+2f3y8fWeyKozOcTPcMECvVgeKbBXcg Ei+uqDJw/b7zyPpZ3uner5Qqv0ARD0xgGHj/pmSIecxIFG7Y7oicVP1FrH1Mo3+K5rfl /D1wcNMCb717yfSoyNZB9nBp2kOL14LXeUJmeYhiUCSFpc/q8H1tjiOztrNiQn5I90HX s8qA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846293; x=1760451093; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ENve6wMxdaDDH0x9jtLf9GkL8jPXA7Ca2HYte//Nd6I=; b=w58mdDCcnGvq3uTO1hwrmsrbTLkXBdZCi8z8G+cdCuRBbu8G/BqcIPemQQi4RS9onO TWUW+POAlef2xYYY/MI2EVtVb47xS9T6QV2sbWaPQnRuQ/tWOSTMZrv6OpqR7xaOxC0A heKsv/6dfMuJofeklxC537w9UnMY78dCytlzuECQEQL8U5fsbSpz/MnC4HfNi/Bf8bkg rfncgAR2gttGaGRe8iqCXY4smFDyMfojVgB2cLggrbpC4GCGdy6lD/zp5pNrIjxKFVED xyFDtXp+2o+1o2ButkcfqWDrETspzgZX3QitnzbY9y0+xKhxs+yT2ScG+IRkBnuUXcza slgQ== X-Gm-Message-State: AOJu0YyZWmQ7J/TSuxAYqskaUCMfPNsLZ1iokumyZG/QhsTnWJzGaueN o8v7Z3wjmrIVs9k9R1t+vME68AlCAtUaBiFPqL1K8/S3+2+M+FKmRhd5GWcvwFsw+/iUTBEsiGR M8XNj X-Gm-Gg: ASbGncvj2UKEtVuu2UzTWFQ3SewtGykmR6qyr+goC1FHInHkWaMGXJL77WCE2DbiyUQ Tqlaenrx1xxIe5RNgyYLchz9EqqoGRF1RbrsT/20+vBVP7wQtu3wl970Ke1pvkiBPmrfgHW4MAH 0l8WPUEvZCVX8dN1/2IP1W4bPXLGekFMx9jf7RrHPzs7eqYj47S2KUAgYC5gRvRAv+tiEDEByE7 weP2CNozt5hcJJiDRYccd3F4bwVYOKXb8qdWNth/io7u1qp/wOf6tzd0sF+DieHwAM7vq5QxSy1 NpGw5Rt4g9wgBeywQO5r2FDnqotBnWLuDEPt1Q3C7y5VjNx+hJmh65jCzdCk9yUwB6FaH/jP2sG w4IH87QPuORwshJP3KtvPla3d40UkZ4lK2j0w7i/vbqHZ2uqIWnOBh5Cv X-Google-Smtp-Source: AGHT+IHo/GvtjyTtMIGxMxcFCQeITA0F3ubQ8/fH6qwu7MNTvEI09LOgn8YTes7/v/s6kAmqaebb9Q== X-Received: by 2002:a05:600c:4fd3:b0:46e:32dd:1b1a with SMTP id 5b1f17b1804b1-46e710f6d02mr117240795e9.7.1759846293319; Tue, 07 Oct 2025 07:11:33 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 07/62] hw/arm/xlnx-versal: gem: refactor creation Date: Tue, 7 Oct 2025 15:10:27 +0100 Message-ID: <20251007141123.3239867-8-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.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, T_SPF_TEMPERROR=0.01 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: 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: 1759847068991116602 From: Luc Michel Refactor the GEM ethernet controllers creation using the VersalMap structure. Note that the connection to the CRL is removed for now and will be re-added by next commits. The FDT nodes are created in reverse order compared to the devices creation to keep backward compatibility with the previous generated FDTs. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-7-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 3 - hw/arm/xlnx-versal-virt.c | 54 ------------ hw/arm/xlnx-versal.c | 155 ++++++++++++++++++++++++++--------- 3 files changed, 116 insertions(+), 96 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 4a7a2d85aac..1fcc2b623da 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -18,7 +18,6 @@ #include "hw/or-irq.h" #include "hw/intc/arm_gicv3.h" #include "hw/dma/xlnx-zdma.h" -#include "hw/net/cadence_gem.h" #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" #include "hw/usb/xlnx-usb-subsystem.h" @@ -78,8 +77,6 @@ struct Versal { MemoryRegion mr_ocm; =20 struct { - CadenceGEMState gem[XLNX_VERSAL_NR_GEMS]; - OrIRQState gem_irq_orgate[XLNX_VERSAL_NR_GEMS]; XlnxZDMA adma[XLNX_VERSAL_NR_ADMAS]; VersalUsb2 usb; } iou; diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 52852082d4b..0634cc90eac 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -38,7 +38,6 @@ struct VersalVirt { int fdt_size; struct { uint32_t gic; - uint32_t ethernet_phy[2]; uint32_t clk_125Mhz; uint32_t clk_25Mhz; uint32_t usb; @@ -57,7 +56,6 @@ struct VersalVirt { static void fdt_create(VersalVirt *s) { MachineClass *mc =3D MACHINE_GET_CLASS(s); - int i; =20 s->fdt =3D create_device_tree(&s->fdt_size); if (!s->fdt) { @@ -67,9 +65,6 @@ static void fdt_create(VersalVirt *s) =20 /* Allocate all phandles. */ s->phandle.gic =3D qemu_fdt_alloc_phandle(s->fdt); - for (i =3D 0; i < ARRAY_SIZE(s->phandle.ethernet_phy); i++) { - s->phandle.ethernet_phy[i] =3D qemu_fdt_alloc_phandle(s->fdt); - } s->phandle.clk_25Mhz =3D qemu_fdt_alloc_phandle(s->fdt); s->phandle.clk_125Mhz =3D qemu_fdt_alloc_phandle(s->fdt); =20 @@ -209,54 +204,6 @@ static void fdt_add_usb_xhci_nodes(VersalVirt *s) g_free(name); } =20 -static void fdt_add_fixed_link_nodes(VersalVirt *s, char *gemname, - uint32_t phandle) -{ - char *name =3D g_strdup_printf("%s/fixed-link", gemname); - - qemu_fdt_add_subnode(s->fdt, name); - qemu_fdt_setprop_cell(s->fdt, name, "phandle", phandle); - qemu_fdt_setprop(s->fdt, name, "full-duplex", NULL, 0); - qemu_fdt_setprop_cell(s->fdt, name, "speed", 1000); - g_free(name); -} - -static void fdt_add_gem_nodes(VersalVirt *s) -{ - uint64_t addrs[] =3D { MM_GEM1, MM_GEM0 }; - unsigned int irqs[] =3D { VERSAL_GEM1_IRQ_0, VERSAL_GEM0_IRQ_0 }; - const char clocknames[] =3D "pclk\0hclk\0tx_clk\0rx_clk"; - const char compat_gem[] =3D "cdns,zynqmp-gem\0cdns,gem"; - int i; - - for (i =3D 0; i < ARRAY_SIZE(addrs); i++) { - char *name =3D g_strdup_printf("/ethernet@%" PRIx64, addrs[i]); - qemu_fdt_add_subnode(s->fdt, name); - - fdt_add_fixed_link_nodes(s, name, s->phandle.ethernet_phy[i]); - qemu_fdt_setprop_string(s->fdt, name, "phy-mode", "rgmii-id"); - qemu_fdt_setprop_cell(s->fdt, name, "phy-handle", - s->phandle.ethernet_phy[i]); - qemu_fdt_setprop_cells(s->fdt, name, "clocks", - s->phandle.clk_25Mhz, s->phandle.clk_25Mhz, - s->phandle.clk_125Mhz, s->phandle.clk_125Mh= z); - qemu_fdt_setprop(s->fdt, name, "clock-names", - clocknames, sizeof(clocknames)); - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, irqs[i], - GIC_FDT_IRQ_FLAGS_LEVEL_HI, - GIC_FDT_IRQ_TYPE_SPI, irqs[i], - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, addrs[i], 2, 0x1000); - qemu_fdt_setprop(s->fdt, name, "compatible", - compat_gem, sizeof(compat_gem)); - qemu_fdt_setprop_cell(s->fdt, name, "#address-cells", 1); - qemu_fdt_setprop_cell(s->fdt, name, "#size-cells", 0); - g_free(name); - } -} - static void fdt_add_zdma_nodes(VersalVirt *s) { const char clocknames[] =3D "clk_main\0clk_apb"; @@ -612,7 +559,6 @@ static void versal_virt_init(MachineState *machine) sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal); create_virtio_regions(s); =20 - fdt_add_gem_nodes(s); fdt_add_gic_nodes(s); fdt_add_timer_nodes(s); fdt_add_zdma_nodes(s); diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index ff2f47daad9..7c53bc82a20 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -29,6 +29,7 @@ #include "hw/char/pl011.h" #include "hw/net/xlnx-versal-canfd.h" #include "hw/sd/sdhci.h" +#include "hw/net/cadence_gem.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -51,6 +52,14 @@ typedef struct VersalMap { =20 VersalSimplePeriphMap sdhci[2]; size_t num_sdhci; + + struct VersalGemMap { + VersalSimplePeriphMap map; + size_t num_prio_queue; + const char *phy_mode; + const uint32_t speed; + } gem[3]; + size_t num_gem; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { @@ -65,6 +74,10 @@ static const VersalMap VERSAL_MAP =3D { .sdhci[0] =3D { 0xf1040000, 126 }, .sdhci[1] =3D { 0xf1050000, 128 }, .num_sdhci =3D 2, + + .gem[0] =3D { { 0xff0c0000, 56 }, 2, "rgmii-id", 1000 }, + .gem[1] =3D { { 0xff0d0000, 58 }, 2, "rgmii-id", 1000 }, + .num_gem =3D 2, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { @@ -111,6 +124,18 @@ static void versal_sysbus_connect_irq(Versal *s, SysBu= sDevice *sbd, sysbus_connect_irq(sbd, sbd_idx, irq); } =20 +static void versal_qdev_connect_gpio_out(Versal *s, DeviceState *dev, + int dev_idx, int irq_idx) +{ + qemu_irq irq =3D versal_get_irq(s, irq_idx); + + if (irq =3D=3D NULL) { + return; + } + + qdev_connect_gpio_out(dev, dev_idx, irq); +} + static inline char *versal_fdt_add_subnode(Versal *s, const char *path, uint64_t at, const char *compat, size_t compat_sz) @@ -140,6 +165,21 @@ static inline char *versal_fdt_add_simple_subnode(Vers= al *s, const char *path, return p; } =20 +static inline DeviceState *create_or_gate(Versal *s, Object *parent, + const char *name, uint16_t num_l= ines, + int irq_idx) +{ + DeviceState *or; + + or =3D qdev_new(TYPE_OR_IRQ); + qdev_prop_set_uint16(or, "num-lines", num_lines); + object_property_add_child(parent, name, OBJECT(or)); + qdev_realize_and_unref(or, NULL, &error_abort); + versal_qdev_connect_gpio_out(s, or, 0, irq_idx); + + return or; +} + static void versal_create_apu_cpus(Versal *s) { int i; @@ -377,46 +417,82 @@ static void versal_create_usbs(Versal *s, qemu_irq *p= ic) memory_region_add_subregion(&s->mr_ps, MM_USB2_CTRL_REGS, mr); } =20 -static void versal_create_gems(Versal *s, qemu_irq *pic) +static void versal_create_gem(Versal *s, + const struct VersalGemMap *map) { + DeviceState *dev; + MemoryRegion *mr; + DeviceState *or; int i; =20 - for (i =3D 0; i < ARRAY_SIZE(s->lpd.iou.gem); i++) { - static const int irqs[] =3D { VERSAL_GEM0_IRQ_0, VERSAL_GEM1_IRQ_0= }; - static const uint64_t addrs[] =3D { MM_GEM0, MM_GEM1 }; - char *name =3D g_strdup_printf("gem%d", i); - DeviceState *dev; - MemoryRegion *mr; - OrIRQState *or_irq; + dev =3D qdev_new(TYPE_CADENCE_GEM); + object_property_add_child(OBJECT(s), "gem[*]", OBJECT(dev)); =20 - object_initialize_child(OBJECT(s), name, &s->lpd.iou.gem[i], - TYPE_CADENCE_GEM); - or_irq =3D &s->lpd.iou.gem_irq_orgate[i]; - object_initialize_child(OBJECT(s), "gem-irq-orgate[*]", - or_irq, TYPE_OR_IRQ); - dev =3D DEVICE(&s->lpd.iou.gem[i]); - qemu_configure_nic_device(dev, true, NULL); - object_property_set_int(OBJECT(dev), "phy-addr", 23, &error_abort); - object_property_set_int(OBJECT(dev), "num-priority-queues", 2, - &error_abort); - object_property_set_int(OBJECT(or_irq), - "num-lines", 2, &error_fatal); - qdev_realize(DEVICE(or_irq), NULL, &error_fatal); - qdev_connect_gpio_out(DEVICE(or_irq), 0, pic[irqs[i]]); + qemu_configure_nic_device(dev, true, NULL); + object_property_set_int(OBJECT(dev), "phy-addr", 23, &error_abort); + object_property_set_int(OBJECT(dev), "num-priority-queues", + map->num_prio_queue, &error_abort); =20 - object_property_set_link(OBJECT(dev), "dma", OBJECT(&s->mr_ps), - &error_abort); - sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); + object_property_set_link(OBJECT(dev), "dma", OBJECT(&s->mr_ps), + &error_abort); + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 - mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); - memory_region_add_subregion(&s->mr_ps, addrs[i], mr); + mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); + memory_region_add_subregion(&s->mr_ps, map->map.addr, mr); =20 - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(DEVICE= (or_irq), 0)); - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 1, qdev_get_gpio_in(DEVICE= (or_irq), 1)); - g_free(name); + /* + * The GEM controller exposes one IRQ line per priority queue. In Vers= al + * family devices, those are OR'ed together. + */ + or =3D create_or_gate(s, OBJECT(dev), "irq-orgate", + map->num_prio_queue, map->map.irq); + + for (i =3D 0; i < map->num_prio_queue; i++) { + sysbus_connect_irq(SYS_BUS_DEVICE(dev), i, qdev_get_gpio_in(or, i)= ); } } =20 +static void versal_create_gem_fdt(Versal *s, + const struct VersalGemMap *map) +{ + int i; + g_autofree char *node; + g_autofree char *phy_node; + int phy_phandle; + const char compatible[] =3D "cdns,zynqmp-gem\0cdns,gem"; + const char clocknames[] =3D "pclk\0hclk\0tx_clk\0rx_clk"; + g_autofree uint32_t *irq_prop; + + node =3D versal_fdt_add_simple_subnode(s, "/ethernet", map->map.addr, = 0x1000, + compatible, sizeof(compatible)); + phy_node =3D g_strdup_printf("%s/fixed-link", node); + phy_phandle =3D qemu_fdt_alloc_phandle(s->cfg.fdt); + + /* Fixed link PHY node */ + qemu_fdt_add_subnode(s->cfg.fdt, phy_node); + qemu_fdt_setprop_cell(s->cfg.fdt, phy_node, "phandle", phy_phandle); + qemu_fdt_setprop(s->cfg.fdt, phy_node, "full-duplex", NULL, 0); + qemu_fdt_setprop_cell(s->cfg.fdt, phy_node, "speed", map->speed); + + qemu_fdt_setprop_string(s->cfg.fdt, node, "phy-mode", map->phy_mode); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "phy-handle", phy_phandle); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "clocks", + s->phandle.clk_25mhz, s->phandle.clk_25mhz, + s->phandle.clk_125mhz, s->phandle.clk_125mhz); + qemu_fdt_setprop(s->cfg.fdt, node, "clock-names", + clocknames, sizeof(clocknames)); + + irq_prop =3D g_new(uint32_t, map->num_prio_queue * 3); + for (i =3D 0; i < map->num_prio_queue; i++) { + irq_prop[3 * i] =3D cpu_to_be32(GIC_FDT_IRQ_TYPE_SPI); + irq_prop[3 * i + 1] =3D cpu_to_be32(map->map.irq); + irq_prop[3 * i + 2] =3D cpu_to_be32(GIC_FDT_IRQ_FLAGS_LEVEL_HI); + } + qemu_fdt_setprop(s->cfg.fdt, node, "interrupts", irq_prop, + sizeof(uint32_t) * map->num_prio_queue * 3); +} + + static void versal_create_admas(Versal *s, qemu_irq *pic) { int i; @@ -902,14 +978,6 @@ static void versal_create_crl(Versal *s, qemu_irq *pic) &error_abort); } =20 - for (i =3D 0; i < ARRAY_SIZE(s->lpd.iou.gem); i++) { - g_autofree gchar *name =3D g_strdup_printf("gem[%d]", i); - - object_property_set_link(OBJECT(&s->lpd.crl), - name, OBJECT(&s->lpd.iou.gem[i]), - &error_abort); - } - for (i =3D 0; i < ARRAY_SIZE(s->lpd.iou.adma); i++) { g_autofree gchar *name =3D g_strdup_printf("adma[%d]", i); =20 @@ -1093,8 +1161,17 @@ static void versal_realize(DeviceState *dev, Error *= *errp) versal_create_sdhci(s, &map->sdhci[i]); } =20 + for (i =3D 0; i < map->num_gem; i++) { + versal_create_gem(s, &map->gem[i]); + /* + * Create fdt node in reverse order to keep backward compatibility= with + * previous versions of the generated FDT. This affects Linux kern= el + * interface naming order when persistent naming scheme is not in = use. + */ + versal_create_gem_fdt(s, &map->gem[map->num_gem - 1 - i]); + } + versal_create_usbs(s, pic); - versal_create_gems(s, pic); versal_create_admas(s, pic); versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846397; cv=none; d=zohomail.com; s=zohoarc; b=nkKWHH3+WwgvNqm0ORy38DtujsrMT9zkN2YgGUGFlKfG5XyQwGm8+0Hc3lAdTEyOmHQ2e4JKN+hDr0ihhZYhUpxyPJtBJLHYSv4YYHXgQ+c7G1HjaeZEgurCyCHiIXwMFAUZpX+ARDNZNR7kftUzujjNEqx3mI3JY10VbRy+UgQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846397; 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=G3gy6d2csiGARxgk9ASTnLWPxen54VGTjRgfkcYu+iI=; b=NeGzSuyuGoC7muY3uY1H8OOtrirU/QlfqkHG3iUpQ9WZ/2V9cPVWQZ0BJT2o0Cqr9OgKFPuxPo2ZXZAueh7YpSN/v6KMxydIIR0P10EojExZeotGvrHpvpXOxyug5tJVQgpFvXucOpE/GHesecC2J8kXG6WcdFUUOWAjzNv3Ah4= 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 175984639786339.784574449866454; Tue, 7 Oct 2025 07:13:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Q0-0005f1-97; Tue, 07 Oct 2025 10:11:56 -0400 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 1v68Pt-0005cE-O8 for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:49 -0400 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 1v68Pl-00027a-Da for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:48 -0400 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-46e384dfde0so70054935e9.2 for ; Tue, 07 Oct 2025 07:11:36 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846294; x=1760451094; 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=G3gy6d2csiGARxgk9ASTnLWPxen54VGTjRgfkcYu+iI=; b=waEvo04XiRG1xESFYAbhKH4uX35dY7UdmcV+72TFN4oxxHT5AwyW5P+EbrorbNOMPU iDHFmIhXnvXGMhCvlH3npAcblxBxfA3boXwUSxfwK2HUiXdMGEQgdUbrgyvJqNWqGqnP Qh1nEPeH+7V/NXaN8zMFEliqy7BfHtgia/F/TwSg8BhmN7LF/DfiQav3y49FcISsLcfT IG4OiYUiTemCfOK7hece8rAMA9XOq+aOhdoJqB2/ZvDoURZT/GI2LfIIPEukNgTYIw2Z CTQweTorMyCX52SD69nWeKXMHEL3/lviHLmmUvsS3bNnE3OqEu3+FcVwphp4nJrtHISz RQ6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846294; x=1760451094; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=G3gy6d2csiGARxgk9ASTnLWPxen54VGTjRgfkcYu+iI=; b=mHq+y1MtaqO6196ZHIrrzwbNULKvVDQ/3bobBX9Mv/MzaCza2js1/ltqZVpsz4yqMw qX8/G1luxl2IXXfJpqNhl+qsq5sU8xatiHWZtk8D4nmSX6jWT9uxoD6fgfEw14cSsB0J FsxBnNXSEMRLRn39cN+k7ngOHwtH1Sd5xrsNW3vZsn2zhGFZ257uWYuxq6v5mLrcmax0 IfQnrz+69NtF6B/lClpsGUO5oSGq00ikTXC5EVlEzBIW12nNMKx6WtAeqjjKvr5D7xoH GHV3S1elsSEMSKXTrmVb9qW8A12ff82wbqid2HChH4dCye16B2HWXAp82Yd47dcs8FNJ Ia8A== X-Gm-Message-State: AOJu0YzjhiqJMfsulD6lRdYhxr20zP2LdSCVCj+QsdwyP1tpHkiBGP/C slwqhbI0nH2q8qhs8NJIRVmYxUkwlH43dnPD6nrepvTN6bhjtMBXG+ujge46czusHrFbLdlhXG0 aFvC8 X-Gm-Gg: ASbGncvPk7t2gcwsGFDEv83jGffrO6eo8zblOBLyNzyawS2Enc5yQ7GSGCA5oT3rGip sTm2q1fDfYvg6WOZdtNzFL3c8Ja9V3m6s5jcxFwc9P5tHYiiirXt9rlFN7l9AaRXZNNIQK4GLsN O35ShHnQ/w1UtfakJronVL3xWjcUOjidOh9IJIFQ38zVzX1zceHwEILBftRSzPnLL92ZGU7QTqS mfry1U7y+6T1e1CkkdWpelQB4kzK2YrlCVn4DMQKzSO39tow4r2BnETwdfHMYTH6fKiMyyj6E23 Hf3amL36OVYdnZ+W9GnMfoy5l5LK2nwmLxTZ4BnNe+zmuwCCJVWKNqskqF3dTg5Q4EKyH99oKDs pgv6Xo48ojSATC8KTcLa43bGRrrUVzzlsIbjaBnxsUSWSNU6WG0/lJTlyLdiNfN0DQWY= X-Google-Smtp-Source: AGHT+IGUIbpIRMnzeoiND5P//WcNHTItGPGcE2BrzsxG9m6UxZi5yf7y6KVGudkHxIj5kxTNYafTHA== X-Received: by 2002:a05:600c:3b08:b0:465:a51d:d4 with SMTP id 5b1f17b1804b1-46e71101a79mr124886135e9.6.1759846294208; Tue, 07 Oct 2025 07:11:34 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 08/62] hw/arm/xlnx-versal: adma: refactor creation Date: Tue, 7 Oct 2025 15:10:28 +0100 Message-ID: <20251007141123.3239867-9-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::329; envelope-from=peter.maydell@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: 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: 1759846403109116600 From: Luc Michel Refactor the ADMA creation using the VersalMap structure. Note that the connection to the CRL is removed for now and will be re-added by next commits. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-8-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 2 - hw/arm/xlnx-versal-virt.c | 28 -------------- hw/arm/xlnx-versal.c | 72 ++++++++++++++++++++++++------------ 3 files changed, 48 insertions(+), 54 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 1fcc2b623da..4eeea98ff34 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -17,7 +17,6 @@ #include "hw/cpu/cluster.h" #include "hw/or-irq.h" #include "hw/intc/arm_gicv3.h" -#include "hw/dma/xlnx-zdma.h" #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" #include "hw/usb/xlnx-usb-subsystem.h" @@ -77,7 +76,6 @@ struct Versal { MemoryRegion mr_ocm; =20 struct { - XlnxZDMA adma[XLNX_VERSAL_NR_ADMAS]; VersalUsb2 usb; } iou; =20 diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 0634cc90eac..418e4c6e983 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -204,33 +204,6 @@ static void fdt_add_usb_xhci_nodes(VersalVirt *s) g_free(name); } =20 -static void fdt_add_zdma_nodes(VersalVirt *s) -{ - const char clocknames[] =3D "clk_main\0clk_apb"; - const char compat[] =3D "xlnx,zynqmp-dma-1.0"; - int i; - - for (i =3D XLNX_VERSAL_NR_ADMAS - 1; i >=3D 0; i--) { - uint64_t addr =3D MM_ADMA_CH0 + MM_ADMA_CH0_SIZE * i; - char *name =3D g_strdup_printf("/dma@%" PRIx64, addr); - - qemu_fdt_add_subnode(s->fdt, name); - - qemu_fdt_setprop_cell(s->fdt, name, "xlnx,bus-width", 64); - qemu_fdt_setprop_cells(s->fdt, name, "clocks", - s->phandle.clk_25Mhz, s->phandle.clk_25Mhz); - qemu_fdt_setprop(s->fdt, name, "clock-names", - clocknames, sizeof(clocknames)); - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, VERSAL_ADMA_IRQ_0 + i, - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, addr, 2, 0x1000); - qemu_fdt_setprop(s->fdt, name, "compatible", compat, sizeof(compat= )); - g_free(name); - } -} - static void fdt_add_rtc_node(VersalVirt *s) { const char compat[] =3D "xlnx,zynqmp-rtc"; @@ -561,7 +534,6 @@ static void versal_virt_init(MachineState *machine) =20 fdt_add_gic_nodes(s); fdt_add_timer_nodes(s); - fdt_add_zdma_nodes(s); fdt_add_usb_xhci_nodes(s); fdt_add_rtc_node(s); fdt_add_bbram_node(s); diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 7c53bc82a20..5c2bd4be1f7 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -30,6 +30,7 @@ #include "hw/net/xlnx-versal-canfd.h" #include "hw/sd/sdhci.h" #include "hw/net/cadence_gem.h" +#include "hw/dma/xlnx-zdma.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -60,6 +61,16 @@ typedef struct VersalMap { const uint32_t speed; } gem[3]; size_t num_gem; + + struct VersalZDMAMap { + const char *name; + VersalSimplePeriphMap map; + size_t num_chan; + uint64_t chan_stride; + int irq_stride; + } zdma[2]; + size_t num_zdma; + } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { @@ -78,6 +89,9 @@ static const VersalMap VERSAL_MAP =3D { .gem[0] =3D { { 0xff0c0000, 56 }, 2, "rgmii-id", 1000 }, .gem[1] =3D { { 0xff0d0000, 58 }, 2, "rgmii-id", 1000 }, .num_gem =3D 2, + + .zdma[0] =3D { "adma", { 0xffa80000, 60 }, 8, 0x10000, 1 }, + .num_zdma =3D 1, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { @@ -492,30 +506,45 @@ static void versal_create_gem_fdt(Versal *s, sizeof(uint32_t) * map->num_prio_queue * 3); } =20 - -static void versal_create_admas(Versal *s, qemu_irq *pic) +static void versal_create_zdma(Versal *s, + const struct VersalZDMAMap *map) { - int i; + DeviceState *dev; + MemoryRegion *mr; + g_autofree char *name; + const char compatible[] =3D "xlnx,zynqmp-dma-1.0"; + const char clocknames[] =3D "clk_main\0clk_apb"; + size_t i; =20 - for (i =3D 0; i < ARRAY_SIZE(s->lpd.iou.adma); i++) { - char *name =3D g_strdup_printf("adma%d", i); - DeviceState *dev; - MemoryRegion *mr; + name =3D g_strdup_printf("%s[*]", map->name); =20 - object_initialize_child(OBJECT(s), name, &s->lpd.iou.adma[i], - TYPE_XLNX_ZDMA); - dev =3D DEVICE(&s->lpd.iou.adma[i]); + for (i =3D 0; i < map->num_chan; i++) { + uint64_t addr =3D map->map.addr + map->chan_stride * i; + int irq =3D map->map.irq + map->irq_stride * i; + g_autofree char *node; + + dev =3D qdev_new(TYPE_XLNX_ZDMA); + object_property_add_child(OBJECT(s), name, OBJECT(dev)); object_property_set_int(OBJECT(dev), "bus-width", 128, &error_abor= t); object_property_set_link(OBJECT(dev), "dma", OBJECT(get_system_memory()), &error_fatal= ); - sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); - memory_region_add_subregion(&s->mr_ps, - MM_ADMA_CH0 + i * MM_ADMA_CH0_SIZE, mr= ); + memory_region_add_subregion(&s->mr_ps, addr, mr); =20 - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[VERSAL_ADMA_IRQ_0 += i]); - g_free(name); + versal_sysbus_connect_irq(s, SYS_BUS_DEVICE(dev), 0, irq); + + node =3D versal_fdt_add_simple_subnode(s, "/dma", addr, 0x1000, + compatible, sizeof(compatible= )); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "xlnx,bus-width", 64); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "clocks", + s->phandle.clk_25mhz, s->phandle.clk_25mhz); + qemu_fdt_setprop(s->cfg.fdt, node, "clock-names", + clocknames, sizeof(clocknames)); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "interrupts", + GIC_FDT_IRQ_TYPE_SPI, irq, + GIC_FDT_IRQ_FLAGS_LEVEL_HI); } } =20 @@ -978,14 +1007,6 @@ static void versal_create_crl(Versal *s, qemu_irq *pi= c) &error_abort); } =20 - for (i =3D 0; i < ARRAY_SIZE(s->lpd.iou.adma); i++) { - g_autofree gchar *name =3D g_strdup_printf("adma[%d]", i); - - object_property_set_link(OBJECT(&s->lpd.crl), - name, OBJECT(&s->lpd.iou.adma[i]), - &error_abort); - } - object_property_set_link(OBJECT(&s->lpd.crl), "usb", OBJECT(&s->lpd.iou.usb), &error_abort); @@ -1171,8 +1192,11 @@ static void versal_realize(DeviceState *dev, Error *= *errp) versal_create_gem_fdt(s, &map->gem[map->num_gem - 1 - i]); } =20 + for (i =3D 0; i < map->num_zdma; i++) { + versal_create_zdma(s, &map->zdma[i]); + } + versal_create_usbs(s, pic); - versal_create_admas(s, pic); versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); versal_create_trng(s, pic); --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847095; cv=none; d=zohomail.com; s=zohoarc; b=DNh2R6vT00KXbg7hb8fxM/Pt1gWDp9M6/OQt7sgMWVagUD9RNm4bKcWHy40PcgXZaPjl8OspPjOpscTsorikrWMFUmnJMlW8sq0GDrJ0bobBaM19l/T6IQj3AFpdAwB2D5EhxeyeL3lbIi5U+DPpbWoe1wiLE9sRTuUIxQxuyec= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847095; 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=WzKtm5z1NdBKQnAeIvK0vpQjvPUt/rdIZw8KrD8qmxU=; b=ah1ei1qGS0Rch47IlLd9DzYQ1BeXII9PnKtRjUZC0F1WZGZ5J94WnYk1HouhrRQJVKocu9SZ4A2ACIxJvtJCdaXWuDpeV7h+/OCTl4KdVCfrnLyA4qXO0rfuV/wcnDGLNA5xH/f7njjpfCK+b3qXOt1p2/gUb202tDUndHEmH6I= 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 1759847095250831.2633698230655; Tue, 7 Oct 2025 07:24:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Px-0005eG-4d; Tue, 07 Oct 2025 10:11:53 -0400 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 1v68Pv-0005dV-FH for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:51 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Pl-00027s-DV for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:50 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-46e4f2696bdso76063815e9.0 for ; Tue, 07 Oct 2025 07:11:37 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846295; x=1760451095; 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=WzKtm5z1NdBKQnAeIvK0vpQjvPUt/rdIZw8KrD8qmxU=; b=GkP3FANh/IfqQ70aO+N5pVX5IWJwhWoc+RkU4ABRzp0fTXFC1gRr6psq4CvJ2k3JXJ FYswv6GTDwNByr4Axhkt93uF49ecmIVHja6OR7GTUhHTixvIzMBaKSoUaONe+Bnwh8q1 lpf/NhDHXV0i76KIiZ7EAGF5Hfp3gCZJhrHMZnAlEcKvLd0FXwH8RdUxBUwVzRJ+1bYo TnGgj6Jt9Qw7owj66DoBMlEHgqqArsZyfy4H5LmER9snMupHDAsS4weeb/PJf2d1M6XK c9E56TgNZgldtsOaHDwi2iJ9lxIeqlQylVy8NBiDg+q6bsz2N+xPIfC+mwHh6xDYmdWd BnuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846295; x=1760451095; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=WzKtm5z1NdBKQnAeIvK0vpQjvPUt/rdIZw8KrD8qmxU=; b=gCUPIIFSla0da9GwoqtWldxyDJXP2CHrbVx13UZTuo73VD07d1YOS95SzgHL2Bo8TE 1rNBYJ8IfmC5sGyTOgKIeXsZ3ebZDlp9QjaAT1lmL0vgdW25ANRRVC0I1aYBczScnkjA F1SGU3+paxyi90LpVC+lLZgyKwrl1O5aHAHqTpT51pjHADi6QeRT1XpH/kNeA6X/M7zk dqPiDIUWJfd3u3cj2qq4FG1IQKkNqsYGF09SM6gp24yWrz+EiVT+XtI7rYdgNHePeuzw T7Asvq9zHzSeVrCn95j4bxS0f21B4UFFCzFIwieDTJpViROeY2AdqUBTWg6rAknaaHzZ dmMQ== X-Gm-Message-State: AOJu0YzEWxGf87RWSkd81kkVDsdB1B3Sc8eXYdNNwZb5joNefnSvlNvT OxnKP6xwDAvfL6K2TJv8CY1+EVScB8kNQKmfHpPLexP20WXSucTJQGCduzR64dmb+KRHwcuvP8u xysoO X-Gm-Gg: ASbGncuTsKsFRF3IbqBUGyaQ+MMNaNksO/ZSMCBcif+jyvzxHC8rj5YZ0I6+9cdM5iV ZsdGWDVqvGbQPabuh945v49SRET+GVTlZZMMz1RvFE4vccbB6l7cGdBZ7ln8m6k23IfC5swpubB OOd/wZLRQfdNxgLiSMR80ClqtnzcBVF9K63aZXK14YGHLzuZCVoa0CP6Z6VgXvar9WJvXplPgCo 35FB6bwm8PDJM9mPeE9doXKk2raO22x+DWDvv+VYaxD61c+xCwfh5UQF/KUqwR3WFWvZ/sIXwea 9fghGfJwtSJplg9PmX+mK4cVs5GIfAxhSJthnjnH09ovU3NgGz8nNwvvS6GYE9o4K57NJzCR1w2 5NYmm2211uIfiitFecGAs8mutufWG7t4oFtFLrpcpKrhTDw4W9NyKLRpi X-Google-Smtp-Source: AGHT+IEhylTqPRafFct95ZZMeDgOUyxLkty3aLAX4foiVFOFAGYfsoAYRtODE4ipa+NgYDZn6PgW1A== X-Received: by 2002:a05:600c:4510:b0:46d:cfc9:1d0f with SMTP id 5b1f17b1804b1-46e71142f48mr106124445e9.19.1759846295204; Tue, 07 Oct 2025 07:11:35 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 09/62] hw/arm/xlnx-versal: xram: refactor creation Date: Tue, 7 Oct 2025 15:10:29 +0100 Message-ID: <20251007141123.3239867-10-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::330; envelope-from=peter.maydell@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, T_SPF_TEMPERROR=0.01 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: 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: 1759847097634154100 From: Luc Michel Refactor the XRAM devices creation using the VersalMap structure. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-9-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 6 ---- hw/arm/xlnx-versal.c | 59 +++++++++++++++++++++--------------- 2 files changed, 35 insertions(+), 30 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 4eeea98ff34..71c3314b8b4 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -20,7 +20,6 @@ #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" #include "hw/usb/xlnx-usb-subsystem.h" -#include "hw/misc/xlnx-versal-xramc.h" #include "hw/nvram/xlnx-bbram.h" #include "hw/nvram/xlnx-versal-efuse.h" #include "hw/ssi/xlnx-versal-ospi.h" @@ -88,11 +87,6 @@ struct Versal { ARMCPU cpu[XLNX_VERSAL_NR_RCPUS]; } rpu; =20 - struct { - OrIRQState irq_orgate; - XlnxXramCtrl ctrl[XLNX_VERSAL_NR_XRAM]; - } xram; - XlnxVersalCRL crl; } lpd; =20 diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 5c2bd4be1f7..295fca3d60d 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -31,6 +31,7 @@ #include "hw/sd/sdhci.h" #include "hw/net/cadence_gem.h" #include "hw/dma/xlnx-zdma.h" +#include "hw/misc/xlnx-versal-xramc.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -71,6 +72,14 @@ typedef struct VersalMap { } zdma[2]; size_t num_zdma; =20 + struct VersalXramMap { + uint64_t mem; + uint64_t mem_stride; + uint64_t ctrl; + uint64_t ctrl_stride; + int irq; + size_t num; + } xram; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { @@ -92,6 +101,13 @@ static const VersalMap VERSAL_MAP =3D { =20 .zdma[0] =3D { "adma", { 0xffa80000, 60 }, 8, 0x10000, 1 }, .num_zdma =3D 1, + + .xram =3D { + .num =3D 4, + .mem =3D 0xfe800000, .mem_stride =3D 1 * MiB, + .ctrl =3D 0xff8e0000, .ctrl_stride =3D 0x10000, + .irq =3D 79, + }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { @@ -641,37 +657,31 @@ static void versal_create_trng(Versal *s, qemu_irq *p= ic) sysbus_connect_irq(sbd, 0, pic[VERSAL_TRNG_IRQ]); } =20 -static void versal_create_xrams(Versal *s, qemu_irq *pic) +static void versal_create_xrams(Versal *s, const struct VersalXramMap *map) { - int nr_xrams =3D ARRAY_SIZE(s->lpd.xram.ctrl); - DeviceState *orgate; - int i; + SysBusDevice *sbd; + MemoryRegion *mr; + DeviceState *or; + size_t i; =20 - /* XRAM IRQs get ORed into a single line. */ - object_initialize_child(OBJECT(s), "xram-irq-orgate", - &s->lpd.xram.irq_orgate, TYPE_OR_IRQ); - orgate =3D DEVICE(&s->lpd.xram.irq_orgate); - object_property_set_int(OBJECT(orgate), - "num-lines", nr_xrams, &error_fatal); - qdev_realize(orgate, NULL, &error_fatal); - qdev_connect_gpio_out(orgate, 0, pic[VERSAL_XRAM_IRQ_0]); + or =3D create_or_gate(s, OBJECT(s), "xram-orgate", map->num, map->irq); =20 - for (i =3D 0; i < ARRAY_SIZE(s->lpd.xram.ctrl); i++) { - SysBusDevice *sbd; - MemoryRegion *mr; + for (i =3D 0; i < map->num; i++) { + hwaddr ctrl, mem; =20 - object_initialize_child(OBJECT(s), "xram[*]", &s->lpd.xram.ctrl[i], - TYPE_XLNX_XRAM_CTRL); - sbd =3D SYS_BUS_DEVICE(&s->lpd.xram.ctrl[i]); - sysbus_realize(sbd, &error_fatal); + sbd =3D SYS_BUS_DEVICE(qdev_new(TYPE_XLNX_XRAM_CTRL)); + object_property_add_child(OBJECT(s), "xram[*]", OBJECT(sbd)); + sysbus_realize_and_unref(sbd, &error_fatal); + + ctrl =3D map->ctrl + map->ctrl_stride * i; + mem =3D map->mem + map->mem_stride * i; =20 mr =3D sysbus_mmio_get_region(sbd, 0); - memory_region_add_subregion(&s->mr_ps, - MM_XRAMC + i * MM_XRAMC_SIZE, mr); + memory_region_add_subregion(&s->mr_ps, ctrl, mr); mr =3D sysbus_mmio_get_region(sbd, 1); - memory_region_add_subregion(&s->mr_ps, MM_XRAM + i * MiB, mr); + memory_region_add_subregion(&s->mr_ps, mem, mr); =20 - sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(orgate, i)); + sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(or, i)); } } =20 @@ -1196,11 +1206,12 @@ static void versal_realize(DeviceState *dev, Error = **errp) versal_create_zdma(s, &map->zdma[i]); } =20 + versal_create_xrams(s, &map->xram); + versal_create_usbs(s, pic); versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); versal_create_trng(s, pic); - versal_create_xrams(s, pic); versal_create_bbram(s, pic); versal_create_efuse(s, pic); versal_create_pmc_iou_slcr(s, pic); --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847081; cv=none; d=zohomail.com; s=zohoarc; b=fJMSizMnvA4+GQHSdd/eh3kgdYstd6SPgo/v8eoCqxMW/3ZZiN+2NyOH8GxS+U3ZK0qSYgxeShMqm3gFSojVex8rtTJwwUtCQurDbaoJmTQeaQcKqwmzaa3Rd53xTi6xd4yKhK5BauD/OaKpFlRjvTN/w0kElSO7oxaaST4ALr0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847081; 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=J41c/R0G8V7brEPhzE5k1w0NOA32agVYBgiUvBtPkYA=; b=S5OjcjOkOM8hf3JEk/8QJemhuae5uMnnciAjGMyXrRcemVwRGGZjhg3Rd1NMJJHklYi8JbU2InO5Yv604KygWz7Rzd82roLWIos9uQjTzcG2xTjSWcj3Q7i9aPzRdGCH1DXILI1ZI9PQAr+Jd9CS7AWXvuXtJLmfXTy0k2JqXcc= 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 1759847081543780.4606029611163; Tue, 7 Oct 2025 07:24:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Q4-0005fP-Lx; Tue, 07 Oct 2025 10:12:00 -0400 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 1v68Q0-0005f3-Td for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:57 -0400 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Pm-000288-Fl for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:56 -0400 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-46e2c3b6d4cso51248955e9.3 for ; Tue, 07 Oct 2025 07:11:40 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846297; x=1760451097; 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=J41c/R0G8V7brEPhzE5k1w0NOA32agVYBgiUvBtPkYA=; b=fBHEw8FFfJPoga/FUBcj6aTR6HtwX5GkPI8D35kQYZywPmsUzsQWpL5ZqXgTV/4skB bmRdbcg6Hv1Bd4ZxrGM1xHlDjcSjRt3xhVkbWVcPeKh1Zvhpn47KGevPHIJDK8Y+DmNx wFzCtGqlMy4kz8OjnlkbO5bu24k2h6UVh42I0/xCFQc1Fzr8Fd1JFUro01g46oP8P95S /eRn8HjTS66gFADFosNNIdtk+fwedIyePoQMf45sO+lIPcx+NP7tHD3HLbmU2ezuJp1Z bTifb2qr0zVlu/HQSKnFhqI0Udd+lfMxzA+scXqQu01e0BzwRuU8lLtl+kvAYnU2Y6/O u1eA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846297; x=1760451097; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=J41c/R0G8V7brEPhzE5k1w0NOA32agVYBgiUvBtPkYA=; b=WWkVCwMditwaGXq5EsCbDLfNmaeNIiflrkWUQ3KYmYVTF7qydiGNUcUNBUSlyd4aGP W+u5b/0iM0q1StiKe7U4mAyCKOR23e8wi/gIA2/vyc5lOHZH6b6Z6LcMBKVAz0KlSc/x bTGCP3T471W/FM5CHY25MQiFVFuN0+X/3LJSgXg5wWLg4dGRcHwctbXMf5RKqq6M7XGr wB1S/b1GVa2Oz4Im0YTILA0ZSASkrs3r72+5Tu/xRqc8189Mcwbs6xfxsWPXxFQlH+xZ /JNEIPTyGmmdjK72HBtFOS7WA6Yn82BZ5YEEQKNsUxqD+x3r/cz9t2BhfCE9s3yAC04u uuLQ== X-Gm-Message-State: AOJu0Yw9JCC+LmHUk4MLeFhcmckOs1gXAiDk5HDfh5GfAdgK/nimTWG6 1wqWte0pRikwU+4XKGsw4rXBhfEudeckVG/eZwa4qBPUPyypxthYkvJ5Dii2wL/RFUjzDWl8Ilw F1Nu6 X-Gm-Gg: ASbGncs7vwtraRbqdIIYLxm5pZoU05fovcdQAcqmOVa/PMEiDlsjlr4OD4FZk9uPR4G HRuD7P+8iFrtceEeQJx5+MNqy1fWX/5tHSMr1EEEPFIasqjClZg7w2twx6AiP4es18w+sTtZ66E cLsya4vHCx+aH19SgovxHhwKiwC0wJ/rS5JyyZ3F4IgfdpgodR/l6Dgm4x6ffi/VHPcJ83j1q7q gU1IpntnYR7BNb/7WdVh0vTcLnyIEl+6+aUfJjSJU8N9K/Az+6fp8UtfuGcv8nlm/OpuHAc21SX 7+SWyYRI36ZDaPZPqrA4k7h9yy9CwUyOWc2tilh7msDuyFZO8w/opRSwZLbwEUr1dhsF4fhgl1r RIqC9wcstjGwM+rPK8iQuspiQr5FpbVwxg3vB/NGiiTYwQkomatt6WOWl X-Google-Smtp-Source: AGHT+IGBA/p1hLgIpxQPnW1L9MuXzYxxuqSfCu17WNLGwJ0afbIKzWn3tViCCRtdrpSrc02YE4cYpw== X-Received: by 2002:a05:600c:4081:b0:46e:72df:a812 with SMTP id 5b1f17b1804b1-46e72dfa86fmr69571865e9.4.1759846296613; Tue, 07 Oct 2025 07:11:36 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 10/62] hw/arm/xlnx-versal: usb: refactor creation Date: Tue, 7 Oct 2025 15:10:30 +0100 Message-ID: <20251007141123.3239867-11-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::333; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x333.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, 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: 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: 1759847089991116600 From: Luc Michel Refactor the USB controller creation using the VersalMap structure. Note that the connection to the CRL is removed for now and will be re-added by next commits. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-10-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 5 --- hw/arm/xlnx-versal-virt.c | 56 +-------------------------- hw/arm/xlnx-versal.c | 74 +++++++++++++++++++++++++++++------- 3 files changed, 62 insertions(+), 73 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 71c3314b8b4..5d4b30f0ff9 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -19,7 +19,6 @@ #include "hw/intc/arm_gicv3.h" #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" -#include "hw/usb/xlnx-usb-subsystem.h" #include "hw/nvram/xlnx-bbram.h" #include "hw/nvram/xlnx-versal-efuse.h" #include "hw/ssi/xlnx-versal-ospi.h" @@ -74,10 +73,6 @@ struct Versal { struct { MemoryRegion mr_ocm; =20 - struct { - VersalUsb2 usb; - } iou; - /* Real-time Processing Unit. */ struct { MemoryRegion mr; diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 418e4c6e983..5801598da7c 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -14,6 +14,7 @@ #include "qemu/error-report.h" #include "qapi/error.h" #include "system/device_tree.h" +#include "system/address-spaces.h" #include "hw/block/flash.h" #include "hw/boards.h" #include "hw/sysbus.h" @@ -40,8 +41,6 @@ struct VersalVirt { uint32_t gic; uint32_t clk_125Mhz; uint32_t clk_25Mhz; - uint32_t usb; - uint32_t dwc; } phandle; struct arm_boot_info binfo; =20 @@ -68,8 +67,6 @@ static void fdt_create(VersalVirt *s) s->phandle.clk_25Mhz =3D qemu_fdt_alloc_phandle(s->fdt); s->phandle.clk_125Mhz =3D qemu_fdt_alloc_phandle(s->fdt); =20 - s->phandle.usb =3D qemu_fdt_alloc_phandle(s->fdt); - s->phandle.dwc =3D qemu_fdt_alloc_phandle(s->fdt); /* Create /chosen node for load_dtb. */ qemu_fdt_add_subnode(s->fdt, "/chosen"); qemu_fdt_add_subnode(s->fdt, "/aliases"); @@ -154,56 +151,6 @@ static void fdt_add_timer_nodes(VersalVirt *s) compat, sizeof(compat)); } =20 -static void fdt_add_usb_xhci_nodes(VersalVirt *s) -{ - const char clocknames[] =3D "bus_clk\0ref_clk"; - const char irq_name[] =3D "dwc_usb3"; - const char compatVersalDWC3[] =3D "xlnx,versal-dwc3"; - const char compatDWC3[] =3D "snps,dwc3"; - char *name =3D g_strdup_printf("/usb@%" PRIx32, MM_USB2_CTRL_REGS); - - qemu_fdt_add_subnode(s->fdt, name); - qemu_fdt_setprop(s->fdt, name, "compatible", - compatVersalDWC3, sizeof(compatVersalDWC3)); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, MM_USB2_CTRL_REGS, - 2, MM_USB2_CTRL_REGS_SIZE); - qemu_fdt_setprop(s->fdt, name, "clock-names", - clocknames, sizeof(clocknames)); - qemu_fdt_setprop_cells(s->fdt, name, "clocks", - s->phandle.clk_25Mhz, s->phandle.clk_125Mhz= ); - qemu_fdt_setprop(s->fdt, name, "ranges", NULL, 0); - qemu_fdt_setprop_cell(s->fdt, name, "#address-cells", 2); - qemu_fdt_setprop_cell(s->fdt, name, "#size-cells", 2); - qemu_fdt_setprop_cell(s->fdt, name, "phandle", s->phandle.usb); - g_free(name); - - name =3D g_strdup_printf("/usb@%" PRIx32 "/dwc3@%" PRIx32, - MM_USB2_CTRL_REGS, MM_USB_0); - qemu_fdt_add_subnode(s->fdt, name); - qemu_fdt_setprop(s->fdt, name, "compatible", - compatDWC3, sizeof(compatDWC3)); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, MM_USB_0, 2, MM_USB_0_SIZE); - qemu_fdt_setprop(s->fdt, name, "interrupt-names", - irq_name, sizeof(irq_name)); - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, VERSAL_USB0_IRQ_0, - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop_cell(s->fdt, name, - "snps,quirk-frame-length-adjustment", 0x20); - qemu_fdt_setprop_cells(s->fdt, name, "#stream-id-cells", 1); - qemu_fdt_setprop_string(s->fdt, name, "dr_mode", "host"); - qemu_fdt_setprop_string(s->fdt, name, "phy-names", "usb3-phy"); - qemu_fdt_setprop(s->fdt, name, "snps,dis_u2_susphy_quirk", NULL, 0); - qemu_fdt_setprop(s->fdt, name, "snps,dis_u3_susphy_quirk", NULL, 0); - qemu_fdt_setprop(s->fdt, name, "snps,refclk_fladj", NULL, 0); - qemu_fdt_setprop(s->fdt, name, "snps,mask_phy_reset", NULL, 0); - qemu_fdt_setprop_cell(s->fdt, name, "phandle", s->phandle.dwc); - qemu_fdt_setprop_string(s->fdt, name, "maximum-speed", "high-speed"); - g_free(name); -} - static void fdt_add_rtc_node(VersalVirt *s) { const char compat[] =3D "xlnx,zynqmp-rtc"; @@ -534,7 +481,6 @@ static void versal_virt_init(MachineState *machine) =20 fdt_add_gic_nodes(s); fdt_add_timer_nodes(s); - fdt_add_usb_xhci_nodes(s); fdt_add_rtc_node(s); fdt_add_bbram_node(s); fdt_add_efuse_ctrl_node(s); diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 295fca3d60d..946c0170674 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -32,6 +32,7 @@ #include "hw/net/cadence_gem.h" #include "hw/dma/xlnx-zdma.h" #include "hw/misc/xlnx-versal-xramc.h" +#include "hw/usb/xlnx-usb-subsystem.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -80,6 +81,13 @@ typedef struct VersalMap { int irq; size_t num; } xram; + + struct VersalUsbMap { + uint64_t xhci; + uint64_t ctrl; + int irq; + } usb[2]; + size_t num_usb; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { @@ -108,6 +116,9 @@ static const VersalMap VERSAL_MAP =3D { .ctrl =3D 0xff8e0000, .ctrl_stride =3D 0x10000, .irq =3D 79, }, + + .usb[0] =3D { .xhci =3D 0xfe200000, .ctrl =3D 0xff9d0000, .irq =3D 22 = }, + .num_usb =3D 1, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { @@ -422,29 +433,67 @@ static void versal_create_canfd(Versal *s, const Vers= alSimplePeriphMap *map, GIC_FDT_IRQ_FLAGS_LEVEL_HI); } =20 -static void versal_create_usbs(Versal *s, qemu_irq *pic) +static void versal_create_usb(Versal *s, + const struct VersalUsbMap *map) { DeviceState *dev; MemoryRegion *mr; + g_autofree char *node, *subnode; + const char clocknames[] =3D "bus_clk\0ref_clk"; + const char irq_name[] =3D "dwc_usb3"; + const char compat_versal_dwc3[] =3D "xlnx,versal-dwc3"; + const char compat_dwc3[] =3D "snps,dwc3"; =20 - object_initialize_child(OBJECT(s), "usb2", &s->lpd.iou.usb, - TYPE_XILINX_VERSAL_USB2); - dev =3D DEVICE(&s->lpd.iou.usb); + dev =3D qdev_new(TYPE_XILINX_VERSAL_USB2); + object_property_add_child(OBJECT(s), "usb[*]", OBJECT(dev)); =20 object_property_set_link(OBJECT(dev), "dma", OBJECT(&s->mr_ps), &error_abort); qdev_prop_set_uint32(dev, "intrs", 1); qdev_prop_set_uint32(dev, "slots", 2); =20 - sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); =20 mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); - memory_region_add_subregion(&s->mr_ps, MM_USB_0, mr); + memory_region_add_subregion(&s->mr_ps, map->xhci, mr); =20 - sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[VERSAL_USB0_IRQ_0]); + versal_sysbus_connect_irq(s, SYS_BUS_DEVICE(dev), 0, map->irq); =20 mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 1); - memory_region_add_subregion(&s->mr_ps, MM_USB2_CTRL_REGS, mr); + memory_region_add_subregion(&s->mr_ps, map->ctrl, mr); + + node =3D versal_fdt_add_simple_subnode(s, "/usb", map->ctrl, 0x10000, + compat_versal_dwc3, + sizeof(compat_versal_dwc3)); + qemu_fdt_setprop(s->cfg.fdt, node, "clock-names", + clocknames, sizeof(clocknames)); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "clocks", + s->phandle.clk_25mhz, s->phandle.clk_125mhz= ); + qemu_fdt_setprop(s->cfg.fdt, node, "ranges", NULL, 0); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "#address-cells", 2); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "#size-cells", 2); + + subnode =3D g_strdup_printf("/%s/dwc3", node); + g_free(node); + + node =3D versal_fdt_add_simple_subnode(s, subnode, map->xhci, 0x10000, + compat_dwc3, + sizeof(compat_dwc3)); + qemu_fdt_setprop(s->cfg.fdt, node, "interrupt-names", + irq_name, sizeof(irq_name)); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "interrupts", + GIC_FDT_IRQ_TYPE_SPI, map->irq, + GIC_FDT_IRQ_FLAGS_LEVEL_HI); + qemu_fdt_setprop_cell(s->cfg.fdt, node, + "snps,quirk-frame-length-adjustment", 0x20); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "#stream-id-cells", 1); + qemu_fdt_setprop_string(s->cfg.fdt, node, "dr_mode", "host"); + qemu_fdt_setprop_string(s->cfg.fdt, node, "phy-names", "usb3-phy"); + qemu_fdt_setprop(s->cfg.fdt, node, "snps,dis_u2_susphy_quirk", NULL, 0= ); + qemu_fdt_setprop(s->cfg.fdt, node, "snps,dis_u3_susphy_quirk", NULL, 0= ); + qemu_fdt_setprop(s->cfg.fdt, node, "snps,refclk_fladj", NULL, 0); + qemu_fdt_setprop(s->cfg.fdt, node, "snps,mask_phy_reset", NULL, 0); + qemu_fdt_setprop_string(s->cfg.fdt, node, "maximum-speed", "high-speed= "); } =20 static void versal_create_gem(Versal *s, @@ -1017,10 +1066,6 @@ static void versal_create_crl(Versal *s, qemu_irq *p= ic) &error_abort); } =20 - object_property_set_link(OBJECT(&s->lpd.crl), - "usb", OBJECT(&s->lpd.iou.usb), - &error_abort); - sysbus_realize(sbd, &error_fatal); memory_region_add_subregion(&s->mr_ps, MM_CRL, sysbus_mmio_get_region(sbd, 0)); @@ -1208,7 +1253,10 @@ static void versal_realize(DeviceState *dev, Error *= *errp) =20 versal_create_xrams(s, &map->xram); =20 - versal_create_usbs(s, pic); + for (i =3D 0; i < map->num_usb; i++) { + versal_create_usb(s, &map->usb[i]); + } + versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); versal_create_trng(s, pic); --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847228; cv=none; d=zohomail.com; s=zohoarc; b=GDdpRqLdWnWl/DPcE4F29os5CXCUvLQP8c2JZVD603Q0xoVZ8HM8CwdKcXPZeWYBcC21JDN78wFWczy/aWzVgwEBBMg1NkFbSDZEMP1oeA692DvAdJv4fkb6rTfjBFS3zI2rLhGainwAiOuNeQum39KBoAF43VvNDIDmJFZtVA4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847228; 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=REExaYDHINLR9Ktzyks9N8RWTaQZTmAlLbGW7Aj7d6c=; b=GGDwRtbvlHXtzmol5MMb2tQzp5NPOLR/Uu9UcK5XHeT6nrYBNd7ED9BReTrLasdkN3HCIxZTEyylHPihQChVsC/L0yOSu4tLbWBzQ3RqX0SI+mVFBpjL10CcxwVvNk5mAs/jTb8YeLyr0j7b+APkR0/n4UGMVDAOz+uMBuxXjnI= 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 1759847228078400.71661756209687; Tue, 7 Oct 2025 07:27:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Q3-0005fK-V7; Tue, 07 Oct 2025 10:12:00 -0400 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 1v68Q0-0005f2-M8 for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:57 -0400 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 1v68Pm-00028N-No for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:55 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-46e2e6a708fso41809495e9.0 for ; Tue, 07 Oct 2025 07:11:40 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846298; x=1760451098; 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=REExaYDHINLR9Ktzyks9N8RWTaQZTmAlLbGW7Aj7d6c=; b=rAhbtBEXo6hH7+/wf77cIth4RxX3TNiOKUwB4x3salhvQBiImrNmFoVaPfcgfJzBbQ SrY3XzzdVttpgPO1oMRERONAsP8v4+APYtbRCqE8zJLv7JJvxC+xYB1AkMwYpzHNVG0m s09hnWMPMie0iJvgdPoyPbJULVV83sJFiNX7vf+xj1ILh5svirF8P9HIwo0w3ydfE9ak /pVeEOuD3AHWz/1aXZwZz79h4jqtGlO03YT8EhB3DJF2rw2y7BrY7HYuUB+NfRTLbesq k1GFIvKAIwAzr2PJtbg6GHvOSkNDb0YvGGbaBxL2Esdv5mdcSqpMTUBME6HWzfI6XXco CCKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846298; x=1760451098; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=REExaYDHINLR9Ktzyks9N8RWTaQZTmAlLbGW7Aj7d6c=; b=tyfaEI26Ww/zXQVMcRfdNxjtQZrhs61i272rav2Mr8KZt5uzGLCiqIb7PWwX0E62tC XchAMjCw0P4RD1UXJT3Lr4MdYBEsNgsNYyB6ABg3TJznzCG/w98HWa5M6ncm4mD2Tot1 iYG2i0ilhcMBbH5fwPk0pKq/5mY8uHQeVEdxVdIgjLz79MC74oWuzhoJMWYTQESAdG4V YD41wMQJSPpUMJjzbHSfhT5fvLNUvYTvJwxHQg9+LzwSV/5dREdzLPVVJkHLPXv21OJr HioeynbqE30zuSJCfMzyJAaHRfWy8HoVDfAr3qzL4hTlZ4t0w8J7O5I433+W1xtTRSDr duzA== X-Gm-Message-State: AOJu0YyflGU2EV56bkrpb6xeZruKOI3sldT8j0blLyZc7bFMIkmyIa/o AG9U7Zl5oyz945BSRyQrBr7tydWabAUhRca3+R2dxp/fMYCP39IjpackUcXOTRo3GS51m5h70xl wmzjA X-Gm-Gg: ASbGnctxokSh8QDOYrF44cqCWtzwdgWJjV3IoRNuNgLngDtKRKTQSOBnd8jPFtpJup1 7Zg37Os/mXBgqB+dgTtW9Hgt/6Lf05YK9EVNzN1ctRuHay4ZJNI4TTC8MuPxqJkmnMsoMmuDbM4 RbHK0R/VUz6wZsT/xbbZuGDbYOenu6MKjKLq7A8z8+Gdgvgz9+gpY9O129KuQSnAsWxMsYS1wEE z2dSN3pHi6X4VOHRGFTcU5LEYdQhtB9wBAMuOPaBwYZbaihH2Pf2dk6ybWjdK4fB+H184YUCkU7 1yDlnZB9iV5t3yIzy1CoOeqcELwwT4Hn9LCjfOZAm1E3aEpg74L9ZaPyrKshl5tpv7YEge5iE0i A4TYpjisyeHHEsHG5CuuPUCixB7rSx9pEetfiai6QDN4QLstA0L0euKNG X-Google-Smtp-Source: AGHT+IHByTDVX/2r1rmfjq2BXfQBPdXHytKjlL75jMDUEyjuGvasdEXxzigsTPSRrkudWKOfeSfkbw== X-Received: by 2002:a05:600c:a118:b0:46e:4784:cdf5 with SMTP id 5b1f17b1804b1-46e7227f720mr85535355e9.15.1759846297723; Tue, 07 Oct 2025 07:11:37 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 11/62] hw/arm/xlnx-versal: efuse: refactor creation Date: Tue, 7 Oct 2025 15:10:31 +0100 Message-ID: <20251007141123.3239867-12-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::331; envelope-from=peter.maydell@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: 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: 1759847234566116600 From: Luc Michel Refactore the eFuse devices creation using the VersalMap structure. Note that the corresponding FDT nodes are removed. They do not correspond to any real node in standard Versal DTBs. No matching drivers exist for them. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-11-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 5 +-- hw/arm/xlnx-versal-virt.c | 43 ++------------------ hw/arm/xlnx-versal.c | 78 +++++++++++++++++++++++------------- 3 files changed, 54 insertions(+), 72 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 5d4b30f0ff9..79ca9b13321 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -20,7 +20,6 @@ #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" #include "hw/nvram/xlnx-bbram.h" -#include "hw/nvram/xlnx-versal-efuse.h" #include "hw/ssi/xlnx-versal-ospi.h" #include "hw/dma/xlnx_csu_dma.h" #include "hw/misc/xlnx-versal-crl.h" @@ -102,9 +101,6 @@ struct Versal { XlnxZynqMPRTC rtc; XlnxVersalTRng trng; XlnxBBRam bbram; - XlnxEFuse efuse; - XlnxVersalEFuseCtrl efuse_ctrl; - XlnxVersalEFuseCache efuse_cache; XlnxVersalCFUAPB cfu_apb; XlnxVersalCFUFDRO cfu_fdro; XlnxVersalCFUSFR cfu_sfr; @@ -139,6 +135,7 @@ static inline void versal_set_fdt(Versal *s, void *fdt) } =20 void versal_sdhci_plug_card(Versal *s, int sd_idx, BlockBackend *blk); +void versal_efuse_attach_drive(Versal *s, BlockBackend *blk); =20 int versal_get_num_can(VersalVersion version); int versal_get_num_sdhci(VersalVersion version); diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 5801598da7c..b6c49dafe09 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -192,41 +192,6 @@ static void fdt_add_bbram_node(VersalVirt *s) g_free(name); } =20 -static void fdt_add_efuse_ctrl_node(VersalVirt *s) -{ - const char compat[] =3D TYPE_XLNX_VERSAL_EFUSE_CTRL; - const char interrupt_names[] =3D "pmc_efuse"; - char *name =3D g_strdup_printf("/pmc_efuse@%x", MM_PMC_EFUSE_CTRL); - - qemu_fdt_add_subnode(s->fdt, name); - - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, VERSAL_EFUSE_IRQ, - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop(s->fdt, name, "interrupt-names", - interrupt_names, sizeof(interrupt_names)); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, MM_PMC_EFUSE_CTRL, - 2, MM_PMC_EFUSE_CTRL_SIZE); - qemu_fdt_setprop(s->fdt, name, "compatible", compat, sizeof(compat)); - g_free(name); -} - -static void fdt_add_efuse_cache_node(VersalVirt *s) -{ - const char compat[] =3D TYPE_XLNX_VERSAL_EFUSE_CACHE; - char *name =3D g_strdup_printf("/xlnx_pmc_efuse_cache@%x", - MM_PMC_EFUSE_CACHE); - - qemu_fdt_add_subnode(s->fdt, name); - - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, MM_PMC_EFUSE_CACHE, - 2, MM_PMC_EFUSE_CACHE_SIZE); - qemu_fdt_setprop(s->fdt, name, "compatible", compat, sizeof(compat)); - g_free(name); -} - static void fdt_nop_memory_nodes(void *fdt, Error **errp) { Error *err =3D NULL; @@ -393,7 +358,7 @@ static void bbram_attach_drive(XlnxBBRam *dev) } } =20 -static void efuse_attach_drive(XlnxEFuse *dev) +static void efuse_attach_drive(VersalVirt *s) { DriveInfo *dinfo; BlockBackend *blk; @@ -401,7 +366,7 @@ static void efuse_attach_drive(XlnxEFuse *dev) dinfo =3D drive_get_by_index(IF_PFLASH, 1); blk =3D dinfo ? blk_by_legacy_dinfo(dinfo) : NULL; if (blk) { - qdev_prop_set_drive(DEVICE(dev), "drive", blk); + versal_efuse_attach_drive(&s->soc, blk); } } =20 @@ -483,8 +448,6 @@ static void versal_virt_init(MachineState *machine) fdt_add_timer_nodes(s); fdt_add_rtc_node(s); fdt_add_bbram_node(s); - fdt_add_efuse_ctrl_node(s); - fdt_add_efuse_cache_node(s); fdt_add_cpu_nodes(s, psci_conduit); fdt_add_clk_node(s, "/old-clk125", 125000000, s->phandle.clk_125Mhz); fdt_add_clk_node(s, "/old-clk25", 25000000, s->phandle.clk_25Mhz); @@ -498,7 +461,7 @@ static void versal_virt_init(MachineState *machine) bbram_attach_drive(&s->soc.pmc.bbram); =20 /* Attach efuse backend, if given */ - efuse_attach_drive(&s->soc.pmc.efuse); + efuse_attach_drive(s); =20 /* Plug SD cards */ for (i =3D 0; i < versal_get_num_sdhci(VERSAL_VER_VERSAL); i++) { diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 946c0170674..f8291ac614b 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -33,6 +33,7 @@ #include "hw/dma/xlnx-zdma.h" #include "hw/misc/xlnx-versal-xramc.h" #include "hw/usb/xlnx-usb-subsystem.h" +#include "hw/nvram/xlnx-versal-efuse.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -88,6 +89,12 @@ typedef struct VersalMap { int irq; } usb[2]; size_t num_usb; + + struct VersalEfuseMap { + uint64_t ctrl; + uint64_t cache; + int irq; + } efuse; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { @@ -119,6 +126,8 @@ static const VersalMap VERSAL_MAP =3D { =20 .usb[0] =3D { .xhci =3D 0xfe200000, .ctrl =3D 0xff9d0000, .irq =3D 22 = }, .num_usb =3D 1, + + .efuse =3D { .ctrl =3D 0xf1240000, .cache =3D 0xf1250000, .irq =3D 139= }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { @@ -752,42 +761,41 @@ static void versal_create_bbram(Versal *s, qemu_irq *= pic) qdev_get_gpio_in(DEVICE(&s->pmc.apb_irq_orgate), 1)= ); } =20 -static void versal_realize_efuse_part(Versal *s, Object *dev, hwaddr base) +static void versal_create_efuse(Versal *s, + const struct VersalEfuseMap *map) { - SysBusDevice *part =3D SYS_BUS_DEVICE(dev); + DeviceState *bits; + DeviceState *ctrl; + DeviceState *cache; =20 - object_property_set_link(OBJECT(part), "efuse", - OBJECT(&s->pmc.efuse), &error_abort); + ctrl =3D qdev_new(TYPE_XLNX_VERSAL_EFUSE_CTRL); + cache =3D qdev_new(TYPE_XLNX_VERSAL_EFUSE_CACHE); + bits =3D qdev_new(TYPE_XLNX_EFUSE); =20 - sysbus_realize(part, &error_abort); - memory_region_add_subregion(&s->mr_ps, base, - sysbus_mmio_get_region(part, 0)); -} + qdev_prop_set_uint32(bits, "efuse-nr", 3); + qdev_prop_set_uint32(bits, "efuse-size", 8192); =20 -static void versal_create_efuse(Versal *s, qemu_irq *pic) -{ - Object *bits =3D OBJECT(&s->pmc.efuse); - Object *ctrl =3D OBJECT(&s->pmc.efuse_ctrl); - Object *cache =3D OBJECT(&s->pmc.efuse_cache); + object_property_add_child(OBJECT(s), "efuse", OBJECT(bits)); + qdev_realize_and_unref(bits, NULL, &error_abort); =20 - object_initialize_child(OBJECT(s), "efuse-ctrl", &s->pmc.efuse_ctrl, - TYPE_XLNX_VERSAL_EFUSE_CTRL); + object_property_set_link(OBJECT(ctrl), "efuse", OBJECT(bits), &error_a= bort); =20 - object_initialize_child(OBJECT(s), "efuse-cache", &s->pmc.efuse_cache, - TYPE_XLNX_VERSAL_EFUSE_CACHE); + object_property_set_link(OBJECT(cache), "efuse", OBJECT(bits), + &error_abort); =20 - object_initialize_child_with_props(ctrl, "xlnx-efuse@0", bits, - sizeof(s->pmc.efuse), - TYPE_XLNX_EFUSE, &error_abort, - "efuse-nr", "3", - "efuse-size", "8192", - NULL); + object_property_add_child(OBJECT(s), "efuse-cache", OBJECT(cache)); + sysbus_realize_and_unref(SYS_BUS_DEVICE(cache), &error_abort); =20 - qdev_realize(DEVICE(bits), NULL, &error_abort); - versal_realize_efuse_part(s, ctrl, MM_PMC_EFUSE_CTRL); - versal_realize_efuse_part(s, cache, MM_PMC_EFUSE_CACHE); + object_property_add_child(OBJECT(s), "efuse-ctrl", OBJECT(ctrl)); + sysbus_realize_and_unref(SYS_BUS_DEVICE(ctrl), &error_abort); =20 - sysbus_connect_irq(SYS_BUS_DEVICE(ctrl), 0, pic[VERSAL_EFUSE_IRQ]); + memory_region_add_subregion(&s->mr_ps, map->ctrl, + sysbus_mmio_get_region(SYS_BUS_DEVICE(ctrl= ), + 0)); + memory_region_add_subregion(&s->mr_ps, map->cache, + sysbus_mmio_get_region(SYS_BUS_DEVICE(cach= e), + 0)); + versal_sysbus_connect_irq(s, SYS_BUS_DEVICE(ctrl), 0, map->irq); } =20 static void versal_create_pmc_iou_slcr(Versal *s, qemu_irq *pic) @@ -1257,11 +1265,12 @@ static void versal_realize(DeviceState *dev, Error = **errp) versal_create_usb(s, &map->usb[i]); } =20 + versal_create_efuse(s, &map->efuse); + versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); versal_create_trng(s, pic); versal_create_bbram(s, pic); - versal_create_efuse(s, pic); versal_create_pmc_iou_slcr(s, pic); versal_create_ospi(s, pic); versal_create_crl(s, pic); @@ -1296,6 +1305,19 @@ void versal_sdhci_plug_card(Versal *s, int sd_idx, B= lockBackend *blk) &error_fatal); } =20 +void versal_efuse_attach_drive(Versal *s, BlockBackend *blk) +{ + DeviceState *efuse; + + efuse =3D DEVICE(versal_get_child(s, "efuse")); + + if (efuse =3D=3D NULL) { + return; + } + + qdev_prop_set_drive(efuse, "drive", blk); +} + int versal_get_num_can(VersalVersion version) { const VersalMap *map =3D VERSION_TO_MAP[version]; --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847399; cv=none; d=zohomail.com; s=zohoarc; b=TkvyNwEeaOGdyZwzsKdsXJshzqYCnhzfwG4N9pGWRUnUYrBxZIfPMROUgWkO9KAzeo8ch6yrjXtMSXv3lhlztvo/Ej10ShFegE1sMFTwlb08a80a9mqVeQJw/EFIvhWZ8gwTX3+PfXA7ihbfglgygJR2RSort6rkmzH/Njls0FM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847399; 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=kGK38QachpaMpQCKi7uwYmY0JzTOQzsEO4np/oZh0BY=; b=U5/sCowQ+MlbG5jveUv9QZSNAyfC8KGdy+aJPCUGmRJyx8r2jk5eYMXXPJzwD3bylxjFSG0Fgjf1x7Fqk/Cc7V5qu8opJAC19KcvaA0abcHSMTGdLZCvYiw6mj4O6FDs36k+qE2NxFwgCqOEYRCXpJpd5FTk1WAw8VFFyXvITiQ= 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 1759847399764636.7621151691302; Tue, 7 Oct 2025 07:29:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Q7-0005h6-G5; Tue, 07 Oct 2025 10:12:03 -0400 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 1v68Q4-0005gJ-Jr for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:00 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Pp-00028d-N1 for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:59 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-46e6674caa5so32547195e9.0 for ; Tue, 07 Oct 2025 07:11:41 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846299; x=1760451099; 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=kGK38QachpaMpQCKi7uwYmY0JzTOQzsEO4np/oZh0BY=; b=HKu581YOza02ZOhH9Cun77Q+I0LiID25tTcR0DepQ66YojPpbm8242dVTooj2tuD/0 oyM5mt76uJxsmvGWavgYH8jKR/qHprSpfE2AE2NMFfbD0r1/1aG+ZHz/raVIyVIS40hn yiLgnURReku15IGpS0G6GqS5MfOC4f3CluKBYSiHO3++rxS1HL7IPhA7u7A242/sl0PL M4R+MvDIeXJjChBSgHmLi+uwcgWWzXLA/G+DaXONxGBwEqsGnVlAZYkpyEqpfVuFccf3 nOxBaD5iKg+JhNiX5ryKYXB2YqMx9QBAo0dec+wY8DGNwmY7z5kXhrdjIQKOfivmokjP JLwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846299; x=1760451099; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kGK38QachpaMpQCKi7uwYmY0JzTOQzsEO4np/oZh0BY=; b=OBtYm7kpuHfJEFrX49qe34xH5B5QwIQu7cIANe92jPuqPC848xMZPnUyVYP/H5K9hP mcGMd6tkny1e5TmGi6i+yqF5Ft/72ZLgJvBD1bkyHUxXFexrulc5R6j6hb6xAfwa0+dy IxVxsJB2JQoIl6hRcqFn6SqymcNfAhTwavtJJCjbCrW+RQw9PvMa627Fjq1lTlB/S5AU 7Ib33o5WYSccnMNWQcjZg0DY0hVtIBI4cwoUWuuEfYHbonfCfk6kaS8AblOq35XhsEJf l604fTbEN0aXmG17IZojv1xw1/dEEA/CnQlY4iiKJGidxQ9Nqsf7iVjssgk9k83YBpNE WEiw== X-Gm-Message-State: AOJu0Yx/url8D434QATYpTjh4qqUuEmRjLkvV+xNZHwgXNuqEE/FkzAq 6ffnodxbOn5slZh7KLYAxPAHyyhm0Lkctm0bYVBPnLh1RrVQvP/m6Y20Fgh9YGirus3TLLlTQsX +BsOK X-Gm-Gg: ASbGncvcwyuJGx35JcX3yhpKZxtXH/7uLvQJrMHocqSuSEtlev/RpAPI6t3gL33/4sb x/TjTgW2km94L9mQ9o/sNgPzc2SkoThjSk7aAdQ5lnVL3hCzlV96JfN53KC3hHAAZhCtcjoxv7D 1LORFfxJf2Ytk6fyuXwdpyR0IvsdN/oFK+8Bw5wYjYToYT/BaZI1rlM20W7NPF9B/EHpEuswAH4 d5+0OdjuSNxlm34b7ZGm8+iIVjZyjX2lki0ub5pt1ZsijJZgwHk2YLCZzVVCp7ScuKDyLACypg8 FCQ3uFlO8ERmrYaxYTjlP5sTzcbE3PZAHlaFfTfNdfWAY2ggnfTzez7PiMHT7xWU5pKVJVzUYX3 6IHe/nbkL+GT/5K4/8a+aeWxFrJ2+jpPdwdYaxRfxqfXgCqQvqkJikjuh X-Google-Smtp-Source: AGHT+IFdp9FimP8y1nqf4uTPgqngBS5xcPQyQe4H0ou4Css/GOkb+hd0/b9b5pXwLO+2LeTGaFBKPg== X-Received: by 2002:a05:600c:1c02:b0:46e:37d5:dbed with SMTP id 5b1f17b1804b1-46fa2d2164dmr26148135e9.12.1759846298776; Tue, 07 Oct 2025 07:11:38 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 12/62] hw/arm/xlnx-versal: ospi: refactor creation Date: Tue, 7 Oct 2025 15:10:32 +0100 Message-ID: <20251007141123.3239867-13-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::330; envelope-from=peter.maydell@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: 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: 1759847406912116600 From: Luc Michel Refactor the OSPI controller creation using the VersalMap structure. Note that the connection to the PMC IOU SLCR is removed for now and will be re-added by next commits. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-12-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 12 +-- hw/arm/xlnx-versal-virt.c | 41 ++++------ hw/arm/xlnx-versal.c | 142 ++++++++++++++++++++--------------- 3 files changed, 98 insertions(+), 97 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 79ca9b13321..b7ef255d6fd 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -20,8 +20,6 @@ #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" #include "hw/nvram/xlnx-bbram.h" -#include "hw/ssi/xlnx-versal-ospi.h" -#include "hw/dma/xlnx_csu_dma.h" #include "hw/misc/xlnx-versal-crl.h" #include "hw/misc/xlnx-versal-pmc-iou-slcr.h" #include "hw/misc/xlnx-versal-trng.h" @@ -88,14 +86,6 @@ struct Versal { struct { struct { XlnxVersalPmcIouSlcr slcr; - - struct { - XlnxVersalOspi ospi; - XlnxCSUDMA dma_src; - XlnxCSUDMA dma_dst; - MemoryRegion linear_mr; - OrIRQState irq_orgate; - } ospi; } iou; =20 XlnxZynqMPRTC rtc; @@ -136,6 +126,8 @@ static inline void versal_set_fdt(Versal *s, void *fdt) =20 void versal_sdhci_plug_card(Versal *s, int sd_idx, BlockBackend *blk); void versal_efuse_attach_drive(Versal *s, BlockBackend *blk); +void versal_ospi_create_flash(Versal *s, int flash_idx, const char *flash_= mdl, + BlockBackend *blk); =20 int versal_get_num_can(VersalVersion version); int versal_get_num_sdhci(VersalVersion version); diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index b6c49dafe09..a948e24aea0 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -48,8 +48,8 @@ struct VersalVirt { =20 struct { bool secure; + char *ospi_model; } cfg; - char *ospi_model; }; =20 static void fdt_create(VersalVirt *s) @@ -381,15 +381,15 @@ static char *versal_get_ospi_model(Object *obj, Error= **errp) { VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(obj); =20 - return g_strdup(s->ospi_model); + return g_strdup(s->cfg.ospi_model); } =20 static void versal_set_ospi_model(Object *obj, const char *value, Error **= errp) { VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(obj); =20 - g_free(s->ospi_model); - s->ospi_model =3D g_strdup(value); + g_free(s->cfg.ospi_model); + s->cfg.ospi_model =3D g_strdup(value); } =20 =20 @@ -482,38 +482,27 @@ static void versal_virt_init(MachineState *machine) arm_load_kernel(&s->soc.fpd.apu.cpu[0], machine, &s->binfo); =20 for (i =3D 0; i < XLNX_VERSAL_NUM_OSPI_FLASH; i++) { - BusState *spi_bus; - DeviceState *flash_dev; ObjectClass *flash_klass; - qemu_irq cs_line; DriveInfo *dinfo =3D drive_get(IF_MTD, 0, i); + BlockBackend *blk; + const char *mdl; =20 - spi_bus =3D qdev_get_child_bus(DEVICE(&s->soc.pmc.iou.ospi), "spi0= "); - - if (s->ospi_model) { - flash_klass =3D object_class_by_name(s->ospi_model); + if (s->cfg.ospi_model) { + flash_klass =3D object_class_by_name(s->cfg.ospi_model); if (!flash_klass || object_class_is_abstract(flash_klass) || !object_class_dynamic_cast(flash_klass, TYPE_M25P80)) { error_report("'%s' is either abstract or" - " not a subtype of m25p80", s->ospi_model); + " not a subtype of m25p80", s->cfg.ospi_model); exit(1); } + mdl =3D s->cfg.ospi_model; + } else { + mdl =3D "mt35xu01g"; } =20 - flash_dev =3D qdev_new(s->ospi_model ? s->ospi_model : "mt35xu01g"= ); - - if (dinfo) { - qdev_prop_set_drive_err(flash_dev, "drive", - blk_by_legacy_dinfo(dinfo), &error_fat= al); - } - qdev_prop_set_uint8(flash_dev, "cs", i); - qdev_realize_and_unref(flash_dev, spi_bus, &error_fatal); - - cs_line =3D qdev_get_gpio_in_named(flash_dev, SSI_GPIO_CS, 0); - - sysbus_connect_irq(SYS_BUS_DEVICE(&s->soc.pmc.iou.ospi), - i + 1, cs_line); + blk =3D dinfo ? blk_by_legacy_dinfo(dinfo) : NULL; + versal_ospi_create_flash(&s->soc, i, mdl, blk); } } =20 @@ -542,7 +531,7 @@ static void versal_virt_machine_finalize(Object *obj) { VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(obj); =20 - g_free(s->ospi_model); + g_free(s->cfg.ospi_model); g_free(s->canbus); } =20 diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index f8291ac614b..964250bf151 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -34,6 +34,7 @@ #include "hw/misc/xlnx-versal-xramc.h" #include "hw/usb/xlnx-usb-subsystem.h" #include "hw/nvram/xlnx-versal-efuse.h" +#include "hw/ssi/xlnx-versal-ospi.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -95,6 +96,15 @@ typedef struct VersalMap { uint64_t cache; int irq; } efuse; + + struct VersalOspiMap { + uint64_t ctrl; + uint64_t dac; + uint64_t dac_sz; + uint64_t dma_src; + uint64_t dma_dst; + int irq; + } ospi; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { @@ -128,6 +138,13 @@ static const VersalMap VERSAL_MAP =3D { .num_usb =3D 1, =20 .efuse =3D { .ctrl =3D 0xf1240000, .cache =3D 0xf1250000, .irq =3D 139= }, + + .ospi =3D { + .ctrl =3D 0xf1010000, + .dac =3D 0xc0000000, .dac_sz =3D 0x20000000, + .dma_src =3D 0xf1011000, .dma_dst =3D 0xf1011800, + .irq =3D 124, + }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { @@ -815,95 +832,74 @@ static void versal_create_pmc_iou_slcr(Versal *s, qem= u_irq *pic) qdev_get_gpio_in(DEVICE(&s->pmc.apb_irq_orgate), 2)= ); } =20 -static void versal_create_ospi(Versal *s, qemu_irq *pic) +static DeviceState *versal_create_ospi(Versal *s, + const struct VersalOspiMap *map) { SysBusDevice *sbd; MemoryRegion *mr_dac; - qemu_irq ospi_mux_sel; - DeviceState *orgate; + DeviceState *dev, *dma_dst, *dma_src, *orgate; + MemoryRegion *linear_mr =3D g_new(MemoryRegion, 1); =20 - memory_region_init(&s->pmc.iou.ospi.linear_mr, OBJECT(s), - "versal-ospi-linear-mr" , MM_PMC_OSPI_DAC_SIZE); + dev =3D qdev_new(TYPE_XILINX_VERSAL_OSPI); + object_property_add_child(OBJECT(s), "ospi", OBJECT(dev)); =20 - object_initialize_child(OBJECT(s), "versal-ospi", &s->pmc.iou.ospi.osp= i, - TYPE_XILINX_VERSAL_OSPI); + memory_region_init(linear_mr, OBJECT(dev), "linear-mr", map->dac_sz); =20 - mr_dac =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->pmc.iou.ospi.ospi= ), 1); - memory_region_add_subregion(&s->pmc.iou.ospi.linear_mr, 0x0, mr_dac); + mr_dac =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 1); + memory_region_add_subregion(linear_mr, 0x0, mr_dac); =20 /* Create the OSPI destination DMA */ - object_initialize_child(OBJECT(s), "versal-ospi-dma-dst", - &s->pmc.iou.ospi.dma_dst, - TYPE_XLNX_CSU_DMA); + dma_dst =3D qdev_new(TYPE_XLNX_CSU_DMA); + object_property_add_child(OBJECT(dev), "dma-dst-dev", OBJECT(dma_dst)); + object_property_set_link(OBJECT(dma_dst), "dma", + OBJECT(get_system_memory()), &error_abort); =20 - object_property_set_link(OBJECT(&s->pmc.iou.ospi.dma_dst), - "dma", OBJECT(get_system_memory()), - &error_abort); + sbd =3D SYS_BUS_DEVICE(dma_dst); + sysbus_realize_and_unref(sbd, &error_fatal); =20 - sbd =3D SYS_BUS_DEVICE(&s->pmc.iou.ospi.dma_dst); - sysbus_realize(sbd, &error_fatal); - - memory_region_add_subregion(&s->mr_ps, MM_PMC_OSPI_DMA_DST, + memory_region_add_subregion(&s->mr_ps, map->dma_dst, sysbus_mmio_get_region(sbd, 0)); =20 /* Create the OSPI source DMA */ - object_initialize_child(OBJECT(s), "versal-ospi-dma-src", - &s->pmc.iou.ospi.dma_src, - TYPE_XLNX_CSU_DMA); + dma_src =3D qdev_new(TYPE_XLNX_CSU_DMA); + object_property_add_child(OBJECT(dev), "dma-src-dev", OBJECT(dma_src)); =20 - object_property_set_bool(OBJECT(&s->pmc.iou.ospi.dma_src), "is-dst", - false, &error_abort); + object_property_set_bool(OBJECT(dma_src), "is-dst", false, &error_abor= t); =20 - object_property_set_link(OBJECT(&s->pmc.iou.ospi.dma_src), - "dma", OBJECT(mr_dac), &error_abort); - - object_property_set_link(OBJECT(&s->pmc.iou.ospi.dma_src), - "stream-connected-dma", - OBJECT(&s->pmc.iou.ospi.dma_dst), + object_property_set_link(OBJECT(dma_src), "dma", OBJECT(mr_dac), &error_abort); =20 - sbd =3D SYS_BUS_DEVICE(&s->pmc.iou.ospi.dma_src); - sysbus_realize(sbd, &error_fatal); + object_property_set_link(OBJECT(dma_src), "stream-connected-dma", + OBJECT(dma_dst), &error_abort); =20 - memory_region_add_subregion(&s->mr_ps, MM_PMC_OSPI_DMA_SRC, + sbd =3D SYS_BUS_DEVICE(dma_src); + sysbus_realize_and_unref(sbd, &error_fatal); + + memory_region_add_subregion(&s->mr_ps, map->dma_src, sysbus_mmio_get_region(sbd, 0)); =20 /* Realize the OSPI */ - object_property_set_link(OBJECT(&s->pmc.iou.ospi.ospi), "dma-src", - OBJECT(&s->pmc.iou.ospi.dma_src), &error_abor= t); + object_property_set_link(OBJECT(dev), "dma-src", + OBJECT(dma_src), &error_abort); =20 - sbd =3D SYS_BUS_DEVICE(&s->pmc.iou.ospi.ospi); - sysbus_realize(sbd, &error_fatal); + sbd =3D SYS_BUS_DEVICE(dev); + sysbus_realize_and_unref(sbd, &error_fatal); =20 - memory_region_add_subregion(&s->mr_ps, MM_PMC_OSPI, + memory_region_add_subregion(&s->mr_ps, map->ctrl, sysbus_mmio_get_region(sbd, 0)); =20 - memory_region_add_subregion(&s->mr_ps, MM_PMC_OSPI_DAC, - &s->pmc.iou.ospi.linear_mr); - - /* ospi_mux_sel */ - ospi_mux_sel =3D qdev_get_gpio_in_named(DEVICE(&s->pmc.iou.ospi.ospi), - "ospi-mux-sel", 0); - qdev_connect_gpio_out_named(DEVICE(&s->pmc.iou.slcr), "ospi-mux-sel", = 0, - ospi_mux_sel); + memory_region_add_subregion(&s->mr_ps, map->dac, + linear_mr); =20 /* OSPI irq */ - object_initialize_child(OBJECT(s), "ospi-irq-orgate", - &s->pmc.iou.ospi.irq_orgate, TYPE_OR_IRQ); - object_property_set_int(OBJECT(&s->pmc.iou.ospi.irq_orgate), - "num-lines", NUM_OSPI_IRQ_LINES, &error_fatal); + orgate =3D create_or_gate(s, OBJECT(dev), "irq-orgate", NUM_OSPI_IRQ_L= INES, + map->irq); =20 - orgate =3D DEVICE(&s->pmc.iou.ospi.irq_orgate); - qdev_realize(orgate, NULL, &error_fatal); + sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(orgate, 0)= ); + sysbus_connect_irq(SYS_BUS_DEVICE(dma_src), 0, qdev_get_gpio_in(orgate= , 1)); + sysbus_connect_irq(SYS_BUS_DEVICE(dma_dst), 0, qdev_get_gpio_in(orgate= , 2)); =20 - sysbus_connect_irq(SYS_BUS_DEVICE(&s->pmc.iou.ospi.ospi), 0, - qdev_get_gpio_in(orgate, 0)); - sysbus_connect_irq(SYS_BUS_DEVICE(&s->pmc.iou.ospi.dma_src), 0, - qdev_get_gpio_in(orgate, 1)); - sysbus_connect_irq(SYS_BUS_DEVICE(&s->pmc.iou.ospi.dma_dst), 0, - qdev_get_gpio_in(orgate, 2)); - - qdev_connect_gpio_out(orgate, 0, pic[VERSAL_OSPI_IRQ]); + return dev; } =20 static void versal_create_cfu(Versal *s, qemu_irq *pic) @@ -1266,13 +1262,13 @@ static void versal_realize(DeviceState *dev, Error = **errp) } =20 versal_create_efuse(s, &map->efuse); + versal_create_ospi(s, &map->ospi); =20 versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); versal_create_trng(s, pic); versal_create_bbram(s, pic); versal_create_pmc_iou_slcr(s, pic); - versal_create_ospi(s, pic); versal_create_crl(s, pic); versal_create_cfu(s, pic); versal_map_ddr(s); @@ -1318,6 +1314,30 @@ void versal_efuse_attach_drive(Versal *s, BlockBacke= nd *blk) qdev_prop_set_drive(efuse, "drive", blk); } =20 +void versal_ospi_create_flash(Versal *s, int flash_idx, const char *flash_= mdl, + BlockBackend *blk) +{ + BusState *spi_bus; + DeviceState *flash, *ospi; + qemu_irq cs_line; + + ospi =3D DEVICE(versal_get_child(s, "ospi")); + spi_bus =3D qdev_get_child_bus(ospi, "spi0"); + + flash =3D qdev_new(flash_mdl); + + if (blk) { + qdev_prop_set_drive_err(flash, "drive", blk, &error_fatal); + } + qdev_prop_set_uint8(flash, "cs", flash_idx); + qdev_realize_and_unref(flash, spi_bus, &error_fatal); + + cs_line =3D qdev_get_gpio_in_named(flash, SSI_GPIO_CS, 0); + + sysbus_connect_irq(SYS_BUS_DEVICE(ospi), + flash_idx + 1, cs_line); +} + int versal_get_num_can(VersalVersion version) { const VersalMap *map =3D VERSION_TO_MAP[version]; --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846631; cv=none; d=zohomail.com; s=zohoarc; b=FfA8/moBILHnQTuo7+lzopOvAy6qabbQpwM8EOsRALh3ldnaoYP8AVFaBdbPzKM3zVcDfOtQToJgr5RlC9obJ7BsL57RvgMDxiWyU7wepoY3A/luBvgacyDxgSro8nxJ4105Uh/AtgHl93nXP0t55J054F4KHSOGUK/re8vrwxc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846631; 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=9O/hfrpW4QDwWWLEbTcsULJfyn/JGHUsRKFKhzij6oc=; b=HfYLLyv3A3nxP7G5oIE2YxDjioo6wy07rnO/HBYMU/M4748EY3hV2WIo0p6mdy4gL2kHDFiZJXj6gBHxgO+v3ZFX7EUALti1Yl9pWFQyEnYoR+kB2rI5x0et8qhonsOUuW5yF7ca7h5f9KzV4hiAK5ReyEaZV/Ft5q1UhBi9e1E= 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 1759846631652669.1709401956074; Tue, 7 Oct 2025 07:17:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Q6-0005gp-3B; Tue, 07 Oct 2025 10:12:02 -0400 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 1v68Q3-0005fx-C7 for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:59 -0400 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 1v68Pp-00028s-GI for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:59 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-46f53f88e0bso18535425e9.1 for ; Tue, 07 Oct 2025 07:11:42 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846300; x=1760451100; 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=9O/hfrpW4QDwWWLEbTcsULJfyn/JGHUsRKFKhzij6oc=; b=f3zZAKbjSQnd/eAE+yWLwRT60K0tXNyQBey/6dZIaSKWOnCsA4YJcwqS3RGpb7Ukhd a7TX9SAaIRKI3kdcE1gJb8rv4JjEIdM9sN4KZnHkrzW62x6mcSaa11yCIdfnZFiMWIZw mLb6pWgoYVDVmRCHhEFzPyaOig4mmokT7LzdHkNAp4yLJwp1VdusBKH0CrwlaNAZ5+uj OsiTjHbjV2tQqXPqclWg4ml4dvRmfGnD4CQZQUyCvFesTZu22s6G1UPVZSi4WetmZcpm 5Zv0Dzvy0rCNHYEMNQu+j6AUzPdpHtmXqRJNp34yEs2JUVywY6z5PaM+4iZmp412nMSy JtIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846300; x=1760451100; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9O/hfrpW4QDwWWLEbTcsULJfyn/JGHUsRKFKhzij6oc=; b=FKlplfFUhQFSMuC3RHu188VSm0UvKRyhpJlwNqsdzLFbMk/rZKEnep7ek87AOKdE81 kNkBWAXVeOp1YYdKTsmXWI6nkEGUhVLoChU3oylVv12jwNTQhcZPgwPMl1T45VHstaju urZ4e0ZysUj5Oac+SvmDsBdsqIOBXRETIqBsC1n6sEVxzX/PHRAQd40rqNouIQQQsuB6 eH00PM91jWYdblC54rs3H3XiU2R0/ilggBXVmNy2LufKSpxouRztWsmCVo2jTJpc0z/k xIh5M2Ce8wn8lKueAVWIeHYirsmEvBBTHNiXJFkVnQBoiHPgxP0cpgsZkh8ThGzEbX9j Md+A== X-Gm-Message-State: AOJu0YzFGK6411PzkZYqg476OEMVHt+kRojOuv4ZwhCH06trmc1jECbY vYof809gu1RwJN/04sxcQ0d3fmeNA+2NwSsWuGm2Wisw0WPw7PmYxwlfXiNyjiJOnMvc9NzD8ev TpRQA X-Gm-Gg: ASbGnctfw1WMZkbQdFwZqERgnFMpYqJnLkTP9fxH6FFeQkYwCFQj+6z9UeZDqFEB+ez /THO2Gwq4cDs93sR5rF+4heGQ4OAgnGwXKxNilM8hbuoN6K9hIwMqylowPQaLoGJXK1mk/zEbhI YGfaetnzGwlQmOf1AlRso2vbGpSe/XY8ea/bGT52menVwRxG3PGooGQC+JXU4Xh4l4Dj7QEXjX4 cwF9ZulRdydXYyDvyRvMQog0ki37jYKPFH56ZlKdgz+i/WYPGbLj/0S7EuaoI8XZo8jDY2S35QR +zHagTUPOUu4tx9puesMLX4lqr1Bdwv/xig9gwRqwh3ZAs353Z/WJaAIZrGP/Mjw6UdYHvnAjBB K4uYDPsV7DJECcn4XjZv2fUI26pNkq5As/RsvqBfD6dkcaUmfW5T78TJP X-Google-Smtp-Source: AGHT+IGHEQ8TCf3Xm7HVwDxMnXvQGVvghYzznZjpggAnwnO43HlpUw/7AO1yQ9koJ0SZSkyDPPAd5w== X-Received: by 2002:a05:600c:4f93:b0:46e:5cb5:20df with SMTP id 5b1f17b1804b1-46e7110f0famr153759155e9.16.1759846299827; Tue, 07 Oct 2025 07:11:39 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 13/62] hw/arm/xlnx-versal: VersalMap: add support for OR'ed IRQs Date: Tue, 7 Oct 2025 15:10:33 +0100 Message-ID: <20251007141123.3239867-14-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::32c; envelope-from=peter.maydell@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: 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: 1759846633852154100 From: Luc Michel Improve the IRQ index in the VersalMap structure to turn it into a descriptor: - the lower 16 bits still represent the IRQ index - bit 18 is used to indicate a shared IRQ connected to a OR gate - bits 19 to 22 indicate the index on the OR gate. This allows to share an IRQ among multiple devices. An OR gate is created to connect the devices to the actual IRQ pin. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-13-luc.michel@amd.com Signed-off-by: Peter Maydell --- hw/arm/xlnx-versal.c | 63 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 964250bf151..d3a084a0639 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -43,6 +43,17 @@ #define VERSAL_NUM_PMC_APB_IRQS 18 #define NUM_OSPI_IRQ_LINES 3 =20 +/* + * IRQ descriptor to catch the following cases: + * - Multiple devices can connect to the same IRQ. They are OR'ed togeth= er. + */ +FIELD(VERSAL_IRQ, IRQ, 0, 16) +FIELD(VERSAL_IRQ, ORED, 18, 1) +FIELD(VERSAL_IRQ, OR_IDX, 19, 4) /* input index on the IRQ OR gate */ + +#define OR_IRQ(irq, or_idx) \ + (R_VERSAL_IRQ_ORED_MASK | ((or_idx) << R_VERSAL_IRQ_OR_IDX_SHIFT) | (i= rq)) + typedef struct VersalSimplePeriphMap { uint64_t addr; int irq; @@ -174,9 +185,53 @@ static inline Object *versal_get_child_idx(Versal *s, = const char *child, return versal_get_child(s, n); } =20 +/* + * When the R_VERSAL_IRQ_ORED flag is set on an IRQ descriptor, this funct= ion is + * used to return the corresponding or gate input IRQ. The or gate is crea= ted if + * not already existant. + * + * Or gates are placed under the /soc/irq-or-gates QOM container. + */ +static qemu_irq versal_get_irq_or_gate_in(Versal *s, int irq_idx, + qemu_irq target_irq) +{ + Object *container =3D versal_get_child(s, "irq-or-gates"); + DeviceState *dev; + g_autofree char *name; + int idx, or_idx; + + idx =3D FIELD_EX32(irq_idx, VERSAL_IRQ, IRQ); + or_idx =3D FIELD_EX32(irq_idx, VERSAL_IRQ, OR_IDX); + + name =3D g_strdup_printf("irq[%d]", idx); + dev =3D DEVICE(object_resolve_path_at(container, name)); + + if (dev =3D=3D NULL) { + dev =3D qdev_new(TYPE_OR_IRQ); + object_property_add_child(container, name, OBJECT(dev)); + qdev_prop_set_uint16(dev, "num-lines", 1 << R_VERSAL_IRQ_OR_IDX_LE= NGTH); + qdev_realize_and_unref(dev, NULL, &error_abort); + qdev_connect_gpio_out(dev, 0, target_irq); + } + + return qdev_get_gpio_in(dev, or_idx); +} + static qemu_irq versal_get_irq(Versal *s, int irq_idx) { - return qdev_get_gpio_in(DEVICE(&s->fpd.apu.gic), irq_idx); + qemu_irq irq; + bool ored; + + ored =3D FIELD_EX32(irq_idx, VERSAL_IRQ, ORED); + + irq =3D qdev_get_gpio_in(DEVICE(&s->fpd.apu.gic), + FIELD_EX32(irq_idx, VERSAL_IRQ, IRQ)); + + if (ored) { + irq =3D versal_get_irq_or_gate_in(s, irq_idx, irq); + } + + return irq; } =20 static void versal_sysbus_connect_irq(Versal *s, SysBusDevice *sbd, @@ -1217,6 +1272,7 @@ static void versal_realize(DeviceState *dev, Error **= errp) { Versal *s =3D XLNX_VERSAL_BASE(dev); qemu_irq pic[XLNX_VERSAL_NR_IRQS]; + Object *container; const VersalMap *map =3D versal_get_map(s); size_t i; =20 @@ -1227,6 +1283,11 @@ static void versal_realize(DeviceState *dev, Error *= *errp) =20 versal_create_apu_cpus(s); versal_create_apu_gic(s, pic); + + container =3D object_new(TYPE_CONTAINER); + object_property_add_child(OBJECT(s), "irq-or-gates", container); + object_unref(container); + versal_create_rpu_cpus(s); =20 for (i =3D 0; i < map->num_uart; i++) { --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847037; cv=none; d=zohomail.com; s=zohoarc; b=dl8hMM3mEgREFD9yM9TSrWCgoKIuTyBYoiTdeNEf24PsqAr3A4hmeocCd0yIVZSM9GZ1M3x0xWY/RL1AzJarfUlUQpIA4I+OB5oyB8IU1BKE17fl7W8QOrJRzXR5IrSAq9jcsNHDK3/gi5IbF54TqlVZY4Lfc1BMQQoarebH8c0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847037; 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=XvGfX+mVa3O6gDu3cmy3CeWTMPWFcZ3+R6tHUaiLbSs=; b=BldJlP+6nSmesfBAfZyNjYzyiVUAcmaDRocGsEzASIMKmJZ5sR0nLKpoCElqfFT8/Koq7lKtPYer8k8SiALIpdFpdi1+c7IT1h5quOkrNLMqLFdPaf7k61/MJtAqnuQRqqnQ8JeMWtHQpRzqoPCqLeIsimtnDxK5Oky8z7062JA= 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 1759847037969138.56064175049505; Tue, 7 Oct 2025 07:23:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Q4-0005gI-Q8; Tue, 07 Oct 2025 10:12:00 -0400 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 1v68Q2-0005fJ-JW for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:58 -0400 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 1v68Po-000293-SP for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:11:57 -0400 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-46e47cca387so66612265e9.3 for ; Tue, 07 Oct 2025 07:11:42 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846301; x=1760451101; 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=XvGfX+mVa3O6gDu3cmy3CeWTMPWFcZ3+R6tHUaiLbSs=; b=z1Je3k3dprtteKgvzqiloh8z9AAgRmjCRKmyS2lFB++mzuedvrzocFYPAuU6ZLaGbH mJplGTJVuvu/W8WdUZKkFa6mWnkIlsgrkE3ydYl6dqWlBK9j6676CztJ4h3z1w5XdNSn NoHxULagEjZ2jOk/GzxHmsvZllw8UNScfstwOe8qKLAyZnElhGCD4bxd8Ho9pJv4SAmS akfQnyrmhWCuAycAGoe0Am6cpY1gBkYxg6N/IrjUUI6cVu0+W5FHyfo383+mTBXwhWKM fspGD7wBcwQGbm7V4M+CAlHIUstYQv6+qM8Nzkts2q0L2ArA5nWOymGSdmr5LCaTG7S3 Nd0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846301; x=1760451101; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XvGfX+mVa3O6gDu3cmy3CeWTMPWFcZ3+R6tHUaiLbSs=; b=OwGA820ITAzMPoUj4R3xzbHe21GccGZ4RHkFjbKxfDR4bMvwKWK91FsSdMSALUimeE ePAasKtJCPUZPuV12ZaoAB76rdIpzfMcHfIOO3FdFM0OKfCTiEYNV058kXw6TvH1Jsej mvcg6/NuBq1izd+RsWhal244ueeYJS1ZJH1WkUE0UGsdxMpwIjnJk9t4m4fKde7upv+S J8Tfloa47/36Zmc1sZGU2tTdBxm2fS1vl5Dw547UpbkLZObbMWH4cOGfu6tSyHzEfprM Xji2YHGyEpWIEhd2xYFYDS79UKRz3YMNgqwy0jM8TNvPeueFeRLQL56pDUz8ervjlVp8 B/ow== X-Gm-Message-State: AOJu0Yw4eKEjIrt4L9BlZbnzVu9w54FQl4mzoDFdpZEMAwa0kjDbO2Hs z/1+m6ELPUcAzfnEjGmNofagQgAZiq1VqMTkqfC2zMM4YA3uMbo8FSyoWkfJSHuZZ8lFpiF+Mwk c6juh X-Gm-Gg: ASbGnctZroEk7f9xTXgCtjIMFhBQoSSZXGNw8NOO42Vq9LJGmfvBvRSKspri6MVSwV8 uvK31m2S0xxplqPGrLUxu+rsxmk/X/yG1Y2/IndXRMTC/G0jcwtFe0hs+4BFndeuUXuN5Dmvo7P 7XSktfWgZyNfmkyO1z6PKXu5kCWjS1bU3EGuA31bohO/vfSX5v1cKdH7Tx+m6LepmxF+H0NbKKg xYOH12bJ2bTFmgu6VK+9nRdb24L2cHOLZdlNDDJhMjQv8oxjYNPAHbKkAcWXnib2uITpv6SDqMl v4BD5PTiuDCtVnBCLG3FdJTP+1ZnnXnn0J7DuFyMA3nOuaEncoDv9I2g2hquFbSZw/0iSk5QTew Rygb7RerL2Q2Z98j23VdVoiu0HNR9nxRzVYYffOR7NjpiEqkXTERbEgWB+jPLZNJKTlI= X-Google-Smtp-Source: AGHT+IF7orwAreTm0DMqDK3XDnHBrSE5BJntiZF7qxuwCpI5z3oEE4WYZT0WFi4jpV15h0N8NbbOrA== X-Received: by 2002:a05:600c:8b6e:b0:46e:4499:ba30 with SMTP id 5b1f17b1804b1-46e71153ad0mr129421265e9.30.1759846300838; Tue, 07 Oct 2025 07:11:40 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 14/62] hw/arm/xlnx-versal: PMC IOU SCLR: refactor creation Date: Tue, 7 Oct 2025 15:10:34 +0100 Message-ID: <20251007141123.3239867-15-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::334; envelope-from=peter.maydell@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: 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: 1759847045303116600 From: Luc Michel Refactor the PMC IOU SLCR device creation using the VersalMap structure. This is the first user of a shared IRQ using an OR gate. The OSPI controller is reconnected to the SLCR. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-14-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 5 ---- hw/arm/xlnx-versal.c | 48 +++++++++++++++++++++--------------- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index b7ef255d6fd..78442e6c2c5 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -21,7 +21,6 @@ #include "qom/object.h" #include "hw/nvram/xlnx-bbram.h" #include "hw/misc/xlnx-versal-crl.h" -#include "hw/misc/xlnx-versal-pmc-iou-slcr.h" #include "hw/misc/xlnx-versal-trng.h" #include "net/can_emu.h" #include "hw/misc/xlnx-versal-cfu.h" @@ -84,10 +83,6 @@ struct Versal { =20 /* The Platform Management Controller subsystem. */ struct { - struct { - XlnxVersalPmcIouSlcr slcr; - } iou; - XlnxZynqMPRTC rtc; XlnxVersalTRng trng; XlnxBBRam bbram; diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index d3a084a0639..e71c774e72e 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -35,6 +35,7 @@ #include "hw/usb/xlnx-usb-subsystem.h" #include "hw/nvram/xlnx-versal-efuse.h" #include "hw/ssi/xlnx-versal-ospi.h" +#include "hw/misc/xlnx-versal-pmc-iou-slcr.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -116,6 +117,8 @@ typedef struct VersalMap { uint64_t dma_dst; int irq; } ospi; + + VersalSimplePeriphMap pmc_iou_slcr; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { @@ -156,6 +159,8 @@ static const VersalMap VERSAL_MAP =3D { .dma_src =3D 0xf1011000, .dma_dst =3D 0xf1011800, .irq =3D 124, }, + + .pmc_iou_slcr =3D { 0xf1060000, OR_IRQ(121, 0) }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { @@ -870,21 +875,24 @@ static void versal_create_efuse(Versal *s, versal_sysbus_connect_irq(s, SYS_BUS_DEVICE(ctrl), 0, map->irq); } =20 -static void versal_create_pmc_iou_slcr(Versal *s, qemu_irq *pic) +static DeviceState *versal_create_pmc_iou_slcr(Versal *s, + const VersalSimplePeriphMap= *map) { SysBusDevice *sbd; + DeviceState *dev; =20 - object_initialize_child(OBJECT(s), "versal-pmc-iou-slcr", &s->pmc.iou.= slcr, - TYPE_XILINX_VERSAL_PMC_IOU_SLCR); + dev =3D qdev_new(TYPE_XILINX_VERSAL_PMC_IOU_SLCR); + object_property_add_child(OBJECT(s), "pmc-iou-slcr", OBJECT(dev)); =20 - sbd =3D SYS_BUS_DEVICE(&s->pmc.iou.slcr); - sysbus_realize(sbd, &error_fatal); + sbd =3D SYS_BUS_DEVICE(dev); + sysbus_realize_and_unref(sbd, &error_fatal); =20 - memory_region_add_subregion(&s->mr_ps, MM_PMC_PMC_IOU_SLCR, + memory_region_add_subregion(&s->mr_ps, map->addr, sysbus_mmio_get_region(sbd, 0)); =20 - sysbus_connect_irq(sbd, 0, - qdev_get_gpio_in(DEVICE(&s->pmc.apb_irq_orgate), 2)= ); + versal_sysbus_connect_irq(s, sbd, 0, map->irq); + + return dev; } =20 static DeviceState *versal_create_ospi(Versal *s, @@ -1210,6 +1218,7 @@ static void versal_unimp_irq_parity_imr(void *opaque,= int n, int level) =20 static void versal_unimp(Versal *s) { + DeviceState *slcr; qemu_irq gpio_in; =20 versal_unimp_area(s, "psm", &s->mr_ps, @@ -1232,23 +1241,18 @@ static void versal_unimp(Versal *s) qdev_init_gpio_in_named(DEVICE(s), versal_unimp_irq_parity_imr, "irq-parity-imr-dummy", 1); =20 + slcr =3D DEVICE(versal_get_child(s, "pmc-iou-slcr")); gpio_in =3D qdev_get_gpio_in_named(DEVICE(s), "sd-emmc-sel-dummy", 0); - qdev_connect_gpio_out_named(DEVICE(&s->pmc.iou.slcr), "sd-emmc-sel", 0, - gpio_in); + qdev_connect_gpio_out_named(slcr, "sd-emmc-sel", 0, gpio_in); =20 gpio_in =3D qdev_get_gpio_in_named(DEVICE(s), "sd-emmc-sel-dummy", 1); - qdev_connect_gpio_out_named(DEVICE(&s->pmc.iou.slcr), "sd-emmc-sel", 1, - gpio_in); + qdev_connect_gpio_out_named(slcr, "sd-emmc-sel", 1, gpio_in); =20 gpio_in =3D qdev_get_gpio_in_named(DEVICE(s), "qspi-ospi-mux-sel-dummy= ", 0); - qdev_connect_gpio_out_named(DEVICE(&s->pmc.iou.slcr), - "qspi-ospi-mux-sel", 0, - gpio_in); + qdev_connect_gpio_out_named(slcr, "qspi-ospi-mux-sel", 0, gpio_in); =20 gpio_in =3D qdev_get_gpio_in_named(DEVICE(s), "irq-parity-imr-dummy", = 0); - qdev_connect_gpio_out_named(DEVICE(&s->pmc.iou.slcr), - SYSBUS_DEVICE_GPIO_IRQ, 0, - gpio_in); + qdev_connect_gpio_out_named(slcr, SYSBUS_DEVICE_GPIO_IRQ, 0, gpio_in); } =20 static uint32_t fdt_add_clk_node(Versal *s, const char *name, @@ -1271,6 +1275,7 @@ static uint32_t fdt_add_clk_node(Versal *s, const cha= r *name, static void versal_realize(DeviceState *dev, Error **errp) { Versal *s =3D XLNX_VERSAL_BASE(dev); + DeviceState *slcr, *ospi; qemu_irq pic[XLNX_VERSAL_NR_IRQS]; Object *container; const VersalMap *map =3D versal_get_map(s); @@ -1323,13 +1328,16 @@ static void versal_realize(DeviceState *dev, Error = **errp) } =20 versal_create_efuse(s, &map->efuse); - versal_create_ospi(s, &map->ospi); + ospi =3D versal_create_ospi(s, &map->ospi); + slcr =3D versal_create_pmc_iou_slcr(s, &map->pmc_iou_slcr); =20 + qdev_connect_gpio_out_named(slcr, "ospi-mux-sel", 0, + qdev_get_gpio_in_named(ospi, + "ospi-mux-sel", 0)); versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); versal_create_trng(s, pic); versal_create_bbram(s, pic); - versal_create_pmc_iou_slcr(s, pic); versal_create_crl(s, pic); versal_create_cfu(s, pic); versal_map_ddr(s); --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846395; cv=none; d=zohomail.com; s=zohoarc; b=Hv62176O4eONW9SgbYrobTMDjcW6kzSNhBtCoy8kSGYx59KuT0I3W4aTo7ojAvYGJ8Z8ugPM0Ep9mLE5Ab+1OMyNv+25H/iVJg7OOV33JTcVVuTy+1qs+kJgYC0sesAcXo1xPsdnlyQdKC+23dPrRV4w4NNRqD3ooWIiV4eS4+4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846395; 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=Uxx9llzrYAXu4PL3iBc8DDk4Zz01Rox6Q/tm+iOvDsM=; b=YWqoNrthgcF7gMUSDGWXZHuDNXqfNuo/aeVyPwDXYCLQKF95wyACKcoppOQ+qlSKbYGACYgdHwV4T958x/jDKvSVWmy9C385ZdHxlPwSvRuyZ8bI6cWSxZv8y4MOcEFDBxKVB5NeF5F+sM2qO4J+3QcsyYKkAjnbcfT7uxKJ0Cw= 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 1759846395463199.30224805801106; Tue, 7 Oct 2025 07:13:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68QB-0005ha-5e; Tue, 07 Oct 2025 10:12:07 -0400 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 1v68Q7-0005h7-Rp for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:04 -0400 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 1v68Pr-00029V-62 for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:03 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-46e5b7dfeb0so26503885e9.1 for ; Tue, 07 Oct 2025 07:11:44 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846302; x=1760451102; 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=Uxx9llzrYAXu4PL3iBc8DDk4Zz01Rox6Q/tm+iOvDsM=; b=eOIM+udxHxpmtvfh+jAVsCygiFW1iolzmzuVyd63Fl3h0M4lRzwCQDr4H3GWXZtD30 H+pju1IfmM/mJv0IXBvWovaJJU1NsNCZxrokkdr+s6N0EfPNDWQbAYR73MtemvcVXsk3 bITbWOVjVUAUX6g5Wq5XfSeSbo2ZHYeieqpmRgcSvVIHSUX8dcMcQsUuH2q9noF+/yuQ mT0i/vKc8RCPC3Qqjgj7JsVI9o5Ht/BuOkfq5N7h/cF4CjWbTg6RRzxInhrPaCjJRgok EUjLon5+QOlR0IqkPKzylpKS9SOOzTK83ZeQXlBMNmUQbb4FxLKhHC6ZHjUTuBXkiu4b YyFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846302; x=1760451102; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Uxx9llzrYAXu4PL3iBc8DDk4Zz01Rox6Q/tm+iOvDsM=; b=qldNLmT07lFvheh6zNuJl+UqFeP8rqQt9KK3tVp1Y0ckYwZCAq2b5LsEPF/pQr6zVT 1y/5a84xF26E+vUwn/4JvsNQ1fixFejN90XHlvNNIj1vIM3jQ42O94uxwI4CRuE94tHh JqbKR4X1Ko2srDOWjb1H8jzWaZi1v1m1IF++TcbtSZRF+b/NJATS9maLlPs2t8xvK+3u o0jYm3wX33L7XbsFCuQYlLuKjtFf4x2Dkt1OBvJN5JrVNSEWSr1M3lR+sk1x5VfoR4u6 N7PpVO92seOfXHj+acPul0zkqoJxphBb0xqup+a4qpLZ+A5F/RHBl8MEtZ6++0aTJbb0 Wp+A== X-Gm-Message-State: AOJu0Yz/XJ/OUwuCCA4l9/w9QYj0JdLGYOudNb47Y3BT61IfzTt5xR/f AiIcLIPubXt64qDJm4sTDx+khiuuHT0OsHzyIEMRm60FhAYeeeyL0TzGgjRd6vpJkIHkRHXmU3e 4Diuf X-Gm-Gg: ASbGncsu/nY8LvWQZ214RCDX9x3ZRINxAjfYoLxK5757wpTBP58RsE4x8XHuaImcrnz CKiTWYpLP9IciNLZv5PwNv8j4KPEsltgE4e0CdiuIyY1f3n2HRaLYNHBS1fJrsc1c58dynSD6tp Odr8Ns3vbkRoM0MFpm5emSrvo1B3OBMLsPxXi88z/IBbw+NtgclZKXLSpPOyq6FJ5paixHg3gNL 9718XWF47DlLLoaa12jovDdyJWBQ2HJ6XKVV8RPAbjRQws9BDV7bVmQAf1e1CWmj5dz4F0aJdBE 3d18PlhFcuWb/qSdcVUeNIkuZxD9Eh2pg/zG8qkMnGdnHu4fQa46B/IUZitoGIwzx2dha5nxkyh wdehCiZHEzeHYdcK4qw+qyQAvkxBvYHh30dCxTym6/c0XT95c+SuUJ15y X-Google-Smtp-Source: AGHT+IHewImlb+C9ghtDCZkfvd9EQn7ck6AM7PDm8zQGlHbn3Th14I3/g6IIIAbGzy4rmKXbqHmJsQ== X-Received: by 2002:a05:600c:8b22:b0:45b:4a98:91cf with SMTP id 5b1f17b1804b1-46e71102657mr124266585e9.15.1759846301909; Tue, 07 Oct 2025 07:11:41 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 15/62] hw/arm/xlnx-versal: bbram: refactor creation Date: Tue, 7 Oct 2025 15:10:35 +0100 Message-ID: <20251007141123.3239867-16-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::32c; envelope-from=peter.maydell@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: 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: 1759846396639154100 From: Luc Michel Refactor the BBRAM device creation using the VersalMap structure. Note that the corresponding FDT node is removed. It does not correspond to any real node in standard Versal DTBs. No matching drivers exist for it. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-15-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 3 +-- hw/arm/xlnx-versal-virt.c | 27 +++--------------------- hw/arm/xlnx-versal.c | 41 +++++++++++++++++++++++++----------- 3 files changed, 33 insertions(+), 38 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 78442e6c2c5..9adce02f8a9 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -19,7 +19,6 @@ #include "hw/intc/arm_gicv3.h" #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" -#include "hw/nvram/xlnx-bbram.h" #include "hw/misc/xlnx-versal-crl.h" #include "hw/misc/xlnx-versal-trng.h" #include "net/can_emu.h" @@ -85,7 +84,6 @@ struct Versal { struct { XlnxZynqMPRTC rtc; XlnxVersalTRng trng; - XlnxBBRam bbram; XlnxVersalCFUAPB cfu_apb; XlnxVersalCFUFDRO cfu_fdro; XlnxVersalCFUSFR cfu_sfr; @@ -121,6 +119,7 @@ static inline void versal_set_fdt(Versal *s, void *fdt) =20 void versal_sdhci_plug_card(Versal *s, int sd_idx, BlockBackend *blk); void versal_efuse_attach_drive(Versal *s, BlockBackend *blk); +void versal_bbram_attach_drive(Versal *s, BlockBackend *blk); void versal_ospi_create_flash(Versal *s, int flash_idx, const char *flash_= mdl, BlockBackend *blk); =20 diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index a948e24aea0..f766a3e1027 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -172,26 +172,6 @@ static void fdt_add_rtc_node(VersalVirt *s) g_free(name); } =20 -static void fdt_add_bbram_node(VersalVirt *s) -{ - const char compat[] =3D TYPE_XLNX_BBRAM; - const char interrupt_names[] =3D "bbram-error"; - char *name =3D g_strdup_printf("/bbram@%x", MM_PMC_BBRAM_CTRL); - - qemu_fdt_add_subnode(s->fdt, name); - - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, VERSAL_PMC_APB_IRQ, - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop(s->fdt, name, "interrupt-names", - interrupt_names, sizeof(interrupt_names)); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, MM_PMC_BBRAM_CTRL, - 2, MM_PMC_BBRAM_CTRL_SIZE); - qemu_fdt_setprop(s->fdt, name, "compatible", compat, sizeof(compat)); - g_free(name); -} - static void fdt_nop_memory_nodes(void *fdt, Error **errp) { Error *err =3D NULL; @@ -346,7 +326,7 @@ static void create_virtio_regions(VersalVirt *s) } } =20 -static void bbram_attach_drive(XlnxBBRam *dev) +static void bbram_attach_drive(VersalVirt *s) { DriveInfo *dinfo; BlockBackend *blk; @@ -354,7 +334,7 @@ static void bbram_attach_drive(XlnxBBRam *dev) dinfo =3D drive_get_by_index(IF_PFLASH, 0); blk =3D dinfo ? blk_by_legacy_dinfo(dinfo) : NULL; if (blk) { - qdev_prop_set_drive(DEVICE(dev), "drive", blk); + versal_bbram_attach_drive(&s->soc, blk); } } =20 @@ -447,7 +427,6 @@ static void versal_virt_init(MachineState *machine) fdt_add_gic_nodes(s); fdt_add_timer_nodes(s); fdt_add_rtc_node(s); - fdt_add_bbram_node(s); fdt_add_cpu_nodes(s, psci_conduit); fdt_add_clk_node(s, "/old-clk125", 125000000, s->phandle.clk_125Mhz); fdt_add_clk_node(s, "/old-clk25", 25000000, s->phandle.clk_25Mhz); @@ -458,7 +437,7 @@ static void versal_virt_init(MachineState *machine) 0, &s->soc.fpd.apu.mr, 0); =20 /* Attach bbram backend, if given */ - bbram_attach_drive(&s->soc.pmc.bbram); + bbram_attach_drive(s); =20 /* Attach efuse backend, if given */ efuse_attach_drive(s); diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index e71c774e72e..31ceaf61bed 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -36,6 +36,7 @@ #include "hw/nvram/xlnx-versal-efuse.h" #include "hw/ssi/xlnx-versal-ospi.h" #include "hw/misc/xlnx-versal-pmc-iou-slcr.h" +#include "hw/nvram/xlnx-bbram.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -119,6 +120,7 @@ typedef struct VersalMap { } ospi; =20 VersalSimplePeriphMap pmc_iou_slcr; + VersalSimplePeriphMap bbram; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { @@ -161,6 +163,7 @@ static const VersalMap VERSAL_MAP =3D { }, =20 .pmc_iou_slcr =3D { 0xf1060000, OR_IRQ(121, 0) }, + .bbram =3D { 0xf11f0000, OR_IRQ(121, 1) }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { @@ -820,22 +823,21 @@ static void versal_create_xrams(Versal *s, const stru= ct VersalXramMap *map) } } =20 -static void versal_create_bbram(Versal *s, qemu_irq *pic) +static void versal_create_bbram(Versal *s, + const VersalSimplePeriphMap *map) { + DeviceState *dev; SysBusDevice *sbd; =20 - object_initialize_child_with_props(OBJECT(s), "bbram", &s->pmc.bbram, - sizeof(s->pmc.bbram), TYPE_XLNX_BBR= AM, - &error_fatal, - "crc-zpads", "0", - NULL); - sbd =3D SYS_BUS_DEVICE(&s->pmc.bbram); + dev =3D qdev_new(TYPE_XLNX_BBRAM); + sbd =3D SYS_BUS_DEVICE(dev); =20 - sysbus_realize(sbd, &error_fatal); - memory_region_add_subregion(&s->mr_ps, MM_PMC_BBRAM_CTRL, + object_property_add_child(OBJECT(s), "bbram", OBJECT(dev)); + qdev_prop_set_uint32(dev, "crc-zpads", 0); + sysbus_realize_and_unref(sbd, &error_abort); + memory_region_add_subregion(&s->mr_ps, map->addr, sysbus_mmio_get_region(sbd, 0)); - sysbus_connect_irq(sbd, 0, - qdev_get_gpio_in(DEVICE(&s->pmc.apb_irq_orgate), 1)= ); + versal_sysbus_connect_irq(s, sbd, 0, map->irq); } =20 static void versal_create_efuse(Versal *s, @@ -1334,10 +1336,12 @@ static void versal_realize(DeviceState *dev, Error = **errp) qdev_connect_gpio_out_named(slcr, "ospi-mux-sel", 0, qdev_get_gpio_in_named(ospi, "ospi-mux-sel", 0)); + + versal_create_bbram(s, &map->bbram); + versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); versal_create_trng(s, pic); - versal_create_bbram(s, pic); versal_create_crl(s, pic); versal_create_cfu(s, pic); versal_map_ddr(s); @@ -1383,6 +1387,19 @@ void versal_efuse_attach_drive(Versal *s, BlockBacke= nd *blk) qdev_prop_set_drive(efuse, "drive", blk); } =20 +void versal_bbram_attach_drive(Versal *s, BlockBackend *blk) +{ + DeviceState *bbram; + + bbram =3D DEVICE(versal_get_child(s, "bbram")); + + if (bbram =3D=3D NULL) { + return; + } + + qdev_prop_set_drive(bbram, "drive", blk); +} + void versal_ospi_create_flash(Versal *s, int flash_idx, const char *flash_= mdl, BlockBackend *blk) { --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846394; cv=none; d=zohomail.com; s=zohoarc; b=QeOMmniXZWGVB9YUMFTKj3RcUsAXghtOuMcGatjUhHQCvVysNHM18a87aGIigTs3zWuqOiCkcqyVoJoR5HB+GeZp3SlmBIGFMt9VCJJIJK1FBqjePaQrm11aRP17tzIfNDlG0jsCy64zEOuYrvSgvL+tbgAsLvd/Qhluu3dH/W8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846394; 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=vxXaXfqv3cWb8+YSgVKngrQxGlcnGKZMSI57st3PZGE=; b=FgkxhnYVZIEkLJeLllpFIVxJly/80FhRkMIuRnZKZ8GTVeujsIXhaOgUcJNhbj6D6rBx+FTnlVJleXzWN3hixgrlVF0G1+s5AdhShQZmfXmhLe/92V9Y1MnEJ0ujyFvtcUN63OmsqPir06PTDU9jdv2GmcNkbZOPGzqHtIUWzao= 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 1759846394710745.6596970142622; Tue, 7 Oct 2025 07:13:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Q9-0005hS-J5; Tue, 07 Oct 2025 10:12:05 -0400 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 1v68Q8-0005h8-1m for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:04 -0400 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Ps-00029k-P9 for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:03 -0400 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-46e6674caa5so32547715e9.0 for ; Tue, 07 Oct 2025 07:11:44 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846303; x=1760451103; 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=vxXaXfqv3cWb8+YSgVKngrQxGlcnGKZMSI57st3PZGE=; b=ioW+0+xJ3tiYP+0JqFQ9NzPAHdP6cZSAjNkUdOX2rE531UvlojQ1VfqIs+hSlJwyOD XYOtSIVJXU8F065245TjRei2ULfGudsCaBL3SwCnTTKYgHWfVVabjwNLaWW2rRgoINMo Ks1xYCGl6mluL2eEwXsVTqxz4KXo3B/GUamwqdR3tfUsh+aoYL0ijaj0zyWCiDjat3wI CK4RkBYC79k/jMqWsvxec8maQ7iqkNSCc16B6WaREioTU+dIQcfqqY7sEymwbA7/jOro NSBa1fN2ToH3Ge8vSD+wfKLP1/j39SW90MX8c+6cuxKz17/UegifWhCkY9AE9ZzYK1hk C5DQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846303; x=1760451103; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vxXaXfqv3cWb8+YSgVKngrQxGlcnGKZMSI57st3PZGE=; b=xSqDmhb6ZUgH1EAq3nwjUr15L060xwar5+EPGiUisUDFcPQAsvnKdAtyHZDXWMnyNn 6HJsLdoMkQ9pQU6BFmSJhpvQLv3f9503GF8Mhug38mH78P+wL68v0VSdnc6TYw1w9zCH 8a1QB7K+Je4xtL82cr/HRdnPWmfGTun8CoctrrVAEWFk+nKFOQw8xK9zlGwhZN2HpCxL g4loUlKBrGA1L/IcjaE6HJS2ro1OUyBrbBjioIJVj6T/d8Vx3zLKYvDRLR0QBiLxRmbF AX68/CCUzadRKM3hTc3r8Rio6BQR53NqRsmeHnmGAKxZGJYX9qP/63u9wir2zdM2GRwS EO/Q== X-Gm-Message-State: AOJu0YyEJ8ChKVZELQxVgJohUIwfg1Gpu4Y8gt+x59KCpsqT3hntuSjf xVZucn5tal30B2PnwK5rBrIXu7pB21FjBnUqg7z2KR97/96k9dHERpK/qIInIzhwMVuaUbS8CMB UAau4 X-Gm-Gg: ASbGncsbddbFwbUR0326tmqvd1lWRx0jt6s6xAYnKlrfIM7NHWhc7b8NcG21jGUmMEc K/stoqof6dvprfh7ZUDHXjTfarjI8Ojr8O1zwG3Xvpcj49RCKreSSNPHPCmBR/7h5/5wDfCXhI/ VTtsSvSrkvLalQ2L608e1yOactc6RI41xt0gjT0Pztr5hSKyNJewYrOZ1TW791QFkEF9aPqpVPK shRZ4Q10jU7ScH52I8r//I8frJACgiHNlInF6JJhZDQe+MujH9Gkco+0d2025lbNjM6nlYbNe7X jk/hWFxjkYUF8Hh7OtNLb2nGth8Pq7SzIvfsFhKQJm4N01TM94Lxi2eS4dTg9SA/VK+HDP+ImC4 9LgEcfXelSShHNidtiFRQHmwe/EJ7wsKRS37FeIi/lxSDWBoN5RldNyDU X-Google-Smtp-Source: AGHT+IF1gPFPSyBdhRrVJdZzaEUEJO6H2EfkNbO3c2dJ6Zm7ty0PmiCsYq7Dbiti/T1Eeixmmkc7Gw== X-Received: by 2002:a05:600c:6b10:b0:459:d577:bd24 with SMTP id 5b1f17b1804b1-46fa296e00fmr16900425e9.7.1759846302834; Tue, 07 Oct 2025 07:11:42 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 16/62] hw/arm/xlnx-versal: trng: refactor creation Date: Tue, 7 Oct 2025 15:10:36 +0100 Message-ID: <20251007141123.3239867-17-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::333; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x333.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, 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: 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: 1759846396671154100 From: Luc Michel Refactor the TRNG device creation using the VersalMap structure. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-16-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 2 -- hw/arm/xlnx-versal.c | 18 ++++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 9adce02f8a9..bba96201d37 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -20,7 +20,6 @@ #include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" #include "hw/misc/xlnx-versal-crl.h" -#include "hw/misc/xlnx-versal-trng.h" #include "net/can_emu.h" #include "hw/misc/xlnx-versal-cfu.h" #include "hw/misc/xlnx-versal-cframe-reg.h" @@ -83,7 +82,6 @@ struct Versal { /* The Platform Management Controller subsystem. */ struct { XlnxZynqMPRTC rtc; - XlnxVersalTRng trng; XlnxVersalCFUAPB cfu_apb; XlnxVersalCFUFDRO cfu_fdro; XlnxVersalCFUSFR cfu_sfr; diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 31ceaf61bed..7a97d5df6b8 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -37,6 +37,7 @@ #include "hw/ssi/xlnx-versal-ospi.h" #include "hw/misc/xlnx-versal-pmc-iou-slcr.h" #include "hw/nvram/xlnx-bbram.h" +#include "hw/misc/xlnx-versal-trng.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -121,6 +122,7 @@ typedef struct VersalMap { =20 VersalSimplePeriphMap pmc_iou_slcr; VersalSimplePeriphMap bbram; + VersalSimplePeriphMap trng; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { @@ -164,6 +166,7 @@ static const VersalMap VERSAL_MAP =3D { =20 .pmc_iou_slcr =3D { 0xf1060000, OR_IRQ(121, 0) }, .bbram =3D { 0xf11f0000, OR_IRQ(121, 1) }, + .trng =3D { 0xf1230000, 141 }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { @@ -780,19 +783,18 @@ static void versal_create_rtc(Versal *s, qemu_irq *pi= c) qdev_get_gpio_in(DEVICE(&s->pmc.apb_irq_orgate), 0)= ); } =20 -static void versal_create_trng(Versal *s, qemu_irq *pic) +static void versal_create_trng(Versal *s, const VersalSimplePeriphMap *map) { SysBusDevice *sbd; MemoryRegion *mr; =20 - object_initialize_child(OBJECT(s), "trng", &s->pmc.trng, - TYPE_XLNX_VERSAL_TRNG); - sbd =3D SYS_BUS_DEVICE(&s->pmc.trng); - sysbus_realize(sbd, &error_fatal); + sbd =3D SYS_BUS_DEVICE(qdev_new(TYPE_XLNX_VERSAL_TRNG)); + object_property_add_child(OBJECT(s), "trng", OBJECT(sbd)); + sysbus_realize_and_unref(sbd, &error_abort); =20 mr =3D sysbus_mmio_get_region(sbd, 0); - memory_region_add_subregion(&s->mr_ps, MM_PMC_TRNG, mr); - sysbus_connect_irq(sbd, 0, pic[VERSAL_TRNG_IRQ]); + memory_region_add_subregion(&s->mr_ps, map->addr, mr); + versal_sysbus_connect_irq(s, sbd, 0, map->irq); } =20 static void versal_create_xrams(Versal *s, const struct VersalXramMap *map) @@ -1338,10 +1340,10 @@ static void versal_realize(DeviceState *dev, Error = **errp) "ospi-mux-sel", 0)); =20 versal_create_bbram(s, &map->bbram); + versal_create_trng(s, &map->trng); =20 versal_create_pmc_apb_irq_orgate(s, pic); versal_create_rtc(s, pic); - versal_create_trng(s, pic); versal_create_crl(s, pic); versal_create_cfu(s, pic); versal_map_ddr(s); --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846393; cv=none; d=zohomail.com; s=zohoarc; b=HqfjPjN1JQNwek8UPF089d2FmJM+w0N1yywr12gllZjQyw9Mumw5nIudblYaLrvh1ZtKLHMG4T3ASG25rI+48pAV4BrSP+WmqyOkaxlDbis4ArI+Et+cY1J1TmnK1LqNCJbxF/NdzaaFUTZbUeLwGDMDsgV5iVH7pzJ8/JZCipQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846393; 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=8Ig/xe9lRWR8AVvmmEJBBarD/2ccaXU1t5zwOCw2epw=; b=VSC4FSfabBQ1xSAHsmOA3y61Hi5uaQnbJmBp7MyQT25goOVmRETUjH+0BWgLzJrMG8WzBocDUiX9GhGlOFwPkmgzh9kKPGUmwcRJ35fuPADGmFtLslPhNE0PZIexRRJjuNIzNCgVYD0cME58IqsthkX/GgpdIGgmh2g/yewevys= 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 175984639366053.12952354438414; Tue, 7 Oct 2025 07:13:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68QG-0005km-F5; Tue, 07 Oct 2025 10:12:13 -0400 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 1v68QB-0005i5-KZ for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:07 -0400 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 1v68Pv-0002A0-FA for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:06 -0400 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-421b93ee372so2970870f8f.2 for ; Tue, 07 Oct 2025 07:11:47 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846304; x=1760451104; 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=8Ig/xe9lRWR8AVvmmEJBBarD/2ccaXU1t5zwOCw2epw=; b=emdeTDwmHy/mYTr0uzJJUzN4QZuQNlFWRVgqX+3sen9uF53BxMH/ceb8KU1q94L/P/ QS+PKXTuFdk5o7E9fTN8wRRlhfk0kWqEjUaPKbjIHn0YrUjfb1JLvnboiSFOvPBsz7mu SZiXObYoz++idJ6VcEcshaZ1qtXC7gsYfZXYwloptM9IrDhJD1g/R2ZY0WVpV+x18bxl AoIs6ELze5QSj+hpshfJ5mAvNDgnPbyzlnQizuHNtiCvFJ0F8z0STpI2FvvZ+T+ooL6W d9m+5i0ZfS55f8awkH2QyXhXaD7kqSCB+92XUQtJSo3coDILp5LpAt8irJrwci3GONcF SEKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846304; x=1760451104; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8Ig/xe9lRWR8AVvmmEJBBarD/2ccaXU1t5zwOCw2epw=; b=WSTmq7e4qjOJeHbX4b6E1tOgmNfBUkoM+SQ2wSIX68+x1rTR1wGmNSIc5XScHLl8bP dz1AyTuolHrno9Wt8LrSySFfScIXMHe87zqVILNXOpG5v1ZznkhHBMkxPtz6GJ4XcLb+ W9hYmCpBiNErpoFDRS3DoJGgWDyIPcZDLWAZUOxb+IQAY3xEmtusFvh3VYkCFWHxVekp IBYJBuyUwpsqxG4mqAMYbnXYXIIs1MVE6obw6VbvfPBVTutqfarBgt0FCWLprljb5CSC wu/xlowKTBj7JbGA4PZx7SxrcVy0eaogdXbuoZe5uMjcAl89/wE5oYknEokF7quqylMk cAhA== X-Gm-Message-State: AOJu0YwhlTiJBCjlvTsQQr1A4tInUVzDdKMkezB6nWLFZok9q9loDixs dBxY91ydQKqm6zToRah/wU27YEzIqjbR+IE/Cw0zlaJEXYTEIdWLAnB4zCDr8+Fh2a/QLzTTesk do1Y1 X-Gm-Gg: ASbGncsErgKj/AlYaCT6N4dI7EjExHE/owg72nfI2bmpMGdSUMMWJe728uFXdy5g5pl UeLul2M/TYiK2Iqd6RvNcCnNs7+L7eYIXQji31lgTL8AAhSExs8XjzOsuHMvJDD7I7y2+LwMsv3 zQfRzl8OLC7FfQA0TRzlS/9vFcZfSn6yvMa9+59hIcUKxvaHW9lugfmQkZ0IShOLM0l1NsQFdOZ 4us2ijcV/OEL67r8GGUc73C/6ecr7qHHYHb2zZwlPWPHwmxrIrjO8pmCjvw4Gcuo24mkB5T0Ofw /DnPtVz4rAt52rAAOPqgnV/RoTLahyRJa66oseCGFyHyhDN0WayziV+byBsik+Z8Q8rYdDweOXa lyeBkirjSErnHKwQPucFR488j/vHYCeIgduR33GNsmy9wq/6EkCocaeGi X-Google-Smtp-Source: AGHT+IHZyurwGn6fPJJIDcdOIrrHZA+Jx5aDYcrrUrmoI3qfYixqWoNuuakBgI0tXpCk7oiJcXEcOw== X-Received: by 2002:a05:6000:60f:b0:424:2275:63c2 with SMTP id ffacd0b85a97d-4256719e997mr11608621f8f.33.1759846303845; Tue, 07 Oct 2025 07:11:43 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 17/62] hw/arm/xlnx-versal: rtc: refactor creation Date: Tue, 7 Oct 2025 15:10:37 +0100 Message-ID: <20251007141123.3239867-18-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::42d; envelope-from=peter.maydell@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: 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: 1759846396714154100 From: Luc Michel Refactor the RTC device creation using the VersalMap structure. The sysbus IRQ output 0 (APB IRQ) is connected instead of the output 1 (addr error IRQ). This does not change the current behaviour since the RTC model does not implement those IRQs anyway. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-17-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 2 -- hw/arm/xlnx-versal-virt.c | 22 -------------------- hw/arm/xlnx-versal.c | 40 ++++++++++++++++++++++++++++-------- 3 files changed, 31 insertions(+), 33 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index bba96201d37..abdbed15689 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -17,7 +17,6 @@ #include "hw/cpu/cluster.h" #include "hw/or-irq.h" #include "hw/intc/arm_gicv3.h" -#include "hw/rtc/xlnx-zynqmp-rtc.h" #include "qom/object.h" #include "hw/misc/xlnx-versal-crl.h" #include "net/can_emu.h" @@ -81,7 +80,6 @@ struct Versal { =20 /* The Platform Management Controller subsystem. */ struct { - XlnxZynqMPRTC rtc; XlnxVersalCFUAPB cfu_apb; XlnxVersalCFUFDRO cfu_fdro; XlnxVersalCFUSFR cfu_sfr; diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index f766a3e1027..d96f3433929 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -151,27 +151,6 @@ static void fdt_add_timer_nodes(VersalVirt *s) compat, sizeof(compat)); } =20 -static void fdt_add_rtc_node(VersalVirt *s) -{ - const char compat[] =3D "xlnx,zynqmp-rtc"; - const char interrupt_names[] =3D "alarm\0sec"; - char *name =3D g_strdup_printf("/rtc@%x", MM_PMC_RTC); - - qemu_fdt_add_subnode(s->fdt, name); - - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, VERSAL_RTC_ALARM_IRQ, - GIC_FDT_IRQ_FLAGS_LEVEL_HI, - GIC_FDT_IRQ_TYPE_SPI, VERSAL_RTC_SECONDS_IRQ, - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop(s->fdt, name, "interrupt-names", - interrupt_names, sizeof(interrupt_names)); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", - 2, MM_PMC_RTC, 2, MM_PMC_RTC_SIZE); - qemu_fdt_setprop(s->fdt, name, "compatible", compat, sizeof(compat)); - g_free(name); -} - static void fdt_nop_memory_nodes(void *fdt, Error **errp) { Error *err =3D NULL; @@ -426,7 +405,6 @@ static void versal_virt_init(MachineState *machine) =20 fdt_add_gic_nodes(s); fdt_add_timer_nodes(s); - fdt_add_rtc_node(s); fdt_add_cpu_nodes(s, psci_conduit); fdt_add_clk_node(s, "/old-clk125", 125000000, s->phandle.clk_125Mhz); fdt_add_clk_node(s, "/old-clk25", 25000000, s->phandle.clk_25Mhz); diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 7a97d5df6b8..9b1e0d46f1b 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -38,6 +38,7 @@ #include "hw/misc/xlnx-versal-pmc-iou-slcr.h" #include "hw/nvram/xlnx-bbram.h" #include "hw/misc/xlnx-versal-trng.h" +#include "hw/rtc/xlnx-zynqmp-rtc.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -123,6 +124,12 @@ typedef struct VersalMap { VersalSimplePeriphMap pmc_iou_slcr; VersalSimplePeriphMap bbram; VersalSimplePeriphMap trng; + + struct VersalRtcMap { + VersalSimplePeriphMap map; + int alarm_irq; + int second_irq; + } rtc; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { @@ -167,6 +174,10 @@ static const VersalMap VERSAL_MAP =3D { .pmc_iou_slcr =3D { 0xf1060000, OR_IRQ(121, 0) }, .bbram =3D { 0xf11f0000, OR_IRQ(121, 1) }, .trng =3D { 0xf1230000, 141 }, + .rtc =3D { + { 0xf12a0000, OR_IRQ(121, 2) }, + .alarm_irq =3D 142, .second_irq =3D 143 + }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { @@ -762,25 +773,36 @@ static void versal_create_pmc_apb_irq_orgate(Versal *= s, qemu_irq *pic) qdev_connect_gpio_out(orgate, 0, pic[VERSAL_PMC_APB_IRQ]); } =20 -static void versal_create_rtc(Versal *s, qemu_irq *pic) +static void versal_create_rtc(Versal *s, const struct VersalRtcMap *map) { SysBusDevice *sbd; MemoryRegion *mr; + g_autofree char *node; + const char compatible[] =3D "xlnx,zynqmp-rtc"; + const char interrupt_names[] =3D "alarm\0sec"; =20 - object_initialize_child(OBJECT(s), "rtc", &s->pmc.rtc, - TYPE_XLNX_ZYNQMP_RTC); - sbd =3D SYS_BUS_DEVICE(&s->pmc.rtc); - sysbus_realize(sbd, &error_fatal); + sbd =3D SYS_BUS_DEVICE(qdev_new(TYPE_XLNX_ZYNQMP_RTC)); + object_property_add_child(OBJECT(s), "rtc", OBJECT(sbd)); + sysbus_realize_and_unref(sbd, &error_abort); =20 mr =3D sysbus_mmio_get_region(sbd, 0); - memory_region_add_subregion(&s->mr_ps, MM_PMC_RTC, mr); + memory_region_add_subregion(&s->mr_ps, map->map.addr, mr); =20 /* * TODO: Connect the ALARM and SECONDS interrupts once our RTC model * supports them. */ - sysbus_connect_irq(sbd, 1, - qdev_get_gpio_in(DEVICE(&s->pmc.apb_irq_orgate), 0)= ); + versal_sysbus_connect_irq(s, sbd, 0, map->map.irq); + + node =3D versal_fdt_add_simple_subnode(s, "/rtc", map->map.addr, 0x100= 00, + compatible, sizeof(compatible)); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "interrupts", + GIC_FDT_IRQ_TYPE_SPI, map->alarm_irq, + GIC_FDT_IRQ_FLAGS_LEVEL_HI, + GIC_FDT_IRQ_TYPE_SPI, map->second_irq, + GIC_FDT_IRQ_FLAGS_LEVEL_HI); + qemu_fdt_setprop(s->cfg.fdt, node, "interrupt-names", + interrupt_names, sizeof(interrupt_names)); } =20 static void versal_create_trng(Versal *s, const VersalSimplePeriphMap *map) @@ -1341,9 +1363,9 @@ static void versal_realize(DeviceState *dev, Error **= errp) =20 versal_create_bbram(s, &map->bbram); versal_create_trng(s, &map->trng); + versal_create_rtc(s, &map->rtc); =20 versal_create_pmc_apb_irq_orgate(s, pic); - versal_create_rtc(s, pic); versal_create_crl(s, pic); versal_create_cfu(s, pic); versal_map_ddr(s); --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846730; cv=none; d=zohomail.com; s=zohoarc; b=XgkZSL7yymRoqi6mk1hhUBugPJpRpTc31/pcYNa6sezwZZA7w3pvF919/8X1kbgCYSsVrTfqjtKsG5R5vdKNBYthkBGjgg2Jcl8SAex/fmMBUirNwyOG2fzJ3bNMJX0I+tK/Wx2tqEeOyqGDldlo6SQu3Rzr757xmc5J7T4VOI8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846730; 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=gfwuVCVrUMLsJuYPlJvBfTbk/dgeqgzSGKLWJ7mh848=; b=FPC3yNODglSQRsuahglXeQ9HUVltZ9Rw290QHGjn+MUqTCfgFb1HDLtEtSTNf5x1431zLwWrQTdlpf2Jhi5AOgrc/xOAnmXNJEkL16Lx7TYryvnOz2v4hI7hrITASFVNDOrHUjNklrcMqY4aX5HCKzKy/UzsM0+A95UDOge+J+A= 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 1759846730148452.6390370421384; Tue, 7 Oct 2025 07:18:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68QF-0005kW-VP; Tue, 07 Oct 2025 10:12:12 -0400 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 1v68QB-0005i6-KK for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:07 -0400 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 1v68Pv-0002AJ-DB for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:06 -0400 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-46e6a689bd0so49721185e9.1 for ; Tue, 07 Oct 2025 07:11:47 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846305; x=1760451105; 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=gfwuVCVrUMLsJuYPlJvBfTbk/dgeqgzSGKLWJ7mh848=; b=nbxPbm9008EahJd7pm74xCzK07R5CuPTnSdnDckRxPU+J3buO4MaZ5wC85YAzm3BFh a+qbQn0lrJhKAFrv6MK++Kn6sNOyGBx8H7f1GL3R5FwoVgMPypZlKvFRDV6r5nR87l2e 7aVmfIwNEqK6v5RkgS46bk5FgVRDeJrgil7SotoutsM1/qCwSuvffTsaETDVLa4NcajO eDpNxhovoz+rqT88dcdp2q2mkvspdCTudfhWMzf7pWgNUMvxNY07RKAidPXQ85w3dYMG 5z1RqvcCDN0TXdssb7O2QkVtcYb7S3V+xd5hWE83kZul8nj6s+53p0bQnw52ke+GJO+Q 9/IQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846305; x=1760451105; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gfwuVCVrUMLsJuYPlJvBfTbk/dgeqgzSGKLWJ7mh848=; b=TCela20nUCcy08OAQZ4wTQec8eZRvbzvmQmvqmQ7FgJJvRNyV8fU3islLfHrkCcprs UmXfJ1brdNTdEj9q+zXdEMcrsB0IEvIyppDYBXRWzqyf1Pg1HqDKRMKCAH0SJoaKlrnI GKqIE2mJ2jC3b7JMuunOzuVpSdeS6N33d9oxlOrknYgcO+4pZn4sLpEbH00RcLi1ce4F oi1SlHXucWHwzx9MRPCMRq7sY9f4DHvHBS86q0c8n6s4j8JM7K1+CHAJn2/6diVmibGQ W0XvPoRpzSDWUWyUCUhNFVnBFbyhttR+Rdhca5m8krheu6q5rth9EXPCjoquJV/kl9gf v7JA== X-Gm-Message-State: AOJu0YyeXClDciV/DTqtpgG3ZtrgPAB/+yvNKiF+hUuj1sExhhU/BXDR dhkgEE8duOUCuh++9h4CNjJ3UrUkGU3oNeAByPUcNeuFoQ5cnCVjo6yfoO9j8usQvRyObzs4wGY Chw4T X-Gm-Gg: ASbGnctnDpCVHvIVIObE8cDRe1iGPVCTvVYbROSK4Oy4UgCWDsR1z/BR34ypPBE4V06 7JhBgjWtOm6kUMAcQruFySpBfFzj90PEN1niSS68xrQQFyzoRDAyEDoLK8+ZyLrj9PdaCKIZR+k ske25eMdeW7hSQolEeljcv62ZmvbwMI1+YTe543S5Pa0NBlBJJJNKlL30wQ4MJOZrClcQOQsXaw A2+AcRK/tnv0dawP4ncls1oxLSSUy8SsJR7vUSFPOF3ImK3Say8f7OVpU/TZfVqYMoxNQ1wK8re LORdXKefbtJzdtJXplBEiwVuJ4D3ABAZ8rv2XJPxX97f9K+6FP1BIiJSdOja/k4QLGrC2aVcmAu dhuStRolP0IvN5r4MtGKoNJ3++Y4/z3rjBRn1aiisiyejwPl3Xm+3RjeF X-Google-Smtp-Source: AGHT+IHGjUZiDe5oiK21qqG/jh8WIeHcSSa21kvnqbqPFmaUvaLEkXfonIRcj4qPYtvp3oZTUw6P6g== X-Received: by 2002:a05:600c:1f96:b0:45f:2ed1:d1c5 with SMTP id 5b1f17b1804b1-46e7115cba1mr118509595e9.36.1759846304943; Tue, 07 Oct 2025 07:11:44 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 18/62] hw/arm/xlnx-versal: cfu: refactor creation Date: Tue, 7 Oct 2025 15:10:38 +0100 Message-ID: <20251007141123.3239867-19-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::335; envelope-from=peter.maydell@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: 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: 1759846740012116600 From: Luc Michel Refactor the CFU device creation using the VersalMap structure. All users of the APB IRQ OR gate have now been converted. The OR gate device can be dropped. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-18-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 14 -- hw/arm/xlnx-versal.c | 276 ++++++++++++++++------------------- 2 files changed, 124 insertions(+), 166 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index abdbed15689..5a685aea6d4 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -15,13 +15,10 @@ =20 #include "hw/sysbus.h" #include "hw/cpu/cluster.h" -#include "hw/or-irq.h" #include "hw/intc/arm_gicv3.h" #include "qom/object.h" #include "hw/misc/xlnx-versal-crl.h" #include "net/can_emu.h" -#include "hw/misc/xlnx-versal-cfu.h" -#include "hw/misc/xlnx-versal-cframe-reg.h" #include "target/arm/cpu.h" #include "hw/arm/xlnx-versal-version.h" =20 @@ -78,17 +75,6 @@ struct Versal { XlnxVersalCRL crl; } lpd; =20 - /* The Platform Management Controller subsystem. */ - struct { - XlnxVersalCFUAPB cfu_apb; - XlnxVersalCFUFDRO cfu_fdro; - XlnxVersalCFUSFR cfu_sfr; - XlnxVersalCFrameReg cframe[XLNX_VERSAL_NR_CFRAME]; - XlnxVersalCFrameBcastReg cframe_bcast; - - OrIRQState apb_irq_orgate; - } pmc; - struct { uint32_t clk_25mhz; uint32_t clk_125mhz; diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 9b1e0d46f1b..81adf8d35b6 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -39,6 +39,9 @@ #include "hw/nvram/xlnx-bbram.h" #include "hw/misc/xlnx-versal-trng.h" #include "hw/rtc/xlnx-zynqmp-rtc.h" +#include "hw/misc/xlnx-versal-cfu.h" +#include "hw/misc/xlnx-versal-cframe-reg.h" +#include "hw/or-irq.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -130,6 +133,24 @@ typedef struct VersalMap { int alarm_irq; int second_irq; } rtc; + + struct VersalCfuMap { + uint64_t cframe_base; + uint64_t cframe_stride; + uint64_t cfu_fdro; + uint64_t cframe_bcast_reg; + uint64_t cframe_bcast_fdri; + uint64_t cfu_apb; + uint64_t cfu_stream; + uint64_t cfu_stream_2; + uint64_t cfu_sfr; + int cfu_apb_irq; + int cframe_irq; + size_t num_cframe; + struct VersalCfuCframeCfg { + uint32_t blktype_frames[7]; + } cframe_cfg[15]; + } cfu; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { @@ -178,6 +199,22 @@ static const VersalMap VERSAL_MAP =3D { { 0xf12a0000, OR_IRQ(121, 2) }, .alarm_irq =3D 142, .second_irq =3D 143 }, + + .cfu =3D { + .cframe_base =3D 0xf12d0000, .cframe_stride =3D 0x1000, + .cframe_bcast_reg =3D 0xf12ee000, .cframe_bcast_fdri =3D 0xf12ef00= 0, + .cfu_apb =3D 0xf12b0000, .cfu_sfr =3D 0xf12c1000, + .cfu_stream =3D 0xf12c0000, .cfu_stream_2 =3D 0xf1f80000, + .cfu_fdro =3D 0xf12c2000, + .cfu_apb_irq =3D 120, .cframe_irq =3D OR_IRQ(121, 3), + .num_cframe =3D 15, + .cframe_cfg =3D { + { { 34111, 3528, 12800, 11, 5, 1, 1 } }, + { { 38498, 3841, 15361, 13, 7, 3, 1 } }, + { { 38498, 3841, 15361, 13, 7, 3, 1 } }, + { { 38498, 3841, 15361, 13, 7, 3, 1 } }, + }, + }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { @@ -752,27 +789,6 @@ static void versal_create_sdhci(Versal *s, GIC_FDT_IRQ_FLAGS_LEVEL_HI); } =20 -static void versal_create_pmc_apb_irq_orgate(Versal *s, qemu_irq *pic) -{ - DeviceState *orgate; - - /* - * The VERSAL_PMC_APB_IRQ is an 'or' of the interrupts from the follow= ing - * models: - * - RTC - * - BBRAM - * - PMC SLCR - * - CFRAME regs (input 3 - 17 to the orgate) - */ - object_initialize_child(OBJECT(s), "pmc-apb-irq-orgate", - &s->pmc.apb_irq_orgate, TYPE_OR_IRQ); - orgate =3D DEVICE(&s->pmc.apb_irq_orgate); - object_property_set_int(OBJECT(orgate), - "num-lines", VERSAL_NUM_PMC_APB_IRQS, &error_f= atal); - qdev_realize(orgate, NULL, &error_fatal); - qdev_connect_gpio_out(orgate, 0, pic[VERSAL_PMC_APB_IRQ]); -} - static void versal_create_rtc(Versal *s, const struct VersalRtcMap *map) { SysBusDevice *sbd; @@ -991,154 +1007,111 @@ static DeviceState *versal_create_ospi(Versal *s, return dev; } =20 -static void versal_create_cfu(Versal *s, qemu_irq *pic) +static void versal_create_cfu(Versal *s, const struct VersalCfuMap *map) { SysBusDevice *sbd; - DeviceState *dev; + Object *container; + DeviceState *cfu_fdro, *cfu_apb, *cfu_sfr, *cframe_bcast; + DeviceState *cframe_irq_or; int i; - const struct { - uint64_t reg_base; - uint64_t fdri_base; - } cframe_addr[] =3D { - { MM_PMC_CFRAME0_REG, MM_PMC_CFRAME0_FDRI }, - { MM_PMC_CFRAME1_REG, MM_PMC_CFRAME1_FDRI }, - { MM_PMC_CFRAME2_REG, MM_PMC_CFRAME2_FDRI }, - { MM_PMC_CFRAME3_REG, MM_PMC_CFRAME3_FDRI }, - { MM_PMC_CFRAME4_REG, MM_PMC_CFRAME4_FDRI }, - { MM_PMC_CFRAME5_REG, MM_PMC_CFRAME5_FDRI }, - { MM_PMC_CFRAME6_REG, MM_PMC_CFRAME6_FDRI }, - { MM_PMC_CFRAME7_REG, MM_PMC_CFRAME7_FDRI }, - { MM_PMC_CFRAME8_REG, MM_PMC_CFRAME8_FDRI }, - { MM_PMC_CFRAME9_REG, MM_PMC_CFRAME9_FDRI }, - { MM_PMC_CFRAME10_REG, MM_PMC_CFRAME10_FDRI }, - { MM_PMC_CFRAME11_REG, MM_PMC_CFRAME11_FDRI }, - { MM_PMC_CFRAME12_REG, MM_PMC_CFRAME12_FDRI }, - { MM_PMC_CFRAME13_REG, MM_PMC_CFRAME13_FDRI }, - { MM_PMC_CFRAME14_REG, MM_PMC_CFRAME14_FDRI }, - }; - const struct { - uint32_t blktype0_frames; - uint32_t blktype1_frames; - uint32_t blktype2_frames; - uint32_t blktype3_frames; - uint32_t blktype4_frames; - uint32_t blktype5_frames; - uint32_t blktype6_frames; - } cframe_cfg[] =3D { - [0] =3D { 34111, 3528, 12800, 11, 5, 1, 1 }, - [1] =3D { 38498, 3841, 15361, 13, 7, 3, 1 }, - [2] =3D { 38498, 3841, 15361, 13, 7, 3, 1 }, - [3] =3D { 38498, 3841, 15361, 13, 7, 3, 1 }, - }; + + container =3D object_new(TYPE_CONTAINER); + object_property_add_child(OBJECT(s), "cfu", container); + object_unref(container); =20 /* CFU FDRO */ - object_initialize_child(OBJECT(s), "cfu-fdro", &s->pmc.cfu_fdro, - TYPE_XLNX_VERSAL_CFU_FDRO); - sbd =3D SYS_BUS_DEVICE(&s->pmc.cfu_fdro); + cfu_fdro =3D qdev_new(TYPE_XLNX_VERSAL_CFU_FDRO); + object_property_add_child(container, "cfu-fdro", OBJECT(cfu_fdro)); + sbd =3D SYS_BUS_DEVICE(cfu_fdro); =20 - sysbus_realize(sbd, &error_fatal); - memory_region_add_subregion(&s->mr_ps, MM_PMC_CFU_FDRO, + sysbus_realize_and_unref(sbd, &error_fatal); + memory_region_add_subregion(&s->mr_ps, map->cfu_fdro, sysbus_mmio_get_region(sbd, 0)); =20 - /* CFRAME REG */ - for (i =3D 0; i < ARRAY_SIZE(s->pmc.cframe); i++) { - g_autofree char *name =3D g_strdup_printf("cframe%d", i); - - object_initialize_child(OBJECT(s), name, &s->pmc.cframe[i], - TYPE_XLNX_VERSAL_CFRAME_REG); - - sbd =3D SYS_BUS_DEVICE(&s->pmc.cframe[i]); - dev =3D DEVICE(&s->pmc.cframe[i]); - - if (i < ARRAY_SIZE(cframe_cfg)) { - object_property_set_int(OBJECT(dev), "blktype0-frames", - cframe_cfg[i].blktype0_frames, - &error_abort); - object_property_set_int(OBJECT(dev), "blktype1-frames", - cframe_cfg[i].blktype1_frames, - &error_abort); - object_property_set_int(OBJECT(dev), "blktype2-frames", - cframe_cfg[i].blktype2_frames, - &error_abort); - object_property_set_int(OBJECT(dev), "blktype3-frames", - cframe_cfg[i].blktype3_frames, - &error_abort); - object_property_set_int(OBJECT(dev), "blktype4-frames", - cframe_cfg[i].blktype4_frames, - &error_abort); - object_property_set_int(OBJECT(dev), "blktype5-frames", - cframe_cfg[i].blktype5_frames, - &error_abort); - object_property_set_int(OBJECT(dev), "blktype6-frames", - cframe_cfg[i].blktype6_frames, - &error_abort); - } - object_property_set_link(OBJECT(dev), "cfu-fdro", - OBJECT(&s->pmc.cfu_fdro), &error_fatal); - - sysbus_realize(SYS_BUS_DEVICE(dev), &error_fatal); - - memory_region_add_subregion(&s->mr_ps, cframe_addr[i].reg_base, - sysbus_mmio_get_region(sbd, 0)); - memory_region_add_subregion(&s->mr_ps, cframe_addr[i].fdri_base, - sysbus_mmio_get_region(sbd, 1)); - sysbus_connect_irq(sbd, 0, - qdev_get_gpio_in(DEVICE(&s->pmc.apb_irq_orgate), - 3 + i)); - } - - /* CFRAME BCAST */ - object_initialize_child(OBJECT(s), "cframe_bcast", &s->pmc.cframe_bcas= t, - TYPE_XLNX_VERSAL_CFRAME_BCAST_REG); - - sbd =3D SYS_BUS_DEVICE(&s->pmc.cframe_bcast); - dev =3D DEVICE(&s->pmc.cframe_bcast); - - for (i =3D 0; i < ARRAY_SIZE(s->pmc.cframe); i++) { - g_autofree char *propname =3D g_strdup_printf("cframe%d", i); - object_property_set_link(OBJECT(dev), propname, - OBJECT(&s->pmc.cframe[i]), &error_fatal); - } - - sysbus_realize(sbd, &error_fatal); - - memory_region_add_subregion(&s->mr_ps, MM_PMC_CFRAME_BCAST_REG, - sysbus_mmio_get_region(sbd, 0)); - memory_region_add_subregion(&s->mr_ps, MM_PMC_CFRAME_BCAST_FDRI, - sysbus_mmio_get_region(sbd, 1)); + /* cframe bcast */ + cframe_bcast =3D qdev_new(TYPE_XLNX_VERSAL_CFRAME_BCAST_REG); + object_property_add_child(container, "cframe-bcast", OBJECT(cframe_bca= st)); =20 /* CFU APB */ - object_initialize_child(OBJECT(s), "cfu-apb", &s->pmc.cfu_apb, - TYPE_XLNX_VERSAL_CFU_APB); - sbd =3D SYS_BUS_DEVICE(&s->pmc.cfu_apb); - dev =3D DEVICE(&s->pmc.cfu_apb); + cfu_apb =3D qdev_new(TYPE_XLNX_VERSAL_CFU_APB); + object_property_add_child(container, "cfu-apb", OBJECT(cfu_apb)); =20 - for (i =3D 0; i < ARRAY_SIZE(s->pmc.cframe); i++) { - g_autofree char *propname =3D g_strdup_printf("cframe%d", i); - object_property_set_link(OBJECT(dev), propname, - OBJECT(&s->pmc.cframe[i]), &error_fatal); + /* IRQ or gate for cframes */ + cframe_irq_or =3D qdev_new(TYPE_OR_IRQ); + object_property_add_child(container, "cframe-irq-or-gate", + OBJECT(cframe_irq_or)); + qdev_prop_set_uint16(cframe_irq_or, "num-lines", map->num_cframe); + qdev_realize_and_unref(cframe_irq_or, NULL, &error_abort); + versal_qdev_connect_gpio_out(s, cframe_irq_or, 0, map->cframe_irq); + + /* cframe reg */ + for (i =3D 0; i < map->num_cframe; i++) { + uint64_t reg_base; + uint64_t fdri_base; + DeviceState *dev; + g_autofree char *prop_name; + size_t j; + + dev =3D qdev_new(TYPE_XLNX_VERSAL_CFRAME_REG); + object_property_add_child(container, "cframe[*]", OBJECT(dev)); + + sbd =3D SYS_BUS_DEVICE(dev); + + for (j =3D 0; j < ARRAY_SIZE(map->cframe_cfg[i].blktype_frames); j= ++) { + g_autofree char *blktype_prop_name; + + blktype_prop_name =3D g_strdup_printf("blktype%zu-frames", j); + object_property_set_int(OBJECT(dev), blktype_prop_name, + map->cframe_cfg[i].blktype_frames[j], + &error_abort); + } + + object_property_set_link(OBJECT(dev), "cfu-fdro", + OBJECT(cfu_fdro), &error_abort); + + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_abort); + + reg_base =3D map->cframe_base + i * map->cframe_stride * 2; + fdri_base =3D reg_base + map->cframe_stride; + memory_region_add_subregion(&s->mr_ps, reg_base, + sysbus_mmio_get_region(sbd, 0)); + memory_region_add_subregion(&s->mr_ps, fdri_base, + sysbus_mmio_get_region(sbd, 1)); + sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(cframe_irq_or, i)); + + prop_name =3D g_strdup_printf("cframe%d", i); + object_property_set_link(OBJECT(cframe_bcast), prop_name, + OBJECT(dev), &error_abort); + object_property_set_link(OBJECT(cfu_apb), prop_name, + OBJECT(dev), &error_abort); } =20 - sysbus_realize(sbd, &error_fatal); - memory_region_add_subregion(&s->mr_ps, MM_PMC_CFU_APB, + sbd =3D SYS_BUS_DEVICE(cframe_bcast); + sysbus_realize_and_unref(sbd, &error_abort); + memory_region_add_subregion(&s->mr_ps, map->cframe_bcast_reg, sysbus_mmio_get_region(sbd, 0)); - memory_region_add_subregion(&s->mr_ps, MM_PMC_CFU_STREAM, + memory_region_add_subregion(&s->mr_ps, map->cframe_bcast_fdri, sysbus_mmio_get_region(sbd, 1)); - memory_region_add_subregion(&s->mr_ps, MM_PMC_CFU_STREAM_2, + + sbd =3D SYS_BUS_DEVICE(cfu_apb); + sysbus_realize_and_unref(sbd, &error_fatal); + memory_region_add_subregion(&s->mr_ps, map->cfu_apb, + sysbus_mmio_get_region(sbd, 0)); + memory_region_add_subregion(&s->mr_ps, map->cfu_stream, + sysbus_mmio_get_region(sbd, 1)); + memory_region_add_subregion(&s->mr_ps, map->cfu_stream_2, sysbus_mmio_get_region(sbd, 2)); - sysbus_connect_irq(sbd, 0, pic[VERSAL_CFU_IRQ_0]); + versal_sysbus_connect_irq(s, sbd, 0, map->cfu_apb_irq); =20 /* CFU SFR */ - object_initialize_child(OBJECT(s), "cfu-sfr", &s->pmc.cfu_sfr, - TYPE_XLNX_VERSAL_CFU_SFR); + cfu_sfr =3D qdev_new(TYPE_XLNX_VERSAL_CFU_SFR); + object_property_add_child(container, "cfu-sfr", OBJECT(cfu_sfr)); + sbd =3D SYS_BUS_DEVICE(cfu_sfr); =20 - sbd =3D SYS_BUS_DEVICE(&s->pmc.cfu_sfr); - - object_property_set_link(OBJECT(&s->pmc.cfu_sfr), - "cfu", OBJECT(&s->pmc.cfu_apb), &error_abort); - - sysbus_realize(sbd, &error_fatal); - memory_region_add_subregion(&s->mr_ps, MM_PMC_CFU_SFR, + object_property_set_link(OBJECT(cfu_sfr), + "cfu", OBJECT(cfu_apb), &error_abort); + sysbus_realize_and_unref(sbd, &error_fatal); + memory_region_add_subregion(&s->mr_ps, map->cfu_sfr, sysbus_mmio_get_region(sbd, 0)); } =20 @@ -1364,10 +1337,9 @@ static void versal_realize(DeviceState *dev, Error *= *errp) versal_create_bbram(s, &map->bbram); versal_create_trng(s, &map->trng); versal_create_rtc(s, &map->rtc); + versal_create_cfu(s, &map->cfu); =20 - versal_create_pmc_apb_irq_orgate(s, pic); versal_create_crl(s, pic); - versal_create_cfu(s, pic); versal_map_ddr(s); versal_unimp(s); =20 --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846771; cv=none; d=zohomail.com; s=zohoarc; b=cfnx9Ako37eGQJcB+1a4jcyME9ycnzvunQ/R8kJ402HX21WB1HRBMOCNtFvttxNOs6kFD7FnVX1zNpaH0Pet9un1c43Ru5drn52xB8ieqrx+zWKtZEhCX4Yz0Q8v9Ut264uw+ev+ih/4qAS4ghjAHx1wN6RcYoh7vN3F0nWZRXw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846771; 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=sG2PRiFptBM7KMJFXZ0+YRspn1D7fmH+23bLcEHsPso=; b=VF/Mc28VJYXU+haF9HYKpbTj88kA1nf0MI69t0QOSnH648ngIX4BWTJCU5/0s2Uxi1dBLj+PMuQNWuRu3r6gqEk9/52vlkskt21NFaFc/W7trVSy3ijYn/Lto0tgn+TD3nLGF1gJFiEkHih2SkIHdcjzshMIUd0s1MgI12DMjrQ= 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 1759846771873934.7472257497927; Tue, 7 Oct 2025 07:19:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68QE-0005k8-MJ; Tue, 07 Oct 2025 10:12:10 -0400 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 1v68QB-0005i4-KZ for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:07 -0400 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Pv-0002AS-7r for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:06 -0400 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-46e542196c7so41118605e9.0 for ; Tue, 07 Oct 2025 07:11:47 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846306; x=1760451106; 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=sG2PRiFptBM7KMJFXZ0+YRspn1D7fmH+23bLcEHsPso=; b=aoUfdFmzPVDf8o8Z2+dTTlIMv0wbPAYRha4BOdZvjb5QN7+aPh93oH0HdDazhsH40F 8q8Udu375/iLDyhrzKTb46+5pJmuBu7Gip3E26YJsvhZWf0G85haZfhqkyM9a1NsK7vu BO5TlSLbBykUcNpnf8mi12Rwplk4vivDjNGbAaPt3inrj2JO/AxDr79dAxiS0U+46jjA sxFseISYhgruUaf4bFyWprDrzFjTpAeeucrCB5I5VJwfvX+K2Y4Hdx6g/K/KFairMCLz 1jTWffEuWlAl3n0nE8dIgbeweRmBEcl1hmVamG0vlE9pxmeUS5vfEJq/RrICHm4T0Jfa B8dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846306; x=1760451106; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sG2PRiFptBM7KMJFXZ0+YRspn1D7fmH+23bLcEHsPso=; b=gkJiEl99DoWqXRY0RVwtgt3FXXPsTGkEQjLhqN6P0kv+oD75j964/1rcC4Ghj+7gDT b3sDzJpeqf9b1Hin+XFwoTnv2o9b28hVHu96vKOs82CLx1KTDpWypeuXtbyNJ77UcAo3 vODBAoDmETWG2WozxLQHR7NHA3EjA37lgYzwrf3hPgyQs34rHMamGnIf3SC+UATZMZo4 JEfL54iUrQIDofUs6SGjlOKtOWJRWKdcNRVp69eZUuNw1PrlLtQdvOhszEpV2t8pjDn4 ri4+KLVkiVVrzwSql3U3RlpJLJNIs14UqXH+H4kd0mZjK8QpQQy8kLfRGnWlsRm6xPpi wrDw== X-Gm-Message-State: AOJu0YwRk0qWmRZYgGG7/nw9xRDjrSEIcymceK+QJIBvPk1DwKLLj9NH i/oCJU3RH9wez8zLsYc1ZG5iMiid+dkpn/PsfIK+XxKzjIb+pTn5iYflxAz79bKUM7sprm9nAiL XewEr X-Gm-Gg: ASbGncskMkzR7JS7gJvHKNaqbXrbLgr3hvZg8n4GCz6yl4ipKEDrYcoHOiFXcCK8/Eb Xj8wlyWU8ZR2vzQ4fXj+EWSiKUS68mVJLM5EVMy6nUK/PRHmu1YHX7FnLnS5F03AQPhaPqLM5g0 d6l071Auoj9z/VHxhst2yPKHB7BSq6q3pu/waCzzboYQrgyeyd5+APJsWqBc8UWGdoFRQU8i7z2 3XVvCybkJ/oH83/dTOJ6EsGcCGFVqX6JYHyhCrUNLH7DDK0Y6T6CxvBb34x5qhcvifbFF7ERY/r dmmjoZhpjhZCe8jUAw1ACm3ub1D0POw4Od96I3IlHwweWyC7Eo+cw8VNnawpRplKu1CRyf7WhTh Q735HhnECMDi3aPAUSJ4uCSb6iw8tX+MFyuAvRMZFRdWhNw2CNAey78eb7bHxkbtQ0VQ= X-Google-Smtp-Source: AGHT+IGxpzAdSg/1TZuDwhpwXOG7j2ZV2VQE2VwymcWZ+ZQfA+iK+dsm5l1ytzhOptA9Z9fy+i5ROg== X-Received: by 2002:a05:600c:6c4c:b0:46e:25f2:705c with SMTP id 5b1f17b1804b1-46fa29f13d4mr18025725e9.13.1759846305876; Tue, 07 Oct 2025 07:11:45 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 19/62] hw/arm/xlnx-versal: crl: refactor creation Date: Tue, 7 Oct 2025 15:10:39 +0100 Message-ID: <20251007141123.3239867-20-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::333; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x333.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, 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: 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: 1759846772332116600 From: Luc Michel Refactor the CRL device creation using the VersalMap structure. The connections to the RPU CPUs are temporarily removed and will be reintroduced with next refactoring commits. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-19-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 3 --- hw/arm/xlnx-versal.c | 36 +++++++++++++++++++----------------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 5a685aea6d4..d3ce13e69de 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -17,7 +17,6 @@ #include "hw/cpu/cluster.h" #include "hw/intc/arm_gicv3.h" #include "qom/object.h" -#include "hw/misc/xlnx-versal-crl.h" #include "net/can_emu.h" #include "target/arm/cpu.h" #include "hw/arm/xlnx-versal-version.h" @@ -71,8 +70,6 @@ struct Versal { CPUClusterState cluster; ARMCPU cpu[XLNX_VERSAL_NR_RCPUS]; } rpu; - - XlnxVersalCRL crl; } lpd; =20 struct { diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 81adf8d35b6..f5f98a3030d 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -42,6 +42,7 @@ #include "hw/misc/xlnx-versal-cfu.h" #include "hw/misc/xlnx-versal-cframe-reg.h" #include "hw/or-irq.h" +#include "hw/misc/xlnx-versal-crl.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -151,6 +152,8 @@ typedef struct VersalMap { uint32_t blktype_frames[7]; } cframe_cfg[15]; } cfu; + + VersalSimplePeriphMap crl; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { @@ -215,6 +218,8 @@ static const VersalMap VERSAL_MAP =3D { { { 38498, 3841, 15361, 13, 7, 3, 1 } }, }, }, + + .crl =3D { 0xff5e0000, 10 }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { @@ -1115,27 +1120,24 @@ static void versal_create_cfu(Versal *s, const stru= ct VersalCfuMap *map) sysbus_mmio_get_region(sbd, 0)); } =20 -static void versal_create_crl(Versal *s, qemu_irq *pic) +static inline void versal_create_crl(Versal *s) { - SysBusDevice *sbd; - int i; + const VersalMap *map; + const char *crl_class; + DeviceState *dev; =20 - object_initialize_child(OBJECT(s), "crl", &s->lpd.crl, - TYPE_XLNX_VERSAL_CRL); - sbd =3D SYS_BUS_DEVICE(&s->lpd.crl); + map =3D versal_get_map(s); =20 - for (i =3D 0; i < ARRAY_SIZE(s->lpd.rpu.cpu); i++) { - g_autofree gchar *name =3D g_strdup_printf("cpu_r5[%d]", i); + crl_class =3D TYPE_XLNX_VERSAL_CRL; + dev =3D qdev_new(crl_class); + object_property_add_child(OBJECT(s), "crl", OBJECT(dev)); =20 - object_property_set_link(OBJECT(&s->lpd.crl), - name, OBJECT(&s->lpd.rpu.cpu[i]), - &error_abort); - } + sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_abort); =20 - sysbus_realize(sbd, &error_fatal); - memory_region_add_subregion(&s->mr_ps, MM_CRL, - sysbus_mmio_get_region(sbd, 0)); - sysbus_connect_irq(sbd, 0, pic[VERSAL_CRL_IRQ]); + memory_region_add_subregion(&s->mr_ps, map->crl.addr, + sysbus_mmio_get_region(SYS_BUS_DEVICE(dev)= , 0)); + + versal_sysbus_connect_irq(s, SYS_BUS_DEVICE(dev), 0, map->crl.irq); } =20 /* This takes the board allocated linear DDR memory and creates aliases @@ -1338,8 +1340,8 @@ static void versal_realize(DeviceState *dev, Error **= errp) versal_create_trng(s, &map->trng); versal_create_rtc(s, &map->rtc); versal_create_cfu(s, &map->cfu); + versal_create_crl(s); =20 - versal_create_crl(s, pic); versal_map_ddr(s); versal_unimp(s); =20 --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846727; cv=none; d=zohomail.com; s=zohoarc; b=IJ6aTeRxGNdtduaAN14NrlvON9v+jai1xMMA3ll0Zl2NqKbyltYJBlETyHsstl1qIKvgcaVi984DR2W1M+S6OOgmsppAy2qlJVliaRGelsm3+pQaUwRW6dfbaObw7zkEqdYJODuDjwHV3KiEcah1N5F5W4YBEAQIQVPpE5VRc24= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846727; 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=YvaAiIpUTRX/gYF6Gfnj94PkiqKiJfkJbqMb6/0vpZg=; b=TYFT8J5CatYy2s9dJjGnN66dPcFBR7hefBOwbX8a2RKMI1KBiFd8paMqdjLewTZTEQk09QKIpVKEarLrmndWADcLD/W9a3YwimJVHDMOFkVGyFthb6pIpo+xI43PDjmzdCXBaeIypk37ghwBPtBmVn20AVa0MajgEe7RWDMZ8LI= 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 1759846726989419.10935152621164; Tue, 7 Oct 2025 07:18:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68QF-0005kh-W8; Tue, 07 Oct 2025 10:12:12 -0400 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 1v68QD-0005jM-R5 for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:10 -0400 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Pw-0002Ao-Sz for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:09 -0400 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-46e33b260b9so60036305e9.2 for ; Tue, 07 Oct 2025 07:11:50 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846307; x=1760451107; 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=YvaAiIpUTRX/gYF6Gfnj94PkiqKiJfkJbqMb6/0vpZg=; b=XCszyjYtlfBm3cwd96yxW2HCSU+PqJV6FklFlUB2RK4P8v0RC+/lOeCYRWLB/ffWlf txLHB7RZ59YHDs0WENuH/pPWi5kC4a0Y/jVhL5w9bDfrr2CheOT+ZnY7CqgYAY2nNutZ I1hterN39xGAOjuejYDszg7DXoibON5/Z5D9+Ku1rdzM9z0uJo30AEbxh082ph3kmxqj enlwoKAvwXH5OxcJjuCpydj/vVvTZd8883hjuzYfaYVXhojC2pIIsFJ+t7FAvAcduM94 tJruyvlqjiXZo2zO7Rxj2FWl5pTbreJVASjc5dx9DOUKnqHgkWAxLMqVU3kPxPpQbi2t B8NQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846307; x=1760451107; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YvaAiIpUTRX/gYF6Gfnj94PkiqKiJfkJbqMb6/0vpZg=; b=dHE4dn+sLxopnLi1/DRRwt7mmzG1eLAqtj56NGiezxqCa//rdl6X6M7bPWDHhHH/E3 iMtejjAWV6d4vM+smKA3HLBWDDi2pcvMNV9FHOcZoqr0c+J2/+loE7Khr/7M/Pbu4LoK YOS3CNVQIa9DPLd8pOpKNljiA2eJycqfM39j4s9nHTQo5Dd7dEgOhd/PKrS/tV2XVNpl oY+EpP5RVmJDYGRMPUevfusCeUwbqQ8wiXaLBysYF3FKqP7fQsla/YgfHyH0lZ2bduVT yq+wHnT7UfXXDlBUlkKU8e6N5JfxZ5Yv9SfC1vj03DG2bGxKUom7LBGJSgkn0dEzpjAq YwSw== X-Gm-Message-State: AOJu0YyxWjOPCQANt9uKscBjisR6vpTmd+OUZbF/xgBYSpdxMvt0/bVQ aMQDk7OqmfYrV3/QqAl4m4c1U/ynfyiQIf9kDqanTd04Do/wmp89q3uVeQOGNxhc64Ufv7Aj9Dk coQ17 X-Gm-Gg: ASbGncvLbbi1uinUFTOg6i09PDEkXPPlKogiUomZlsAkxi/tGycsVasx9R6EFzrW7PO LJlPAxVpafA/AiMB6ZA29bHwmgghVRuDWFtFtZGfvwXXJl1lejksblEaSiJeJi3hmtFqSy96yLJ g1Wi1lnCOTjhf4s+SWBcHvXRl1dTGP+KsgKbVA+E+DvAtthcmr+mufgGxZf4IoPSCbfk1Syo39b qDMwAtBM0wwOAehMoasVwuQ0A60vYnmsM4HYPSGBL3gb1IKJbiQRll4RqxAgZot1Ozn4K5s83pb 2jptbMkyasGRVpQYcyxrdC/iYUcI6YQU0URBx70VYN5393GU0RPHudZfciZX+syydYRdOLBYS2c nBAn2yUPzci/FcmwKk9XDKUlLRVg5B9bjbNgq90EuJhYMOHlFKn1+8t4ipJwrh9cIPLk= X-Google-Smtp-Source: AGHT+IG/6X7UbulqBZqSNBJpBZbETjkcCa5R6gBGoXoUn1CWIamGYybT+R+kf7YMFU4g8Pidp8qoZA== X-Received: by 2002:a05:600c:46d1:b0:46e:4c02:c2f9 with SMTP id 5b1f17b1804b1-46e71157990mr114133035e9.36.1759846306773; Tue, 07 Oct 2025 07:11:46 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 20/62] hw/arm/xlnx-versal-virt: virtio: refactor creation Date: Tue, 7 Oct 2025 15:10:40 +0100 Message-ID: <20251007141123.3239867-21-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::32b; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32b.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: 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: 1759846729509154100 From: Luc Michel Refactor the creation of virtio devices. Use the accessors provided by the Versal SoC to retrieve the reserved MMIO and IRQ space. Those are defined in the VersalMap structure. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-20-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 3 +++ hw/arm/xlnx-versal-virt.c | 31 ++++++++++++------------------- hw/arm/xlnx-versal.c | 26 ++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 19 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index d3ce13e69de..af47acb288f 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -102,6 +102,9 @@ void versal_bbram_attach_drive(Versal *s, BlockBackend = *blk); void versal_ospi_create_flash(Versal *s, int flash_idx, const char *flash_= mdl, BlockBackend *blk); =20 +qemu_irq versal_get_reserved_irq(Versal *s, int idx, int *dtb_idx); +hwaddr versal_get_reserved_mmio_addr(Versal *s); + int versal_get_num_can(VersalVersion version); int versal_get_num_sdhci(VersalVersion version); =20 diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index d96f3433929..b981d012558 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -271,37 +271,30 @@ static void create_virtio_regions(VersalVirt *s) int i; =20 for (i =3D 0; i < NUM_VIRTIO_TRANSPORT; i++) { - char *name =3D g_strdup_printf("virtio%d", i); - hwaddr base =3D MM_TOP_RSVD + i * virtio_mmio_size; - int irq =3D VERSAL_RSVD_IRQ_FIRST + i; + hwaddr base =3D versal_get_reserved_mmio_addr(&s->soc) + + i * virtio_mmio_size; + g_autofree char *node =3D g_strdup_printf("/virtio_mmio@%" PRIx64,= base); + int dtb_irq; MemoryRegion *mr; DeviceState *dev; qemu_irq pic_irq; =20 - pic_irq =3D qdev_get_gpio_in(DEVICE(&s->soc.fpd.apu.gic), irq); + pic_irq =3D versal_get_reserved_irq(&s->soc, i, &dtb_irq); dev =3D qdev_new("virtio-mmio"); - object_property_add_child(OBJECT(&s->soc), name, OBJECT(dev)); + object_property_add_child(OBJECT(s), "virtio-mmio[*]", OBJECT(dev)= ); sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal); sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic_irq); mr =3D sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0); memory_region_add_subregion(&s->soc.mr_ps, base, mr); - g_free(name); - } =20 - for (i =3D 0; i < NUM_VIRTIO_TRANSPORT; i++) { - hwaddr base =3D MM_TOP_RSVD + i * virtio_mmio_size; - int irq =3D VERSAL_RSVD_IRQ_FIRST + i; - char *name =3D g_strdup_printf("/virtio_mmio@%" PRIx64, base); - - qemu_fdt_add_subnode(s->fdt, name); - qemu_fdt_setprop(s->fdt, name, "dma-coherent", NULL, 0); - qemu_fdt_setprop_cells(s->fdt, name, "interrupts", - GIC_FDT_IRQ_TYPE_SPI, irq, + qemu_fdt_add_subnode(s->fdt, node); + qemu_fdt_setprop(s->fdt, node, "dma-coherent", NULL, 0); + qemu_fdt_setprop_cells(s->fdt, node, "interrupts", + GIC_FDT_IRQ_TYPE_SPI, dtb_irq, GIC_FDT_IRQ_FLAGS_EDGE_LO_HI); - qemu_fdt_setprop_sized_cells(s->fdt, name, "reg", + qemu_fdt_setprop_sized_cells(s->fdt, node, "reg", 2, base, 2, virtio_mmio_size); - qemu_fdt_setprop_string(s->fdt, name, "compatible", "virtio,mmio"); - g_free(name); + qemu_fdt_setprop_string(s->fdt, node, "compatible", "virtio,mmio"); } } =20 diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index f5f98a3030d..23aac709dc4 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -154,6 +154,13 @@ typedef struct VersalMap { } cfu; =20 VersalSimplePeriphMap crl; + + /* reserved MMIO/IRQ space that can safely be used for virtio devices = */ + struct VersalReserved { + uint64_t mmio_start; + int irq_start; + int irq_num; + } reserved; } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { @@ -220,6 +227,8 @@ static const VersalMap VERSAL_MAP =3D { }, =20 .crl =3D { 0xff5e0000, 10 }, + + .reserved =3D { 0xa0000000, 111, 8 }, }; =20 static const VersalMap *VERSION_TO_MAP[] =3D { @@ -1422,6 +1431,23 @@ void versal_ospi_create_flash(Versal *s, int flash_i= dx, const char *flash_mdl, flash_idx + 1, cs_line); } =20 +qemu_irq versal_get_reserved_irq(Versal *s, int idx, int *dtb_idx) +{ + const VersalMap *map =3D versal_get_map(s); + + g_assert(idx < map->reserved.irq_num); + + *dtb_idx =3D map->reserved.irq_start + idx; + return versal_get_irq(s, *dtb_idx); +} + +hwaddr versal_get_reserved_mmio_addr(Versal *s) +{ + const VersalMap *map =3D versal_get_map(s); + + return map->reserved.mmio_start; +} + int versal_get_num_can(VersalVersion version) { const VersalMap *map =3D VERSION_TO_MAP[version]; --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846803; cv=none; d=zohomail.com; s=zohoarc; b=HN1LBkUqy1cio8V88oT3yfktsXF/d+akAilTZIye9r9VObVgR0dc1Fnz7m1USKPYLvvDJIn9Rt7FbuHEjyDg707xQpvqeIC5FCM2yD6rkpCTv7sYI78ygEdDOzP1Q8vleof6Sbzxq7WY+BSFsixImNxyxqmBP8s9VVooTUEl1Ow= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846803; 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=B/Sr2KZknYT38HhacTrPmpAzdTzo5E39tfibSg4rn3I=; b=gxxHU9lh1Luy3O1k7NEyTxRxmMWDAZE60fShugK+d6LXdMav2oofUjIMT1cZXLwaleeyOGGK4GFwOEhQoQPFFCwGb061U16b6m/ZnExb48THR88TS4Xb7lVdxvofzFreJ/ge+NL/wa8S9iaU4DuL2wAvEL34q1pEwS5DervqApA= 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 1759846803537176.76211534752713; Tue, 7 Oct 2025 07:20:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68QM-0005mv-3n; Tue, 07 Oct 2025 10:12:18 -0400 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 1v68QF-0005kP-BW for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:11 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Py-0002BJ-0s for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:10 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-46b303f7469so40947185e9.1 for ; Tue, 07 Oct 2025 07:11:49 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846308; x=1760451108; 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=B/Sr2KZknYT38HhacTrPmpAzdTzo5E39tfibSg4rn3I=; b=Ol2wog+jpfQhLVWqdYFzOO2Ny6tWfI+QGTn5vEdAnhii4GOuRInO2mTgtAxESsGMH3 f9aEPSK3dPRHzzyFVIF8Qq+4DEu0mD19jsmh/+wKMUjxnsExVgaYJ93YVquvV/+nNE8n tFfQUEb5vRLnZf/Dp6QBX1B4q8/8txuVB/XY39xyahnDrLIygGdTMeG9ATccVlD70PfE FEpZgZHKL9O58To+kPAlI6AUm7z2Hk9JSqj+D3xLwQEwjJyg1FpPk5wbmtu0ZE2DYL2B 36pL56xOOjPXzlSxs9AhFSs7hePLgA5003vmIaCoyAz9sukxMEUcGh9N4zycXrf1Z4Pn uG0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846308; x=1760451108; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=B/Sr2KZknYT38HhacTrPmpAzdTzo5E39tfibSg4rn3I=; b=CU38mS/vQpap8rhr+H52W51BOGEmGbrHNaQ3c0HUj40NxNXba4ZCEgmF7RFvVwtEyt lg5A2zWkm5KSLbclBLHlpqUQ7I1wpX2DdLhNzvtFjuE7B+cteGxmyZHFCunnI34lIwUc Nb68oOnloBsjDtlDkutlnUO5oaI6Xo+snmFmJlim6tYwtB2H1lSpqanbM/H8qlYUQBhy yMcxz2CsucZSD1+Ql9dhuGozMQIcIC2wxb8+9MF0NFH9Rx2yKOTCrm4XRqtpH03aTGOy PRppQN7pC3wmXjFeJURuxPMs/CNq+XL6BB19csbiz5chSunUyHzC0N8ZDC3TnkITYm/J w+1w== X-Gm-Message-State: AOJu0YwsqUTm8y3ZcIRzaftYXyco7YnQ2Wm7mLH63+bs6veXPkyNoJBo cMHzp1juF1T4+2XRo35eCR0x7XMrbsJZwigbSxv9q3pHnJn6XppzSJCc+HLZXNHOH5c6edDY/8O 6LtqA X-Gm-Gg: ASbGncsCx5Dz+veD4FGmLF93xoUuQn/zc/HbsLxogoLCDbK9WBsTI7vWkErrX4egC/u ylv9OYNo5DoEpat4ridqmvxUkr4Dx3nnP0NFKjUcm9jx+0ipsIJh2lkUKzf0t+9WwsdyVIfcKyd l/ySQRqwhhl+WJbJ27pPpzfoZWCUZFbMu9FIxWzNB3fIdKohr2XtvML3VGcvLXQHXR0bb2jTXQ5 iH74mUaYskXQd4xwpwiPkNl1mJFycrD5e124IQg3IwGbYnyX3t6Ph8jUkP4X79ZMrguZWT2v7VS KJwRhd8VfFHFtM3p82Ngm7e1o3OnlfRz6pT30c+0tNIA4pury+G5hAXDeanQ97lsnzLIjgLcR5h BuninHDt1pVay7zaYOyQYfVTwvvt6N85A2M+TeVMiLGcc/6HauECrFyFu X-Google-Smtp-Source: AGHT+IF0Ks2hfEhjb4o0SbSRkQoJhaL+MqUFqGFpa1fciOMGX7rKGdKJPFcw4aMtgiaNFEUkyiH9Xg== X-Received: by 2002:a05:600c:1e20:b0:46e:34f9:993 with SMTP id 5b1f17b1804b1-46e71109f6dmr97343235e9.13.1759846307891; Tue, 07 Oct 2025 07:11:47 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 21/62] hw/arm/xlnx-versal: refactor CPU cluster creation Date: Tue, 7 Oct 2025 15:10:41 +0100 Message-ID: <20251007141123.3239867-22-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::332; envelope-from=peter.maydell@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: 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: 1759846807015116600 From: Luc Michel Refactor the CPU cluster creation using the VersalMap structure. There is no functional change. The clusters properties are now described in the VersalMap structure. For now only the APU is converted. The RPU will be taken care of by next commits. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-21-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 12 +- hw/arm/xlnx-versal-virt.c | 80 +------- hw/arm/xlnx-versal.c | 354 ++++++++++++++++++++++++++--------- 3 files changed, 276 insertions(+), 170 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index af47acb288f..9d9ccfb0014 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -15,7 +15,6 @@ =20 #include "hw/sysbus.h" #include "hw/cpu/cluster.h" -#include "hw/intc/arm_gicv3.h" #include "qom/object.h" #include "net/can_emu.h" #include "target/arm/cpu.h" @@ -43,15 +42,6 @@ struct Versal { SysBusDevice parent_obj; =20 /*< public >*/ - struct { - struct { - MemoryRegion mr; - CPUClusterState cluster; - ARMCPU cpu[XLNX_VERSAL_NR_ACPUS]; - GICv3State gic; - } apu; - } fpd; - MemoryRegion mr_ps; =20 struct { @@ -75,6 +65,7 @@ struct Versal { struct { uint32_t clk_25mhz; uint32_t clk_125mhz; + uint32_t gic; } phandle; =20 struct { @@ -96,6 +87,7 @@ static inline void versal_set_fdt(Versal *s, void *fdt) s->cfg.fdt =3D fdt; } =20 +DeviceState *versal_get_boot_cpu(Versal *s); void versal_sdhci_plug_card(Versal *s, int sd_idx, BlockBackend *blk); void versal_efuse_attach_drive(Versal *s, BlockBackend *blk); void versal_bbram_attach_drive(Versal *s, BlockBackend *blk); diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index b981d012558..27594f78c8f 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -38,7 +38,6 @@ struct VersalVirt { void *fdt; int fdt_size; struct { - uint32_t gic; uint32_t clk_125Mhz; uint32_t clk_25Mhz; } phandle; @@ -63,7 +62,6 @@ static void fdt_create(VersalVirt *s) } =20 /* Allocate all phandles. */ - s->phandle.gic =3D qemu_fdt_alloc_phandle(s->fdt); s->phandle.clk_25Mhz =3D qemu_fdt_alloc_phandle(s->fdt); s->phandle.clk_125Mhz =3D qemu_fdt_alloc_phandle(s->fdt); =20 @@ -72,9 +70,6 @@ static void fdt_create(VersalVirt *s) qemu_fdt_add_subnode(s->fdt, "/aliases"); =20 /* Header */ - qemu_fdt_setprop_cell(s->fdt, "/", "interrupt-parent", s->phandle.gic); - qemu_fdt_setprop_cell(s->fdt, "/", "#size-cells", 0x2); - qemu_fdt_setprop_cell(s->fdt, "/", "#address-cells", 0x2); qemu_fdt_setprop_string(s->fdt, "/", "model", mc->desc); qemu_fdt_setprop_string(s->fdt, "/", "compatible", "xlnx-versal-virt"); } @@ -90,67 +85,6 @@ static void fdt_add_clk_node(VersalVirt *s, const char *= name, qemu_fdt_setprop(s->fdt, name, "u-boot,dm-pre-reloc", NULL, 0); } =20 -static void fdt_add_cpu_nodes(VersalVirt *s, uint32_t psci_conduit) -{ - int i; - - qemu_fdt_add_subnode(s->fdt, "/cpus"); - qemu_fdt_setprop_cell(s->fdt, "/cpus", "#size-cells", 0x0); - qemu_fdt_setprop_cell(s->fdt, "/cpus", "#address-cells", 1); - - for (i =3D XLNX_VERSAL_NR_ACPUS - 1; i >=3D 0; i--) { - char *name =3D g_strdup_printf("/cpus/cpu@%d", i); - ARMCPU *armcpu =3D ARM_CPU(qemu_get_cpu(i)); - - qemu_fdt_add_subnode(s->fdt, name); - qemu_fdt_setprop_cell(s->fdt, name, "reg", - arm_cpu_mp_affinity(armcpu)); - if (psci_conduit !=3D QEMU_PSCI_CONDUIT_DISABLED) { - qemu_fdt_setprop_string(s->fdt, name, "enable-method", "psci"); - } - qemu_fdt_setprop_string(s->fdt, name, "device_type", "cpu"); - qemu_fdt_setprop_string(s->fdt, name, "compatible", - armcpu->dtb_compatible); - g_free(name); - } -} - -static void fdt_add_gic_nodes(VersalVirt *s) -{ - char *nodename; - - nodename =3D g_strdup_printf("/gic@%x", MM_GIC_APU_DIST_MAIN); - qemu_fdt_add_subnode(s->fdt, nodename); - qemu_fdt_setprop_cell(s->fdt, nodename, "phandle", s->phandle.gic); - qemu_fdt_setprop_cells(s->fdt, nodename, "interrupts", - GIC_FDT_IRQ_TYPE_PPI, VERSAL_GIC_MAINT_IRQ, - GIC_FDT_IRQ_FLAGS_LEVEL_HI); - qemu_fdt_setprop(s->fdt, nodename, "interrupt-controller", NULL, 0); - qemu_fdt_setprop_sized_cells(s->fdt, nodename, "reg", - 2, MM_GIC_APU_DIST_MAIN, - 2, MM_GIC_APU_DIST_MAIN_SIZE, - 2, MM_GIC_APU_REDIST_0, - 2, MM_GIC_APU_REDIST_0_SIZE); - qemu_fdt_setprop_cell(s->fdt, nodename, "#interrupt-cells", 3); - qemu_fdt_setprop_string(s->fdt, nodename, "compatible", "arm,gic-v3"); - g_free(nodename); -} - -static void fdt_add_timer_nodes(VersalVirt *s) -{ - const char compat[] =3D "arm,armv8-timer"; - uint32_t irqflags =3D GIC_FDT_IRQ_FLAGS_LEVEL_HI; - - qemu_fdt_add_subnode(s->fdt, "/timer"); - qemu_fdt_setprop_cells(s->fdt, "/timer", "interrupts", - GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_S_EL1_IRQ, irqflags, - GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_NS_EL1_IRQ, irqflags, - GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_VIRT_IRQ, irqflags, - GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_NS_EL2_IRQ, irqflags); - qemu_fdt_setprop(s->fdt, "/timer", "compatible", - compat, sizeof(compat)); -} - static void fdt_nop_memory_nodes(void *fdt, Error **errp) { Error *err =3D NULL; @@ -396,16 +330,14 @@ static void versal_virt_init(MachineState *machine) sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal); create_virtio_regions(s); =20 - fdt_add_gic_nodes(s); - fdt_add_timer_nodes(s); - fdt_add_cpu_nodes(s, psci_conduit); fdt_add_clk_node(s, "/old-clk125", 125000000, s->phandle.clk_125Mhz); fdt_add_clk_node(s, "/old-clk25", 25000000, s->phandle.clk_25Mhz); =20 - /* Make the APU cpu address space visible to virtio and other - * modules unaware of multiple address-spaces. */ - memory_region_add_subregion_overlap(get_system_memory(), - 0, &s->soc.fpd.apu.mr, 0); + /* + * Map the SoC address space onto system memory. This will allow virti= o and + * other modules unaware of multiple address-spaces to work. + */ + memory_region_add_subregion(get_system_memory(), 0, &s->soc.mr_ps); =20 /* Attach bbram backend, if given */ bbram_attach_drive(s); @@ -429,7 +361,7 @@ static void versal_virt_init(MachineState *machine) s->binfo.loader_start =3D 0x1000; s->binfo.dtb_limit =3D 0x1000000; } - arm_load_kernel(&s->soc.fpd.apu.cpu[0], machine, &s->binfo); + arm_load_kernel(ARM_CPU(versal_get_boot_cpu(&s->soc)), machine, &s->bi= nfo); =20 for (i =3D 0; i < XLNX_VERSAL_NUM_OSPI_FLASH; i++) { ObjectClass *flash_klass; diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 23aac709dc4..b4cad856dc2 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -43,6 +43,7 @@ #include "hw/misc/xlnx-versal-cframe-reg.h" #include "hw/or-irq.h" #include "hw/misc/xlnx-versal-crl.h" +#include "hw/intc/arm_gicv3_common.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -67,7 +68,34 @@ typedef struct VersalSimplePeriphMap { int irq; } VersalSimplePeriphMap; =20 +typedef struct VersalGicMap { + int version; + uint64_t dist; + uint64_t redist; + size_t num_irq; +} VersalGicMap; + +enum StartPoweredOffMode { + SPO_SECONDARIES, + SPO_ALL, +}; + +typedef struct VersalCpuClusterMap { + VersalGicMap gic; + + const char *name; + const char *cpu_model; + size_t num_core; + size_t num_cluster; + uint32_t qemu_cluster_id; + bool dtb_expose; + + enum StartPoweredOffMode start_powered_off; +} VersalCpuClusterMap; + typedef struct VersalMap { + VersalCpuClusterMap apu; + VersalSimplePeriphMap uart[2]; size_t num_uart; =20 @@ -164,6 +192,22 @@ typedef struct VersalMap { } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { + .apu =3D { + .name =3D "apu", + .cpu_model =3D ARM_CPU_TYPE_NAME("cortex-a72"), + .num_cluster =3D 1, + .num_core =3D 2, + .qemu_cluster_id =3D 0, + .start_powered_off =3D SPO_SECONDARIES, + .dtb_expose =3D true, + .gic =3D { + .version =3D 3, + .dist =3D 0xf9000000, + .redist =3D 0xf9080000, + .num_irq =3D 192, + }, + }, + .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, .num_uart =3D 2, @@ -294,11 +338,12 @@ static qemu_irq versal_get_irq(Versal *s, int irq_idx) { qemu_irq irq; bool ored; + DeviceState *gic; =20 ored =3D FIELD_EX32(irq_idx, VERSAL_IRQ, ORED); =20 - irq =3D qdev_get_gpio_in(DEVICE(&s->fpd.apu.gic), - FIELD_EX32(irq_idx, VERSAL_IRQ, IRQ)); + gic =3D DEVICE(versal_get_child_idx(s, "apu-gic", 0)); + irq =3D qdev_get_gpio_in(gic, FIELD_EX32(irq_idx, VERSAL_IRQ, IRQ)); =20 if (ored) { irq =3D versal_get_irq_or_gate_in(s, irq_idx, irq); @@ -375,107 +420,239 @@ static inline DeviceState *create_or_gate(Versal *s= , Object *parent, return or; } =20 -static void versal_create_apu_cpus(Versal *s) +static MemoryRegion *create_cpu_mr(Versal *s, DeviceState *cluster, + const VersalCpuClusterMap *map) { - int i; + MemoryRegion *mr, *root_alias; + char *name; =20 - object_initialize_child(OBJECT(s), "apu-cluster", &s->fpd.apu.cluster, - TYPE_CPU_CLUSTER); - qdev_prop_set_uint32(DEVICE(&s->fpd.apu.cluster), "cluster-id", 0); + mr =3D g_new(MemoryRegion, 1); + name =3D g_strdup_printf("%s-mr", map->name); + memory_region_init(mr, OBJECT(cluster), name, UINT64_MAX); + g_free(name); =20 - for (i =3D 0; i < ARRAY_SIZE(s->fpd.apu.cpu); i++) { - Object *obj; + root_alias =3D g_new(MemoryRegion, 1); + name =3D g_strdup_printf("ps-alias-for-%s", map->name); + memory_region_init_alias(root_alias, OBJECT(cluster), name, + &s->mr_ps, 0, UINT64_MAX); + g_free(name); + memory_region_add_subregion(mr, 0, root_alias); =20 - object_initialize_child(OBJECT(&s->fpd.apu.cluster), - "apu-cpu[*]", &s->fpd.apu.cpu[i], - XLNX_VERSAL_ACPU_TYPE); - obj =3D OBJECT(&s->fpd.apu.cpu[i]); - if (i) { - /* Secondary CPUs start in powered-down state */ - object_property_set_bool(obj, "start-powered-off", true, - &error_abort); - } - - object_property_set_int(obj, "core-count", ARRAY_SIZE(s->fpd.apu.c= pu), - &error_abort); - object_property_set_link(obj, "memory", OBJECT(&s->fpd.apu.mr), - &error_abort); - qdev_realize(DEVICE(obj), NULL, &error_fatal); - } - - qdev_realize(DEVICE(&s->fpd.apu.cluster), NULL, &error_fatal); + return mr; } =20 -static void versal_create_apu_gic(Versal *s, qemu_irq *pic) +static DeviceState *versal_create_gic(Versal *s, + const VersalCpuClusterMap *map, + MemoryRegion *mr, + size_t num_cpu) { - static const uint64_t addrs[] =3D { - MM_GIC_APU_DIST_MAIN, - MM_GIC_APU_REDIST_0 - }; - SysBusDevice *gicbusdev; - DeviceState *gicdev; + DeviceState *dev; + SysBusDevice *sbd; QList *redist_region_count; - int nr_apu_cpus =3D ARRAY_SIZE(s->fpd.apu.cpu); - int i; + g_autofree char *node =3D NULL; + g_autofree char *name =3D NULL; + const char compatible[] =3D "arm,gic-v3"; =20 - object_initialize_child(OBJECT(s), "apu-gic", &s->fpd.apu.gic, - gicv3_class_name()); - gicbusdev =3D SYS_BUS_DEVICE(&s->fpd.apu.gic); - gicdev =3D DEVICE(&s->fpd.apu.gic); - qdev_prop_set_uint32(gicdev, "revision", 3); - qdev_prop_set_uint32(gicdev, "num-cpu", nr_apu_cpus); - qdev_prop_set_uint32(gicdev, "num-irq", XLNX_VERSAL_NR_IRQS + 32); + dev =3D qdev_new(gicv3_class_name()); + name =3D g_strdup_printf("%s-gic[*]", map->name); + object_property_add_child(OBJECT(s), name, OBJECT(dev)); + sbd =3D SYS_BUS_DEVICE(dev); + qdev_prop_set_uint32(dev, "revision", 3); + qdev_prop_set_uint32(dev, "num-cpu", num_cpu); + qdev_prop_set_uint32(dev, "num-irq", map->gic.num_irq + 32); =20 redist_region_count =3D qlist_new(); - qlist_append_int(redist_region_count, nr_apu_cpus); - qdev_prop_set_array(gicdev, "redist-region-count", redist_region_count= ); + qlist_append_int(redist_region_count, num_cpu); + qdev_prop_set_array(dev, "redist-region-count", redist_region_count); =20 - qdev_prop_set_bit(gicdev, "has-security-extensions", true); + qdev_prop_set_bit(dev, "has-security-extensions", true); + object_property_set_link(OBJECT(dev), "sysmem", OBJECT(mr), &error_abo= rt); =20 - sysbus_realize(SYS_BUS_DEVICE(&s->fpd.apu.gic), &error_fatal); + sysbus_realize_and_unref(sbd, &error_fatal); =20 - for (i =3D 0; i < ARRAY_SIZE(addrs); i++) { - MemoryRegion *mr; + memory_region_add_subregion(mr, map->gic.dist, + sysbus_mmio_get_region(sbd, 0)); + memory_region_add_subregion(mr, map->gic.redist, + sysbus_mmio_get_region(sbd, 1)); =20 - mr =3D sysbus_mmio_get_region(gicbusdev, i); - memory_region_add_subregion(&s->fpd.apu.mr, addrs[i], mr); + if (map->dtb_expose) { + node =3D versal_fdt_add_subnode(s, "/gic", map->gic.dist, compatib= le, + sizeof(compatible)); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "phandle", s->phandle.gic); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "#interrupt-cells", 3); + qemu_fdt_setprop_sized_cells(s->cfg.fdt, node, "reg", + 2, map->gic.dist, + 2, 0x10000, + 2, map->gic.redist, + 2, GICV3_REDIST_SIZE * num_cpu); + qemu_fdt_setprop_cells(s->cfg.fdt, node, "interrupts", + GIC_FDT_IRQ_TYPE_PPI, VERSAL_GIC_MAINT_IRQ, + GIC_FDT_IRQ_FLAGS_LEVEL_HI); + qemu_fdt_setprop(s->cfg.fdt, node, "interrupt-controller", NULL, 0= ); } =20 - for (i =3D 0; i < nr_apu_cpus; i++) { - DeviceState *cpudev =3D DEVICE(&s->fpd.apu.cpu[i]); - int ppibase =3D XLNX_VERSAL_NR_IRQS + i * GIC_INTERNAL + GIC_NR_SG= IS; - qemu_irq maint_irq; - int ti; - /* Mapping from the output timer irq lines from the CPU to the - * GIC PPI inputs. - */ - const int timer_irq[] =3D { - [GTIMER_PHYS] =3D VERSAL_TIMER_NS_EL1_IRQ, - [GTIMER_VIRT] =3D VERSAL_TIMER_VIRT_IRQ, - [GTIMER_HYP] =3D VERSAL_TIMER_NS_EL2_IRQ, - [GTIMER_SEC] =3D VERSAL_TIMER_S_EL1_IRQ, - }; + return dev; +} =20 +static void connect_gic_to_cpu(const VersalCpuClusterMap *map, + DeviceState *gic, DeviceState *cpu, size_t = idx, + size_t num_cpu) +{ + SysBusDevice *sbd =3D SYS_BUS_DEVICE(gic); + int ppibase =3D map->gic.num_irq + idx * GIC_INTERNAL + GIC_NR_SGIS; + int ti; + bool has_gtimer; + /* + * Mapping from the output timer irq lines from the CPU to the + * GIC PPI inputs. + */ + const int timer_irq[] =3D { + [GTIMER_PHYS] =3D VERSAL_TIMER_NS_EL1_IRQ, + [GTIMER_VIRT] =3D VERSAL_TIMER_VIRT_IRQ, + [GTIMER_HYP] =3D VERSAL_TIMER_NS_EL2_IRQ, + [GTIMER_SEC] =3D VERSAL_TIMER_S_EL1_IRQ, + }; + + has_gtimer =3D arm_feature(&ARM_CPU(cpu)->env, ARM_FEATURE_GENERIC_TIM= ER); + + if (has_gtimer) { for (ti =3D 0; ti < ARRAY_SIZE(timer_irq); ti++) { - qdev_connect_gpio_out(cpudev, ti, - qdev_get_gpio_in(gicdev, + qdev_connect_gpio_out(cpu, ti, + qdev_get_gpio_in(gic, ppibase + timer_irq[ti]= )); } - maint_irq =3D qdev_get_gpio_in(gicdev, - ppibase + VERSAL_GIC_MAINT_IRQ); - qdev_connect_gpio_out_named(cpudev, "gicv3-maintenance-interrupt", - 0, maint_irq); - sysbus_connect_irq(gicbusdev, i, qdev_get_gpio_in(cpudev, ARM_CPU_= IRQ)); - sysbus_connect_irq(gicbusdev, i + nr_apu_cpus, - qdev_get_gpio_in(cpudev, ARM_CPU_FIQ)); - sysbus_connect_irq(gicbusdev, i + 2 * nr_apu_cpus, - qdev_get_gpio_in(cpudev, ARM_CPU_VIRQ)); - sysbus_connect_irq(gicbusdev, i + 3 * nr_apu_cpus, - qdev_get_gpio_in(cpudev, ARM_CPU_VFIQ)); } =20 - for (i =3D 0; i < XLNX_VERSAL_NR_IRQS; i++) { - pic[i] =3D qdev_get_gpio_in(gicdev, i); + if (map->gic.version =3D=3D 3) { + qemu_irq maint_irq; + + maint_irq =3D qdev_get_gpio_in(gic, + ppibase + VERSAL_GIC_MAINT_IRQ); + qdev_connect_gpio_out_named(cpu, "gicv3-maintenance-interrupt", + 0, maint_irq); + } + + sysbus_connect_irq(sbd, idx, qdev_get_gpio_in(cpu, ARM_CPU_IRQ)); + sysbus_connect_irq(sbd, idx + num_cpu, + qdev_get_gpio_in(cpu, ARM_CPU_FIQ)); + sysbus_connect_irq(sbd, idx + 2 * num_cpu, + qdev_get_gpio_in(cpu, ARM_CPU_VIRQ)); + sysbus_connect_irq(sbd, idx + 3 * num_cpu, + qdev_get_gpio_in(cpu, ARM_CPU_VFIQ)); +} + +static inline void versal_create_and_connect_gic(Versal *s, + const VersalCpuClusterMap= *map, + MemoryRegion *mr, + DeviceState **cpus, + size_t num_cpu) +{ + DeviceState *gic; + size_t i; + + gic =3D versal_create_gic(s, map, mr, num_cpu); + + for (i =3D 0; i < num_cpu; i++) { + connect_gic_to_cpu(map, gic, cpus[i], i, num_cpu); + } +} + +static DeviceState *versal_create_cpu(Versal *s, + const VersalCpuClusterMap *map, + DeviceState *qemu_cluster, + MemoryRegion *cpu_mr, + size_t cluster_idx, + size_t core_idx) +{ + DeviceState *cpu =3D qdev_new(map->cpu_model); + ARMCPU *arm_cpu =3D ARM_CPU(cpu); + Object *obj =3D OBJECT(cpu); + bool start_off; + size_t idx =3D cluster_idx * map->num_core + core_idx; + g_autofree char *name; + g_autofree char *node =3D NULL; + + start_off =3D map->start_powered_off =3D=3D SPO_ALL + || ((map->start_powered_off =3D=3D SPO_SECONDARIES) + && (cluster_idx || core_idx)); + + name =3D g_strdup_printf("%s[*]", map->name); + object_property_add_child(OBJECT(qemu_cluster), name, obj); + object_property_set_bool(obj, "start-powered-off", start_off, + &error_abort); + qdev_prop_set_int32(cpu, "core-count", map->num_core); + object_property_set_link(obj, "memory", OBJECT(cpu_mr), &error_abort); + qdev_realize_and_unref(cpu, NULL, &error_fatal); + + if (!map->dtb_expose) { + return cpu; + } + + node =3D versal_fdt_add_subnode(s, "/cpus/cpu", idx, + arm_cpu->dtb_compatible, + strlen(arm_cpu->dtb_compatible) + 1); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "reg", + arm_cpu_mp_affinity(arm_cpu) & ARM64_AFFINITY_MA= SK); + qemu_fdt_setprop_string(s->cfg.fdt, node, "device_type", "cpu"); + qemu_fdt_setprop_string(s->cfg.fdt, node, "enable-method", "psci"); + + return cpu; +} + +static void versal_create_cpu_cluster(Versal *s, const VersalCpuClusterMap= *map) +{ + size_t i, j; + DeviceState *cluster; + MemoryRegion *mr; + char *name; + g_autofree DeviceState **cpus; + const char compatible[] =3D "arm,armv8-timer"; + bool has_gtimer; + + cluster =3D qdev_new(TYPE_CPU_CLUSTER); + name =3D g_strdup_printf("%s-cluster", map->name); + object_property_add_child(OBJECT(s), name, OBJECT(cluster)); + g_free(name); + qdev_prop_set_uint32(cluster, "cluster-id", map->qemu_cluster_id); + + mr =3D create_cpu_mr(s, cluster, map); + + cpus =3D g_new(DeviceState *, map->num_cluster * map->num_core); + + if (map->dtb_expose) { + qemu_fdt_add_subnode(s->cfg.fdt, "/cpus"); + qemu_fdt_setprop_cell(s->cfg.fdt, "/cpus", "#size-cells", 0); + qemu_fdt_setprop_cell(s->cfg.fdt, "/cpus", "#address-cells", 1); + } + + for (i =3D 0; i < map->num_cluster; i++) { + for (j =3D 0; j < map->num_core; j++) { + DeviceState *cpu =3D versal_create_cpu(s, map, cluster, mr, i,= j); + + cpus[i * map->num_core + j] =3D cpu; + } + + } + + qdev_realize_and_unref(cluster, NULL, &error_fatal); + + versal_create_and_connect_gic(s, map, mr, cpus, + map->num_cluster * map->num_core); + + has_gtimer =3D arm_feature(&ARM_CPU(cpus[0])->env, ARM_FEATURE_GENERIC= _TIMER); + if (map->dtb_expose && has_gtimer) { + qemu_fdt_add_subnode(s->cfg.fdt, "/timer"); + qemu_fdt_setprop_cells(s->cfg.fdt, "/timer", "interrupts", + GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_S_EL1_IR= Q, + GIC_FDT_IRQ_FLAGS_LEVEL_HI, + GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_NS_EL1_I= RQ, + GIC_FDT_IRQ_FLAGS_LEVEL_HI, + GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_VIRT_IRQ, + GIC_FDT_IRQ_FLAGS_LEVEL_HI, + GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_NS_EL2_I= RQ, + GIC_FDT_IRQ_FLAGS_LEVEL_HI); + qemu_fdt_setprop(s->cfg.fdt, "/timer", "compatible", + compatible, sizeof(compatible)); } } =20 @@ -1286,7 +1463,6 @@ static void versal_realize(DeviceState *dev, Error **= errp) { Versal *s =3D XLNX_VERSAL_BASE(dev); DeviceState *slcr, *ospi; - qemu_irq pic[XLNX_VERSAL_NR_IRQS]; Object *container; const VersalMap *map =3D versal_get_map(s); size_t i; @@ -1295,14 +1471,17 @@ static void versal_realize(DeviceState *dev, Error = **errp) =20 s->phandle.clk_25mhz =3D fdt_add_clk_node(s, "/clk25", 25 * 1000 * 100= 0); s->phandle.clk_125mhz =3D fdt_add_clk_node(s, "/clk125", 125 * 1000 * = 1000); - - versal_create_apu_cpus(s); - versal_create_apu_gic(s, pic); + s->phandle.gic =3D qemu_fdt_alloc_phandle(s->cfg.fdt); =20 container =3D object_new(TYPE_CONTAINER); object_property_add_child(OBJECT(s), "irq-or-gates", container); object_unref(container); =20 + qemu_fdt_setprop_cell(s->cfg.fdt, "/", "interrupt-parent", s->phandle.= gic); + qemu_fdt_setprop_cell(s->cfg.fdt, "/", "#size-cells", 0x2); + qemu_fdt_setprop_cell(s->cfg.fdt, "/", "#address-cells", 0x2); + + versal_create_cpu_cluster(s, &map->apu); versal_create_rpu_cpus(s); =20 for (i =3D 0; i < map->num_uart; i++) { @@ -1359,11 +1538,15 @@ static void versal_realize(DeviceState *dev, Error = **errp) MM_OCM_SIZE, &error_fatal); =20 memory_region_add_subregion_overlap(&s->mr_ps, MM_OCM, &s->lpd.mr_ocm,= 0); - memory_region_add_subregion_overlap(&s->fpd.apu.mr, 0, &s->mr_ps, 0); memory_region_add_subregion_overlap(&s->lpd.rpu.mr, 0, &s->lpd.rpu.mr_ps_alias, 0); } =20 +DeviceState *versal_get_boot_cpu(Versal *s) +{ + return DEVICE(versal_get_child_idx(s, "apu-cluster/apu", 0)); +} + void versal_sdhci_plug_card(Versal *s, int sd_idx, BlockBackend *blk) { DeviceState *sdhci, *card; @@ -1467,7 +1650,6 @@ static void versal_base_init(Object *obj) Versal *s =3D XLNX_VERSAL_BASE(obj); size_t i, num_can; =20 - memory_region_init(&s->fpd.apu.mr, obj, "mr-apu", UINT64_MAX); memory_region_init(&s->lpd.rpu.mr, obj, "mr-rpu", UINT64_MAX); memory_region_init(&s->mr_ps, obj, "mr-ps-switch", UINT64_MAX); memory_region_init_alias(&s->lpd.rpu.mr_ps_alias, OBJECT(s), --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847261; cv=none; d=zohomail.com; s=zohoarc; b=eNWtb/bXeyTWm86nPw9zeo27BtaikwoeJ61ofCeywHiIwxs0UHvD5Zv6WNnYwDzkFR7Vay+/2iRoabxFFckO8MkGs8KkEH5l7G+9JyZqw/xAyRXs5QER4zhbvaK1o6P6FJHCrJYx5NMkayufOPicsj4vsX2uKjgyfiDPnLCzPsA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847261; 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=oqOSdIyoTRGF9j3ueRLe762WG9LD45dvNpAF+YWxofo=; b=M5V/TZe+OZH7BleRQsei9+HLdSDxuMDo9ktrAAgBbXJGUMFRle1b5TRmUJE1NjpXVRiZm0x2L2Z5CJbRnTvSsZZ70E0ksvG8kpZEaMCaQh0Sbwb8JYqxpLwcbTOwJgdw0OJd778gJIXn+a2K3esTU+I7laAl0veRDm9YIO/NxV8= 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 1759847261418439.77163816803295; Tue, 7 Oct 2025 07:27:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Qo-0005wh-2l; Tue, 07 Oct 2025 10:12:46 -0400 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 1v68QH-0005kv-MM for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:15 -0400 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Q1-0002BY-Gu for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:13 -0400 Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-46e33b260b9so60036715e9.2 for ; Tue, 07 Oct 2025 07:11:51 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846309; x=1760451109; 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=oqOSdIyoTRGF9j3ueRLe762WG9LD45dvNpAF+YWxofo=; b=qRnMYsZ3LeLv0LI3xPdDXh59erDCw6HEzCOqOCwBRFSh4TdE8iOMDj5AODunvZbRuq M93clhskN+6qBzaa+3IQqx0J9KlOXK2nbJwQbwbKGS9RRTXCI9yE54BWHvL/d7Lt2n93 1nkCcavatSrr714eQt1ZQR20XJw11thDguxxSiv99lSE6gpMzh5oEQSNMbZabMLVgAT2 FNFcqoTj2fZLbvJEGybUJP9MMLXK43BGtqr1kRsisWIGa0SoYdXl8I0PyKT8opXbGMH1 bP6CkaLJ3DtNYgxpuoHKQyCR+xet7zBBW6JJD8Vj+hCjrAK3zwdrB3NoU3hrYxJ1OZ8S 4DLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846309; x=1760451109; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oqOSdIyoTRGF9j3ueRLe762WG9LD45dvNpAF+YWxofo=; b=rAvdCLqMEjNnJiWDXbW+6s+ooVZzMi0+c8MxSyKKhLhPAHL0kgpnAlxMep92cIfdPL RNwy0WM8vTT/H6kY8IYZxUzeofCL4mKDKM125YLRTPlzYoB9DAgsiflgCjv7ZhwiuIBB mhid5H0bYEsdh8gHrVJxC5wRt/BYiiKp9BzasUkamDbl8Xj250EpgOfg7aew+rGUg6CE MRBMCNaTv93V5qPLGlguwD1t9q5x9xo8+ohqr+GwQP6xAjquPx2QZhICBwXhLTaYwWm/ zOe3O4/YvzhcKhOs5HpCHNrxQUaYrl9fY7WEB/eaalWrUIeQFSLeAc0VmmVDsdAiwlD5 AHSQ== X-Gm-Message-State: AOJu0Yx9luWpac1I/m6Z216XSz3qzs9gThrvV9QKsSK2sEfLEEoDpD6I cqDdXI6rJlcjKHrWOkQugfHkYBhqwM/cBr/S9NWFh0VygXq9hmy48988XW/1bgNnI32EKBPPdzi UdNbW X-Gm-Gg: ASbGncskduiA09DLHed3hR8iTxIUQRLNVm1a+z7BOvA/bG9l8poDSXO9M72zhEVI+yN uby0O48HDa0Bvj7EBgiOz5X27GGTAPDuFvvOQVdi5jD4bNiTQdzUrudG7VY6tGy1hVb2FAxq0ui ZXpGY4khaqLLJbwrxD9T8qHkD3CYG0Kh5vqUlEo9f42kOwcRHmnZbBQ0z3eylrgI0x5AzAvd7Jz b04rvVR0XkqWquxkC/4uvAyk8ik2eYLUTqqYDHguXq1n8LzQahpZpRySiNVUSUYv+G8LQGZ++Xl rBKa84z+6420mxVK9e3pBKt1XsCuYmwjZkkRT/ghaDhmOg94op51zkbTYMTYR/SYssuo+eKs8BU rR+1tYwkdAvqIZB1FhETz05O/NV0CXT5099Aua+Q8ouqdlm1smNyNSkP9PIzoyht4dWY= X-Google-Smtp-Source: AGHT+IGn/KPI4GtJ1KNNumN9f0Ub+rvsM9CAOeLB/Tnu9MpIpWKjEIXIIt9/oqSFy4SmTJJFQVhh+Q== X-Received: by 2002:a05:600c:609b:b0:45b:7be1:be1f with SMTP id 5b1f17b1804b1-46e711469b0mr100051475e9.32.1759846308898; Tue, 07 Oct 2025 07:11:48 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 22/62] hw/arm/xlnx-versal: add the mp_affinity property to the CPU mapping Date: Tue, 7 Oct 2025 15:10:42 +0100 Message-ID: <20251007141123.3239867-23-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::336; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x336.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: 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: 1759847264804116600 From: Luc Michel Add a way to configure the MP affinity value of the CPUs given their core and cluster IDs. For the Versal APU CPUs, the MP affinity value is given by the core ID in Aff0. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-22-luc.michel@amd.com Signed-off-by: Peter Maydell --- hw/arm/xlnx-versal.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index b4cad856dc2..ccb78fadd7f 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -90,6 +90,12 @@ typedef struct VersalCpuClusterMap { uint32_t qemu_cluster_id; bool dtb_expose; =20 + struct { + uint64_t base; + uint64_t core_shift; + uint64_t cluster_shift; + } mp_affinity; + enum StartPoweredOffMode start_powered_off; } VersalCpuClusterMap; =20 @@ -198,6 +204,10 @@ static const VersalMap VERSAL_MAP =3D { .num_cluster =3D 1, .num_core =3D 2, .qemu_cluster_id =3D 0, + .mp_affinity =3D { + .core_shift =3D ARM_AFF0_SHIFT, + .cluster_shift =3D ARM_AFF1_SHIFT, + }, .start_powered_off =3D SPO_SECONDARIES, .dtb_expose =3D true, .gic =3D { @@ -567,11 +577,16 @@ static DeviceState *versal_create_cpu(Versal *s, DeviceState *cpu =3D qdev_new(map->cpu_model); ARMCPU *arm_cpu =3D ARM_CPU(cpu); Object *obj =3D OBJECT(cpu); + uint64_t affinity; bool start_off; size_t idx =3D cluster_idx * map->num_core + core_idx; g_autofree char *name; g_autofree char *node =3D NULL; =20 + affinity =3D map->mp_affinity.base; + affinity |=3D (cluster_idx & 0xff) << map->mp_affinity.cluster_shift; + affinity |=3D (core_idx & 0xff) << map->mp_affinity.core_shift; + start_off =3D map->start_powered_off =3D=3D SPO_ALL || ((map->start_powered_off =3D=3D SPO_SECONDARIES) && (cluster_idx || core_idx)); @@ -580,6 +595,7 @@ static DeviceState *versal_create_cpu(Versal *s, object_property_add_child(OBJECT(qemu_cluster), name, obj); object_property_set_bool(obj, "start-powered-off", start_off, &error_abort); + qdev_prop_set_uint64(cpu, "mp-affinity", affinity); qdev_prop_set_int32(cpu, "core-count", map->num_core); object_property_set_link(obj, "memory", OBJECT(cpu_mr), &error_abort); qdev_realize_and_unref(cpu, NULL, &error_fatal); --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846422; cv=none; d=zohomail.com; s=zohoarc; b=evNHvwGTT2JN+XQevZbHRuISMO3fr/0VqtoFhhvkJN/4rkUXGRlAFNhXJia8Nu1/5SCkovXOqC/vMOLF9e4wIDwoxpyyssDqmhjfiOs3ISKkqXsXDWRhn1IqMffQaIhA/QooHmfhzEdDTbknj6G2U8FHQuO97SQE4c3ufCF+QTc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846422; 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=1Jd0jT3nIxt2CYcjtDILkFxdvizj09Viqz+9IpRV+fI=; b=VZSiHuKEjAr55vOh6g8j8KZFmHr9PNKQnH4xmCbTC3olgJ34ZgJYZzLZyO01RGTTAJZsp56Ek80C+ATL9A2ufEL+6U/+PF68m0Q2Q8Y7wWYPZC73ioBHMqoNtyGqNVnN1JEIkdjxd/rR998mEi2h0AAhh1A6f3S4ngAV7IPbgrY= 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 1759846422052806.9379402585339; Tue, 7 Oct 2025 07:13:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68QM-0005nH-5U; Tue, 07 Oct 2025 10:12:18 -0400 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 1v68QE-0005jy-FW for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:10 -0400 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 1v68Q1-0002Bp-44 for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:09 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-46e42fa08e4so59801225e9.3 for ; Tue, 07 Oct 2025 07:11:51 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846310; x=1760451110; 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=1Jd0jT3nIxt2CYcjtDILkFxdvizj09Viqz+9IpRV+fI=; b=Uh5qpF6rJbWVpmbFCb4zBOgenXegqXHXZUnBluGz1dkzpqCgAe9i/fE/ezPXXR2iYu L9zYIzfPsoKAm1I9VUqt5cQVxZoo9LpCL5Gl1eWRomKdBuSJdFc2+KJYViZNnvSy7prP /3/60jWxI/8eCu6C4QwEMmhAV4XjcNxSr+orAUVbH7sfJNJStcWOohYrnP++j0Y+GwOe sPTslC0e3L1mclLlW61ue91oicBfMyCQWVNNOwOHG/3qn4WdhPvr7cypkxMLKG9bpq7L YsPM2K6mmsJo0F78f0l/M0vowrGwUG/ZXyWLPSU/HKyMRXKDuwCO4BRWIn3nA0MZeW9R 9uOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846310; x=1760451110; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1Jd0jT3nIxt2CYcjtDILkFxdvizj09Viqz+9IpRV+fI=; b=YAa1eIDOUwzZ8NYx3IHG67dcEPP3qWlV2MZ2u1TzKFMzfO8QpIU1MmWFi88h+3tJWr DbborRdPZRia34FRTH29/8SblSNGksPmcMMKabscexV6j+B4tsYIu23ZfAXvz2sSOkEV X7fAE/HtgpyzLObu4+WqpA20gI+t6q0VJ1ByXjMjhe6a46bdhIt6t1b4ZxYhqHAtTQL7 HDVe5I/ql0ZuHX6V/o1vshiFv+/jvtejoNl6DOXa/kJiNifvgRh1HvxMCcuxHgjgnZUh alskvR1u4FD2TF7MunFDOxu7EU1cvqWe3bFs4cODNSvW30Rmxb/j+apHgzw5h1O8iM4P GWCQ== X-Gm-Message-State: AOJu0YzPBaSdsyR2Wnz9AI58xkbGyersT+euDgGAfVHDDlCRcmdGut80 ACQy/78bQ564h4VqRHf516Kj2tNRlJc9asC7N/3fHGVmvvQuFJWu9IKwRm+MHqMZ/aOaTZ3qxlR usuAn X-Gm-Gg: ASbGncvLF2l/t97bIbPnlOYcAkcEQZoHl4Gwjmf3K20ACu2x//n5s2WNgdRoG0co2si 21t+gh4cG5km5VbsNlqA5BmQ1hHvRH4+VWPDNlwm8HVXpQRq2hTAAFIyudrm7u2ME0GGRI37c63 dGTRmIxuK/iIcQ9+vwqhQ2+ASrfFxOFGXJIhpOn4rRIJv6xMeGNVmpfO080fKDbVPDWVzp8BoV9 bK+NcyYFe4dJNdkQyVDv8iUhIkl+pPCS9pU+Tnvi/qDGA9pKQRbgDKaltR6+Sys/iD0ohLc6MoK Hxsz13eE39+kESOoHBRlC86VIV+sD4QnBFgyDz2x4+2jlx2tMkmUfCtJK8fBe24kqkfV8tVbFOf ZwHlWCGdPol+ahJWrnEuZVwSnq65Z8emgBQYTTvyqfupWE7NV1frzbrz1R8jJ7SZIl/8= X-Google-Smtp-Source: AGHT+IGB65rO96F6tCRS3n6MDiCRL5/AuaAIHuWmD1JovJ6FiHR210RwKifZr2/hwmNZ4dZmSU7x9g== X-Received: by 2002:a05:600c:450e:b0:46e:35eb:43a with SMTP id 5b1f17b1804b1-46e7110c336mr122128425e9.15.1759846309771; Tue, 07 Oct 2025 07:11:49 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 23/62] hw/arm/xlnx-versal: instantiate the GIC ITS in the APU Date: Tue, 7 Oct 2025 15:10:43 +0100 Message-ID: <20251007141123.3239867-24-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::331; envelope-from=peter.maydell@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: 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: 1759846425076154100 From: Luc Michel Add the instance of the GIC ITS in the APU. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-23-luc.michel@amd.com Signed-off-by: Peter Maydell --- hw/arm/xlnx-versal.c | 50 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index ccb78fadd7f..e03411bc212 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -44,6 +44,7 @@ #include "hw/or-irq.h" #include "hw/misc/xlnx-versal-crl.h" #include "hw/intc/arm_gicv3_common.h" +#include "hw/intc/arm_gicv3_its_common.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -72,7 +73,9 @@ typedef struct VersalGicMap { int version; uint64_t dist; uint64_t redist; + uint64_t its; size_t num_irq; + bool has_its; } VersalGicMap; =20 enum StartPoweredOffMode { @@ -215,6 +218,8 @@ static const VersalMap VERSAL_MAP =3D { .dist =3D 0xf9000000, .redist =3D 0xf9080000, .num_irq =3D 192, + .has_its =3D true, + .its =3D 0xf9020000, }, }, =20 @@ -451,6 +456,48 @@ static MemoryRegion *create_cpu_mr(Versal *s, DeviceSt= ate *cluster, return mr; } =20 +static void versal_create_gic_its(Versal *s, + const VersalCpuClusterMap *map, + DeviceState *gic, + MemoryRegion *mr, + char *gic_node) +{ + DeviceState *dev; + SysBusDevice *sbd; + g_autofree char *node_pat =3D NULL, *node =3D NULL; + const char compatible[] =3D "arm,gic-v3-its"; + + if (!map->gic.has_its) { + return; + } + + dev =3D qdev_new(TYPE_ARM_GICV3_ITS); + sbd =3D SYS_BUS_DEVICE(dev); + + object_property_add_child(OBJECT(gic), "its", OBJECT(dev)); + object_property_set_link(OBJECT(dev), "parent-gicv3", OBJECT(gic), + &error_abort); + + sysbus_realize_and_unref(sbd, &error_abort); + + memory_region_add_subregion(mr, map->gic.its, + sysbus_mmio_get_region(sbd, 0)); + + if (!map->dtb_expose) { + return; + } + + qemu_fdt_setprop(s->cfg.fdt, gic_node, "ranges", NULL, 0); + qemu_fdt_setprop_cell(s->cfg.fdt, gic_node, "#address-cells", 2); + qemu_fdt_setprop_cell(s->cfg.fdt, gic_node, "#size-cells", 2); + + node_pat =3D g_strdup_printf("%s/its", gic_node); + node =3D versal_fdt_add_simple_subnode(s, node_pat, map->gic.its, 0x20= 000, + compatible, sizeof(compatible)); + qemu_fdt_setprop(s->cfg.fdt, node, "msi-controller", NULL, 0); + qemu_fdt_setprop_cell(s->cfg.fdt, node, "#msi-cells", 1); +} + static DeviceState *versal_create_gic(Versal *s, const VersalCpuClusterMap *map, MemoryRegion *mr, @@ -476,6 +523,7 @@ static DeviceState *versal_create_gic(Versal *s, qdev_prop_set_array(dev, "redist-region-count", redist_region_count); =20 qdev_prop_set_bit(dev, "has-security-extensions", true); + qdev_prop_set_bit(dev, "has-lpi", map->gic.has_its); object_property_set_link(OBJECT(dev), "sysmem", OBJECT(mr), &error_abo= rt); =20 sysbus_realize_and_unref(sbd, &error_fatal); @@ -501,6 +549,8 @@ static DeviceState *versal_create_gic(Versal *s, qemu_fdt_setprop(s->cfg.fdt, node, "interrupt-controller", NULL, 0= ); } =20 + versal_create_gic_its(s, map, dev, mr, node); + return dev; } =20 --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846806; cv=none; d=zohomail.com; s=zohoarc; b=TCmk/YsYJ0dHCAuDeVkb06LPkJg/qCglvRex/mwjuQJHeNZpYInlOJduoMBWU2MlaIYFJQlKCxqy3OC3a64kfODhVOfk2w+6uA4GbeAPGJ5Dk7y+ydo12peDs72Pe5WOOGpHcCtn4CKB16nQoElIZELafd4QAc2CkDxrPPmjmSs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846806; 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=MvgTlUzfuW2bItObmTgfE47aXUveAlTerazWNbrwPac=; b=KRoJVQ+rvAKzmHN7hm8sPtSRpavJ82vuwhivbPoBYGTW/hfM4mXqIBsFrau0D658w2/Jql24ABc6ldb1MCs9JkvPEdHX+JN4MYdN13KZu/VeEhLghQBDjH4b3+EzNyd45Lsw25tZfZEPKEse6kLkh0oyT8jYjt2m2oIBptOjhng= 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 1759846806215777.2826306207799; Tue, 7 Oct 2025 07:20:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Qk-0005qs-VL; Tue, 07 Oct 2025 10:12:43 -0400 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 1v68QK-0005mE-Hn for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:17 -0400 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 1v68Q6-0002CT-9e for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:15 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-46e4ad36541so68183165e9.0 for ; Tue, 07 Oct 2025 07:11:55 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846311; x=1760451111; 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=MvgTlUzfuW2bItObmTgfE47aXUveAlTerazWNbrwPac=; b=V3ggzLjG1wDt/YD6R82mXEwt0Fp+lV6gV5Na/hZIPW660DoL5my076W5M5Rs1gmvy8 eqfYndMeHle5EUDzD0h6zRgRi402FiFvyHjBtDWWcUhbILo+thMF3loDFKQg/FQTzvJl 69eZDjlR1cwzK0cSamRoRJydzN4IgLiByfroDD8erutZJI6U9oZpnWi+0G6/SgKRHjpc 2X4mJfP5L4QPlDtjRykCllKVvPg6Ijhc3Dbgcxe12sTkcHO864p4a7KGbQ1exUNdwMKg iLvT6Rbesoi0U7/owM4gKmwsWKiEWLUvmnOHggdRPvl7iyPoH+JeuvR0aHPeYV03mwcZ HXnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846311; x=1760451111; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MvgTlUzfuW2bItObmTgfE47aXUveAlTerazWNbrwPac=; b=b0i2pN1XlX+/Eiwn8Jlavm5NfbzJtJMgy5jyoyH6VxH438YbLMnCK25JVqfvC7TT2h xvdssRCiE4Lhv0H2664nZiPEuzA1hWGOi/+ela41zdSM7Q+YjGtwx70Fi6gZTs6YfcnN YCc8Jv/+JJc/TIq8JexTp0Bd4INfM71PeS1va9MIAOWrXu3vamgUjH7RXg47I7trttr1 rr3jYin/Up2gaGULlC7na+b1PEjYQ0TeSK12kWtDWbvApq6QgGapadcoi6U0jG10CuG8 dDY/GRHeciUzNPrhTM6/lS3wSGgxvzIrjO7C/sL8nB1fAeUFEwR7XayrKhzKwoGf9m4D KYSQ== X-Gm-Message-State: AOJu0YxbUu7YsD+gvXJ2S3B09FIWW+NYOhDnYeBbmlyHytpCEwhPdqvt ebNeARzwADujrqnXHolwqCB7E1KB/BkHwgeW8/c0TpLQO4Ptgeehig5Hma2u8r4vkuoOYr9Nwck Qcd4Y X-Gm-Gg: ASbGncvnOvvh0z6g5Ew8B07Xc0e3decA3bXsyXmM9h6QzVL24i/cFCGn2vZi5YjeFyg Lc90AEtbBiCdiVAh325Jg2XblcyDHuuowZTp0Xb+gYnesueaOs2oicsDN8De1OqXnsBTImsxBXu UEgrr1/MHrAcMv814xACYQC4LruWzVudvJPTHOswjPdsuskFBwC9KtPtOO//pim+ASVAQgIQloj SWbu47Oopbs6s45PxRbiCjqHPu/HSN8T9gCHqIxJs3v4DFWkr3mLOk2FlI8UCs1ZJPNTu+bVtOg 8NfOa3vgqj53eHJ837+V378KzJePqYAUxYeWAfkX/l4517zzNHCa8qoDdAhId9NRwskPHQ4oPg2 GyRMR7oB92U27N0URG+klHE2E9IOAujzib9lpmMl6M5RCylU/0QVzhiYz X-Google-Smtp-Source: AGHT+IE6dTeMuY5cMj9+FvUssOgh2Z2UMJTy/ySUY6JWNdlr40d03iM3OnzueLK0n+wyhXgLVI+EnQ== X-Received: by 2002:a05:600c:1d11:b0:46e:330a:1762 with SMTP id 5b1f17b1804b1-46e71145811mr99375205e9.22.1759846310975; Tue, 07 Oct 2025 07:11:50 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 24/62] hw/intc/arm_gicv3: Introduce a 'first-cpu-index' property Date: Tue, 7 Oct 2025 15:10:44 +0100 Message-ID: <20251007141123.3239867-25-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::32c; envelope-from=peter.maydell@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: 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: 1759846808303154100 From: Francisco Iglesias Introduce a 'first-cpu-index' property for specifying the first QEMU CPU connected to the GICv3. This makes it possible to have multiple instances of the GICv3 connected to different CPU clusters. For KVM, mark this property has unsupported. It probably does not make much sense as it is intented to be used to model non-SMP systems. Signed-off-by: Luc Michel Signed-off-by: Francisco Iglesias Reviewed-by: Sai Pavan Boddu Reviewed-by: Peter Maydell Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-24-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/intc/arm_gicv3_common.h | 1 + hw/intc/arm_gicv3_common.c | 3 ++- hw/intc/arm_gicv3_cpuif.c | 2 +- hw/intc/arm_gicv3_kvm.c | 6 ++++++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/include/hw/intc/arm_gicv3_common.h b/include/hw/intc/arm_gicv3= _common.h index 572d971d22c..38aa1961c50 100644 --- a/include/hw/intc/arm_gicv3_common.h +++ b/include/hw/intc/arm_gicv3_common.h @@ -229,6 +229,7 @@ struct GICv3State { uint32_t *redist_region_count; /* redistributor count within each regi= on */ uint32_t nb_redist_regions; /* number of redist regions */ =20 + uint32_t first_cpu_idx; uint32_t num_cpu; uint32_t num_irq; uint32_t revision; diff --git a/hw/intc/arm_gicv3_common.c b/hw/intc/arm_gicv3_common.c index e438d8c042d..2d0df6da86c 100644 --- a/hw/intc/arm_gicv3_common.c +++ b/hw/intc/arm_gicv3_common.c @@ -436,7 +436,7 @@ static void arm_gicv3_common_realize(DeviceState *dev, = Error **errp) s->cpu =3D g_new0(GICv3CPUState, s->num_cpu); =20 for (i =3D 0; i < s->num_cpu; i++) { - CPUState *cpu =3D qemu_get_cpu(i); + CPUState *cpu =3D qemu_get_cpu(s->first_cpu_idx + i); uint64_t cpu_affid; =20 s->cpu[i].cpu =3D cpu; @@ -622,6 +622,7 @@ static const Property arm_gicv3_common_properties[] =3D= { redist_region_count, qdev_prop_uint32, uint32_t), DEFINE_PROP_LINK("sysmem", GICv3State, dma, TYPE_MEMORY_REGION, MemoryRegion *), + DEFINE_PROP_UINT32("first-cpu-index", GICv3State, first_cpu_idx, 0), }; =20 static void arm_gicv3_common_class_init(ObjectClass *klass, const void *da= ta) diff --git a/hw/intc/arm_gicv3_cpuif.c b/hw/intc/arm_gicv3_cpuif.c index 72e91f971a4..2e6c1f778a9 100644 --- a/hw/intc/arm_gicv3_cpuif.c +++ b/hw/intc/arm_gicv3_cpuif.c @@ -3024,7 +3024,7 @@ void gicv3_init_cpuif(GICv3State *s) int i; =20 for (i =3D 0; i < s->num_cpu; i++) { - ARMCPU *cpu =3D ARM_CPU(qemu_get_cpu(i)); + ARMCPU *cpu =3D ARM_CPU(qemu_get_cpu(s->first_cpu_idx + i)); GICv3CPUState *cs =3D &s->cpu[i]; =20 /* diff --git a/hw/intc/arm_gicv3_kvm.c b/hw/intc/arm_gicv3_kvm.c index 0cd14d78a75..9829e2146da 100644 --- a/hw/intc/arm_gicv3_kvm.c +++ b/hw/intc/arm_gicv3_kvm.c @@ -821,6 +821,12 @@ static void kvm_arm_gicv3_realize(DeviceState *dev, Er= ror **errp) return; } =20 + if (s->first_cpu_idx !=3D 0) { + error_setg(errp, "Non-zero first-cpu-idx is unsupported with the " + "in-kernel GIC"); + return; + } + gicv3_init_irqs_and_mmio(s, kvm_arm_gicv3_set_irq, NULL); =20 for (i =3D 0; i < s->num_cpu; i++) { --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846685; cv=none; d=zohomail.com; s=zohoarc; b=SzD7+t8hFR/zv8Tvyg/zry5TkjdbrT+G9tPas7WmQs5ES8hcN6ftqr7oW1tQxFiY0j0cPdJnrXzizViKIDE8npX0FBT19rNA7CJb/4lJVvLhCSawK/DPRP8aPpw5WW0n/N6Z7CAFN/4vG3wH7qQMo06SfoJ134+uuUEjUl+vqq4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846685; 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=9vT70SGLGzJ9UAFdfil179Il/lcyiSaLS96E+xQcOcs=; b=LsuIqECN+6NqARbLOel7bhdnj2Lg3KATsg3HA5UyRwyaZEdPLReEtg1+bSNcTCaxHFb8/iprcEYFH5twH3n7X2+KBZIQx1Gc+ms6YwFNCZd9+YXpxV6p+0ZDeas8aDhtMMtj21UvN0gngIhcyEZO37s8BNFZlL1RjOAzPS4bdsA= 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 1759846685792859.3556623605766; Tue, 7 Oct 2025 07:18:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Qa-0005pG-Ds; Tue, 07 Oct 2025 10:12:34 -0400 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 1v68QK-0005mD-Gu for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:17 -0400 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Q5-0002Ck-F4 for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:15 -0400 Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-46e34bd8eb2so70690575e9.3 for ; Tue, 07 Oct 2025 07:11:53 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846312; x=1760451112; 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=9vT70SGLGzJ9UAFdfil179Il/lcyiSaLS96E+xQcOcs=; b=xKz83rybroccz+OPASW7YpaZ+6HKtDBV+PC5lvkEGpSkUMimCTZlN1TQNubMXZj4hr GvGSas5bgdfJSJ/bkUVWegiJTHl2so2tbxs1Llz0g0ZtNP4H+OU0kt88Q8o2b5phJ2/T zwbJJKEqhTt12NcPtLJg6D5cj/BGoxwdTIPacykwni5mFFa+EE29yPmcIxlzOaB5eVnO BFqYaS6UzImwtbM9Pg9B8jrQby1I2LV4MK5RbXNpQj+1JDheadRV0yjTM6IwLSSRL7IM HGUb5tEaCrt2X8IKvgCEUxI9XDu7w8rYM/AIG7u0t7kSDx6QxWC99RyrA9xv4nRazZtf 2+ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846312; x=1760451112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9vT70SGLGzJ9UAFdfil179Il/lcyiSaLS96E+xQcOcs=; b=ELTxHU4+whY1iXGO0+zPMqQpeWOBEvmrTFU1GlSxWVVHQnDYDt98WU561GK/KOhK8d ZONmXNNKbdtLgvlO+8pCm6ygWXkw8EhYYKW9yO7zFF/2c2EMPnTllktavINC7wd3F00S F9prvVFqQ57pynH1+gPBojtSKuBIyoUK3ihcgZX12CQtF5fueNEgLsqqObTfN63vrhTM EuSjBIp5ANZvQZyI+z8dNoDSK1hROAZ1ttnmVXKwN7f3Er6ktPT2uqbH+74IhBI1HYT/ cpa/2FK96ITIKAouq024JzkMeHLOPkTwRTYs/bfpGX5pmH4GQAutIKZJPPfRFh9uuD6O zBFA== X-Gm-Message-State: AOJu0YzZxntJrvwI6lE0D5WSJ+GbD4cA5BT/Pela8BiEN4lIWuyn1k3M qCB1soIyuQHl77bfKawl1MjpANasPkIvSgyLzgwPSm1SiXz6B56j+m3VRWs1u5ODoI3KMGv9ajb 06A58 X-Gm-Gg: ASbGncsgBQP2b16/q4e6G6/uIBherjlfFWaEmL90DaXIa/UPlN5+dQ69yZFxEEvSlRV hmore33jKKbSZDmuythNpwNqS6slbxQWOXxF9UT/eSq2oLj6pHkBvhCs6HaFPowApN7X/iIrU0D Vl9V/mVn36jZ65OS3iceefle5BXD1V3HUO6BsI/QufMExyP/GhI9tnl2YuF2lpHYWDj8tWREceK jtDIj74iWu/ZkEl6qrvX2ZmUP32hgJA3ROc+mFcguC1bliS4JBOoYW3/Ag86mn6QtfOSt8VCjK8 BxbErIE2EJqm6eAQbIanUlKLvoz9x76v8h86UZJH/QUONoVBqQay5CLwZqP3zvAykRbUHZ+Zzlp Fpvo4tXfKbxd0ZI/TeDCcax3xiF6M1Rvt2szQwB3/VMnQYVRO0kJyIf8s X-Google-Smtp-Source: AGHT+IHxs6nZtCC9jGgCZvKWqzQfH/MHYn+o6ox6cNK7427N0bKUI39LKILz5z4g8LntgjMhkskfIg== X-Received: by 2002:a05:600c:1987:b0:45d:5c71:769a with SMTP id 5b1f17b1804b1-46e71146083mr109009105e9.26.1759846312156; Tue, 07 Oct 2025 07:11:52 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 25/62] hw/arm/xlnx-versal: add support for multiple GICs Date: Tue, 7 Oct 2025 15:10:45 +0100 Message-ID: <20251007141123.3239867-26-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::336; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x336.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: 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: 1759846687011154101 From: Luc Michel The Versal SoC contains two GICs: one GICv3 in the APU and one GICv2 in the RPU (currently not instantiated). To prepare for the GICv2 instantiation, add support for multiple GICs when connecting interrupts. When a GIC is created, the first-cpu-index property is set on it, and a pointer to the GIC is stored in the intc array. When connecting an IRQ, a TYPE_SPLIT_IRQ device is created with its num-lines property set to the number of GICs in the SoC. The split device is used to fan out the IRQ to all the GICs. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-25-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 1 + hw/arm/xlnx-versal.c | 56 +++++++++++++++++++++++++++++++++--- 2 files changed, 53 insertions(+), 4 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 9d9ccfb0014..984f9f2ccdd 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -42,6 +42,7 @@ struct Versal { SysBusDevice parent_obj; =20 /*< public >*/ + GArray *intc; MemoryRegion mr_ps; =20 struct { diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index e03411bc212..9256eceffc7 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -45,6 +45,7 @@ #include "hw/misc/xlnx-versal-crl.h" #include "hw/intc/arm_gicv3_common.h" #include "hw/intc/arm_gicv3_its_common.h" +#include "hw/core/split-irq.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -317,6 +318,43 @@ static inline Object *versal_get_child_idx(Versal *s, = const char *child, return versal_get_child(s, n); } =20 +/* + * The SoC embeds multiple GICs. They all receives the same IRQ lines at t= he + * same index. This function creates a TYPE_SPLIT_IRQ device to fan out the + * given IRQ input to all the GICs. + * + * The TYPE_SPLIT_IRQ devices lie in the /soc/irq-splits QOM container + */ +static qemu_irq versal_get_gic_irq(Versal *s, int irq_idx) +{ + DeviceState *split; + Object *container =3D versal_get_child(s, "irq-splits"); + int idx =3D FIELD_EX32(irq_idx, VERSAL_IRQ, IRQ); + g_autofree char *name =3D g_strdup_printf("irq[%d]", idx); + + split =3D DEVICE(object_resolve_path_at(container, name)); + + if (split =3D=3D NULL) { + size_t i; + + split =3D qdev_new(TYPE_SPLIT_IRQ); + qdev_prop_set_uint16(split, "num-lines", s->intc->len); + object_property_add_child(container, name, OBJECT(split)); + qdev_realize_and_unref(split, NULL, &error_abort); + + for (i =3D 0; i < s->intc->len; i++) { + DeviceState *gic; + + gic =3D g_array_index(s->intc, DeviceState *, i); + qdev_connect_gpio_out(split, i, qdev_get_gpio_in(gic, idx)); + } + } else { + g_assert(FIELD_EX32(irq_idx, VERSAL_IRQ, ORED)); + } + + return qdev_get_gpio_in(split, 0); +} + /* * When the R_VERSAL_IRQ_ORED flag is set on an IRQ descriptor, this funct= ion is * used to return the corresponding or gate input IRQ. The or gate is crea= ted if @@ -353,12 +391,10 @@ static qemu_irq versal_get_irq(Versal *s, int irq_idx) { qemu_irq irq; bool ored; - DeviceState *gic; =20 ored =3D FIELD_EX32(irq_idx, VERSAL_IRQ, ORED); =20 - gic =3D DEVICE(versal_get_child_idx(s, "apu-gic", 0)); - irq =3D qdev_get_gpio_in(gic, FIELD_EX32(irq_idx, VERSAL_IRQ, IRQ)); + irq =3D versal_get_gic_irq(s, irq_idx); =20 if (ored) { irq =3D versal_get_irq_or_gate_in(s, irq_idx, irq); @@ -501,6 +537,7 @@ static void versal_create_gic_its(Versal *s, static DeviceState *versal_create_gic(Versal *s, const VersalCpuClusterMap *map, MemoryRegion *mr, + int first_cpu_idx, size_t num_cpu) { DeviceState *dev; @@ -525,6 +562,7 @@ static DeviceState *versal_create_gic(Versal *s, qdev_prop_set_bit(dev, "has-security-extensions", true); qdev_prop_set_bit(dev, "has-lpi", map->gic.has_its); object_property_set_link(OBJECT(dev), "sysmem", OBJECT(mr), &error_abo= rt); + qdev_prop_set_uint32(dev, "first-cpu-index", first_cpu_idx); =20 sysbus_realize_and_unref(sbd, &error_fatal); =20 @@ -551,6 +589,8 @@ static DeviceState *versal_create_gic(Versal *s, =20 versal_create_gic_its(s, map, dev, mr, node); =20 + g_array_append_val(s->intc, dev); + return dev; } =20 @@ -608,9 +648,11 @@ static inline void versal_create_and_connect_gic(Versa= l *s, size_t num_cpu) { DeviceState *gic; + int first_cpu_idx; size_t i; =20 - gic =3D versal_create_gic(s, map, mr, num_cpu); + first_cpu_idx =3D CPU(cpus[0])->cpu_index; + gic =3D versal_create_gic(s, map, mr, first_cpu_idx, num_cpu); =20 for (i =3D 0; i < num_cpu; i++) { connect_gic_to_cpu(map, gic, cpus[i], i, num_cpu); @@ -1539,6 +1581,10 @@ static void versal_realize(DeviceState *dev, Error *= *errp) s->phandle.clk_125mhz =3D fdt_add_clk_node(s, "/clk125", 125 * 1000 * = 1000); s->phandle.gic =3D qemu_fdt_alloc_phandle(s->cfg.fdt); =20 + container =3D object_new(TYPE_CONTAINER); + object_property_add_child(OBJECT(s), "irq-splits", container); + object_unref(container); + container =3D object_new(TYPE_CONTAINER); object_property_add_child(OBJECT(s), "irq-or-gates", container); object_unref(container); @@ -1720,6 +1766,7 @@ static void versal_base_init(Object *obj) memory_region_init(&s->mr_ps, obj, "mr-ps-switch", UINT64_MAX); memory_region_init_alias(&s->lpd.rpu.mr_ps_alias, OBJECT(s), "mr-rpu-ps-alias", &s->mr_ps, 0, UINT64_MAX); + s->intc =3D g_array_new(false, false, sizeof(DeviceState *)); =20 num_can =3D versal_get_map(s)->num_canfd; s->cfg.canbus =3D g_new0(CanBusState *, num_can); @@ -1737,6 +1784,7 @@ static void versal_base_finalize(Object *obj) { Versal *s =3D XLNX_VERSAL_BASE(obj); =20 + g_array_free(s->intc, true); g_free(s->cfg.canbus); } =20 --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846542; cv=none; d=zohomail.com; s=zohoarc; b=VXex3SQe/90n0E5pbiS5wVt/C/56PDe0shPXanjAyl1xwpIsR6EdiMrNoELubaE6oTo9U7sZIj/BkczuaiTkdqG60KtI4nd7KUBNCR+KnOLn5KxYRpvlvzsPoeQ3APxcTnDtScXKPsDG8Wg1jUJJCmw8KbKKg+E46kLTP4BQA54= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846542; 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=KFDaQJ8q1spuEtlWey4phuXP7A/59oefPCkhFMboMnc=; b=BwvUVbe5ZAn7qiVzX/DwKJ/kayaKe/FsdlF+Eg59jrbghk1gM0bnVaw8YJIXVkRptEF1deqymILdPNNIOChFUuXeMrZpQhkdY3TuJRDblJXJQdnBurrmTibUPGHuBh0sRX/Ec58dr74rCacBcee//kUaoD4xCriAXpG7ob0WCEE= 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 1759846542672848.5480354835069; Tue, 7 Oct 2025 07:15:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68QQ-0005oQ-BV; Tue, 07 Oct 2025 10:12:23 -0400 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 1v68QK-0005mI-Qi for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:17 -0400 Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Q6-0002Cx-Tl for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:16 -0400 Received: by mail-wr1-x435.google.com with SMTP id ffacd0b85a97d-3f0308469a4so3642681f8f.0 for ; Tue, 07 Oct 2025 07:12:00 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846313; x=1760451113; 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=KFDaQJ8q1spuEtlWey4phuXP7A/59oefPCkhFMboMnc=; b=Z7RI4/m2/ZSV2drPlqefKi59R5EHLHSvSnfLphvYPMw3uLMrhFaiKOZZn5NhV3/CJn P7vySjmgv1KKxFMu/ps4qyo25mOfl0aQRDj1Q+oHvCnwdad+Gf82fy0oNB+4dPLok4Kg y94dnPoa3N8LJQfdjn7tq2GXq8BdoNo5ce3417lvpIniw9kFu24LTzswILAq2lS3BxL9 PnD4GYGB7z46bHPb9xojrHlEdsOHTKzUOLb0JOjVKVa6Kb9X0trTBWk8K7zyGjgFdHUV zXGVJqYb1BYoRVGSRFs7i/fTUmwm8moihiz5sbIyhjvFg86nNceM9kXqKfQLC6J1WTh8 pU8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846313; x=1760451113; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KFDaQJ8q1spuEtlWey4phuXP7A/59oefPCkhFMboMnc=; b=Q/x2NmNTYs5UTyBaZfZ8wsRuvfVMXntH/X1f9ZPYkzVSDWUTroOwMokm516mN6wP0q SCGWgxLFkExrmPvkW+XyphX7QercqwRacBovS60Q4Q1X7qy+yI1MES3P7PepFj19/K3H AnAHpppechjormmnF+SRolEmHX6+n63DOBnjIqCIQZMVKRiQCrEwURtiT2yqL6Rs3Ifp ayU2b9fJra0bq5BBoQwqJHRMtfKfKsZ54K51mYf8Vav7oymEBEEGNozEtgyJEN6Yt93T ET7oyGQRsUBYbXc3rDlwOpV/aGs/xtRcXKI5YLMvND7jTNxc5zrsQti+CPxy/hEAQFAy 0SfQ== X-Gm-Message-State: AOJu0YynTrf93Faf1NZEJQRiYDgvm7re/OqWOGt6WeBCu3BbcbVQLB+K wDq2TIhans+18yzasLxMP53ZcgkofeAOugLuLPCYloE2jescHZHqrtdgmUinrV1OUUsKRWIMi12 +HYex X-Gm-Gg: ASbGncv+BK0+zAkoLprpvmQvGyRoqyqWrt9PlKf9VqgQrwu9j8s0afgpV6GkdRrB9Ax ZUBaVC6NZWJnKu2NAT1BMqXBUapX93KBACByUmxoLxa2ILh8nlUhrtrlgbqRQTEEPtt33tuCsi3 ukyunSQuvImZvy+XS8r77FnXqFywjjoD2sqZztOG7yRQglqrgMQaeccv1wmYbW4Tr+Mhe6srpUc lHKQ4EionONqwckrStRsnMoXXuq5RI0pT2S1oUjuyNDEt1dvIGxy2s2djSwq2xFHZGtX9spI6uQ 5My+kmEHZb9IhXzY1AG7i993Ut/52yU4m46SxY2/2tCcv8Y0Ekbdjj0n6fL0jHpjNI1r+J13K3O mqpoafKiiP2QA+/VuySFJDpDPhMWZbno1fabRjvxOyIi/M972maTcGgdS X-Google-Smtp-Source: AGHT+IH9Tl9uZTM7ox6wE5i9QHQ7goiQZtv10WfHnUgsKX+7u/uumr+7b4Fu0Cj8+XUM0tGhqIXR/w== X-Received: by 2002:a05:6000:1a85:b0:3e9:2fea:6795 with SMTP id ffacd0b85a97d-425671c7275mr10892978f8f.53.1759846313237; Tue, 07 Oct 2025 07:11:53 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 26/62] hw/arm/xlnx-versal: add support for GICv2 Date: Tue, 7 Oct 2025 15:10:46 +0100 Message-ID: <20251007141123.3239867-27-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::435; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x435.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: 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: 1759846544475154101 From: Luc Michel Add support for GICv2 instantiation in the Versal SoC. This is in preparation for the RPU refactoring. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-26-luc.michel@amd.com Signed-off-by: Peter Maydell --- hw/arm/xlnx-versal.c | 82 +++++++++++++++++++++++++++++++++----------- 1 file changed, 62 insertions(+), 20 deletions(-) diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 9256eceffc7..45ea47a8b97 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -45,6 +45,7 @@ #include "hw/misc/xlnx-versal-crl.h" #include "hw/intc/arm_gicv3_common.h" #include "hw/intc/arm_gicv3_its_common.h" +#include "hw/intc/arm_gic.h" #include "hw/core/split-irq.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") @@ -74,6 +75,7 @@ typedef struct VersalGicMap { int version; uint64_t dist; uint64_t redist; + uint64_t cpu_iface; uint64_t its; size_t num_irq; bool has_its; @@ -503,6 +505,10 @@ static void versal_create_gic_its(Versal *s, g_autofree char *node_pat =3D NULL, *node =3D NULL; const char compatible[] =3D "arm,gic-v3-its"; =20 + if (map->gic.version !=3D 3) { + return; + } + if (!map->gic.has_its) { return; } @@ -542,45 +548,81 @@ static DeviceState *versal_create_gic(Versal *s, { DeviceState *dev; SysBusDevice *sbd; - QList *redist_region_count; g_autofree char *node =3D NULL; g_autofree char *name =3D NULL; - const char compatible[] =3D "arm,gic-v3"; + const char gicv3_compat[] =3D "arm,gic-v3"; + const char gicv2_compat[] =3D "arm,cortex-a15-gic"; + + switch (map->gic.version) { + case 2: + dev =3D qdev_new(gic_class_name()); + break; + + case 3: + dev =3D qdev_new(gicv3_class_name()); + break; + + default: + g_assert_not_reached(); + } =20 - dev =3D qdev_new(gicv3_class_name()); name =3D g_strdup_printf("%s-gic[*]", map->name); object_property_add_child(OBJECT(s), name, OBJECT(dev)); sbd =3D SYS_BUS_DEVICE(dev); - qdev_prop_set_uint32(dev, "revision", 3); + qdev_prop_set_uint32(dev, "revision", map->gic.version); qdev_prop_set_uint32(dev, "num-cpu", num_cpu); qdev_prop_set_uint32(dev, "num-irq", map->gic.num_irq + 32); - - redist_region_count =3D qlist_new(); - qlist_append_int(redist_region_count, num_cpu); - qdev_prop_set_array(dev, "redist-region-count", redist_region_count); - qdev_prop_set_bit(dev, "has-security-extensions", true); - qdev_prop_set_bit(dev, "has-lpi", map->gic.has_its); - object_property_set_link(OBJECT(dev), "sysmem", OBJECT(mr), &error_abo= rt); qdev_prop_set_uint32(dev, "first-cpu-index", first_cpu_idx); =20 + if (map->gic.version =3D=3D 3) { + QList *redist_region_count; + + redist_region_count =3D qlist_new(); + qlist_append_int(redist_region_count, num_cpu); + qdev_prop_set_array(dev, "redist-region-count", redist_region_coun= t); + qdev_prop_set_bit(dev, "has-lpi", map->gic.has_its); + object_property_set_link(OBJECT(dev), "sysmem", OBJECT(mr), + &error_abort); + + } + sysbus_realize_and_unref(sbd, &error_fatal); =20 memory_region_add_subregion(mr, map->gic.dist, sysbus_mmio_get_region(sbd, 0)); - memory_region_add_subregion(mr, map->gic.redist, - sysbus_mmio_get_region(sbd, 1)); + + if (map->gic.version =3D=3D 3) { + memory_region_add_subregion(mr, map->gic.redist, + sysbus_mmio_get_region(sbd, 1)); + } else { + memory_region_add_subregion(mr, map->gic.cpu_iface, + sysbus_mmio_get_region(sbd, 1)); + } =20 if (map->dtb_expose) { - node =3D versal_fdt_add_subnode(s, "/gic", map->gic.dist, compatib= le, - sizeof(compatible)); + if (map->gic.version =3D=3D 3) { + node =3D versal_fdt_add_subnode(s, "/gic", map->gic.dist, + gicv3_compat, + sizeof(gicv3_compat)); + qemu_fdt_setprop_sized_cells(s->cfg.fdt, node, "reg", + 2, map->gic.dist, + 2, 0x10000, + 2, map->gic.redist, + 2, GICV3_REDIST_SIZE * num_cpu); + } else { + node =3D versal_fdt_add_subnode(s, "/gic", map->gic.dist, + gicv2_compat, + sizeof(gicv2_compat)); + qemu_fdt_setprop_sized_cells(s->cfg.fdt, node, "reg", + 2, map->gic.dist, + 2, 0x1000, + 2, map->gic.cpu_iface, + 2, 0x1000); + } + qemu_fdt_setprop_cell(s->cfg.fdt, node, "phandle", s->phandle.gic); qemu_fdt_setprop_cell(s->cfg.fdt, node, "#interrupt-cells", 3); - qemu_fdt_setprop_sized_cells(s->cfg.fdt, node, "reg", - 2, map->gic.dist, - 2, 0x10000, - 2, map->gic.redist, - 2, GICV3_REDIST_SIZE * num_cpu); qemu_fdt_setprop_cells(s->cfg.fdt, node, "interrupts", GIC_FDT_IRQ_TYPE_PPI, VERSAL_GIC_MAINT_IRQ, GIC_FDT_IRQ_FLAGS_LEVEL_HI); --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846739; cv=none; d=zohomail.com; s=zohoarc; b=OMSVOqBz3SPYaxcJj3KfQ4DvaZEOh27qUnZvtWPMOlObtN0aszifjd9/95U4QU5qFzPSf0cx9J9J4Sf/YKd+dK8KxQn/EVjDQPop0dHMhdKF5vMnRvIFLoA8ssLA/dZOggvVfkRk0HMx7hgZNNuRfeZQjsrkTEhj8EbulzoLe/c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846739; 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=AKhc0637ABhd7afL/DYnjwfyvFJ+HExy4fMVR1xkGgI=; b=IJEx5T0fsOBsRQFzuGaNamOCIgCY9Exp3LMepXMNCi8fCNt0Bhw8oxYZc7hxK9Z6wyfgZvN7DoUpRbwWB/4K1Kz6z/kqJVuW2/vVvjNb55KwzIj5hW4Eb7HjpvsU8nkGPf5zr4OyIABa3Itk1U9qxwQJb6GltM3ejDJHqGqWhE4= 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 1759846739310981.1089122359292; Tue, 7 Oct 2025 07:18:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68QW-0005on-BD; Tue, 07 Oct 2025 10:12:28 -0400 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 1v68QI-0005lD-9z for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:16 -0400 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 1v68Q5-0002D3-IJ for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:13 -0400 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-46e48d6b95fso54858365e9.3 for ; Tue, 07 Oct 2025 07:11:56 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846314; x=1760451114; 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=AKhc0637ABhd7afL/DYnjwfyvFJ+HExy4fMVR1xkGgI=; b=aDepZ3/94l3I1sBFZ4I67Hd+eJM5xGEpyD8Cqb+fnm1qLDbv6hsP0zEgBSt4ewmBoB QmVbiq2tt4prmDCmHemnQFMChFLMCXgPspbos1zC7ye1NTNjta6ooCFXlvm1y9JJUd1F BhuMBJDOPNaRw1eZEbvaMeYayw0YripI7ae7zg6if6tIzKDGEvIT/FAnifqx65aTN2Oq eFjqQ0jZiKQFJA5H2qRc2fayYKqn99vLMaGfx3WvRDYYjEyNmj2fmHMJu3kVAhErnQOc kkikb0QUwhJoX5wFQ/UZRB83CXyO0Iuw0kv/7NzFYqcsUIsFXevULGOGhNEriXczKX/t JUlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846314; x=1760451114; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=AKhc0637ABhd7afL/DYnjwfyvFJ+HExy4fMVR1xkGgI=; b=IZ6s64qUM0fr9829rM9FIN+f/UNYjee0UZAg7LdTXWZ69iufbpvQYMUU4j93ZLSVtQ 4yVrd+AseH9Y4xNVTocEPDTpf/aOgDPEUE/amUBPqxjFk3f+lYoGhyv4NzVka+ca7WO/ XdZGS9ykW1Ot9HdBp4C4gg3KKckS9zNOmjbZuzITYVBnTnq0ZNowtcUR40voMDcfFt5v hXg1QyaoUI02apD+2mZzzMIclwHc4zN3VVauXmMFAv/TO1g+blzK8o2jDdr8sgG4JrCg 5Wd/sgUdpT8BYXIBaeYgULyOGGo4z3bD/ziTM6cOVM1d5f45XOtP4AHOKcdxzc1Y8uyA zx/Q== X-Gm-Message-State: AOJu0Yz3wVZzGKLgh7CXYV/fB55hh9HBgO+05kQ8A5xDKQIDoGvlOSsR tve6YlMRK8KSf+760Ny1ct6lOo6PH1ismslZsbFII89DSa5Exz7I3ojk13wEGrNjMpx2yxoZMnj 8NACx X-Gm-Gg: ASbGncvIgl2VKcOMhs57sR6H/nh+6m5BtozmDyNWDuuj7EeB65g2+1JVT0uN2nnFJV1 R90Q9hMJcwcaQQHwXkYXkKLKZQp7LZOun0KUZFD2Qtpw9z1vzwGNNvf3wNbsyn93Axnfd19+Jbt P+UgmnxHVk8g8kNlY1Ww5a/8eJkGHsAPw9AUpmcVwjQ/7kV3VkXd37ocQ7AeiQdOI8dzvBxNTzJ C59k6OLDxOTg//AEgAY6uBe3wwtTfbvfq+cg8wUh2R7LGahJYQ43NF4zifVkGpY5G31xComgViz X7H4fZgy+BhuWKvqouX//+M3r8lzEDIIHuWjvDJnOTbF9RWlb9KjkSDk6BLHJ0m1TWx6CMO/k6Z 2Rb0zfFYPtr9uMBijh4eKvUpUrfd9YcwTqHd0v/5RzF5MbCH/oDVuwCM1 X-Google-Smtp-Source: AGHT+IELORINHy659gfv9Okbe5bCqgmFNSZP24+HVs4/GofU9wdCROCiE+0HciuA7wygjNMMjezVvw== X-Received: by 2002:a05:600c:3151:b0:46e:4c7c:5140 with SMTP id 5b1f17b1804b1-46e71142eeamr120917975e9.18.1759846314408; Tue, 07 Oct 2025 07:11:54 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 27/62] hw/arm/xlnx-versal: rpu: refactor creation Date: Tue, 7 Oct 2025 15:10:47 +0100 Message-ID: <20251007141123.3239867-28-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::329; envelope-from=peter.maydell@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: 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: 1759846740854116600 From: Luc Michel Refactor the RPU cluster creation using the VersalMap structure. This effectively instantiate the RPU GICv2 which was not instantiated before. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-27-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 11 ------- hw/arm/xlnx-versal-virt.c | 1 + hw/arm/xlnx-versal.c | 60 +++++++++++++++--------------------- 3 files changed, 26 insertions(+), 46 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 984f9f2ccdd..0a91ec7ae36 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -14,10 +14,8 @@ #define XLNX_VERSAL_H =20 #include "hw/sysbus.h" -#include "hw/cpu/cluster.h" #include "qom/object.h" #include "net/can_emu.h" -#include "target/arm/cpu.h" #include "hw/arm/xlnx-versal-version.h" =20 #define TYPE_XLNX_VERSAL_BASE "xlnx-versal-base" @@ -52,15 +50,6 @@ struct Versal { =20 struct { MemoryRegion mr_ocm; - - /* Real-time Processing Unit. */ - struct { - MemoryRegion mr; - MemoryRegion mr_ps_alias; - - CPUClusterState cluster; - ARMCPU cpu[XLNX_VERSAL_NR_RCPUS]; - } rpu; } lpd; =20 struct { diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 27594f78c8f..5958e712519 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -24,6 +24,7 @@ #include "hw/arm/boot.h" #include "target/arm/multiprocessing.h" #include "qom/object.h" +#include "target/arm/cpu.h" =20 #define TYPE_XLNX_VERSAL_VIRT_MACHINE MACHINE_TYPE_NAME("xlnx-versal-virt") OBJECT_DECLARE_SIMPLE_TYPE(VersalVirt, XLNX_VERSAL_VIRT_MACHINE) diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 45ea47a8b97..e89c66313c1 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -47,6 +47,8 @@ #include "hw/intc/arm_gicv3_its_common.h" #include "hw/intc/arm_gic.h" #include "hw/core/split-irq.h" +#include "target/arm/cpu.h" +#include "hw/cpu/cluster.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -107,6 +109,7 @@ typedef struct VersalCpuClusterMap { =20 typedef struct VersalMap { VersalCpuClusterMap apu; + VersalCpuClusterMap rpu; =20 VersalSimplePeriphMap uart[2]; size_t num_uart; @@ -226,6 +229,27 @@ static const VersalMap VERSAL_MAP =3D { }, }, =20 + .rpu =3D { + .name =3D "rpu", + .cpu_model =3D ARM_CPU_TYPE_NAME("cortex-r5f"), + .num_cluster =3D 1, + .num_core =3D 2, + .qemu_cluster_id =3D 1, + .mp_affinity =3D { + .base =3D 0x100, + .core_shift =3D ARM_AFF0_SHIFT, + .cluster_shift =3D ARM_AFF1_SHIFT, + }, + .start_powered_off =3D SPO_ALL, + .dtb_expose =3D false, + .gic =3D { + .version =3D 2, + .dist =3D 0xf9000000, + .cpu_iface =3D 0xf9001000, + .num_irq =3D 192, + }, + }, + .uart[0] =3D { 0xff000000, 18 }, .uart[1] =3D { 0xff010000, 19 }, .num_uart =3D 2, @@ -806,35 +830,6 @@ static void versal_create_cpu_cluster(Versal *s, const= VersalCpuClusterMap *map) } } =20 -static void versal_create_rpu_cpus(Versal *s) -{ - int i; - - object_initialize_child(OBJECT(s), "rpu-cluster", &s->lpd.rpu.cluster, - TYPE_CPU_CLUSTER); - qdev_prop_set_uint32(DEVICE(&s->lpd.rpu.cluster), "cluster-id", 1); - - for (i =3D 0; i < ARRAY_SIZE(s->lpd.rpu.cpu); i++) { - Object *obj; - - object_initialize_child(OBJECT(&s->lpd.rpu.cluster), - "rpu-cpu[*]", &s->lpd.rpu.cpu[i], - XLNX_VERSAL_RCPU_TYPE); - obj =3D OBJECT(&s->lpd.rpu.cpu[i]); - object_property_set_bool(obj, "start-powered-off", true, - &error_abort); - - object_property_set_int(obj, "mp-affinity", 0x100 | i, &error_abor= t); - object_property_set_int(obj, "core-count", ARRAY_SIZE(s->lpd.rpu.c= pu), - &error_abort); - object_property_set_link(obj, "memory", OBJECT(&s->lpd.rpu.mr), - &error_abort); - qdev_realize(DEVICE(obj), NULL, &error_fatal); - } - - qdev_realize(DEVICE(&s->lpd.rpu.cluster), NULL, &error_fatal); -} - static void versal_create_uart(Versal *s, const VersalSimplePeriphMap *map, int chardev_idx) @@ -1636,7 +1631,7 @@ static void versal_realize(DeviceState *dev, Error **= errp) qemu_fdt_setprop_cell(s->cfg.fdt, "/", "#address-cells", 0x2); =20 versal_create_cpu_cluster(s, &map->apu); - versal_create_rpu_cpus(s); + versal_create_cpu_cluster(s, &map->rpu); =20 for (i =3D 0; i < map->num_uart; i++) { versal_create_uart(s, &map->uart[i], i); @@ -1692,8 +1687,6 @@ static void versal_realize(DeviceState *dev, Error **= errp) MM_OCM_SIZE, &error_fatal); =20 memory_region_add_subregion_overlap(&s->mr_ps, MM_OCM, &s->lpd.mr_ocm,= 0); - memory_region_add_subregion_overlap(&s->lpd.rpu.mr, 0, - &s->lpd.rpu.mr_ps_alias, 0); } =20 DeviceState *versal_get_boot_cpu(Versal *s) @@ -1804,10 +1797,7 @@ static void versal_base_init(Object *obj) Versal *s =3D XLNX_VERSAL_BASE(obj); size_t i, num_can; =20 - memory_region_init(&s->lpd.rpu.mr, obj, "mr-rpu", UINT64_MAX); memory_region_init(&s->mr_ps, obj, "mr-ps-switch", UINT64_MAX); - memory_region_init_alias(&s->lpd.rpu.mr_ps_alias, OBJECT(s), - "mr-rpu-ps-alias", &s->mr_ps, 0, UINT64_MAX); s->intc =3D g_array_new(false, false, sizeof(DeviceState *)); =20 num_can =3D versal_get_map(s)->num_canfd; --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846794; cv=none; d=zohomail.com; s=zohoarc; b=eO0W5x+z0JLUqTYbbEhkF6AqutDw3aWN1CLQkVxVgtJyiC+qdqiFj3xK39caPYTET951aV/kFcUgoRXuwPSDut2Y0OJUvUy1pldCRe17r6hwavMSNaH3A+43qjjglCZULSnngCQcZKSOY3db0S5RXm/52jnKEm25csPTz7q6a/4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846794; 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=ZqArHpI2jlih5+RRdAFUdHG4iZfC1IUazxJB3VjKmJ8=; b=Jh7ajEvH8N9AJ0BDZaNLcDORghXTHPCWS6Eu1EB16QskUEywLXaCCODTVdft7uesEJKSrxdES6DmCEn/3RhFnyZIrMUCNfWlO1RTzXcE768Imx0eXjKBCY9RE7xaErQNNS9Irn2cf4TiqUvE1UUZAYFuSSHPz6FOPncFcGV/70o= 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 1759846794298126.92291261437958; Tue, 7 Oct 2025 07:19:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68QN-0005nx-JY; Tue, 07 Oct 2025 10:12:19 -0400 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 1v68QJ-0005lJ-1X for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:16 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Q5-0002DG-JV for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:14 -0400 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-3ee64bc6b85so4910922f8f.3 for ; Tue, 07 Oct 2025 07:11:59 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846316; x=1760451116; 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=ZqArHpI2jlih5+RRdAFUdHG4iZfC1IUazxJB3VjKmJ8=; b=WNUfHiQCaBGjZKTLFpvaHWHvav4LV1HHiZUOpkzykq6aQA/T7HTGQ4/e2CvtQtNCrk rIp47mwinPBEhHf+9K0q9rHO46NVQeeiAEibvIE2JPKm6WhaXb1eBWfVmHmh1gJ/mj3p LdAvNymJR1pYrIfcgSR3Fwf73tqyuBCsuYlZhsW5e6B6W+r5/MaAJaaInXUIUHVL1A1U FC+os9e46OJfSwT3HdEMlnmc8TN6crc3EPxgBIJTYlXHYSsy3UGzxhL999zE/wJHjnhU DK32NDzQQozlksws05qcij+1oP3sR28Yhz4elnn5ViczSwohrlNPXBODwtrRb0Cx/pQX I8Dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846316; x=1760451116; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZqArHpI2jlih5+RRdAFUdHG4iZfC1IUazxJB3VjKmJ8=; b=bZVaLdyu5tZc28aqL02eH52ytUFNZxT3QcP+4d+X2/zedmVKv731XEttyBdGqTGnWq C1j2oBF83iMO9xgCWvuXbOcmjKBNb2+wCNdXyuIzDg+l5ZSGxiKQA/mvgCQOnYi4k2TC LdraYfQatUbxJJXnBjmtBbUf8gCuYipR0nHLd+w22B4DNgb1xPa3WJP8wK2vXVdXUr1L oq8txsRqqUZq8Dky286jgDslP0/y7jZPnkuvN01bhtv4/EUmJUo8U5FcyJ0d1MqYw7l5 BHaSw17TgEUagysUNtWVG3rM6MU1OnXjA3w2Z8fxNZbabJiMnnGdgPC/rJXlh0FqX0vT pAFw== X-Gm-Message-State: AOJu0YwdHrg+WwnawR08n6j9vQN3uWBhrnyNllfAlCW54KeeqLGOCeL9 csfdniDUGSXZ59vqANhh+YcEZSkUbMiJBGj0nrzbP3m0YaWvC2q+SKlp9IYkD1xnLHLqxANv34t KFb2r X-Gm-Gg: ASbGncsOWoOtd++iJ/NLOAExBTGqSKsnf3Y+y7SLhAfl9yAzat6FZmiNGyFnKm9LjnO W+l34Wh1DnA/2pOtx2Or+Y2Vp7cOv4tE+WsS3VdA8Tpp8WHfyq2ASTCuYThFYWwzRRWMK16bCRM 5WTdXMAK936zYxsqa4u6yCGO0JM0O12cjUrPsxK/i7CVaauZrOFlG0Aut7LK6aQrLPzDXq3mytl aHzuZx5RVzAfk8Y0w9qsQeD77n0uRN3i2FZLV2q3bkS0g7lzuKZXYa/2YsrO0NyV2lAQj6KjcZ1 Pk41emhaN6BCkrTlDOQO+iYjgTXQuZV69wYoEwKcaIt2p91IvEImCDPxJbOVESiZM0kiE7LSQtW 6yUmOqRMfXavEKFXdjnMYZ6MGNMNah++0qc8tVM9myp3Ku1siod7rk5cEHhhYgrdvbwQ= X-Google-Smtp-Source: AGHT+IEQfU6aR2lZ8Uk9ilGj8wDMjctSb03+kgKtIs7zQRsuEHxqn82ykIDR/aJAEMuQ/lgh40fLRA== X-Received: by 2002:a05:6000:43cc:20b0:425:72a0:a998 with SMTP id ffacd0b85a97d-42572a0ae52mr5726270f8f.6.1759846315582; Tue, 07 Oct 2025 07:11:55 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 28/62] hw/arm/xlnx-versal: ocm: refactor creation Date: Tue, 7 Oct 2025 15:10:48 +0100 Message-ID: <20251007141123.3239867-29-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::434; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x434.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: 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: 1759846796168154100 From: Luc Michel Refactor the OCM creation using the VersalMap structure. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-28-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 4 ---- hw/arm/xlnx-versal.c | 20 ++++++++++++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 0a91ec7ae36..e1d6e545495 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -48,10 +48,6 @@ struct Versal { MemoryRegion mr_ddr_ranges[4]; } noc; =20 - struct { - MemoryRegion mr_ocm; - } lpd; - struct { uint32_t clk_25mhz; uint32_t clk_125mhz; diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index e89c66313c1..8aa82ceb839 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -73,6 +73,11 @@ typedef struct VersalSimplePeriphMap { int irq; } VersalSimplePeriphMap; =20 +typedef struct VersalMemMap { + uint64_t addr; + uint64_t size; +} VersalMemMap; + typedef struct VersalGicMap { int version; uint64_t dist; @@ -108,6 +113,8 @@ typedef struct VersalCpuClusterMap { } VersalCpuClusterMap; =20 typedef struct VersalMap { + VersalMemMap ocm; + VersalCpuClusterMap apu; VersalCpuClusterMap rpu; =20 @@ -207,6 +214,11 @@ typedef struct VersalMap { } VersalMap; =20 static const VersalMap VERSAL_MAP =3D { + .ocm =3D { + .addr =3D 0xfffc0000, + .size =3D 0x40000, + }, + .apu =3D { .name =3D "apu", .cpu_model =3D ARM_CPU_TYPE_NAME("cortex-a72"), @@ -1608,6 +1620,7 @@ static void versal_realize(DeviceState *dev, Error **= errp) { Versal *s =3D XLNX_VERSAL_BASE(dev); DeviceState *slcr, *ospi; + MemoryRegion *ocm; Object *container; const VersalMap *map =3D versal_get_map(s); size_t i; @@ -1683,10 +1696,9 @@ static void versal_realize(DeviceState *dev, Error *= *errp) versal_unimp(s); =20 /* Create the On Chip Memory (OCM). */ - memory_region_init_ram(&s->lpd.mr_ocm, OBJECT(s), "ocm", - MM_OCM_SIZE, &error_fatal); - - memory_region_add_subregion_overlap(&s->mr_ps, MM_OCM, &s->lpd.mr_ocm,= 0); + ocm =3D g_new(MemoryRegion, 1); + memory_region_init_ram(ocm, OBJECT(s), "ocm", map->ocm.size, &error_fa= tal); + memory_region_add_subregion_overlap(&s->mr_ps, map->ocm.addr, ocm, 0); } =20 DeviceState *versal_get_boot_cpu(Versal *s) --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847397; cv=none; d=zohomail.com; s=zohoarc; b=GnlJiRhSd6tjOaOYsu+XyqVZFlz//l4hRIzCR985LqCUnAtRsrnjEU8BKgJqZPWGhH9N+gEFqbM+cDKpIjveIm3R5VjIn+KsClbRvaQACpXnK/XQYfnaPo82SlWOwf8j0y3Sc2CAMuxhN9ZL7yoss/syB+P/H0v9xdcqBfAaZfo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847397; 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=hcAC/Z8XafG56UOQZ6lXNo8gL45jKF3xE5XpJF9TIfI=; b=aUGB4Ou9OrTHoBdbFJB4+esrDolIkMObzykZ1ZV3ojmHiGHxkOWiSBI0j2q+MPGuLanWKLvybHoeBsV1Obf7BeAcqJ9MTL2+IZ+yMEUPrWiYzP8Nvrs6uSmgf3M5rHTvr4rXYC1myMjcz4TRGy9eWreSyeS4r8ALUzVihryVJW0= 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 1759847397611376.7473123991126; Tue, 7 Oct 2025 07:29:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Qp-0005wy-9c; Tue, 07 Oct 2025 10:12:47 -0400 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 1v68QR-0005ol-Nd for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:25 -0400 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 1v68Q6-0002DX-Iw for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:22 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-46e491a5b96so36516615e9.2 for ; Tue, 07 Oct 2025 07:11:59 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846317; x=1760451117; 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=hcAC/Z8XafG56UOQZ6lXNo8gL45jKF3xE5XpJF9TIfI=; b=fienidqU6dU6wU+Jdr1LbWmpwD+LJY64QndCqVZZ3UD81Buj8Y+B/s7GmVTZQpre9N UXXjRX9K8ke4LpjCLiGdTcrpbjr1UZ8HnqC4FhFsYUTPZFAFRWY39pF7UH4Ru7A/r4PM eQFnWdHzNVsmVL9mZQvx/lRWV1GFMfX4UpyBurT1pbcz+NxB4TXbuMV7W8fxXmFG4cHG /3DyFPc5bbMKz1aIJFcHSEzjWHA0g2WCmQIF/yzAw3yY7zYkmIzVBv1/z11Q/w4PNJ0M 7faXhq+ZKtiO5EJy89fmfgNTbANs6qCKGBR98NudN3A06ZH2QIyB/6vmtFNc/uPkhObq zKUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846317; x=1760451117; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hcAC/Z8XafG56UOQZ6lXNo8gL45jKF3xE5XpJF9TIfI=; b=VLmlMaJMbYjUsUMjQPZW2cdgSwmfBPxeI3sTGptqgE7Xxhs9PZODg5x5jX5a6ZlOp0 GfFn+L50sFAo6SfjQ71EoEWUbdOUf0UY9Xd700hz78Avv+YrS5aM7pDFAWbkCK7LhHpG 5fMSOdMZIZme0lSutEDTUA9K3SGzCJ1mCPNw6hjGvSj1KPuqP6XJ/uJ1T/bifu7JivDO aXor69ElD3YZ5txJdbCTMEIb7wItk5EQXueEDLAujPOpD41grXopydZlNmWGFLE6GGvT aoqbN7YpBteTNLTRftSWsiFUUAxS4PFANgEQwDCqQX8S4HeBUES5INnIwQ/T10axbLFo H1gw== X-Gm-Message-State: AOJu0Yz4C/B2aCsQ9pnFHjBa4iYAowm9j0MdwxmPLc1s1MEFSbv7H+cM yTt17u8YoStq/Ihg+3csz1EitfmNthw8kTkwpc5sCDuECQsjUTHWrf7pyayq5T4FTO/l1UbWHla LO5Bx X-Gm-Gg: ASbGnctLRmxiOOwfRANaOJoXcOeYPyqvJ5E1Cyj1uG2Km6+3Jf+9dWgUNxnGwV+51uQ Dzga+vGf8pnhEx7AlUxjM4XcGFJBJqdcXVXkJZg76osl2jHK6zLjlmsK14r+C6xcDqyU4TWojoD z1UNETmkkHP6jeFqB3ywgPaZkeYV+WNOZh4Pwu5cnW/j7simmDSwWG118Pw3bWHo1KP9VIW6shh wAYr88nLLwMgzGLkJJ2QhRRXbQXArVCEhMVjEQzII8Pm9I1wzMKsza+5QW5j1beKqEM9QDgpG0v rHrfp7zvJ2t+obsKjbtIR0u70HH9PUmGBnrhUJBX2/Wdu5tIrlx8Q1kbvkRxqnb8UwMER6TYChx he1nlOlQN+kwA7WyuUFPSoRNjL0FkOpuZX8WNTkLnzRNkT4cbM3GMJ+xY X-Google-Smtp-Source: AGHT+IE8JjPGhJ/xb2wnZNGG0jD2YA3SiMNI6+dOovEOC3FgtJdPN4g8Ajdg/fWCMr9S/ANRnDZKWQ== X-Received: by 2002:a05:600c:8b22:b0:45b:4a98:91cf with SMTP id 5b1f17b1804b1-46e71102657mr124273805e9.15.1759846316658; Tue, 07 Oct 2025 07:11:56 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 29/62] hw/arm/xlnx-versal: ddr: refactor creation Date: Tue, 7 Oct 2025 15:10:49 +0100 Message-ID: <20251007141123.3239867-30-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::32f; envelope-from=peter.maydell@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, T_SPF_TEMPERROR=0.01 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: 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: 1759847399267154100 From: Luc Michel Refactor the DDR aperture regions creation using the VersalMap structure. Device creation and FDT node creation are split into two functions because the later must happen during ARM virtual bootloader modify_dtb callback. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-29-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 7 +--- hw/arm/xlnx-versal-virt.c | 79 +----------------------------------- hw/arm/xlnx-versal.c | 73 ++++++++++++++++++++++----------- 3 files changed, 53 insertions(+), 106 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index e1d6e545495..39bc414c85c 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -43,11 +43,6 @@ struct Versal { GArray *intc; MemoryRegion mr_ps; =20 - struct { - /* 4 ranges to access DDR. */ - MemoryRegion mr_ddr_ranges[4]; - } noc; - struct { uint32_t clk_25mhz; uint32_t clk_125mhz; @@ -73,6 +68,8 @@ static inline void versal_set_fdt(Versal *s, void *fdt) s->cfg.fdt =3D fdt; } =20 +void versal_fdt_add_memory_nodes(Versal *s, uint64_t ram_size); + DeviceState *versal_get_boot_cpu(Versal *s); void versal_sdhci_plug_card(Versal *s, int sd_idx, BlockBackend *blk); void versal_efuse_attach_drive(Versal *s, BlockBackend *blk); diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 5958e712519..ad7b3135a67 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -106,88 +106,13 @@ static void fdt_nop_memory_nodes(void *fdt, Error **e= rrp) g_strfreev(node_path); } =20 -static void fdt_add_memory_nodes(VersalVirt *s, void *fdt, uint64_t ram_si= ze) -{ - /* Describes the various split DDR access regions. */ - static const struct { - uint64_t base; - uint64_t size; - } addr_ranges[] =3D { - { MM_TOP_DDR, MM_TOP_DDR_SIZE }, - { MM_TOP_DDR_2, MM_TOP_DDR_2_SIZE }, - { MM_TOP_DDR_3, MM_TOP_DDR_3_SIZE }, - { MM_TOP_DDR_4, MM_TOP_DDR_4_SIZE } - }; - uint64_t mem_reg_prop[8] =3D {0}; - uint64_t size =3D ram_size; - Error *err =3D NULL; - char *name; - int i; - - fdt_nop_memory_nodes(fdt, &err); - if (err) { - error_report_err(err); - return; - } - - name =3D g_strdup_printf("/memory@%x", MM_TOP_DDR); - for (i =3D 0; i < ARRAY_SIZE(addr_ranges) && size; i++) { - uint64_t mapsize; - - mapsize =3D size < addr_ranges[i].size ? size : addr_ranges[i].siz= e; - - mem_reg_prop[i * 2] =3D addr_ranges[i].base; - mem_reg_prop[i * 2 + 1] =3D mapsize; - size -=3D mapsize; - } - qemu_fdt_add_subnode(fdt, name); - qemu_fdt_setprop_string(fdt, name, "device_type", "memory"); - - switch (i) { - case 1: - qemu_fdt_setprop_sized_cells(fdt, name, "reg", - 2, mem_reg_prop[0], - 2, mem_reg_prop[1]); - break; - case 2: - qemu_fdt_setprop_sized_cells(fdt, name, "reg", - 2, mem_reg_prop[0], - 2, mem_reg_prop[1], - 2, mem_reg_prop[2], - 2, mem_reg_prop[3]); - break; - case 3: - qemu_fdt_setprop_sized_cells(fdt, name, "reg", - 2, mem_reg_prop[0], - 2, mem_reg_prop[1], - 2, mem_reg_prop[2], - 2, mem_reg_prop[3], - 2, mem_reg_prop[4], - 2, mem_reg_prop[5]); - break; - case 4: - qemu_fdt_setprop_sized_cells(fdt, name, "reg", - 2, mem_reg_prop[0], - 2, mem_reg_prop[1], - 2, mem_reg_prop[2], - 2, mem_reg_prop[3], - 2, mem_reg_prop[4], - 2, mem_reg_prop[5], - 2, mem_reg_prop[6], - 2, mem_reg_prop[7]); - break; - default: - g_assert_not_reached(); - } - g_free(name); -} - static void versal_virt_modify_dtb(const struct arm_boot_info *binfo, void *fdt) { VersalVirt *s =3D container_of(binfo, VersalVirt, binfo); =20 - fdt_add_memory_nodes(s, fdt, binfo->ram_size); + fdt_nop_memory_nodes(s->fdt, &error_abort); + versal_fdt_add_memory_nodes(&s->soc, binfo->ram_size); } =20 static void *versal_virt_get_dtb(const struct arm_boot_info *binfo, diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 8aa82ceb839..f1b704175ff 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -115,6 +115,11 @@ typedef struct VersalCpuClusterMap { typedef struct VersalMap { VersalMemMap ocm; =20 + struct VersalDDRMap { + VersalMemMap chan[4]; + size_t num_chan; + } ddr; + VersalCpuClusterMap apu; VersalCpuClusterMap rpu; =20 @@ -219,6 +224,14 @@ static const VersalMap VERSAL_MAP =3D { .size =3D 0x40000, }, =20 + .ddr =3D { + .chan[0] =3D { .addr =3D 0x0, .size =3D 2 * GiB }, + .chan[1] =3D { .addr =3D 0x800000000ull, .size =3D 32 * GiB }, + .chan[2] =3D { .addr =3D 0xc00000000ull, .size =3D 256 * GiB }, + .chan[3] =3D { .addr =3D 0x10000000000ull, .size =3D 734 * GiB }, + .num_chan =3D 4, + }, + .apu =3D { .name =3D "apu", .cpu_model =3D ARM_CPU_TYPE_NAME("cortex-a72"), @@ -1483,46 +1496,58 @@ static inline void versal_create_crl(Versal *s) versal_sysbus_connect_irq(s, SYS_BUS_DEVICE(dev), 0, map->crl.irq); } =20 -/* This takes the board allocated linear DDR memory and creates aliases +/* + * This takes the board allocated linear DDR memory and creates aliases * for each split DDR range/aperture on the Versal address map. */ -static void versal_map_ddr(Versal *s) +static void versal_map_ddr(Versal *s, const struct VersalDDRMap *map) { uint64_t size =3D memory_region_size(s->cfg.mr_ddr); - /* Describes the various split DDR access regions. */ - static const struct { - uint64_t base; - uint64_t size; - } addr_ranges[] =3D { - { MM_TOP_DDR, MM_TOP_DDR_SIZE }, - { MM_TOP_DDR_2, MM_TOP_DDR_2_SIZE }, - { MM_TOP_DDR_3, MM_TOP_DDR_3_SIZE }, - { MM_TOP_DDR_4, MM_TOP_DDR_4_SIZE } - }; uint64_t offset =3D 0; int i; =20 - assert(ARRAY_SIZE(addr_ranges) =3D=3D ARRAY_SIZE(s->noc.mr_ddr_ranges)= ); - for (i =3D 0; i < ARRAY_SIZE(addr_ranges) && size; i++) { - char *name; + for (i =3D 0; i < map->num_chan && size; i++) { uint64_t mapsize; + MemoryRegion *alias; + + mapsize =3D MIN(size, map->chan[i].size); =20 - mapsize =3D size < addr_ranges[i].size ? size : addr_ranges[i].siz= e; - name =3D g_strdup_printf("noc-ddr-range%d", i); /* Create the MR alias. */ - memory_region_init_alias(&s->noc.mr_ddr_ranges[i], OBJECT(s), - name, s->cfg.mr_ddr, - offset, mapsize); + alias =3D g_new(MemoryRegion, 1); + memory_region_init_alias(alias, OBJECT(s), "noc-ddr-range", + s->cfg.mr_ddr, offset, mapsize); =20 /* Map it onto the NoC MR. */ - memory_region_add_subregion(&s->mr_ps, addr_ranges[i].base, - &s->noc.mr_ddr_ranges[i]); + memory_region_add_subregion(&s->mr_ps, map->chan[i].addr, alias); offset +=3D mapsize; size -=3D mapsize; - g_free(name); } } =20 +void versal_fdt_add_memory_nodes(Versal *s, uint64_t size) +{ + const struct VersalDDRMap *map =3D &versal_get_map(s)->ddr; + g_autofree char *node; + g_autofree uint64_t *reg; + int i; + + reg =3D g_new(uint64_t, map->num_chan * 2); + + for (i =3D 0; i < map->num_chan && size; i++) { + uint64_t mapsize; + + mapsize =3D MIN(size, map->chan[i].size); + + reg[i * 2] =3D cpu_to_be64(map->chan[i].addr); + reg[i * 2 + 1] =3D cpu_to_be64(mapsize); + + size -=3D mapsize; + } + + node =3D versal_fdt_add_subnode(s, "/memory", 0, "memory", sizeof("mem= ory")); + qemu_fdt_setprop(s->cfg.fdt, node, "reg", reg, sizeof(uint64_t) * i * = 2); +} + static void versal_unimp_area(Versal *s, const char *name, MemoryRegion *mr, hwaddr base, hwaddr size) @@ -1692,7 +1717,7 @@ static void versal_realize(DeviceState *dev, Error **= errp) versal_create_cfu(s, &map->cfu); versal_create_crl(s); =20 - versal_map_ddr(s); + versal_map_ddr(s, &map->ddr); versal_unimp(s); =20 /* Create the On Chip Memory (OCM). */ --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847424; cv=none; d=zohomail.com; s=zohoarc; b=eNy2nReNou5W2KuxafoaeCXeO/PTtyP7u6YSx3n8nB9UthVma1Ng9zScFQfN4wDcAiILtH3k6hXvx3r9fsKPEMopZvDm+cG3FSusTv3sep/sLEmBaK9UCf2a8+nTcg1toPGgBTdyhB7FU8JpU16d3IQKVioZei6c+zxHuR0JRog= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847424; 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=BnQEngb+xMAbIiQWnWTFC1lI0X2a1vA1Y0cyG5j8dEU=; b=l8PKTokrq+2Vm1Ru4elkrfmAlC14NYsDGtLkFhhWGbd/7XAIHHmfmmy7MGeDeTPQc2XmXI1fvUXFMhwz/yKs2WoJu582PVpRsAIgWCqWHDl56n/Hv2HnBTIx1GgMa+kAK9ASi0HXT68lslBPeHzUi40bY9oQPKO115CkaMi0PNk= 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 1759847424550221.74098310636964; Tue, 7 Oct 2025 07:30:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Qs-0005zs-Sl; Tue, 07 Oct 2025 10:12:50 -0400 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 1v68QO-0005oC-UC for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:21 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Q7-0002Dr-Ci for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:20 -0400 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-46e3af7889fso39182075e9.2 for ; Tue, 07 Oct 2025 07:12:00 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846318; x=1760451118; 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=BnQEngb+xMAbIiQWnWTFC1lI0X2a1vA1Y0cyG5j8dEU=; b=mHT1kPp2Ou4qU/dwqh/nS4OBNa+jYAZ22dY2dtepocPtUFJQkZ/3hnL4hdP6p+l6Hs Lqltd+r1gEPzH+hmdY6uA75HvtvIbEhtw2Pho1QZvwEBnRsLkJUbv9ZcZ6b1xDVJlSTu MB/tqJqbKpou1+SEkHrfHeRh9sXxR3NekvfiAudHBeZnGhd0jfCpxZS0i7oA6BoKNGjN ZX+/NRkKCLzJXV/IDGYx4/ZEgljhvQiHxavkqlZbXhQtd0lQ65dCEU4gJPG+HhI7Vzy7 28Yd2/jn/IfQvbV/fMgp356pmEHtRoLQ7ZjQA5RqyJHRzjq8Iz1mpTfmdM+H7tcf1DTU oBrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846318; x=1760451118; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BnQEngb+xMAbIiQWnWTFC1lI0X2a1vA1Y0cyG5j8dEU=; b=kbW8vpDrpGozAEiccSGX6J36tGeMlOwkQe/ugPoA/LvQJTezdztucFAVmK0vFNLjR8 K2CCvheFk5wNCU2JU8sq3qvz9CTn6zfFP9Ci1GDWvZH+wZJSoXaZ9Y4wPaND3yl84nqH DTkPXPyZ90Pg96UUO/9BgEks9jiacYqaH/5VF2MgAygl47LoWy7gADXffP2+5mbWsd94 F+sanU3auT6jOC55zmWfhnFNCVq9/Ty4l+oK0nqzgPC1Q8zMSt1CAKikR16ac8AlHv+w psdA+WapplYFAjrvpx6F4wNEi4jhAqY6gmbnRTO+g7ejKPZl+RM6sTwtdoIEQk35VkMq aNyw== X-Gm-Message-State: AOJu0YyBAvTZTR8Sq1MU3uI6mGEs2kk5hwn2NtoAOCK9Nk0gM1pyGRp9 iKcFX6QbRsFk8QrjVoypsLCvPLeZdZpCjIPw7C+6Irhqlwo6wIyr/kt+uoak06GN7TTSzXZ0KMT vk0oM X-Gm-Gg: ASbGncs4UcRoW4qGencPzxWbLUXNEGuqv0e/DQmwxp9TEgvXmV87a/r/lkHaBItO/D6 J/eRg3HXWc4i65xrHXFTzSkoIyYJq35bywfGGwhMAY82Hj3cRoLi1qd95Dwd6ogSb6DNrGHxiDQ 1slriS9YjwGBqfySxxO24Qp09kaeNuMx20drYZUYO0okGMFXx52BV5l28OiJTJcE1dRrutQAxki NJZx83l2IKt7H6gpelVksG3YDKPn4kC15P2/KZXceqNzAisEfN4ZXX5fNbvRMK9og31clel29Fy Lnc+oa35ylIepZfnlPQrbpZ0q/kJbWLnsBiag/ihC9dNO5I28PNF29e8CpQMvgHiGohPsJj1sCE CeCHSO4RN+9PRY9U1nP4KeXl3D9Un409Il5hPGFSMfNrSXuheT23fgeMM X-Google-Smtp-Source: AGHT+IGpnhwxktCIRDyXwHARcfsZQ4ZUHkymeJpoTNcuDW4JymWumkpkU7++iVEMUSolW1oebpRscw== X-Received: by 2002:a05:600c:540c:b0:458:c094:8ba5 with SMTP id 5b1f17b1804b1-46e71124468mr111965285e9.12.1759846317693; Tue, 07 Oct 2025 07:11:57 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 30/62] hw/arm/xlnx-versal: add the versal_get_num_cpu accessor Date: Tue, 7 Oct 2025 15:10:50 +0100 Message-ID: <20251007141123.3239867-31-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.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, T_SPF_TEMPERROR=0.01 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: 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: 1759847427526154100 From: Luc Michel Add the versal_get_num_cpu accessor to the Versal SoC to retrieve the number of CPUs in the SoC. Use it in the xlnx-versal-virt machine. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-30-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 1 + hw/arm/xlnx-versal-virt.c | 7 ++++--- hw/arm/xlnx-versal.c | 8 ++++++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 39bc414c85c..7bdf6dab629 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -80,6 +80,7 @@ void versal_ospi_create_flash(Versal *s, int flash_idx, c= onst char *flash_mdl, qemu_irq versal_get_reserved_irq(Versal *s, int idx, int *dtb_idx); hwaddr versal_get_reserved_mmio_addr(Versal *s); =20 +int versal_get_num_cpu(VersalVersion version); int versal_get_num_can(VersalVersion version); int versal_get_num_sdhci(VersalVersion version); =20 diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index ad7b3135a67..274a7ef9889 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -346,12 +346,13 @@ static void versal_virt_machine_finalize(Object *obj) static void versal_virt_machine_class_init(ObjectClass *oc, const void *da= ta) { MachineClass *mc =3D MACHINE_CLASS(oc); + int num_cpu =3D versal_get_num_cpu(VERSAL_VER_VERSAL); =20 mc->desc =3D "Xilinx Versal Virtual development board"; mc->init =3D versal_virt_init; - mc->min_cpus =3D XLNX_VERSAL_NR_ACPUS + XLNX_VERSAL_NR_RCPUS; - mc->max_cpus =3D XLNX_VERSAL_NR_ACPUS + XLNX_VERSAL_NR_RCPUS; - mc->default_cpus =3D XLNX_VERSAL_NR_ACPUS + XLNX_VERSAL_NR_RCPUS; + mc->min_cpus =3D num_cpu; + mc->max_cpus =3D num_cpu; + mc->default_cpus =3D num_cpu; mc->no_cdrom =3D true; mc->auto_create_sdcard =3D true; mc->default_ram_id =3D "ddr"; diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index f1b704175ff..2e28b807d71 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -1815,6 +1815,14 @@ hwaddr versal_get_reserved_mmio_addr(Versal *s) return map->reserved.mmio_start; } =20 +int versal_get_num_cpu(VersalVersion version) +{ + const VersalMap *map =3D VERSION_TO_MAP[version]; + + return map->apu.num_cluster * map->apu.num_core + + map->rpu.num_cluster * map->rpu.num_core; +} + int versal_get_num_can(VersalVersion version) { const VersalMap *map =3D VERSION_TO_MAP[version]; --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847233; cv=none; d=zohomail.com; s=zohoarc; b=NTY5ePGa5k1VvJhbh5fZpbjFj7HgaQBrKR8HORCgrAfahcxpzEw5yFgvWQwucxJEyleSsrluGICVbck/v+Zck3kMRMkQ3Sbv2oXQYBpYFj8KqKxevKkc/tNe5W5f9E+5n8YLkK4M+Ce41IJle19xoDJB8e0I8+/EVTr75CasUc8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847233; 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=XkB6uDpGjX9Nw8CrYgllpEhXvBnPXYlsb/ScNLCSbdo=; b=AqK9WBJx25lmz+WBRREsuAKDGXeeC8HHEC56x0N/r41w4SJuOaXNnsTlfYIU1B+PEy71wLj7ablIbIajXPevIe+kmMrhNLfKTGxsEKRoaNguKgIyVVIvIg9c5JtN7SnCtJ5ARoHx460as1aQg2c5e75APDMRn189KPECHKK8D7U= 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 1759847232966885.7397951902711; Tue, 7 Oct 2025 07:27:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Qq-0005yL-8e; Tue, 07 Oct 2025 10:12:49 -0400 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 1v68QO-0005oB-DY for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:20 -0400 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 1v68Q8-0002EF-S4 for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:19 -0400 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-46e33b260b9so60038915e9.2 for ; Tue, 07 Oct 2025 07:12:02 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846319; x=1760451119; 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=XkB6uDpGjX9Nw8CrYgllpEhXvBnPXYlsb/ScNLCSbdo=; b=rhn7A/6Dyoe5zB6CVyXSpDXcs9GR91iZQ7fmtDzSSH+Kgw18Zg0fhraDDjdZc+mmwR xGUEBk6J8WJZSnkhUp7BNwbyi7o9ZSsH/DVFeH69AuPifzN9h62U/iJTBg+P9o6mhOX9 pvOTsjHGdUH8ARbLn+UR/hkmmvQjHdZFy6sxvlyvjlFw1ylqk7DPJLQHMTJdh70y142H 831haz+MJNQA2E3wKNESWM/HF1Wl/8zCBrz9eYS69Iy5V2Z78s5swe6r+4kiAo80+GUF WIT61vVgPEAA9ZDqPI/P4gT4tf5xogilaARyd6EdqvMOYt36sLzM5fmGnZ6mrinwGTT9 4zqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846319; x=1760451119; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XkB6uDpGjX9Nw8CrYgllpEhXvBnPXYlsb/ScNLCSbdo=; b=GLTe64M/HWPetgl2LyJ3S2eQmIY5RwNNOCcwFt3jpuLt3p7z9WRn8f1wToPaptx/XE Njn3m4njt6YbzmZ4HN1Cf6zqlHgRGW60ZKvZzUdT4RViX1OR7hjxXJJChenGPr60GED9 6RwyQrwJdgUB0axRtz2qe/w2rlJTeG/RVAoSunClzZ/SSdjE/1lEoleYXQRnB8HXpXeA MMP/qeaotk5S9vE3b8acaqhqU1mK6vXOyTbSZTboMLmpp03JMtwSlNSFNSCN0l9ozylC egvBg4b49gzuRkBZEFPkFwvSm2bfgi5IQDzVa+aJILGfNRpmiXBOxFtN/n634yPQ2SoB bGDA== X-Gm-Message-State: AOJu0Yy+40y7/yBRPP5xtXoyD9/CVJSEZhbHl90/ggLcofsvzN5ZZRa9 c0qgcZhAJPS8zlDQkrXopmpZhqXzlUvRVSWzI0QHQ2Xi8MrKwX12uIZ8pWYMjC9x1W3bd6fnReS ZmoTa X-Gm-Gg: ASbGncuaaTMElo2t8bbgH6paDqJpxA/e/s/yqWrdqk5cAunNAVltd8sQCPc4tBkM0XF zV4p4Kq/W5W79IKKnxV1+ycQ/br2mnfebTKhvG6sWFBqJKrwgcU52/dKUjEjg9/CnpodytbR+LK F0wi4tqCqryky3KNt+bTQy1aS7CYNnKts0ai4Vd+2azLieiwQ2Q9GWnNcCQNqeakGpnrH9qgohy /TugZNOBy2ScQhDdk0QTtGPHt6XnZNUjzhV8mjJQ8uUYpHex4YaXpf83HGdBcx3VxoSa79KUB36 6k4t91dRh0Ti4metHIbm2QdnMnJx+sTSXv2UV220e71kPOtC7AufF23akAEz5Urm7V/zJNEsiSq XMRAEw0upOkynkeAjlGBtinojc+W9oN5FY3h460CHmO+ojtQJ0NuBlVl0 X-Google-Smtp-Source: AGHT+IGM3o0PjzPmKOIS+x0cdjzl/QrDe8zYhz0Ixs0QxDucwnZHzxtnRhNbBOJuLFqOevh3iKOi0g== X-Received: by 2002:a05:600c:8506:b0:46e:1fb9:5497 with SMTP id 5b1f17b1804b1-46e7113f6e2mr119672595e9.18.1759846318678; Tue, 07 Oct 2025 07:11:58 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 31/62] hw/misc/xlnx-versal-crl: remove unnecessary include directives Date: Tue, 7 Oct 2025 15:10:51 +0100 Message-ID: <20251007141123.3239867-32-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::335; envelope-from=peter.maydell@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: 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: 1759847235225154100 From: Luc Michel Drop unused include directives from xlnx-versal-crl.c Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-31-luc.michel@amd.com Signed-off-by: Peter Maydell --- hw/misc/xlnx-versal-crl.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/hw/misc/xlnx-versal-crl.c b/hw/misc/xlnx-versal-crl.c index 08ff2fcc24f..f288545967a 100644 --- a/hw/misc/xlnx-versal-crl.c +++ b/hw/misc/xlnx-versal-crl.c @@ -1,16 +1,13 @@ /* * QEMU model of the Clock-Reset-LPD (CRL). * - * Copyright (c) 2022 Advanced Micro Devices, Inc. + * Copyright (c) 2022-2025 Advanced Micro Devices, Inc. * SPDX-License-Identifier: GPL-2.0-or-later * * Written by Edgar E. Iglesias */ =20 #include "qemu/osdep.h" -#include "qapi/error.h" -#include "qemu/log.h" -#include "qemu/bitops.h" #include "migration/vmstate.h" #include "hw/qdev-properties.h" #include "hw/sysbus.h" --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846453; cv=none; d=zohomail.com; s=zohoarc; b=oDGyHpvkD81FDiiL2Fni9WTO9t/VZHx33J7cfe05LwEJt3Gz0/J0HGSNEhX+3FqcYDHWLfrylkxJsWyxxcvDJqNKz1FRflnGwjOCW3CLEOw6xkaZh63ZarWYHcSc1E+6cf3cnVhFmWqBAxlbwM4zUh/j5zXeE0OSJRoqC6axbJ0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846453; 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=m81jBq+TZRGnncpvfOYaW8BHhoN2W0VmjCta5UEVW9g=; b=PMpnFjurAVCySIJ2ZKTc5xWuJDzPe2Zqa2Zw1KyvqzlxawpqDD/dHpsr3nHRwB2brY7+sz6BUiFk790Jplre87PS2gI0BT0B9wklpCt1JelGl+MpsnPnB3Z+vvA1ZJBGzprSe4iEqHA+i4lfQIpLhrco8yjRPB7VlSKM47bEEEo= 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 1759846453947917.4218382093035; Tue, 7 Oct 2025 07:14:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Qx-00063C-Ei; Tue, 07 Oct 2025 10:12:55 -0400 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 1v68QV-0005ow-Hc for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:29 -0400 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68QA-0002Ez-Qu for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:26 -0400 Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-46e2826d5c6so49128015e9.1 for ; Tue, 07 Oct 2025 07:12:03 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:11:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846320; x=1760451120; 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=m81jBq+TZRGnncpvfOYaW8BHhoN2W0VmjCta5UEVW9g=; b=lVHYY8S1zRT9oOfnNTp+goQXc6pdB94yIbv4zIVzTcDg2eGWSn02pFzL+33bh7EUcN zwbTCje0H0pLUm7r5TiJEDaZ+mE/ptaColX1NdLXdunDam+z8hOE87MOf67COIgM43ZY 3WvFugMTHkewAo50Hsq18gWhtlL2Bp/y5G9r6+Hr71CYHqcJsaXO8zUJsaMm9FGMJ+09 UXOwleohLLEdLo+Sbo+COfBX4CeejIk48kt5q2BwJW+zexWXGXtMYUzCxwTxkC/vxdQh DZ7RAYRxhIoU+7ZDXblWr7/TKCmAOn5wj7yutUSc6VryJABksgvltMN9zKUymoz16p41 1U7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846320; x=1760451120; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=m81jBq+TZRGnncpvfOYaW8BHhoN2W0VmjCta5UEVW9g=; b=i3qUL9zulatCD5QdQxss2rraDUggmOeQgU5Geq5IqsF3n86gJv3kYx8aKUpT2vi4qa yxHHdwU0tcdFvthk7sAZ88/dQ7EreVATRio7Q5yKBDfwrjEy5C/Scrqxjr7iCimOmRWd 8J47iwbdGVByr/x2Yk+/mOQo+QygkjRuUJn6QrTeTgyKdWt4ACWRFA1ZMzML1TOM0Ac7 rshAj1saa3FKZoOxjbezjVNwLcoEb8AOASfgvGp6kqe7Q+L2JdHX+TPhLiE0BQ5VcFbd 0cP7jOlBwmuSQg2SICS+M4tXkGsi9tRDpMHjvmJMRJbQRK7+GnEeZD1cl/YKH82gTDbb qqYw== X-Gm-Message-State: AOJu0Yzr9maUjQ0CWHZsXxRkfPPPJa2h3XMV7s8a1f8abLNTzWk8VqMY jFzJvJhuYA15TvpPV5Q4A/UiJCht5e2WE9LKfBtisnY1We597Jne+197F8C/oPM5KA2t7k0eNj1 TNrLY X-Gm-Gg: ASbGncurZxPrP7DXu46zUqDWjUB/UP6SdeTimQ1/GtjIqVv3WLHq6GQnxU12QH6GHY/ iVKp2SEhokCN0/sFuThxB8vLCpntHv1gCHnfKzhOxRh3nRB0ntban8F89+npZLmF7N06H9EHcTh Oa6AmJj5BA6HqdRvNfnq53qhZbRfyqC8pDAzKx/MOkHy2AxMKFqL7xlP8GQ6TW4qBJ6NJogYqKM LADmZ+wBQ3/bWu4/q8kCWgU55eg++jhx9XXm6qT3loLJ5fAfEwxStBETYfBPDYr8J/zCloqSdQZ okCdTmpXkVhfYhiwBWuky+Tiu8Q7GafVgQ9U5sNdMH0hcU+cFElRXvljFHIdVh89NQyvs75m79k FNuLVZu+Sz8OrpkX7PoFhLH6YFiEE6YR+DU7s9vxBoGBhNZwDEGZvbfFzaUebFYDuGfk= X-Google-Smtp-Source: AGHT+IHW18lvoUCiObbQD7xp+GDZZd9cK6JT5FY914p71hs3Sp4rMM8sybeqGl9U7zBD+z4zfKGLZQ== X-Received: by 2002:a05:600d:41f3:b0:46e:3e63:9a8e with SMTP id 5b1f17b1804b1-46e7114735amr105744285e9.26.1759846319755; Tue, 07 Oct 2025 07:11:59 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 32/62] hw/misc/xlnx-versal-crl: split into base/concrete classes Date: Tue, 7 Oct 2025 15:10:52 +0100 Message-ID: <20251007141123.3239867-33-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::336; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x336.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: 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: 1759846462178116600 From: Luc Michel Split the TYPE_XLNX_VERSAL_CRL type into base and concrete classes. This is in preparation for the versal2 version of the CRL. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-32-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/misc/xlnx-versal-crl.h | 31 ++++++++++++++++++-- hw/misc/xlnx-versal-crl.c | 48 +++++++++++++++++++------------ 2 files changed, 58 insertions(+), 21 deletions(-) diff --git a/include/hw/misc/xlnx-versal-crl.h b/include/hw/misc/xlnx-versa= l-crl.h index dba6d3585d1..2b39d203a67 100644 --- a/include/hw/misc/xlnx-versal-crl.h +++ b/include/hw/misc/xlnx-versal-crl.h @@ -2,6 +2,7 @@ * QEMU model of the Clock-Reset-LPD (CRL). * * Copyright (c) 2022 Xilinx Inc. + * Copyright (c) 2025 Advanced Micro Devices, Inc. * SPDX-License-Identifier: GPL-2.0-or-later * * Written by Edgar E. Iglesias @@ -12,8 +13,13 @@ #include "hw/sysbus.h" #include "hw/register.h" #include "target/arm/cpu-qom.h" +#include "hw/arm/xlnx-versal-version.h" =20 +#define TYPE_XLNX_VERSAL_CRL_BASE "xlnx-versal-crl-base" #define TYPE_XLNX_VERSAL_CRL "xlnx-versal-crl" + +OBJECT_DECLARE_TYPE(XlnxVersalCRLBase, XlnxVersalCRLBaseClass, + XLNX_VERSAL_CRL_BASE) OBJECT_DECLARE_SIMPLE_TYPE(XlnxVersalCRL, XLNX_VERSAL_CRL) =20 REG32(ERR_CTRL, 0x0) @@ -216,8 +222,19 @@ REG32(PSM_RST_MODE, 0x370) =20 #define RPU_MAX_CPU 2 =20 -struct XlnxVersalCRL { +struct XlnxVersalCRLBase { SysBusDevice parent_obj; + + RegisterInfoArray *reg_array; + uint32_t *regs; +}; + +struct XlnxVersalCRLBaseClass { + SysBusDeviceClass parent_class; +}; + +struct XlnxVersalCRL { + XlnxVersalCRLBase parent_obj; qemu_irq irq; =20 struct { @@ -228,8 +245,18 @@ struct XlnxVersalCRL { DeviceState *usb; } cfg; =20 - RegisterInfoArray *reg_array; uint32_t regs[CRL_R_MAX]; RegisterInfo regs_info[CRL_R_MAX]; }; + +static inline const char *xlnx_versal_crl_class_name(VersalVersion ver) +{ + switch (ver) { + case VERSAL_VER_VERSAL: + return TYPE_XLNX_VERSAL_CRL; + default: + g_assert_not_reached(); + } +} + #endif diff --git a/hw/misc/xlnx-versal-crl.c b/hw/misc/xlnx-versal-crl.c index f288545967a..be89e0da40d 100644 --- a/hw/misc/xlnx-versal-crl.c +++ b/hw/misc/xlnx-versal-crl.c @@ -298,7 +298,7 @@ static const RegisterAccessInfo crl_regs_info[] =3D { } }; =20 -static void crl_reset_enter(Object *obj, ResetType type) +static void versal_crl_reset_enter(Object *obj, ResetType type) { XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(obj); unsigned int i; @@ -308,7 +308,7 @@ static void crl_reset_enter(Object *obj, ResetType type) } } =20 -static void crl_reset_hold(Object *obj, ResetType type) +static void versal_crl_reset_hold(Object *obj, ResetType type) { XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(obj); =20 @@ -325,20 +325,22 @@ static const MemoryRegionOps crl_ops =3D { }, }; =20 -static void crl_init(Object *obj) +static void versal_crl_init(Object *obj) { XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(obj); + XlnxVersalCRLBase *xvcb =3D XLNX_VERSAL_CRL_BASE(obj); SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); int i; =20 - s->reg_array =3D + xvcb->reg_array =3D register_init_block32(DEVICE(obj), crl_regs_info, ARRAY_SIZE(crl_regs_info), s->regs_info, s->regs, &crl_ops, XLNX_VERSAL_CRL_ERR_DEBUG, CRL_R_MAX * 4); - sysbus_init_mmio(sbd, &s->reg_array->mem); + xvcb->regs =3D s->regs; + sysbus_init_mmio(sbd, &xvcb->reg_array->mem); sysbus_init_irq(sbd, &s->irq); =20 for (i =3D 0; i < ARRAY_SIZE(s->cfg.cpu_r5); ++i) { @@ -377,11 +379,11 @@ static void crl_init(Object *obj) =20 static void crl_finalize(Object *obj) { - XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(obj); + XlnxVersalCRLBase *s =3D XLNX_VERSAL_CRL_BASE(obj); register_finalize_block(s->reg_array); } =20 -static const VMStateDescription vmstate_crl =3D { +static const VMStateDescription vmstate_versal_crl =3D { .name =3D TYPE_XLNX_VERSAL_CRL, .version_id =3D 1, .minimum_version_id =3D 1, @@ -391,29 +393,37 @@ static const VMStateDescription vmstate_crl =3D { } }; =20 -static void crl_class_init(ObjectClass *klass, const void *data) +static void versal_crl_class_init(ObjectClass *klass, const void *data) { - ResettableClass *rc =3D RESETTABLE_CLASS(klass); DeviceClass *dc =3D DEVICE_CLASS(klass); + ResettableClass *rc =3D RESETTABLE_CLASS(klass); =20 - dc->vmsd =3D &vmstate_crl; - - rc->phases.enter =3D crl_reset_enter; - rc->phases.hold =3D crl_reset_hold; + dc->vmsd =3D &vmstate_versal_crl; + rc->phases.enter =3D versal_crl_reset_enter; + rc->phases.hold =3D versal_crl_reset_hold; } =20 -static const TypeInfo crl_info =3D { - .name =3D TYPE_XLNX_VERSAL_CRL, +static const TypeInfo crl_base_info =3D { + .name =3D TYPE_XLNX_VERSAL_CRL_BASE, .parent =3D TYPE_SYS_BUS_DEVICE, - .instance_size =3D sizeof(XlnxVersalCRL), - .class_init =3D crl_class_init, - .instance_init =3D crl_init, + .instance_size =3D sizeof(XlnxVersalCRLBase), + .class_size =3D sizeof(XlnxVersalCRLBaseClass), .instance_finalize =3D crl_finalize, + .abstract =3D true, +}; + +static const TypeInfo versal_crl_info =3D { + .name =3D TYPE_XLNX_VERSAL_CRL, + .parent =3D TYPE_XLNX_VERSAL_CRL_BASE, + .instance_size =3D sizeof(XlnxVersalCRL), + .instance_init =3D versal_crl_init, + .class_init =3D versal_crl_class_init, }; =20 static void crl_register_types(void) { - type_register_static(&crl_info); + type_register_static(&crl_base_info); + type_register_static(&versal_crl_info); } =20 type_init(crl_register_types) --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847156; cv=none; d=zohomail.com; s=zohoarc; b=Vld0NUJ3bq7/5Nf2S1hY3G5HH+B+6Qpa4eTSDr0QfbQGg3aOv2P8xwhBvSwWpTBYenxFBGqADAQOgvEfdmPPp6UBFHtrZUUreR/BszsXAohJgdcChNxT42P+jjsG0T7bqX2JHuEr4NNzXUWpGm1Jfe0v/WXXinvLsChsnMFqDQw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847156; 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=6K1r/UXmoqTTIwRgeNIErMtpaMXoLBqHoCdPYTCanlM=; b=TKZjqBmGwyHxpAMB2LyiRq37AwBO+bfesUblTDNUA1EU9ggD4d/FgKonVukwn191TZj0XAQZSlRVlCaC0mZ6CX9kzOhckeAWqYgEdpIeWFBAlHqnXqoGebZrRuysIFtvfGOKr07/Iz27WKIwzgIbLk//5tdqNBcAzDZx+kj/UUE= 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 1759847156769277.3267733635778; Tue, 7 Oct 2025 07:25:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Qt-00060q-N0; Tue, 07 Oct 2025 10:12:51 -0400 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 1v68QR-0005om-NY for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:25 -0400 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 1v68QA-0002F2-TT for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:22 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-46e2826d5c6so49128405e9.1 for ; Tue, 07 Oct 2025 07:12:03 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.11.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846321; x=1760451121; 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=6K1r/UXmoqTTIwRgeNIErMtpaMXoLBqHoCdPYTCanlM=; b=yT2InjFgbLob4s9aSmxVjB0TC7jsOCv8lEHFJwgl1HHhzIrAKTQGRY7NOAe3Nd3TNg d6EFcJZs0vAMD9ITKLs+9tdm4zpDKNTosuLEuvLJHp6oAdBwOdtCV3Sr3HRsKWh7Ssf8 RgUVhA2aHJkemBASFcSQ3W21ue1BRV9bHJ/j1iWt/RRPHy3B4Jq84eOQYN9CF2qO5zat U7iP0hi9G01nT4C3LXGCTpY71lj1Lk0s+6XD8yFfRXF52kuQltiH2gLhcnLiJnWon7Ac 3uUoZ85+aakOv0gpqvBUY8yWafMpoAnHgh1fcT0RcuXTvNSD5vTEbhSrHp7hWyC+c13e OBjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846321; x=1760451121; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6K1r/UXmoqTTIwRgeNIErMtpaMXoLBqHoCdPYTCanlM=; b=gVQmcOQX1LO55liy0sAljY4Obk7hbG9daD+gWABl43jUk22pQKl8t+xxgfC1hNi16Q Ok9e31gJy3Ez5mh2qzTCkpVnUnVaxj2ywg6F+PWh0om8Txs031K4pPtwCByevIGzt0Er MOYHBL9Ozwf4LxL7EdcCxagDjCr5WJRejzUoMV2eXwQLg/1GIU2Az85DFyRfZWUZA1lW FfHDpcl++mrZRKT+pRdtACyDqNuoGDeTROMryD/3wSfM75no14BSKQAnz6FZSF3o05oV dXN9qts3Sm3N2rgfZUjhKBdOv4sXnzoImKmkLfNyO5yHyTAdCXN8dypwleS2ZRXCMQTK eRVw== X-Gm-Message-State: AOJu0YwbG5BZicW/9E4BA0vJu2NHVoxC+gaKzbqHyYYFplKi0oKNNA0X 2yVXYl5+opj4eDcTVT6S2Fy28Y6rDChQkXVljmWTNxxLsgMeC1jywggcxWefGS3VrlHAvz8u4Gg 3G1k7 X-Gm-Gg: ASbGncvaNYD+qLmM1xf43RAOgI6VWpJ2pNDqv7KeJDZ++xMRQAjUfwsLl+DAUnNaFaK z8S3JIK5Ee5ULxIYEGTbnUHAwqfljwNrpy9gmYWTayUWHFghcZeDrtyagbF3eIiIPGM04CDDoM4 DHpnMgx6YhXRNCMK6PWvi9y/mD75ExjPYeGyistQteEroc5WHX9LCsFm+J1iWKnB9nqYMPrVByV 6PABeVGRyTY5eeg/nDENpOHTeKUhvt5Noz38g+Y0Q85+HEYWGbZLGaB6WQA5OT0feRSUVgVOjWk ySWeYDB3GS62kUwQYj4C9wfz2K2PhSL4y27K/ZQ/7ZHLSzTSTztTyEN36C9+TV22ZHsluzttzOn EhXilfEG+qJUndHLjTuMg/ItdJHrdfEKejct3UI9COZ6Yqds0whIEOIKB X-Google-Smtp-Source: AGHT+IH8h4eCg6GVh0cTAwM7KanAx3+R/ofGaEiPb40z3q2hICTj/WciHESDapeVdU6gu00qtw9k/A== X-Received: by 2002:a05:600c:4510:b0:46e:59bb:63cf with SMTP id 5b1f17b1804b1-46e71140be1mr130191695e9.24.1759846320785; Tue, 07 Oct 2025 07:12:00 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 33/62] hw/misc/xlnx-versal-crl: refactor device reset logic Date: Tue, 7 Oct 2025 15:10:53 +0100 Message-ID: <20251007141123.3239867-34-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::32c; envelope-from=peter.maydell@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: 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: 1759847161340116600 From: Luc Michel Refactor the device reset logic to have a common register write callback for all the devices. This uses a decode function to map the register address to the actual peripheral to reset. This refactoring changes the CPU property name from cpu_r5[*] to rpu[*] to ease with the connections in the Versal SoC. It also fixes a bug where the gem device pointer was mapped to the usb link property. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-33-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/misc/xlnx-versal-crl.h | 8 +- hw/misc/xlnx-versal-crl.c | 169 ++++++++++++++++-------------- 2 files changed, 95 insertions(+), 82 deletions(-) diff --git a/include/hw/misc/xlnx-versal-crl.h b/include/hw/misc/xlnx-versa= l-crl.h index 2b39d203a67..7e50a95ad3c 100644 --- a/include/hw/misc/xlnx-versal-crl.h +++ b/include/hw/misc/xlnx-versal-crl.h @@ -220,8 +220,6 @@ REG32(PSM_RST_MODE, 0x370) =20 #define CRL_R_MAX (R_PSM_RST_MODE + 1) =20 -#define RPU_MAX_CPU 2 - struct XlnxVersalCRLBase { SysBusDevice parent_obj; =20 @@ -231,6 +229,8 @@ struct XlnxVersalCRLBase { =20 struct XlnxVersalCRLBaseClass { SysBusDeviceClass parent_class; + + DeviceState ** (*decode_periph_rst)(XlnxVersalCRLBase *s, hwaddr, size= _t *); }; =20 struct XlnxVersalCRL { @@ -238,11 +238,11 @@ struct XlnxVersalCRL { qemu_irq irq; =20 struct { - ARMCPU *cpu_r5[RPU_MAX_CPU]; + DeviceState *rpu[2]; DeviceState *adma[8]; DeviceState *uart[2]; DeviceState *gem[2]; - DeviceState *usb; + DeviceState *usb[1]; } cfg; =20 uint32_t regs[CRL_R_MAX]; diff --git a/hw/misc/xlnx-versal-crl.c b/hw/misc/xlnx-versal-crl.c index be89e0da40d..6225a92e0bd 100644 --- a/hw/misc/xlnx-versal-crl.c +++ b/hw/misc/xlnx-versal-crl.c @@ -55,90 +55,99 @@ static uint64_t crl_disable_prew(RegisterInfo *reg, uin= t64_t val64) return 0; } =20 -static void crl_reset_dev(XlnxVersalCRL *s, DeviceState *dev, - bool rst_old, bool rst_new) +static DeviceState **versal_decode_periph_rst(XlnxVersalCRLBase *s, + hwaddr addr, size_t *count) { - device_cold_reset(dev); -} + size_t idx; + XlnxVersalCRL *xvc =3D XLNX_VERSAL_CRL(s); =20 -static void crl_reset_cpu(XlnxVersalCRL *s, ARMCPU *armcpu, - bool rst_old, bool rst_new) -{ - if (rst_new) { - arm_set_cpu_off(arm_cpu_mp_affinity(armcpu)); - } else { - arm_set_cpu_on_and_reset(arm_cpu_mp_affinity(armcpu)); + *count =3D 1; + + switch (addr) { + case A_RST_CPU_R5: + return xvc->cfg.rpu; + + case A_RST_ADMA: + /* A single register fans out to all DMA reset inputs */ + *count =3D ARRAY_SIZE(xvc->cfg.adma); + return xvc->cfg.adma; + + case A_RST_UART0 ... A_RST_UART1: + idx =3D (addr - A_RST_UART0) / sizeof(uint32_t); + return xvc->cfg.uart + idx; + + case A_RST_GEM0 ... A_RST_GEM1: + idx =3D (addr - A_RST_GEM0) / sizeof(uint32_t); + return xvc->cfg.gem + idx; + + case A_RST_USB0: + return xvc->cfg.usb; + + default: + /* invalid or unimplemented */ + return NULL; } } =20 -#define REGFIELD_RESET(type, s, reg, f, new_val, dev) { \ - bool old_f =3D ARRAY_FIELD_EX32((s)->regs, reg, f); \ - bool new_f =3D FIELD_EX32(new_val, reg, f); \ - \ - /* Detect edges. */ \ - if (dev && old_f !=3D new_f) { \ - crl_reset_ ## type(s, dev, old_f, new_f); \ - } \ -} - -static uint64_t crl_rst_r5_prew(RegisterInfo *reg, uint64_t val64) +static uint64_t crl_rst_cpu_prew(RegisterInfo *reg, uint64_t val64) { - XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(reg->opaque); + XlnxVersalCRLBase *s =3D XLNX_VERSAL_CRL_BASE(reg->opaque); + XlnxVersalCRLBaseClass *xvcbc =3D XLNX_VERSAL_CRL_BASE_GET_CLASS(s); + DeviceState **dev; + size_t i, count; =20 - REGFIELD_RESET(cpu, s, RST_CPU_R5, RESET_CPU0, val64, s->cfg.cpu_r5[0]= ); - REGFIELD_RESET(cpu, s, RST_CPU_R5, RESET_CPU1, val64, s->cfg.cpu_r5[1]= ); - return val64; -} + dev =3D xvcbc->decode_periph_rst(s, reg->access->addr, &count); =20 -static uint64_t crl_rst_adma_prew(RegisterInfo *reg, uint64_t val64) -{ - XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(reg->opaque); - int i; + for (i =3D 0; i < 2; i++) { + bool prev, new; + uint64_t aff; =20 - /* A single register fans out to all ADMA reset inputs. */ - for (i =3D 0; i < ARRAY_SIZE(s->cfg.adma); i++) { - REGFIELD_RESET(dev, s, RST_ADMA, RESET, val64, s->cfg.adma[i]); + prev =3D extract32(s->regs[reg->access->addr / 4], i, 1); + new =3D extract32(val64, i, 1); + + if (prev =3D=3D new) { + continue; + } + + aff =3D arm_cpu_mp_affinity(ARM_CPU(dev[i])); + + if (new) { + arm_set_cpu_off(aff); + } else { + arm_set_cpu_on_and_reset(aff); + } } + return val64; } =20 -static uint64_t crl_rst_uart0_prew(RegisterInfo *reg, uint64_t val64) +static uint64_t crl_rst_dev_prew(RegisterInfo *reg, uint64_t val64) { - XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(reg->opaque); + XlnxVersalCRLBase *s =3D XLNX_VERSAL_CRL_BASE(reg->opaque); + XlnxVersalCRLBaseClass *xvcbc =3D XLNX_VERSAL_CRL_BASE_GET_CLASS(s); + DeviceState **dev; + bool prev, new; + size_t i, count; =20 - REGFIELD_RESET(dev, s, RST_UART0, RESET, val64, s->cfg.uart[0]); - return val64; -} + dev =3D xvcbc->decode_periph_rst(s, reg->access->addr, &count); =20 -static uint64_t crl_rst_uart1_prew(RegisterInfo *reg, uint64_t val64) -{ - XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(reg->opaque); + if (dev =3D=3D NULL) { + return val64; + } =20 - REGFIELD_RESET(dev, s, RST_UART1, RESET, val64, s->cfg.uart[1]); - return val64; -} + prev =3D s->regs[reg->access->addr / 4] & 0x1; + new =3D val64 & 0x1; =20 -static uint64_t crl_rst_gem0_prew(RegisterInfo *reg, uint64_t val64) -{ - XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(reg->opaque); + if (prev =3D=3D new) { + return val64; + } =20 - REGFIELD_RESET(dev, s, RST_GEM0, RESET, val64, s->cfg.gem[0]); - return val64; -} + for (i =3D 0; i < count; i++) { + if (dev[i]) { + device_cold_reset(dev[i]); + } + } =20 -static uint64_t crl_rst_gem1_prew(RegisterInfo *reg, uint64_t val64) -{ - XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(reg->opaque); - - REGFIELD_RESET(dev, s, RST_GEM1, RESET, val64, s->cfg.gem[1]); - return val64; -} - -static uint64_t crl_rst_usb_prew(RegisterInfo *reg, uint64_t val64) -{ - XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(reg->opaque); - - REGFIELD_RESET(dev, s, RST_USB0, RESET, val64, s->cfg.usb); return val64; } =20 @@ -244,27 +253,27 @@ static const RegisterAccessInfo crl_regs_info[] =3D { },{ .name =3D "RST_CPU_R5", .addr =3D A_RST_CPU_R5, .reset =3D 0x17, .rsvd =3D 0x8, - .pre_write =3D crl_rst_r5_prew, + .pre_write =3D crl_rst_cpu_prew, },{ .name =3D "RST_ADMA", .addr =3D A_RST_ADMA, .reset =3D 0x1, - .pre_write =3D crl_rst_adma_prew, + .pre_write =3D crl_rst_dev_prew, },{ .name =3D "RST_GEM0", .addr =3D A_RST_GEM0, .reset =3D 0x1, - .pre_write =3D crl_rst_gem0_prew, + .pre_write =3D crl_rst_dev_prew, },{ .name =3D "RST_GEM1", .addr =3D A_RST_GEM1, .reset =3D 0x1, - .pre_write =3D crl_rst_gem1_prew, + .pre_write =3D crl_rst_dev_prew, },{ .name =3D "RST_SPARE", .addr =3D A_RST_SPARE, .reset =3D 0x1, },{ .name =3D "RST_USB0", .addr =3D A_RST_USB0, .reset =3D 0x1, - .pre_write =3D crl_rst_usb_prew, + .pre_write =3D crl_rst_dev_prew, },{ .name =3D "RST_UART0", .addr =3D A_RST_UART0, .reset =3D 0x1, - .pre_write =3D crl_rst_uart0_prew, + .pre_write =3D crl_rst_dev_prew, },{ .name =3D "RST_UART1", .addr =3D A_RST_UART1, .reset =3D 0x1, - .pre_write =3D crl_rst_uart1_prew, + .pre_write =3D crl_rst_dev_prew, },{ .name =3D "RST_SPI0", .addr =3D A_RST_SPI0, .reset =3D 0x1, },{ .name =3D "RST_SPI1", .addr =3D A_RST_SPI1, @@ -343,9 +352,9 @@ static void versal_crl_init(Object *obj) sysbus_init_mmio(sbd, &xvcb->reg_array->mem); sysbus_init_irq(sbd, &s->irq); =20 - for (i =3D 0; i < ARRAY_SIZE(s->cfg.cpu_r5); ++i) { - object_property_add_link(obj, "cpu_r5[*]", TYPE_ARM_CPU, - (Object **)&s->cfg.cpu_r5[i], + for (i =3D 0; i < ARRAY_SIZE(s->cfg.rpu); ++i) { + object_property_add_link(obj, "rpu[*]", TYPE_ARM_CPU, + (Object **)&s->cfg.rpu[i], qdev_prop_allow_set_link_before_realize, OBJ_PROP_LINK_STRONG); } @@ -371,10 +380,12 @@ static void versal_crl_init(Object *obj) OBJ_PROP_LINK_STRONG); } =20 - object_property_add_link(obj, "usb", TYPE_DEVICE, - (Object **)&s->cfg.gem[i], - qdev_prop_allow_set_link_before_realize, - OBJ_PROP_LINK_STRONG); + for (i =3D 0; i < ARRAY_SIZE(s->cfg.usb); ++i) { + object_property_add_link(obj, "usb[*]", TYPE_DEVICE, + (Object **)&s->cfg.usb[i], + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG); + } } =20 static void crl_finalize(Object *obj) @@ -396,11 +407,13 @@ static const VMStateDescription vmstate_versal_crl = =3D { static void versal_crl_class_init(ObjectClass *klass, const void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); + XlnxVersalCRLBaseClass *xvcc =3D XLNX_VERSAL_CRL_BASE_CLASS(klass); ResettableClass *rc =3D RESETTABLE_CLASS(klass); =20 dc->vmsd =3D &vmstate_versal_crl; rc->phases.enter =3D versal_crl_reset_enter; rc->phases.hold =3D versal_crl_reset_hold; + xvcc->decode_periph_rst =3D versal_decode_periph_rst; } =20 static const TypeInfo crl_base_info =3D { --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847160; cv=none; d=zohomail.com; s=zohoarc; b=Oohg7ABsYEl1VYOVrCPHOuISPIph35FVOl8OLDjKB8VNprcy2c48eK2hZEjHOrFuCSRcmIoi3DyYVHKiloGDaP0CWOrK9MOehsf/wfg4NgWFGNbMKOM/ZkHhGpvK8NdoTRVGzutq4RHQFksOPHtoIQjNKo/X4Az5ptoZ7dI2Y9E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847160; 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=IYIv2Y309r90WUK07FBdrVlv4IYcETYLV13KmD86218=; b=W3HciJxnrmNyDpjdlterQ23jXfRuTzXE+usPVT7qA8mgjQZ6p1BimkZmnzCRPUGvN2H1itoCZllPOEvPPvN3t83K0hUtgx6sbbdKKxQr3lH7VU4Et5vPmZsJslucRMWzLT0dRSP/EarddkevaZfY/CbeOeR1pGE4HwUjAZRpztw= 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 1759847160513573.4264851151958; Tue, 7 Oct 2025 07:26:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Qo-0005wI-3I; Tue, 07 Oct 2025 10:12:46 -0400 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 1v68QT-0005ou-IX for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:28 -0400 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 1v68QB-0002FQ-9U for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:25 -0400 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-45b4d89217aso37568095e9.2 for ; Tue, 07 Oct 2025 07:12:03 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846322; x=1760451122; 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=IYIv2Y309r90WUK07FBdrVlv4IYcETYLV13KmD86218=; b=HVehQt93Ggy0vmHVd+4RQ6WkTgeneF3sVn3fiC1MoLg7NBUxVm9Gtb0LL/hBUPSxRj o7hycgY6bTU9eYKjNvTdNlHPPZOj+lNOB+I7gncShcku17bNbuIfTBuIkXj/CzbopzzZ +VCoa6NZNFLBoTV4tMmoU6OOeNPQBwHIitQA1RfpPtK+0MXUQDuX27L22q86S4IAMbtb H/qPPYHcDsXPeqCQmKSe8FsYu+L5Y+S1VaF2D9Y7WCCKFvipURjscdD7sc93NNCm8zqK ijrkJ5uxzsb0nghAhNprD2HSGB19MoeTCEkiCDLrRDhGH6IicoBR/N1WX3SZFBGpx8/Q jpTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846322; x=1760451122; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IYIv2Y309r90WUK07FBdrVlv4IYcETYLV13KmD86218=; b=J5Ho7oN4VJN1dsCXDXV36xugg8Fjpie4DXQ9k4AD4magr14r0/hWwGaV7zLovS/57H hyvLixj5d6ELnbAf7+ua4tAiYz44exYz+7/5ggEJhQLhvi6NjutHU4M+IJi4rblyi+bP Wooc/BaowMgcvqPn477RG5RuYj4TrWMkcw8M7BFldvyV0PiKA66J/L0Zw7ZQ909NaQTI 3QRWvXWfZ+SBz3PWVzz5vmFgdkrKpdUGeoOxKCvQq43tbFM0Jnjw2odVQCIlvMXw94L6 YpaGYgKdWd5sqD7+fb8M8iL+gg/KfEX7oXAX5686LM1NQCNAS3rG01jeFydWVJFYiHMx NWpg== X-Gm-Message-State: AOJu0YxK22l6pe5XFjOM4IeKHwDc2f6PEnZwYLpVz/SAfGFsT0L/YxYW KW5aGQf2YxcNnd8OljwsWqg93KvoQ+VsACIoEsjmY2GzYHUwDADtZVvGdF2KJCWouZ9Sfp9AEMU embbB X-Gm-Gg: ASbGncsr0+YC2hxPnKW6ywhn6Rp1OaKOxfeeOBTdP63wfxiMY0c6maab5RpwO2upObB tgBFpA3qlspRljcs8jNdD7dmtehVxYszhiP8G/Fmk6GqNVLiiDTGyTsbybove+C0z14TEJ0P9mu 5xJsf50X9rEiocrtDk36cf2jjnCbwGwOCm7wLesZ1Nks9rjbNh2e3hsy8pupYQ7eTrSSAw8PPZA 34f/6AQCslVYM4AlSVrdX8kOSd62M3nyUigkasdXLu+XxStyaWpGnW53wXErf1usokxJcEsX4WJ keXmD/K6Oi6uCJMDKjTfhsmmgMd/QP8by1gjupaE+mhI6WsFNU+n6z/P3xwAwmKebOAtYHYwYXR si4G1barRsmxeZdeBrJMsUTfV8I9lJ/Tb/Ha1rDRvOcD9IM1fcmEAJZdG X-Google-Smtp-Source: AGHT+IGvMPsVQ5+tRpOQ7p8mnJ7KxPRkhhGjMrLK5ymrl9rPZjG1+M+e1BVCK1ci1wpL44MdxelA+Q== X-Received: by 2002:a05:600c:a319:b0:46e:74cc:42b8 with SMTP id 5b1f17b1804b1-46e74cc4609mr86514565e9.17.1759846321876; Tue, 07 Oct 2025 07:12:01 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 34/62] hw/arm/xlnx-versal: reconnect the CRL to the other devices Date: Tue, 7 Oct 2025 15:10:54 +0100 Message-ID: <20251007141123.3239867-35-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::334; envelope-from=peter.maydell@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: 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: 1759847162426154100 From: Luc Michel The CRL connects to various devices through link properties to be able to reset them. The connections were dropped during the SoC refactoring. Reintroduce them now. Rely on the QOM tree to retrieve the devices to connect. The component parts of the device names are chosen to match the properties on the CRL. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-34-luc.michel@amd.com Signed-off-by: Peter Maydell --- hw/arm/xlnx-versal.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 2e28b807d71..6604e24a9cd 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -1476,17 +1476,46 @@ static void versal_create_cfu(Versal *s, const stru= ct VersalCfuMap *map) sysbus_mmio_get_region(sbd, 0)); } =20 +static inline void crl_connect_dev(Object *crl, Object *dev) +{ + const char *prop =3D object_get_canonical_path_component(dev); + + /* The component part of the device path matches the CRL property name= */ + object_property_set_link(crl, prop, dev, &error_abort); +} + +static inline void crl_connect_dev_by_name(Versal *s, Object *crl, + const char *name, size_t num) +{ + size_t i; + + for (i =3D 0; i < num; i++) { + Object *dev =3D versal_get_child_idx(s, name, i); + + crl_connect_dev(crl, dev); + } +} + static inline void versal_create_crl(Versal *s) { const VersalMap *map; const char *crl_class; DeviceState *dev; + Object *obj; =20 map =3D versal_get_map(s); =20 crl_class =3D TYPE_XLNX_VERSAL_CRL; dev =3D qdev_new(crl_class); - object_property_add_child(OBJECT(s), "crl", OBJECT(dev)); + obj =3D OBJECT(dev); + object_property_add_child(OBJECT(s), "crl", obj); + + crl_connect_dev_by_name(s, obj, "rpu-cluster/rpu", + map->rpu.num_cluster * map->rpu.num_core); + crl_connect_dev_by_name(s, obj, map->zdma[0].name, map->zdma[0].num_ch= an); + crl_connect_dev_by_name(s, obj, "uart", map->num_uart); + crl_connect_dev_by_name(s, obj, "gem", map->num_gem); + crl_connect_dev_by_name(s, obj, "usb", map->num_usb); =20 sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_abort); =20 --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847549; cv=none; d=zohomail.com; s=zohoarc; b=XWvs3lnRAe3NYkoPfuBiBL9veTX6Ob7Avdwp0mHuqdRtnfGN4JF/j0v2OayYIQ7kL4nfr6SjwdghlbnluluiXmMXtfEjUsva3vAiCYXsgYCADps4PFXi7KU1J8dSXVTLRn7dGqQbDKo5zXwroGTKmfirnzM3DX/Qoj362ZrWNb4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847549; 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=GFnB0dE3EY2EnfVj9Zafs1tOQvVMrxpMd2tdX/02X84=; b=kkLXEmQbgUnldUqViYH0Dc789laxDJ19Cva6d2kiZ1M7WLl6PMMLvSmkjZXIZMQESC+vDyZ0p5sPiynCnrL80ZYyDiN3QVBqEwT8+fDzWmgpkUvq1GdxqfkALvCEyBWa5457LD8zS3yZusekflCS01YiUl7g2KCClGzYfow4uAI= 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 1759847549034116.72074581363495; Tue, 7 Oct 2025 07:32:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Qu-00061h-Qj; Tue, 07 Oct 2025 10:12:54 -0400 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 1v68QS-0005oo-7d for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:25 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68QC-0002G4-7z for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:23 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-46e2e363118so57806505e9.0 for ; Tue, 07 Oct 2025 07:12:05 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846323; x=1760451123; 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=GFnB0dE3EY2EnfVj9Zafs1tOQvVMrxpMd2tdX/02X84=; b=LXEshL99WHVoxqVYfa9ccSuv59ZB+m345u1tkGM+hxiqGBgYY1GG+RcuL75La/c599 KdLtxOi4kxABREr73QI1AYtOzVxZ52AxtZC85GSWmJsNEwNGHq6QUttTMSQzK3m5lq4T KzI4cdZyAQm2HFf2VuTT7AA3Bk9WXf31WLMDZczxRzMsgqYIeCNYcQRlr6xc0aTyfbr9 LZis8AXv4/2+yzDibGwosYuA3cn17XNDcC5IY2mPmrxODfknNwMIrYnL3BtX1NpEdCSV 668CgaBo5l62AsbMEq9u1k3M2tt0lp1R+q99JV8lupTu8eIXH/wZdBpUoJENrEsNdsVP FMYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846323; x=1760451123; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GFnB0dE3EY2EnfVj9Zafs1tOQvVMrxpMd2tdX/02X84=; b=t42suFxbZbVQkE3EYvVsL22Ci0++4W0L7rAxOfg9z67Uq/0ksFdQYLhr21pW24tCGu pkyZPLeXbXSJLYfofQH19DogCeRmjX3nWcBeBYe4wILIaAgIERwfdr9ax/jjTbt4pQ6S +A1ZU/8FpPu8GT1PhKk5ghUXfi16rQkwCyLgRJrIfuYz7ISopu8ilUT4QhX+trV3JqbZ Z8yUig4SGUwlJWO5bgTCa787ORHnteQ57lhpDsEnJZD7IMO2hATyg4xhSMKPJzv+SlbK yO9aOLFSQrF2/kzNMuuZ8VZm2I+Skw4J8PaZQKhFL2AeuKWj1djdtUR+NjFrDwQmByC+ Hkjw== X-Gm-Message-State: AOJu0YyH+EV3f7dFM68eX380DYmD1+vZBsJ30F3Gp+raAQP8GMBaPt6Q sAh27MkFfCvloIKCHk6tP8ub3k8llTGrPEDOUhpUU+YLKdC6HRKWTATTrmfPSe4fT0zGclc6wMB swgwQ X-Gm-Gg: ASbGncsUjKweOM1LRZNk+bDinAYS8Fh9Vxi4Z7Por8rlo6F2V0ezOkE/gf9VTjpjGs8 9Nzcyi9GmT2St5yInrbO/KfFacdsglXiTR27rrQeW5kaKMsNTlWcDGLx0W7PoafZeUoVbKNg++H CkE27QBZmrSClfr6OdxRY/hzwHlSkNyOT0kI/nUu74qdh5+dlBCSaM3fe595DPbvtS7Azj1kS5h gYkixizsUsOW9L5w1F9Xmlnrv78OxwFc3Cd5yvlsYSk4g8b/T4/SIV6i7xVcO5xZGaHCmktfgEU wxKd1l3gsmElgznH5X+WjSGzVwG41lXdnz24RYDNde2m0yOMMrE6RSfV1BwGCeliCaaIOngK/oR jWZgqgEoAmc+gLQb+yILIjwu6dOMGozSyo9gIcB+a5gvKT5a6oUGiJWFw X-Google-Smtp-Source: AGHT+IFxsS87KT6f2nDQRRwvz9VS7eu/kzpLb2WdBZkBvPrQECig8mgNI6z3nqWNzot8dyFlDWQLvQ== X-Received: by 2002:a05:600c:6092:b0:46e:48fd:a1a9 with SMTP id 5b1f17b1804b1-46e7117258cmr117242725e9.33.1759846322901; Tue, 07 Oct 2025 07:12:02 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 35/62] hw/arm/xlnx-versal: use hw/arm/bsa.h for timer IRQ indices Date: Tue, 7 Oct 2025 15:10:55 +0100 Message-ID: <20251007141123.3239867-36-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::330; envelope-from=peter.maydell@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: 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: 1759847551021154100 From: Luc Michel Use the bsa.h header for ARM timer and maintainance IRQ indices instead of redefining our owns. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-35-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 6 ------ hw/arm/xlnx-versal.c | 28 +++++++++++++++++----------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index 7bdf6dab629..da0260b83de 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -87,12 +87,6 @@ int versal_get_num_sdhci(VersalVersion version); /* Memory-map and IRQ definitions. Copied a subset from * auto-generated files. */ =20 -#define VERSAL_GIC_MAINT_IRQ 9 -#define VERSAL_TIMER_VIRT_IRQ 11 -#define VERSAL_TIMER_S_EL1_IRQ 13 -#define VERSAL_TIMER_NS_EL1_IRQ 14 -#define VERSAL_TIMER_NS_EL2_IRQ 10 - #define VERSAL_CRL_IRQ 10 #define VERSAL_UART0_IRQ_0 18 #define VERSAL_UART1_IRQ_0 19 diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 6604e24a9cd..dc388300185 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -49,6 +49,7 @@ #include "hw/core/split-irq.h" #include "target/arm/cpu.h" #include "hw/cpu/cluster.h" +#include "hw/arm/bsa.h" =20 #define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") #define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") @@ -673,7 +674,8 @@ static DeviceState *versal_create_gic(Versal *s, qemu_fdt_setprop_cell(s->cfg.fdt, node, "phandle", s->phandle.gic); qemu_fdt_setprop_cell(s->cfg.fdt, node, "#interrupt-cells", 3); qemu_fdt_setprop_cells(s->cfg.fdt, node, "interrupts", - GIC_FDT_IRQ_TYPE_PPI, VERSAL_GIC_MAINT_IRQ, + GIC_FDT_IRQ_TYPE_PPI, + INTID_TO_PPI(ARCH_GIC_MAINT_IRQ), GIC_FDT_IRQ_FLAGS_LEVEL_HI); qemu_fdt_setprop(s->cfg.fdt, node, "interrupt-controller", NULL, 0= ); } @@ -698,10 +700,10 @@ static void connect_gic_to_cpu(const VersalCpuCluster= Map *map, * GIC PPI inputs. */ const int timer_irq[] =3D { - [GTIMER_PHYS] =3D VERSAL_TIMER_NS_EL1_IRQ, - [GTIMER_VIRT] =3D VERSAL_TIMER_VIRT_IRQ, - [GTIMER_HYP] =3D VERSAL_TIMER_NS_EL2_IRQ, - [GTIMER_SEC] =3D VERSAL_TIMER_S_EL1_IRQ, + [GTIMER_PHYS] =3D INTID_TO_PPI(ARCH_TIMER_NS_EL1_IRQ), + [GTIMER_VIRT] =3D INTID_TO_PPI(ARCH_TIMER_VIRT_IRQ), + [GTIMER_HYP] =3D INTID_TO_PPI(ARCH_TIMER_NS_EL2_IRQ), + [GTIMER_SEC] =3D INTID_TO_PPI(ARCH_TIMER_S_EL1_IRQ), }; =20 has_gtimer =3D arm_feature(&ARM_CPU(cpu)->env, ARM_FEATURE_GENERIC_TIM= ER); @@ -716,9 +718,9 @@ static void connect_gic_to_cpu(const VersalCpuClusterMa= p *map, =20 if (map->gic.version =3D=3D 3) { qemu_irq maint_irq; + int maint_idx =3D ppibase + INTID_TO_PPI(ARCH_GIC_MAINT_IRQ); =20 - maint_irq =3D qdev_get_gpio_in(gic, - ppibase + VERSAL_GIC_MAINT_IRQ); + maint_irq =3D qdev_get_gpio_in(gic, maint_idx); qdev_connect_gpio_out_named(cpu, "gicv3-maintenance-interrupt", 0, maint_irq); } @@ -842,13 +844,17 @@ static void versal_create_cpu_cluster(Versal *s, cons= t VersalCpuClusterMap *map) if (map->dtb_expose && has_gtimer) { qemu_fdt_add_subnode(s->cfg.fdt, "/timer"); qemu_fdt_setprop_cells(s->cfg.fdt, "/timer", "interrupts", - GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_S_EL1_IR= Q, + GIC_FDT_IRQ_TYPE_PPI, + INTID_TO_PPI(ARCH_TIMER_S_EL1_IRQ), GIC_FDT_IRQ_FLAGS_LEVEL_HI, - GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_NS_EL1_I= RQ, + GIC_FDT_IRQ_TYPE_PPI, + INTID_TO_PPI(ARCH_TIMER_NS_EL1_IRQ), GIC_FDT_IRQ_FLAGS_LEVEL_HI, - GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_VIRT_IRQ, + GIC_FDT_IRQ_TYPE_PPI, + INTID_TO_PPI(ARCH_TIMER_VIRT_IRQ), GIC_FDT_IRQ_FLAGS_LEVEL_HI, - GIC_FDT_IRQ_TYPE_PPI, VERSAL_TIMER_NS_EL2_I= RQ, + GIC_FDT_IRQ_TYPE_PPI, + INTID_TO_PPI(ARCH_TIMER_NS_EL2_IRQ), GIC_FDT_IRQ_FLAGS_LEVEL_HI); qemu_fdt_setprop(s->cfg.fdt, "/timer", "compatible", compatible, sizeof(compatible)); --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847616; cv=none; d=zohomail.com; s=zohoarc; b=HNF+DJ8PhX5bxNPSdv9LL4WTTHy+xstyGUnxmZ+6M9apaaLmVSv3mzHJ4vwKdQYVOUF0pfMnngMd4tc2Uj14j9q523KLzgKdqnZLfBwHto0iuC2MXr19V/kpzA4ik7zXkLDgq+s3ry1D8RBErv9zNXMvyNX+UGce14SmplD/EXE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847616; 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=KcUfUVnFehZbBqb4WCtH4FXczD/yYJ2ZxZlXOz2VXG4=; b=EitW29LSeBn7fp2f+TCo82+fvIMpmnf49JiKrvVZk1IM5HkMm63ByqwQ4WvlP69/0TrgcrYJu8+pVzIk8S8ZwTtMY3bzuET7lCRDpxBZWu/Y0MSe4wHJWTOvHBHxWiyijLkYPQmAH3DOy9wDSKLFmNMNxSJKz6FdQQnJB8vtRvs= 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 1759847616805642.3582593670521; Tue, 7 Oct 2025 07:33:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Qr-0005yi-BX; Tue, 07 Oct 2025 10:12:49 -0400 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 1v68QV-0005ov-Hg for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:28 -0400 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 1v68QE-0002Gh-IA for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:26 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-46e4f2696bdso76070905e9.0 for ; Tue, 07 Oct 2025 07:12:07 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846324; x=1760451124; 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=KcUfUVnFehZbBqb4WCtH4FXczD/yYJ2ZxZlXOz2VXG4=; b=tcEn+VG6esQg+2Q0VtcTibMHNYbaMgr/vOPBJEOm2d26fJnOx4pfZpQUmNpX/BuWv9 ru1puJZr2bl3Hsp0iUHd6Bm9RmSS50gGvOybPT8kFllUfNypxcKvu4iVq2rvPXeKY14M Wbe4/jrIdqo4+t+/QtGuyUwFHWRYf4HG1WHGWquNJMHvDSaHOrmWcxZ86/KWyVES1jLZ vj1L4l+BDO44SFeeocKC6MK0GZeRKdnxrw1Vf8Q0dFYThCHJFLdEQgg3fOflNzHJaXD8 Y/9SEL6VHZqU6DeTVUEOepIkx1sepaLAYRLmhIi0FoT/U+O78ne9m2HrO97FhrsUyDWq Ku6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846324; x=1760451124; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KcUfUVnFehZbBqb4WCtH4FXczD/yYJ2ZxZlXOz2VXG4=; b=vOrJpSVhr93wxZel69YoRpb5DX6smBDYB8rTaKYozakWw2up+IjXn5XJSLEf7yDMk+ 9V75smJxpaERuKXn29QOG2T+7F+t0VbIvmcyykje5qYKin097hcaBpsrLVGjFP6INXSZ ghsDX4REkYjoVy4lFysz/ZspGAT7DGUcYqPfC61hc6txjftY0oHWlhqgJE4ENI/+unBp itXCE9oqT9m7HhmukjMJ7seEDaF1s4lwCNrXTLLgLILQmZI5e5GRFEkQrqW84P+P10cy MJj7s1Cf+7syHY4Z6DkrM7dC46DhddXpZgc9hWKeuBhnvgZwV9bhTfFwAzJkEDBj1v48 IzHQ== X-Gm-Message-State: AOJu0Yxk7Ai0HMcD1A1eIouHi0R1VXLjGqQ9uqcNRu7Xbf+k7E6gwJII r1H485o8QPzdGsVCn5pi8pEZ+07YEvDZuNjmWE/lHuzGHptm3E+5MTgPy31Ac2/CwnqPB3OfsaZ siEnI X-Gm-Gg: ASbGncuKIrkpuQb9hjmhKgWh0paqX6LauGk09x/M0yzT/abtmwXpwYs27XT/K1W7kCn ygixyqV+KNIPcMdu6zPpDYU0d8M4eS59aoFSSEq/VaV4X4WMQQgBgTiNsD+nxMZE426uV3GKe8P cXR9WgAxhI5Jid3lzWnsQmgJCeptIfO2c8tRllbsMqukRUwWWeBcxtY8gbyCdC+CExUENrAamyw R7Td+awpZ/FOASvThkrA/4Vwu6DnMQD4mqgG2Ab5/biWNelM/FpoWyzbgkI/+97P+6tHap9U/jb ibgI5castV+PaZYpuE3JKUc+C+wdwHKdgv1LeVRRRnNRPdZOc8XvzQLF7ZRIBIWEvZ2ewGfD+PF 9+xz9a9m5s16FzAaY4T30C4XkDxuVceTtwOoPsuprQlZQu1KmWC9IAstr X-Google-Smtp-Source: AGHT+IGoxb6ivevyQjtrhBN+uTGJE2nPsXdR5Kkdl9i8wkfYI/3OD/KaW1m6plc0019xugP+dT++8g== X-Received: by 2002:a05:600c:83cf:b0:46e:4705:4958 with SMTP id 5b1f17b1804b1-46e7114e8a1mr126895075e9.30.1759846323840; Tue, 07 Oct 2025 07:12:03 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 36/62] hw/arm/xlnx-versal: tidy up Date: Tue, 7 Oct 2025 15:10:56 +0100 Message-ID: <20251007141123.3239867-37-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::331; envelope-from=peter.maydell@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, 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: 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: 1759847625942116600 From: Luc Michel Remove now unused macros in xlnx-versal.[ch]. Those macros have been replaced by the VersalMap structure that serves as a central description for the SoC. The ones still in use in the versal_unimp function are inlined. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-36-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 204 ----------------------------------- hw/arm/xlnx-versal.c | 28 ++--- 2 files changed, 7 insertions(+), 225 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index da0260b83de..b6cc71f7209 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -23,18 +23,6 @@ OBJECT_DECLARE_TYPE(Versal, VersalClass, XLNX_VERSAL_BAS= E) =20 #define TYPE_XLNX_VERSAL "xlnx-versal" =20 -#define XLNX_VERSAL_NR_ACPUS 2 -#define XLNX_VERSAL_NR_RCPUS 2 -#define XLNX_VERSAL_NR_UARTS 2 -#define XLNX_VERSAL_NR_GEMS 2 -#define XLNX_VERSAL_NR_ADMAS 8 -#define XLNX_VERSAL_NR_SDS 2 -#define XLNX_VERSAL_NR_XRAM 4 -#define XLNX_VERSAL_NR_IRQS 192 -#define XLNX_VERSAL_NR_CANFD 2 -#define XLNX_VERSAL_CANFD_REF_CLK (24 * 1000 * 1000) -#define XLNX_VERSAL_NR_CFRAME 15 - struct Versal { /*< private >*/ SysBusDevice parent_obj; @@ -84,196 +72,4 @@ int versal_get_num_cpu(VersalVersion version); int versal_get_num_can(VersalVersion version); int versal_get_num_sdhci(VersalVersion version); =20 -/* Memory-map and IRQ definitions. Copied a subset from - * auto-generated files. */ - -#define VERSAL_CRL_IRQ 10 -#define VERSAL_UART0_IRQ_0 18 -#define VERSAL_UART1_IRQ_0 19 -#define VERSAL_CANFD0_IRQ_0 20 -#define VERSAL_CANFD1_IRQ_0 21 -#define VERSAL_USB0_IRQ_0 22 -#define VERSAL_GEM0_IRQ_0 56 -#define VERSAL_GEM0_WAKE_IRQ_0 57 -#define VERSAL_GEM1_IRQ_0 58 -#define VERSAL_GEM1_WAKE_IRQ_0 59 -#define VERSAL_ADMA_IRQ_0 60 -#define VERSAL_XRAM_IRQ_0 79 -#define VERSAL_CFU_IRQ_0 120 -#define VERSAL_PMC_APB_IRQ 121 -#define VERSAL_OSPI_IRQ 124 -#define VERSAL_SD0_IRQ_0 126 -#define VERSAL_EFUSE_IRQ 139 -#define VERSAL_TRNG_IRQ 141 -#define VERSAL_RTC_ALARM_IRQ 142 -#define VERSAL_RTC_SECONDS_IRQ 143 - -/* Architecturally reserved IRQs suitable for virtualization. */ -#define VERSAL_RSVD_IRQ_FIRST 111 -#define VERSAL_RSVD_IRQ_LAST 118 - -#define MM_TOP_RSVD 0xa0000000U -#define MM_TOP_RSVD_SIZE 0x4000000 -#define MM_GIC_APU_DIST_MAIN 0xf9000000U -#define MM_GIC_APU_DIST_MAIN_SIZE 0x10000 -#define MM_GIC_APU_REDIST_0 0xf9080000U -#define MM_GIC_APU_REDIST_0_SIZE 0x80000 - -#define MM_UART0 0xff000000U -#define MM_UART0_SIZE 0x10000 -#define MM_UART1 0xff010000U -#define MM_UART1_SIZE 0x10000 - -#define MM_CANFD0 0xff060000U -#define MM_CANFD0_SIZE 0x10000 -#define MM_CANFD1 0xff070000U -#define MM_CANFD1_SIZE 0x10000 - -#define MM_GEM0 0xff0c0000U -#define MM_GEM0_SIZE 0x10000 -#define MM_GEM1 0xff0d0000U -#define MM_GEM1_SIZE 0x10000 - -#define MM_ADMA_CH0 0xffa80000U -#define MM_ADMA_CH0_SIZE 0x10000 - -#define MM_OCM 0xfffc0000U -#define MM_OCM_SIZE 0x40000 - -#define MM_XRAM 0xfe800000 -#define MM_XRAMC 0xff8e0000 -#define MM_XRAMC_SIZE 0x10000 - -#define MM_USB2_CTRL_REGS 0xFF9D0000 -#define MM_USB2_CTRL_REGS_SIZE 0x10000 - -#define MM_USB_0 0xFE200000 -#define MM_USB_0_SIZE 0x10000 - -#define MM_TOP_DDR 0x0 -#define MM_TOP_DDR_SIZE 0x80000000U -#define MM_TOP_DDR_2 0x800000000ULL -#define MM_TOP_DDR_2_SIZE 0x800000000ULL -#define MM_TOP_DDR_3 0xc000000000ULL -#define MM_TOP_DDR_3_SIZE 0x4000000000ULL -#define MM_TOP_DDR_4 0x10000000000ULL -#define MM_TOP_DDR_4_SIZE 0xb780000000ULL - -#define MM_PSM_START 0xffc80000U -#define MM_PSM_END 0xffcf0000U - -#define MM_CRL 0xff5e0000U -#define MM_CRL_SIZE 0x300000 -#define MM_IOU_SCNTR 0xff130000U -#define MM_IOU_SCNTR_SIZE 0x10000 -#define MM_IOU_SCNTRS 0xff140000U -#define MM_IOU_SCNTRS_SIZE 0x10000 -#define MM_FPD_CRF 0xfd1a0000U -#define MM_FPD_CRF_SIZE 0x140000 -#define MM_FPD_FPD_APU 0xfd5c0000 -#define MM_FPD_FPD_APU_SIZE 0x100 - -#define MM_PMC_PMC_IOU_SLCR 0xf1060000 -#define MM_PMC_PMC_IOU_SLCR_SIZE 0x10000 - -#define MM_PMC_OSPI 0xf1010000 -#define MM_PMC_OSPI_SIZE 0x10000 - -#define MM_PMC_OSPI_DAC 0xc0000000 -#define MM_PMC_OSPI_DAC_SIZE 0x20000000 - -#define MM_PMC_OSPI_DMA_DST 0xf1011800 -#define MM_PMC_OSPI_DMA_SRC 0xf1011000 - -#define MM_PMC_SD0 0xf1040000U -#define MM_PMC_SD0_SIZE 0x10000 -#define MM_PMC_BBRAM_CTRL 0xf11f0000 -#define MM_PMC_BBRAM_CTRL_SIZE 0x00050 -#define MM_PMC_EFUSE_CTRL 0xf1240000 -#define MM_PMC_EFUSE_CTRL_SIZE 0x00104 -#define MM_PMC_EFUSE_CACHE 0xf1250000 -#define MM_PMC_EFUSE_CACHE_SIZE 0x00C00 - -#define MM_PMC_CFU_APB 0xf12b0000 -#define MM_PMC_CFU_APB_SIZE 0x10000 -#define MM_PMC_CFU_STREAM 0xf12c0000 -#define MM_PMC_CFU_STREAM_SIZE 0x1000 -#define MM_PMC_CFU_SFR 0xf12c1000 -#define MM_PMC_CFU_SFR_SIZE 0x1000 -#define MM_PMC_CFU_FDRO 0xf12c2000 -#define MM_PMC_CFU_FDRO_SIZE 0x1000 -#define MM_PMC_CFU_STREAM_2 0xf1f80000 -#define MM_PMC_CFU_STREAM_2_SIZE 0x40000 - -#define MM_PMC_CFRAME0_REG 0xf12d0000 -#define MM_PMC_CFRAME0_REG_SIZE 0x1000 -#define MM_PMC_CFRAME0_FDRI 0xf12d1000 -#define MM_PMC_CFRAME0_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME1_REG 0xf12d2000 -#define MM_PMC_CFRAME1_REG_SIZE 0x1000 -#define MM_PMC_CFRAME1_FDRI 0xf12d3000 -#define MM_PMC_CFRAME1_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME2_REG 0xf12d4000 -#define MM_PMC_CFRAME2_REG_SIZE 0x1000 -#define MM_PMC_CFRAME2_FDRI 0xf12d5000 -#define MM_PMC_CFRAME2_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME3_REG 0xf12d6000 -#define MM_PMC_CFRAME3_REG_SIZE 0x1000 -#define MM_PMC_CFRAME3_FDRI 0xf12d7000 -#define MM_PMC_CFRAME3_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME4_REG 0xf12d8000 -#define MM_PMC_CFRAME4_REG_SIZE 0x1000 -#define MM_PMC_CFRAME4_FDRI 0xf12d9000 -#define MM_PMC_CFRAME4_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME5_REG 0xf12da000 -#define MM_PMC_CFRAME5_REG_SIZE 0x1000 -#define MM_PMC_CFRAME5_FDRI 0xf12db000 -#define MM_PMC_CFRAME5_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME6_REG 0xf12dc000 -#define MM_PMC_CFRAME6_REG_SIZE 0x1000 -#define MM_PMC_CFRAME6_FDRI 0xf12dd000 -#define MM_PMC_CFRAME6_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME7_REG 0xf12de000 -#define MM_PMC_CFRAME7_REG_SIZE 0x1000 -#define MM_PMC_CFRAME7_FDRI 0xf12df000 -#define MM_PMC_CFRAME7_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME8_REG 0xf12e0000 -#define MM_PMC_CFRAME8_REG_SIZE 0x1000 -#define MM_PMC_CFRAME8_FDRI 0xf12e1000 -#define MM_PMC_CFRAME8_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME9_REG 0xf12e2000 -#define MM_PMC_CFRAME9_REG_SIZE 0x1000 -#define MM_PMC_CFRAME9_FDRI 0xf12e3000 -#define MM_PMC_CFRAME9_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME10_REG 0xf12e4000 -#define MM_PMC_CFRAME10_REG_SIZE 0x1000 -#define MM_PMC_CFRAME10_FDRI 0xf12e5000 -#define MM_PMC_CFRAME10_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME11_REG 0xf12e6000 -#define MM_PMC_CFRAME11_REG_SIZE 0x1000 -#define MM_PMC_CFRAME11_FDRI 0xf12e7000 -#define MM_PMC_CFRAME11_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME12_REG 0xf12e8000 -#define MM_PMC_CFRAME12_REG_SIZE 0x1000 -#define MM_PMC_CFRAME12_FDRI 0xf12e9000 -#define MM_PMC_CFRAME12_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME13_REG 0xf12ea000 -#define MM_PMC_CFRAME13_REG_SIZE 0x1000 -#define MM_PMC_CFRAME13_FDRI 0xf12eb000 -#define MM_PMC_CFRAME13_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME14_REG 0xf12ec000 -#define MM_PMC_CFRAME14_REG_SIZE 0x1000 -#define MM_PMC_CFRAME14_FDRI 0xf12ed000 -#define MM_PMC_CFRAME14_FDRI_SIZE 0x1000 -#define MM_PMC_CFRAME_BCAST_REG 0xf12ee000 -#define MM_PMC_CFRAME_BCAST_REG_SIZE 0x1000 -#define MM_PMC_CFRAME_BCAST_FDRI 0xf12ef000 -#define MM_PMC_CFRAME_BCAST_FDRI_SIZE 0x1000 - -#define MM_PMC_CRP 0xf1260000U -#define MM_PMC_CRP_SIZE 0x10000 -#define MM_PMC_RTC 0xf12a0000 -#define MM_PMC_RTC_SIZE 0x10000 -#define MM_PMC_TRNG 0xf1230000 -#define MM_PMC_TRNG_SIZE 0x10000 #endif diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index dc388300185..49b5b244403 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -18,7 +18,6 @@ #include "hw/sysbus.h" #include "net/net.h" #include "system/system.h" -#include "hw/arm/boot.h" #include "hw/misc/unimp.h" #include "hw/arm/xlnx-versal.h" #include "qemu/log.h" @@ -51,13 +50,6 @@ #include "hw/cpu/cluster.h" #include "hw/arm/bsa.h" =20 -#define XLNX_VERSAL_ACPU_TYPE ARM_CPU_TYPE_NAME("cortex-a72") -#define XLNX_VERSAL_RCPU_TYPE ARM_CPU_TYPE_NAME("cortex-r5f") -#define GEM_REVISION 0x40070106 - -#define VERSAL_NUM_PMC_APB_IRQS 18 -#define NUM_OSPI_IRQ_LINES 3 - /* * IRQ descriptor to catch the following cases: * - Multiple devices can connect to the same IRQ. They are OR'ed togeth= er. @@ -1364,7 +1356,7 @@ static DeviceState *versal_create_ospi(Versal *s, linear_mr); =20 /* OSPI irq */ - orgate =3D create_or_gate(s, OBJECT(dev), "irq-orgate", NUM_OSPI_IRQ_L= INES, + orgate =3D create_or_gate(s, OBJECT(dev), "irq-orgate", 3, map->irq); =20 sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, qdev_get_gpio_in(orgate, 0)= ); @@ -1625,18 +1617,12 @@ static void versal_unimp(Versal *s) DeviceState *slcr; qemu_irq gpio_in; =20 - versal_unimp_area(s, "psm", &s->mr_ps, - MM_PSM_START, MM_PSM_END - MM_PSM_START); - versal_unimp_area(s, "crf", &s->mr_ps, - MM_FPD_CRF, MM_FPD_CRF_SIZE); - versal_unimp_area(s, "apu", &s->mr_ps, - MM_FPD_FPD_APU, MM_FPD_FPD_APU_SIZE); - versal_unimp_area(s, "crp", &s->mr_ps, - MM_PMC_CRP, MM_PMC_CRP_SIZE); - versal_unimp_area(s, "iou-scntr", &s->mr_ps, - MM_IOU_SCNTR, MM_IOU_SCNTR_SIZE); - versal_unimp_area(s, "iou-scntr-seucre", &s->mr_ps, - MM_IOU_SCNTRS, MM_IOU_SCNTRS_SIZE); + versal_unimp_area(s, "psm", &s->mr_ps, 0xffc80000, 0x70000); + versal_unimp_area(s, "crf", &s->mr_ps, 0xfd1a0000, 0x140000); + versal_unimp_area(s, "apu", &s->mr_ps, 0xfd5c0000, 0x100); + versal_unimp_area(s, "crp", &s->mr_ps, 0xf1260000, 0x10000); + versal_unimp_area(s, "iou-scntr", &s->mr_ps, 0xff130000, 0x10000); + versal_unimp_area(s, "iou-scntr-seucre", &s->mr_ps, 0xff140000, 0x1000= 0); =20 qdev_init_gpio_in_named(DEVICE(s), versal_unimp_sd_emmc_sel, "sd-emmc-sel-dummy", 2); --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847047; cv=none; d=zohomail.com; s=zohoarc; b=Xsh5K0uRKjIz0iVcr9KUbTK2SrBXTKCsJgJr7YnkZc1bAE7bGrYJJFCjuGjEbKMrfzc6r5QC/JxsZJMUMgNDyP57x30A8S5go7DV26jtM2/M18TKcY51pW5mA91ZpHN3iizWCtVptp+Va9afoHnV8mSPqdvPYCATMMb8F4lYsTg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847047; 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=m+zX3NzIhgNTUAB9X+GPhjJUJ4aR8NzSAEb21SNj8PI=; b=arsUuUMTc8ia5SCqYOeFsfOkytam5hEePzCbEsr7nsmK4VXWJF9xDFHay1mXwD0rdlOkSvef1CC9HJZav4Uv4itKj90/RbOisBg733SR8Aq6NjF4gGGaTtOiLFXK0prBVPbpNuVfxdMioi1pF05kKZQvpwm6xUs/aK3oEukPqvI= 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 175984704728967.45747924818056; Tue, 7 Oct 2025 07:24:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68R0-00065m-Ns; Tue, 07 Oct 2025 10:12:58 -0400 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 1v68QX-0005pM-1X for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:30 -0400 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 1v68QE-0002HB-IG for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:27 -0400 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-46e6a6a5e42so31941515e9.0 for ; Tue, 07 Oct 2025 07:12:07 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846325; x=1760451125; 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=m+zX3NzIhgNTUAB9X+GPhjJUJ4aR8NzSAEb21SNj8PI=; b=ztn1um5f2fabnLh3ulG76fXOYHIi0Nl+eEsDmlVhxiPI+uvaP7ddJYAB3RdmBLHsKq 43t0bd0JOleDefVrayPU6AA+NNoQSJ8/PJC67vfZcT+6cRRH6qGiPVRwW+k2KT8TP5j9 JIyLhX1PRThgT7HheCTkNosysRnW+l21evNsXPQItCmP9LwjIgWI1Ctzl4U9Fllrs/fx J/o1OqoVt03UgFi8CuSk8yUO+9sfCEQdN0ko8i+I2emQ/ZWRoOgbY/eFD67f5TUNF40x 20FpmkUBUhAsOxdX8NUxO181HtzIEzA7/DVKphBm57NLqmBjt6Em3U8ljEmxVf2toe+P 9/PA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846325; x=1760451125; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=m+zX3NzIhgNTUAB9X+GPhjJUJ4aR8NzSAEb21SNj8PI=; b=kpt+yhXog9ARThL8Lr8lX4yqGX95mF9l15DM8GwiTAeHTXZKYtRDC3HobClvvJaIp5 6bSguq9onGBg+XyeKTaFPJu8yGn5G1P6Iuyv3gJ1LJsNBwLQPjHJB4q3Yq/QmSTOUogq H7/7x6YTrhenx4sHRKpdZmZCK4B3FlavuVGqpOjC+wmvmtq1mrdUxf2Q406aMjkksNjJ RONvTe9CKeHttLL+eV8TDg3PQUGY70uHZ3f/11jo21Au1H/024YiNsyJ4THIMCFIG/jg 0zGAbf1yyNR6IM6thJgIlJetFMrPqe7NDcsgsXNfqvamGqMegulu0lbTVGXV8BoguU5R oyvA== X-Gm-Message-State: AOJu0YzVM6bDuk3MnO2UgtNvTxzEeVlXgM/La09WwlwMdAgsAcXI6EZk Oqq6qXaF6JZEDqMLeFa+QuoNDRyV/o5XUtWTgBIn2EI2bbJSAAw7Wmp3JpS3a7Q8KB5owcVELNn kmMab X-Gm-Gg: ASbGncvEYpND86V9DRqx59J/FWHRlE5gQpVPzl48B24AcHfPJ3EJvqlUPm7+XrwqzXz 6cyLLV4NLyXIjjGnhh+nZvkpEE5zicaygogtG51I5ICzWfNKnNTrX1P8qjxAKYn1SbDe98tRgWu 8hkzYAjyQc5KRsiXhwJFZJ9PCQhmHGVPbntpXtkbbS++LFNUzfHLPZgLAQPyhKbIAsfvK7vlnGB x3tCD6kxf48a4sS+YaDhEHAXvdnycHZYpO2faUnFEU2D61rOA0qo1KS9iV+qnHxmEd8MPekMxuQ 4UXTNF93id2EU371ZzSf9xLqcKEcQmXIOGrLdRyVNjrRJ7uzi98d6HdMF6o/684tJnlCaD2+vrG 4r4/ZaONYGxINKcUtQgjo20ZYypGLeITG8i/JGjT6/8LrFNXUYVQrS7Rq X-Google-Smtp-Source: AGHT+IF3qMkLo2YZtyxMHWGYELR7RcvEmrYFzCkbIEH8Mr8NzW9mm37NrVvJ5nmsr7KPzYKabxJ3SA== X-Received: by 2002:a05:600c:34cc:b0:46e:1f86:aeba with SMTP id 5b1f17b1804b1-46e7113f7a4mr144161275e9.17.1759846324898; Tue, 07 Oct 2025 07:12:04 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 37/62] hw/misc/xlnx-versal-crl: add the versal2 version Date: Tue, 7 Oct 2025 15:10:57 +0100 Message-ID: <20251007141123.3239867-38-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::329; envelope-from=peter.maydell@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, UPPERCASE_50_75=0.008 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1759847052772116600 From: Luc Michel Add the versal2 version of the CRL device. For the implemented part, it is similar to the versal version but drives reset line of more devices. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-37-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal-version.h | 1 + include/hw/misc/xlnx-versal-crl.h | 329 ++++++++++++++++++++++ hw/misc/xlnx-versal-crl.c | 392 +++++++++++++++++++++++++++ 3 files changed, 722 insertions(+) diff --git a/include/hw/arm/xlnx-versal-version.h b/include/hw/arm/xlnx-ver= sal-version.h index c4307d1304a..5b6b6e57a57 100644 --- a/include/hw/arm/xlnx-versal-version.h +++ b/include/hw/arm/xlnx-versal-version.h @@ -10,6 +10,7 @@ =20 typedef enum VersalVersion { VERSAL_VER_VERSAL, + VERSAL_VER_VERSAL2, } VersalVersion; =20 #endif diff --git a/include/hw/misc/xlnx-versal-crl.h b/include/hw/misc/xlnx-versa= l-crl.h index 7e50a95ad3c..f6b8694ebea 100644 --- a/include/hw/misc/xlnx-versal-crl.h +++ b/include/hw/misc/xlnx-versal-crl.h @@ -17,10 +17,12 @@ =20 #define TYPE_XLNX_VERSAL_CRL_BASE "xlnx-versal-crl-base" #define TYPE_XLNX_VERSAL_CRL "xlnx-versal-crl" +#define TYPE_XLNX_VERSAL2_CRL "xlnx-versal2-crl" =20 OBJECT_DECLARE_TYPE(XlnxVersalCRLBase, XlnxVersalCRLBaseClass, XLNX_VERSAL_CRL_BASE) OBJECT_DECLARE_SIMPLE_TYPE(XlnxVersalCRL, XLNX_VERSAL_CRL) +OBJECT_DECLARE_SIMPLE_TYPE(XlnxVersal2CRL, XLNX_VERSAL2_CRL) =20 REG32(ERR_CTRL, 0x0) FIELD(ERR_CTRL, SLVERR_ENABLE, 0, 1) @@ -220,6 +222,314 @@ REG32(PSM_RST_MODE, 0x370) =20 #define CRL_R_MAX (R_PSM_RST_MODE + 1) =20 +REG32(VERSAL2_ERR_CTRL, 0x0) +REG32(VERSAL2_WPROT, 0x1c) + FIELD(VERSAL2_WPROT, ACTIVE, 0, 1) +REG32(VERSAL2_RPLL_CTRL, 0x40) + FIELD(VERSAL2_RPLL_CTRL, POST_SRC, 24, 3) + FIELD(VERSAL2_RPLL_CTRL, PRE_SRC, 20, 3) + FIELD(VERSAL2_RPLL_CTRL, CLKOUTDIV, 16, 2) + FIELD(VERSAL2_RPLL_CTRL, FBDIV, 8, 8) + FIELD(VERSAL2_RPLL_CTRL, BYPASS, 3, 1) + FIELD(VERSAL2_RPLL_CTRL, RESET, 0, 1) +REG32(VERSAL2_RPLL_CFG, 0x44) + FIELD(VERSAL2_RPLL_CFG, LOCK_DLY, 25, 7) + FIELD(VERSAL2_RPLL_CFG, LOCK_CNT, 13, 10) + FIELD(VERSAL2_RPLL_CFG, LFHF, 10, 2) + FIELD(VERSAL2_RPLL_CFG, CP, 5, 4) + FIELD(VERSAL2_RPLL_CFG, RES, 0, 4) +REG32(VERSAL2_FLXPLL_CTRL, 0x50) + FIELD(VERSAL2_FLXPLL_CTRL, POST_SRC, 24, 3) + FIELD(VERSAL2_FLXPLL_CTRL, PRE_SRC, 20, 3) + FIELD(VERSAL2_FLXPLL_CTRL, CLKOUTDIV, 16, 2) + FIELD(VERSAL2_FLXPLL_CTRL, FBDIV, 8, 8) + FIELD(VERSAL2_FLXPLL_CTRL, BYPASS, 3, 1) + FIELD(VERSAL2_FLXPLL_CTRL, RESET, 0, 1) +REG32(VERSAL2_FLXPLL_CFG, 0x54) + FIELD(VERSAL2_FLXPLL_CFG, LOCK_DLY, 25, 7) + FIELD(VERSAL2_FLXPLL_CFG, LOCK_CNT, 13, 10) + FIELD(VERSAL2_FLXPLL_CFG, LFHF, 10, 2) + FIELD(VERSAL2_FLXPLL_CFG, CP, 5, 4) + FIELD(VERSAL2_FLXPLL_CFG, RES, 0, 4) +REG32(VERSAL2_PLL_STATUS, 0x60) + FIELD(VERSAL2_PLL_STATUS, FLXPLL_STABLE, 3, 1) + FIELD(VERSAL2_PLL_STATUS, RPLL_STABLE, 2, 1) + FIELD(VERSAL2_PLL_STATUS, FLXPLL_LOCK, 1, 1) + FIELD(VERSAL2_PLL_STATUS, RPLL_LOCK, 0, 1) +REG32(VERSAL2_RPLL_TO_XPD_CTRL, 0x100) + FIELD(VERSAL2_RPLL_TO_XPD_CTRL, DIVISOR0, 8, 10) +REG32(VERSAL2_LPX_TOP_SWITCH_CTRL, 0x104) + FIELD(VERSAL2_LPX_TOP_SWITCH_CTRL, CLKACT_ADMA, 26, 1) + FIELD(VERSAL2_LPX_TOP_SWITCH_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_LPX_TOP_SWITCH_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_LPX_TOP_SWITCH_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_LPX_LSBUS_CLK_CTRL, 0x108) + FIELD(VERSAL2_LPX_LSBUS_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_LPX_LSBUS_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_LPX_LSBUS_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_RPU_CLK_CTRL, 0x10c) + FIELD(VERSAL2_RPU_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_RPU_CLK_CTRL, CLKACT_CLUSTERE, 24, 1) + FIELD(VERSAL2_RPU_CLK_CTRL, CLKACT_CLUSTERD, 23, 1) + FIELD(VERSAL2_RPU_CLK_CTRL, CLKACT_CLUSTERC, 22, 1) + FIELD(VERSAL2_RPU_CLK_CTRL, CLKACT_CLUSTERB, 21, 1) + FIELD(VERSAL2_RPU_CLK_CTRL, CLKACT_CLUSTERA, 20, 1) + FIELD(VERSAL2_RPU_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_RPU_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_OCM_CLK_CTRL, 0x120) + FIELD(VERSAL2_OCM_CLK_CTRL, CLKACT_OCM3, 24, 1) + FIELD(VERSAL2_OCM_CLK_CTRL, CLKACT_OCM2, 23, 1) + FIELD(VERSAL2_OCM_CLK_CTRL, CLKACT_OCM1, 22, 1) + FIELD(VERSAL2_OCM_CLK_CTRL, CLKACT_OCM0, 21, 1) +REG32(VERSAL2_IOU_SWITCH_CLK_CTRL, 0x124) + FIELD(VERSAL2_IOU_SWITCH_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_IOU_SWITCH_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_IOU_SWITCH_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_GEM0_REF_CTRL, 0x128) + FIELD(VERSAL2_GEM0_REF_CTRL, CLKACT_RX, 27, 1) + FIELD(VERSAL2_GEM0_REF_CTRL, CLKACT_TX, 26, 1) + FIELD(VERSAL2_GEM0_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_GEM0_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_GEM0_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_GEM1_REF_CTRL, 0x12c) + FIELD(VERSAL2_GEM1_REF_CTRL, CLKACT_RX, 27, 1) + FIELD(VERSAL2_GEM1_REF_CTRL, CLKACT_TX, 26, 1) + FIELD(VERSAL2_GEM1_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_GEM1_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_GEM1_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_GEM_TSU_REF_CLK_CTRL, 0x130) + FIELD(VERSAL2_GEM_TSU_REF_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_GEM_TSU_REF_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_GEM_TSU_REF_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_USB0_BUS_REF_CLK_CTRL, 0x134) + FIELD(VERSAL2_USB0_BUS_REF_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_USB0_BUS_REF_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_USB0_BUS_REF_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_USB1_BUS_REF_CLK_CTRL, 0x138) + FIELD(VERSAL2_USB1_BUS_REF_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_USB1_BUS_REF_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_USB1_BUS_REF_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_UART0_REF_CLK_CTRL, 0x13c) + FIELD(VERSAL2_UART0_REF_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_UART0_REF_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_UART0_REF_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_UART1_REF_CLK_CTRL, 0x140) + FIELD(VERSAL2_UART1_REF_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_UART1_REF_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_UART1_REF_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_SPI0_REF_CLK_CTRL, 0x144) + FIELD(VERSAL2_SPI0_REF_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_SPI0_REF_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_SPI0_REF_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_SPI1_REF_CLK_CTRL, 0x148) + FIELD(VERSAL2_SPI1_REF_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_SPI1_REF_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_SPI1_REF_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_CAN0_REF_2X_CTRL, 0x14c) + FIELD(VERSAL2_CAN0_REF_2X_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_CAN0_REF_2X_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_CAN0_REF_2X_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_CAN1_REF_2X_CTRL, 0x150) + FIELD(VERSAL2_CAN1_REF_2X_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_CAN1_REF_2X_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_CAN1_REF_2X_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_CAN2_REF_2X_CTRL, 0x154) + FIELD(VERSAL2_CAN2_REF_2X_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_CAN2_REF_2X_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_CAN2_REF_2X_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_CAN3_REF_2X_CTRL, 0x158) + FIELD(VERSAL2_CAN3_REF_2X_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_CAN3_REF_2X_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_CAN3_REF_2X_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_I3C0_REF_CTRL, 0x15c) + FIELD(VERSAL2_I3C0_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_I3C0_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_I3C0_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_I3C1_REF_CTRL, 0x160) + FIELD(VERSAL2_I3C1_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_I3C1_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_I3C1_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_I3C2_REF_CTRL, 0x164) + FIELD(VERSAL2_I3C2_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_I3C2_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_I3C2_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_I3C3_REF_CTRL, 0x168) + FIELD(VERSAL2_I3C3_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_I3C3_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_I3C3_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_I3C4_REF_CTRL, 0x16c) + FIELD(VERSAL2_I3C4_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_I3C4_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_I3C4_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_I3C5_REF_CTRL, 0x170) + FIELD(VERSAL2_I3C5_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_I3C5_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_I3C5_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_I3C6_REF_CTRL, 0x174) + FIELD(VERSAL2_I3C6_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_I3C6_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_I3C6_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_I3C7_REF_CTRL, 0x178) + FIELD(VERSAL2_I3C7_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_I3C7_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_I3C7_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_DBG_LPX_CTRL, 0x17c) + FIELD(VERSAL2_DBG_LPX_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_DBG_LPX_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_DBG_LPX_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_TIMESTAMP_REF_CTRL, 0x180) + FIELD(VERSAL2_TIMESTAMP_REF_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_TIMESTAMP_REF_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_TIMESTAMP_REF_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_SAFETY_CHK, 0x184) +REG32(VERSAL2_ASU_CLK_CTRL, 0x188) + FIELD(VERSAL2_ASU_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_ASU_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_DBG_TSTMP_CLK_CTRL, 0x18c) + FIELD(VERSAL2_DBG_TSTMP_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_DBG_TSTMP_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_DBG_TSTMP_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_MMI_TOPSW_CLK_CTRL, 0x190) + FIELD(VERSAL2_MMI_TOPSW_CLK_CTRL, CLKACT, 25, 1) + FIELD(VERSAL2_MMI_TOPSW_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_MMI_TOPSW_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_WWDT_PLL_CLK_CTRL, 0x194) + FIELD(VERSAL2_WWDT_PLL_CLK_CTRL, DIVISOR0, 8, 10) + FIELD(VERSAL2_WWDT_PLL_CLK_CTRL, SRCSEL, 0, 3) +REG32(VERSAL2_RCLK_CTRL, 0x1a0) + FIELD(VERSAL2_RCLK_CTRL, CLKACT, 8, 6) + FIELD(VERSAL2_RCLK_CTRL, SELECT, 0, 6) +REG32(VERSAL2_RST_RPU_A, 0x310) + FIELD(VERSAL2_RST_RPU_A, TOPRESET, 16, 1) + FIELD(VERSAL2_RST_RPU_A, CORE1_POR, 9, 1) + FIELD(VERSAL2_RST_RPU_A, CORE0_POR, 8, 1) + FIELD(VERSAL2_RST_RPU_A, CORE1_RESET, 1, 1) + FIELD(VERSAL2_RST_RPU_A, CORE0_RESET, 0, 1) +REG32(VERSAL2_RST_RPU_B, 0x314) + FIELD(VERSAL2_RST_RPU_B, TOPRESET, 16, 1) + FIELD(VERSAL2_RST_RPU_B, CORE1_POR, 9, 1) + FIELD(VERSAL2_RST_RPU_B, CORE0_POR, 8, 1) + FIELD(VERSAL2_RST_RPU_B, CORE1_RESET, 1, 1) + FIELD(VERSAL2_RST_RPU_B, CORE0_RESET, 0, 1) +REG32(VERSAL2_RST_RPU_C, 0x318) + FIELD(VERSAL2_RST_RPU_C, TOPRESET, 16, 1) + FIELD(VERSAL2_RST_RPU_C, CORE1_POR, 9, 1) + FIELD(VERSAL2_RST_RPU_C, CORE0_POR, 8, 1) + FIELD(VERSAL2_RST_RPU_C, CORE1_RESET, 1, 1) + FIELD(VERSAL2_RST_RPU_C, CORE0_RESET, 0, 1) +REG32(VERSAL2_RST_RPU_D, 0x31c) + FIELD(VERSAL2_RST_RPU_D, TOPRESET, 16, 1) + FIELD(VERSAL2_RST_RPU_D, CORE1_POR, 9, 1) + FIELD(VERSAL2_RST_RPU_D, CORE0_POR, 8, 1) + FIELD(VERSAL2_RST_RPU_D, CORE1_RESET, 1, 1) + FIELD(VERSAL2_RST_RPU_D, CORE0_RESET, 0, 1) +REG32(VERSAL2_RST_RPU_E, 0x320) + FIELD(VERSAL2_RST_RPU_E, TOPRESET, 16, 1) + FIELD(VERSAL2_RST_RPU_E, CORE1_POR, 9, 1) + FIELD(VERSAL2_RST_RPU_E, CORE0_POR, 8, 1) + FIELD(VERSAL2_RST_RPU_E, CORE1_RESET, 1, 1) + FIELD(VERSAL2_RST_RPU_E, CORE0_RESET, 0, 1) +REG32(VERSAL2_RST_RPU_GD_0, 0x324) + FIELD(VERSAL2_RST_RPU_GD_0, RESET, 1, 1) + FIELD(VERSAL2_RST_RPU_GD_0, TOP_RESET, 0, 1) +REG32(VERSAL2_RST_RPU_GD_1, 0x328) + FIELD(VERSAL2_RST_RPU_GD_1, RESET, 1, 1) + FIELD(VERSAL2_RST_RPU_GD_1, TOP_RESET, 0, 1) +REG32(VERSAL2_RST_ASU_GD, 0x32c) + FIELD(VERSAL2_RST_ASU_GD, RESET, 1, 1) + FIELD(VERSAL2_RST_ASU_GD, TOP_RESET, 0, 1) +REG32(VERSAL2_RST_ADMA, 0x334) + FIELD(VERSAL2_RST_ADMA, RESET, 0, 1) +REG32(VERSAL2_RST_SDMA, 0x338) + FIELD(VERSAL2_RST_SDMA, RESET, 0, 1) +REG32(VERSAL2_RST_GEM0, 0x33c) + FIELD(VERSAL2_RST_GEM0, RESET, 0, 1) +REG32(VERSAL2_RST_GEM1, 0x340) + FIELD(VERSAL2_RST_GEM1, RESET, 0, 1) +REG32(VERSAL2_RST_USB0, 0x348) + FIELD(VERSAL2_RST_USB0, RESET, 0, 1) +REG32(VERSAL2_RST_USB1, 0x34c) + FIELD(VERSAL2_RST_USB1, RESET, 0, 1) +REG32(VERSAL2_RST_UART0, 0x350) + FIELD(VERSAL2_RST_UART0, RESET, 0, 1) +REG32(VERSAL2_RST_UART1, 0x354) + FIELD(VERSAL2_RST_UART1, RESET, 0, 1) +REG32(VERSAL2_RST_SPI0, 0x358) + FIELD(VERSAL2_RST_SPI0, RESET, 0, 1) +REG32(VERSAL2_RST_SPI1, 0x35c) + FIELD(VERSAL2_RST_SPI1, RESET, 0, 1) +REG32(VERSAL2_RST_CAN0, 0x360) + FIELD(VERSAL2_RST_CAN0, RESET, 0, 1) +REG32(VERSAL2_RST_CAN1, 0x364) + FIELD(VERSAL2_RST_CAN1, RESET, 0, 1) +REG32(VERSAL2_RST_CAN2, 0x368) + FIELD(VERSAL2_RST_CAN2, RESET, 0, 1) +REG32(VERSAL2_RST_CAN3, 0x36c) + FIELD(VERSAL2_RST_CAN3, RESET, 0, 1) +REG32(VERSAL2_RST_I3C0, 0x374) + FIELD(VERSAL2_RST_I3C0, RESET, 0, 1) +REG32(VERSAL2_RST_I3C1, 0x378) + FIELD(VERSAL2_RST_I3C1, RESET, 0, 1) +REG32(VERSAL2_RST_I3C2, 0x37c) + FIELD(VERSAL2_RST_I3C2, RESET, 0, 1) +REG32(VERSAL2_RST_I3C3, 0x380) + FIELD(VERSAL2_RST_I3C3, RESET, 0, 1) +REG32(VERSAL2_RST_I3C4, 0x384) + FIELD(VERSAL2_RST_I3C4, RESET, 0, 1) +REG32(VERSAL2_RST_I3C5, 0x388) + FIELD(VERSAL2_RST_I3C5, RESET, 0, 1) +REG32(VERSAL2_RST_I3C6, 0x38c) + FIELD(VERSAL2_RST_I3C6, RESET, 0, 1) +REG32(VERSAL2_RST_I3C7, 0x390) + FIELD(VERSAL2_RST_I3C7, RESET, 0, 1) +REG32(VERSAL2_RST_DBG_LPX, 0x398) + FIELD(VERSAL2_RST_DBG_LPX, RESET_HSDP, 1, 1) + FIELD(VERSAL2_RST_DBG_LPX, RESET, 0, 1) +REG32(VERSAL2_RST_GPIO, 0x39c) + FIELD(VERSAL2_RST_GPIO, RESET, 0, 1) +REG32(VERSAL2_RST_TTC, 0x3a0) + FIELD(VERSAL2_RST_TTC, TTC7_RESET, 7, 1) + FIELD(VERSAL2_RST_TTC, TTC6_RESET, 6, 1) + FIELD(VERSAL2_RST_TTC, TTC5_RESET, 5, 1) + FIELD(VERSAL2_RST_TTC, TTC4_RESET, 4, 1) + FIELD(VERSAL2_RST_TTC, TTC3_RESET, 3, 1) + FIELD(VERSAL2_RST_TTC, TTC2_RESET, 2, 1) + FIELD(VERSAL2_RST_TTC, TTC1_RESET, 1, 1) + FIELD(VERSAL2_RST_TTC, TTC0_RESET, 0, 1) +REG32(VERSAL2_RST_TIMESTAMP, 0x3a4) + FIELD(VERSAL2_RST_TIMESTAMP, RESET, 0, 1) +REG32(VERSAL2_RST_SWDT0, 0x3a8) + FIELD(VERSAL2_RST_SWDT0, RESET, 0, 1) +REG32(VERSAL2_RST_SWDT1, 0x3ac) + FIELD(VERSAL2_RST_SWDT1, RESET, 0, 1) +REG32(VERSAL2_RST_SWDT2, 0x3b0) + FIELD(VERSAL2_RST_SWDT2, RESET, 0, 1) +REG32(VERSAL2_RST_SWDT3, 0x3b4) + FIELD(VERSAL2_RST_SWDT3, RESET, 0, 1) +REG32(VERSAL2_RST_SWDT4, 0x3b8) + FIELD(VERSAL2_RST_SWDT4, RESET, 0, 1) +REG32(VERSAL2_RST_IPI, 0x3bc) + FIELD(VERSAL2_RST_IPI, RESET, 0, 1) +REG32(VERSAL2_RST_SYSMON, 0x3c0) + FIELD(VERSAL2_RST_SYSMON, CFG_RST, 0, 1) +REG32(VERSAL2_ASU_MB_RST_MODE, 0x3c4) + FIELD(VERSAL2_ASU_MB_RST_MODE, WAKEUP, 2, 1) + FIELD(VERSAL2_ASU_MB_RST_MODE, RST_MODE, 0, 2) +REG32(VERSAL2_FPX_TOPSW_MUX_CTRL, 0x3c8) + FIELD(VERSAL2_FPX_TOPSW_MUX_CTRL, SELECT, 0, 1) +REG32(VERSAL2_RST_FPX, 0x3d0) + FIELD(VERSAL2_RST_FPX, SRST, 1, 1) + FIELD(VERSAL2_RST_FPX, POR, 0, 1) +REG32(VERSAL2_RST_MMI, 0x3d4) + FIELD(VERSAL2_RST_MMI, POR, 0, 1) +REG32(VERSAL2_RST_OCM, 0x3d8) + FIELD(VERSAL2_RST_OCM, RESET_OCM3, 3, 1) + FIELD(VERSAL2_RST_OCM, RESET_OCM2, 2, 1) + FIELD(VERSAL2_RST_OCM, RESET_OCM1, 1, 1) + FIELD(VERSAL2_RST_OCM, RESET_OCM0, 0, 1) + +#define VERSAL2_CRL_R_MAX (R_VERSAL2_RST_OCM + 1) + struct XlnxVersalCRLBase { SysBusDevice parent_obj; =20 @@ -249,11 +559,30 @@ struct XlnxVersalCRL { RegisterInfo regs_info[CRL_R_MAX]; }; =20 +struct XlnxVersal2CRL { + XlnxVersalCRLBase parent_obj; + + struct { + DeviceState *rpu[10]; + DeviceState *adma[8]; + DeviceState *sdma[8]; + DeviceState *uart[2]; + DeviceState *gem[2]; + DeviceState *usb[2]; + DeviceState *can[4]; + } cfg; + + RegisterInfo regs_info[VERSAL2_CRL_R_MAX]; + uint32_t regs[VERSAL2_CRL_R_MAX]; +}; + static inline const char *xlnx_versal_crl_class_name(VersalVersion ver) { switch (ver) { case VERSAL_VER_VERSAL: return TYPE_XLNX_VERSAL_CRL; + case VERSAL_VER_VERSAL2: + return TYPE_XLNX_VERSAL2_CRL; default: g_assert_not_reached(); } diff --git a/hw/misc/xlnx-versal-crl.c b/hw/misc/xlnx-versal-crl.c index 6225a92e0bd..10e6af002ba 100644 --- a/hw/misc/xlnx-versal-crl.c +++ b/hw/misc/xlnx-versal-crl.c @@ -83,6 +83,51 @@ static DeviceState **versal_decode_periph_rst(XlnxVersal= CRLBase *s, case A_RST_USB0: return xvc->cfg.usb; =20 + default: + /* invalid or unimplemented */ + g_assert_not_reached(); + } +} + +static DeviceState **versal2_decode_periph_rst(XlnxVersalCRLBase *s, + hwaddr addr, size_t *count) +{ + size_t idx; + XlnxVersal2CRL *xvc =3D XLNX_VERSAL2_CRL(s); + + *count =3D 1; + + switch (addr) { + case A_VERSAL2_RST_RPU_A ... A_VERSAL2_RST_RPU_E: + idx =3D (addr - A_VERSAL2_RST_RPU_A) / sizeof(uint32_t); + idx *=3D 2; /* two RPUs per RST_RPU_x registers */ + return xvc->cfg.rpu + idx; + + case A_VERSAL2_RST_ADMA: + /* A single register fans out to all DMA reset inputs */ + *count =3D ARRAY_SIZE(xvc->cfg.adma); + return xvc->cfg.adma; + + case A_VERSAL2_RST_SDMA: + *count =3D ARRAY_SIZE(xvc->cfg.sdma); + return xvc->cfg.sdma; + + case A_VERSAL2_RST_UART0 ... A_VERSAL2_RST_UART1: + idx =3D (addr - A_VERSAL2_RST_UART0) / sizeof(uint32_t); + return xvc->cfg.uart + idx; + + case A_VERSAL2_RST_GEM0 ... A_VERSAL2_RST_GEM1: + idx =3D (addr - A_VERSAL2_RST_GEM0) / sizeof(uint32_t); + return xvc->cfg.gem + idx; + + case A_VERSAL2_RST_USB0 ... A_VERSAL2_RST_USB1: + idx =3D (addr - A_VERSAL2_RST_USB0) / sizeof(uint32_t); + return xvc->cfg.usb + idx; + + case A_VERSAL2_RST_CAN0 ... A_VERSAL2_RST_CAN3: + idx =3D (addr - A_VERSAL2_RST_CAN0) / sizeof(uint32_t); + return xvc->cfg.can + idx; + default: /* invalid or unimplemented */ return NULL; @@ -307,6 +352,246 @@ static const RegisterAccessInfo crl_regs_info[] =3D { } }; =20 +static const RegisterAccessInfo versal2_crl_regs_info[] =3D { + { .name =3D "ERR_CTRL", .addr =3D A_VERSAL2_ERR_CTRL, + .reset =3D 0x1, + },{ .name =3D "WPROT", .addr =3D A_VERSAL2_WPROT, + },{ .name =3D "RPLL_CTRL", .addr =3D A_VERSAL2_RPLL_CTRL, + .reset =3D 0x24809, + .rsvd =3D 0xf88c00f6, + },{ .name =3D "RPLL_CFG", .addr =3D A_VERSAL2_RPLL_CFG, + .reset =3D 0x7e5dcc6c, + .rsvd =3D 0x1801210, + },{ .name =3D "FLXPLL_CTRL", .addr =3D A_VERSAL2_FLXPLL_CTRL, + .reset =3D 0x24809, + .rsvd =3D 0xf88c00f6, + },{ .name =3D "FLXPLL_CFG", .addr =3D A_VERSAL2_FLXPLL_CFG, + .reset =3D 0x7e5dcc6c, + .rsvd =3D 0x1801210, + },{ .name =3D "PLL_STATUS", .addr =3D A_VERSAL2_PLL_STATUS, + .reset =3D 0xf, + .rsvd =3D 0xf0, + .ro =3D 0xf, + },{ .name =3D "RPLL_TO_XPD_CTRL", .addr =3D A_VERSAL2_RPLL_TO_XPD_CTR= L, + .reset =3D 0x2000100, + .rsvd =3D 0xfdfc00ff, + },{ .name =3D "LPX_TOP_SWITCH_CTRL", .addr =3D A_VERSAL2_LPX_TOP_SWIT= CH_CTRL, + .reset =3D 0xe000300, + .rsvd =3D 0xf1fc00f8, + },{ .name =3D "LPX_LSBUS_CLK_CTRL", .addr =3D A_VERSAL2_LPX_LSBUS_CLK= _CTRL, + .reset =3D 0x2000800, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "RPU_CLK_CTRL", .addr =3D A_VERSAL2_RPU_CLK_CTRL, + .reset =3D 0x3f00300, + .rsvd =3D 0xfc0c00f8, + },{ .name =3D "OCM_CLK_CTRL", .addr =3D A_VERSAL2_OCM_CLK_CTRL, + .reset =3D 0x1e00000, + .rsvd =3D 0xfe1fffff, + },{ .name =3D "IOU_SWITCH_CLK_CTRL", .addr =3D A_VERSAL2_IOU_SWITCH_C= LK_CTRL, + .reset =3D 0x2000500, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "GEM0_REF_CTRL", .addr =3D A_VERSAL2_GEM0_REF_CTRL, + .reset =3D 0xe000a00, + .rsvd =3D 0xf1fc00f8, + },{ .name =3D "GEM1_REF_CTRL", .addr =3D A_VERSAL2_GEM1_REF_CTRL, + .reset =3D 0xe000a00, + .rsvd =3D 0xf1fc00f8, + },{ .name =3D "GEM_TSU_REF_CLK_CTRL", .addr =3D A_VERSAL2_GEM_TSU_REF= _CLK_CTRL, + .reset =3D 0x300, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "USB0_BUS_REF_CLK_CTRL", + .addr =3D A_VERSAL2_USB0_BUS_REF_CLK_CTRL, + .reset =3D 0x2001900, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "USB1_BUS_REF_CLK_CTRL", + .addr =3D A_VERSAL2_USB1_BUS_REF_CLK_CTRL, + .reset =3D 0x2001900, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "UART0_REF_CLK_CTRL", .addr =3D A_VERSAL2_UART0_REF_CLK= _CTRL, + .reset =3D 0xc00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "UART1_REF_CLK_CTRL", .addr =3D A_VERSAL2_UART1_REF_CLK= _CTRL, + .reset =3D 0xc00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "SPI0_REF_CLK_CTRL", .addr =3D A_VERSAL2_SPI0_REF_CLK_C= TRL, + .reset =3D 0x600, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "SPI1_REF_CLK_CTRL", .addr =3D A_VERSAL2_SPI1_REF_CLK_C= TRL, + .reset =3D 0x600, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "CAN0_REF_2X_CTRL", .addr =3D A_VERSAL2_CAN0_REF_2X_CTR= L, + .reset =3D 0xc00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "CAN1_REF_2X_CTRL", .addr =3D A_VERSAL2_CAN1_REF_2X_CTR= L, + .reset =3D 0xc00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "CAN2_REF_2X_CTRL", .addr =3D A_VERSAL2_CAN2_REF_2X_CTR= L, + .reset =3D 0xc00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "CAN3_REF_2X_CTRL", .addr =3D A_VERSAL2_CAN3_REF_2X_CTR= L, + .reset =3D 0xc00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "I3C0_REF_CTRL", .addr =3D A_VERSAL2_I3C0_REF_CTRL, + .reset =3D 0x2000c00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "I3C1_REF_CTRL", .addr =3D A_VERSAL2_I3C1_REF_CTRL, + .reset =3D 0x2000c00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "I3C2_REF_CTRL", .addr =3D A_VERSAL2_I3C2_REF_CTRL, + .reset =3D 0x2000c00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "I3C3_REF_CTRL", .addr =3D A_VERSAL2_I3C3_REF_CTRL, + .reset =3D 0x2000c00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "I3C4_REF_CTRL", .addr =3D A_VERSAL2_I3C4_REF_CTRL, + .reset =3D 0x2000c00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "I3C5_REF_CTRL", .addr =3D A_VERSAL2_I3C5_REF_CTRL, + .reset =3D 0x2000c00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "I3C6_REF_CTRL", .addr =3D A_VERSAL2_I3C6_REF_CTRL, + .reset =3D 0x2000c00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "I3C7_REF_CTRL", .addr =3D A_VERSAL2_I3C7_REF_CTRL, + .reset =3D 0x2000c00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "DBG_LPX_CTRL", .addr =3D A_VERSAL2_DBG_LPX_CTRL, + .reset =3D 0x300, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "TIMESTAMP_REF_CTRL", .addr =3D A_VERSAL2_TIMESTAMP_REF= _CTRL, + .reset =3D 0x2000c00, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "SAFETY_CHK", .addr =3D A_VERSAL2_SAFETY_CHK, + },{ .name =3D "ASU_CLK_CTRL", .addr =3D A_VERSAL2_ASU_CLK_CTRL, + .reset =3D 0x2000f04, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "DBG_TSTMP_CLK_CTRL", .addr =3D A_VERSAL2_DBG_TSTMP_CLK= _CTRL, + .reset =3D 0x300, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "MMI_TOPSW_CLK_CTRL", .addr =3D A_VERSAL2_MMI_TOPSW_CLK= _CTRL, + .reset =3D 0x2000300, + .rsvd =3D 0xfdfc00f8, + },{ .name =3D "WWDT_PLL_CLK_CTRL", .addr =3D A_VERSAL2_WWDT_PLL_CLK_C= TRL, + .reset =3D 0xc00, + .rsvd =3D 0xfffc00f8, + },{ .name =3D "RCLK_CTRL", .addr =3D A_VERSAL2_RCLK_CTRL, + .rsvd =3D 0xc040, + },{ .name =3D "RST_RPU_A", .addr =3D A_VERSAL2_RST_RPU_A, + .reset =3D 0x10303, + .rsvd =3D 0xfffefcfc, + .pre_write =3D crl_rst_cpu_prew, + },{ .name =3D "RST_RPU_B", .addr =3D A_VERSAL2_RST_RPU_B, + .reset =3D 0x10303, + .rsvd =3D 0xfffefcfc, + .pre_write =3D crl_rst_cpu_prew, + },{ .name =3D "RST_RPU_C", .addr =3D A_VERSAL2_RST_RPU_C, + .reset =3D 0x10303, + .rsvd =3D 0xfffefcfc, + .pre_write =3D crl_rst_cpu_prew, + },{ .name =3D "RST_RPU_D", .addr =3D A_VERSAL2_RST_RPU_D, + .reset =3D 0x10303, + .rsvd =3D 0xfffefcfc, + .pre_write =3D crl_rst_cpu_prew, + },{ .name =3D "RST_RPU_E", .addr =3D A_VERSAL2_RST_RPU_E, + .reset =3D 0x10303, + .rsvd =3D 0xfffefcfc, + .pre_write =3D crl_rst_cpu_prew, + },{ .name =3D "RST_RPU_GD_0", .addr =3D A_VERSAL2_RST_RPU_GD_0, + .reset =3D 0x3, + },{ .name =3D "RST_RPU_GD_1", .addr =3D A_VERSAL2_RST_RPU_GD_1, + .reset =3D 0x3, + },{ .name =3D "RST_ASU_GD", .addr =3D A_VERSAL2_RST_ASU_GD, + .reset =3D 0x3, + },{ .name =3D "RST_ADMA", .addr =3D A_VERSAL2_RST_ADMA, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_SDMA", .addr =3D A_VERSAL2_RST_SDMA, + .pre_write =3D crl_rst_dev_prew, + .reset =3D 0x1, + },{ .name =3D "RST_GEM0", .addr =3D A_VERSAL2_RST_GEM0, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_GEM1", .addr =3D A_VERSAL2_RST_GEM1, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_USB0", .addr =3D A_VERSAL2_RST_USB0, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_USB1", .addr =3D A_VERSAL2_RST_USB1, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_UART0", .addr =3D A_VERSAL2_RST_UART0, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_UART1", .addr =3D A_VERSAL2_RST_UART1, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_SPI0", .addr =3D A_VERSAL2_RST_SPI0, + .reset =3D 0x1, + },{ .name =3D "RST_SPI1", .addr =3D A_VERSAL2_RST_SPI1, + .reset =3D 0x1, + },{ .name =3D "RST_CAN0", .addr =3D A_VERSAL2_RST_CAN0, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_CAN1", .addr =3D A_VERSAL2_RST_CAN1, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_CAN2", .addr =3D A_VERSAL2_RST_CAN2, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_CAN3", .addr =3D A_VERSAL2_RST_CAN3, + .reset =3D 0x1, + .pre_write =3D crl_rst_dev_prew, + },{ .name =3D "RST_I3C0", .addr =3D A_VERSAL2_RST_I3C0, + .reset =3D 0x1, + },{ .name =3D "RST_I3C1", .addr =3D A_VERSAL2_RST_I3C1, + .reset =3D 0x1, + },{ .name =3D "RST_I3C2", .addr =3D A_VERSAL2_RST_I3C2, + .reset =3D 0x1, + },{ .name =3D "RST_I3C3", .addr =3D A_VERSAL2_RST_I3C3, + .reset =3D 0x1, + },{ .name =3D "RST_I3C4", .addr =3D A_VERSAL2_RST_I3C4, + .reset =3D 0x1, + },{ .name =3D "RST_I3C5", .addr =3D A_VERSAL2_RST_I3C5, + .reset =3D 0x1, + },{ .name =3D "RST_I3C6", .addr =3D A_VERSAL2_RST_I3C6, + .reset =3D 0x1, + },{ .name =3D "RST_I3C7", .addr =3D A_VERSAL2_RST_I3C7, + .reset =3D 0x1, + },{ .name =3D "RST_DBG_LPX", .addr =3D A_VERSAL2_RST_DBG_LPX, + .reset =3D 0x3, + .rsvd =3D 0xfc, + },{ .name =3D "RST_GPIO", .addr =3D A_VERSAL2_RST_GPIO, + .reset =3D 0x1, + },{ .name =3D "RST_TTC", .addr =3D A_VERSAL2_RST_TTC, + .reset =3D 0xff, + },{ .name =3D "RST_TIMESTAMP", .addr =3D A_VERSAL2_RST_TIMESTAMP, + .reset =3D 0x1, + },{ .name =3D "RST_SWDT0", .addr =3D A_VERSAL2_RST_SWDT0, + .reset =3D 0x1, + },{ .name =3D "RST_SWDT1", .addr =3D A_VERSAL2_RST_SWDT1, + .reset =3D 0x1, + },{ .name =3D "RST_SWDT2", .addr =3D A_VERSAL2_RST_SWDT2, + .reset =3D 0x1, + },{ .name =3D "RST_SWDT3", .addr =3D A_VERSAL2_RST_SWDT3, + .reset =3D 0x1, + },{ .name =3D "RST_SWDT4", .addr =3D A_VERSAL2_RST_SWDT4, + .reset =3D 0x1, + },{ .name =3D "RST_IPI", .addr =3D A_VERSAL2_RST_IPI, + },{ .name =3D "RST_SYSMON", .addr =3D A_VERSAL2_RST_SYSMON, + },{ .name =3D "ASU_MB_RST_MODE", .addr =3D A_VERSAL2_ASU_MB_RST_MODE, + .reset =3D 0x1, + .rsvd =3D 0xf8, + },{ .name =3D "FPX_TOPSW_MUX_CTRL", .addr =3D A_VERSAL2_FPX_TOPSW_MUX= _CTRL, + .reset =3D 0x1, + },{ .name =3D "RST_FPX", .addr =3D A_VERSAL2_RST_FPX, + .reset =3D 0x3, + },{ .name =3D "RST_MMI", .addr =3D A_VERSAL2_RST_MMI, + .reset =3D 0x1, + },{ .name =3D "RST_OCM", .addr =3D A_VERSAL2_RST_OCM, + } +}; + static void versal_crl_reset_enter(Object *obj, ResetType type) { XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(obj); @@ -317,6 +602,16 @@ static void versal_crl_reset_enter(Object *obj, ResetT= ype type) } } =20 +static void versal2_crl_reset_enter(Object *obj, ResetType type) +{ + XlnxVersal2CRL *s =3D XLNX_VERSAL2_CRL(obj); + size_t i; + + for (i =3D 0; i < VERSAL2_CRL_R_MAX; ++i) { + register_reset(&s->regs_info[i]); + } +} + static void versal_crl_reset_hold(Object *obj, ResetType type) { XlnxVersalCRL *s =3D XLNX_VERSAL_CRL(obj); @@ -388,6 +683,73 @@ static void versal_crl_init(Object *obj) } } =20 +static void versal2_crl_init(Object *obj) +{ + XlnxVersal2CRL *s =3D XLNX_VERSAL2_CRL(obj); + XlnxVersalCRLBase *xvcb =3D XLNX_VERSAL_CRL_BASE(obj); + SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); + size_t i; + + xvcb->reg_array =3D register_init_block32(DEVICE(obj), versal2_crl_reg= s_info, + ARRAY_SIZE(versal2_crl_regs_in= fo), + s->regs_info, s->regs, + &crl_ops, + XLNX_VERSAL_CRL_ERR_DEBUG, + VERSAL2_CRL_R_MAX * 4); + xvcb->regs =3D s->regs; + + sysbus_init_mmio(sbd, &xvcb->reg_array->mem); + + for (i =3D 0; i < ARRAY_SIZE(s->cfg.rpu); ++i) { + object_property_add_link(obj, "rpu[*]", TYPE_ARM_CPU, + (Object **)&s->cfg.rpu[i], + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG); + } + + for (i =3D 0; i < ARRAY_SIZE(s->cfg.adma); ++i) { + object_property_add_link(obj, "adma[*]", TYPE_DEVICE, + (Object **)&s->cfg.adma[i], + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG); + } + + for (i =3D 0; i < ARRAY_SIZE(s->cfg.sdma); ++i) { + object_property_add_link(obj, "sdma[*]", TYPE_DEVICE, + (Object **)&s->cfg.sdma[i], + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG); + } + + for (i =3D 0; i < ARRAY_SIZE(s->cfg.uart); ++i) { + object_property_add_link(obj, "uart[*]", TYPE_DEVICE, + (Object **)&s->cfg.uart[i], + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG); + } + + for (i =3D 0; i < ARRAY_SIZE(s->cfg.gem); ++i) { + object_property_add_link(obj, "gem[*]", TYPE_DEVICE, + (Object **)&s->cfg.gem[i], + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG); + } + + for (i =3D 0; i < ARRAY_SIZE(s->cfg.usb); ++i) { + object_property_add_link(obj, "usb[*]", TYPE_DEVICE, + (Object **)&s->cfg.usb[i], + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG); + } + + for (i =3D 0; i < ARRAY_SIZE(s->cfg.can); ++i) { + object_property_add_link(obj, "can[*]", TYPE_DEVICE, + (Object **)&s->cfg.can[i], + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG); + } +} + static void crl_finalize(Object *obj) { XlnxVersalCRLBase *s =3D XLNX_VERSAL_CRL_BASE(obj); @@ -404,6 +766,16 @@ static const VMStateDescription vmstate_versal_crl =3D= { } }; =20 +static const VMStateDescription vmstate_versal2_crl =3D { + .name =3D TYPE_XLNX_VERSAL2_CRL, + .version_id =3D 1, + .minimum_version_id =3D 1, + .fields =3D (const VMStateField[]) { + VMSTATE_UINT32_ARRAY(regs, XlnxVersal2CRL, VERSAL2_CRL_R_MAX), + VMSTATE_END_OF_LIST(), + } +}; + static void versal_crl_class_init(ObjectClass *klass, const void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); @@ -416,6 +788,17 @@ static void versal_crl_class_init(ObjectClass *klass, = const void *data) xvcc->decode_periph_rst =3D versal_decode_periph_rst; } =20 +static void versal2_crl_class_init(ObjectClass *klass, const void *data) +{ + XlnxVersalCRLBaseClass *xvcc =3D XLNX_VERSAL_CRL_BASE_CLASS(klass); + DeviceClass *dc =3D DEVICE_CLASS(klass); + ResettableClass *rc =3D RESETTABLE_CLASS(klass); + + dc->vmsd =3D &vmstate_versal2_crl; + rc->phases.enter =3D versal2_crl_reset_enter; + xvcc->decode_periph_rst =3D versal2_decode_periph_rst; +} + static const TypeInfo crl_base_info =3D { .name =3D TYPE_XLNX_VERSAL_CRL_BASE, .parent =3D TYPE_SYS_BUS_DEVICE, @@ -433,10 +816,19 @@ static const TypeInfo versal_crl_info =3D { .class_init =3D versal_crl_class_init, }; =20 +static const TypeInfo versal2_crl_info =3D { + .name =3D TYPE_XLNX_VERSAL2_CRL, + .parent =3D TYPE_XLNX_VERSAL_CRL_BASE, + .instance_size =3D sizeof(XlnxVersal2CRL), + .instance_init =3D versal2_crl_init, + .class_init =3D versal2_crl_class_init, +}; + static void crl_register_types(void) { type_register_static(&crl_base_info); type_register_static(&versal_crl_info); + type_register_static(&versal2_crl_info); } =20 type_init(crl_register_types) --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847119; cv=none; d=zohomail.com; s=zohoarc; b=Zbq/jKnuxBQ8BvdGq2oPLmQ9j9IfRKHMx/caV8AiXlEg41zBP+AnyBgl9+XfoRGBJ8DEt6wrjwXsS6mxliHVbEPchLc0W0uc5n9y0EIgTXOY8+ym3fkuxTj4DF2KWfs75ZM9wqkPWFbjBg3uVFKEGeAUB3JwBXEqlg4XuApleQM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847119; 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=tGVyZTzYATyCeTWWOlBiNol/uabWyBP70eHig5Rs8QI=; b=PntzYypIqcLlpwDqDzIndjfjaZlq2V3Jrdl4AMOHDDVEpxJYszyqJ2LpYMj5uQgx87wp6CIlXhnlgbaZB52dD4ZHburLU6CPosIIE8eZVAmIbI8JcVYIQ2v1StkyjfLv7+k3iW0nRPPCX/sDFAaojV9kBTehkcHOltmE9fvXg6o= 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 1759847119448714.6029205882463; Tue, 7 Oct 2025 07:25:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Qs-0005zU-JL; Tue, 07 Oct 2025 10:12:51 -0400 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 1v68QY-0005pU-1A for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:30 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68QI-0002He-N2 for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:27 -0400 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-46e6a689bd0so49724485e9.1 for ; Tue, 07 Oct 2025 07:12:08 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846326; x=1760451126; 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=tGVyZTzYATyCeTWWOlBiNol/uabWyBP70eHig5Rs8QI=; b=HoCgklq8a7307Ym8pLYYHzbvjq6zQWh/Oi/Tu9l//Nh1TW/ntsqXuIqUHCGYv+Qgmp DN3/5lXvMm5ab+II2lsaAUsGhUZudmfJJlCzijGl8peQdSdZ6L8t+a5U89dUOTn47gJi dk2ecB444UkRKWuFULuFvAMhA7Ow2sEUgxAiDCWwiVJKWFtqDxbbt2BqfePaLdSef819 a+UFZIqLPM4tuajOufWZjw44KQSMVJ+DhkD9KHrifU+2zUm7ZEaFdQTwW841TNj4/0RM IRxjxc2CjfjhAOyojOWsHoWNEa36IMJsgbFBe1DWzt+pEn7ae7xGiyGsDvc1CyFq1BDV I3cQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846326; x=1760451126; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tGVyZTzYATyCeTWWOlBiNol/uabWyBP70eHig5Rs8QI=; b=lSMLqXBWTpNauKU0cV1rcuJ8QnsfPE/Lqj4CTAisbhZQT/CVbj/rQOqhvpu5dTe/pM 003xHzAq5IKV8TkkWlylHvSsRM2tA8GY5M3Z0D2pyWFZrxrz45r5SbOgeRjcRo/E8gE3 X/g6YUB0BjovD93ERymFpgkWPMNklYCKMneIns26neS4VuxR6sPfm0a8fWPO1cZCB+s/ JHZidY7+kV7QepXEAbUWNIgrZejrUAp2+CZBxWyKwocol8D70F4NzO6yvHu1ntXOh35F IrFqrgc76W2Rc1c2rivWMMYciN2QJs27Y+z9uuoUD7M7XPe0+asKX1Pyv0K6dgEBQemg MF/w== X-Gm-Message-State: AOJu0YxtU+j60RhjbCJJt87B307RkXzSFg0uAw/6EDj8rD8SQtRl/Bzt Ib3G4Zuv0D+XPwHdVCoh2FaQd0DCpqz8XQoxyB7m0SoaVo+dmV3fG9WVNJhzWeGAhsIVi1vzK42 WOv0d X-Gm-Gg: ASbGncuV0jc5vzM2+MZZAkYF530tf3l5WD7npUWXZPaJxT67YThauxsdOhAu7vtvoNa X6yy9SE8ZubYUoVOgboUeqE0SO+6rzySJCeib+s0UBF19DFZrPPWFuF2ZdBDvf5bf/58n0KLSEX 7LEvVdYbTimjQhx7Lq2Zxn6Eoaa8By3WywEkEwXCxOqCpi+LtCX/8XjNtk4nSTjfzOPDmt3GmL1 YxIpRAntPnU1PaUJl6jIiVQB1rLA1uJN8XkdELZ3PSEeLfdZOwrVRAmN7i0Cnkr1P8U53hJ0rUt 7vzscUlBelOcI9TmIOkqsu9P0XkKgnsbNGEH14x3uBwsUOgohhPpC8YOeNuiRsEHf1M1UnmpC3J 6Ywg2hOlXhm641Btagfyb1p6YB2HjHHLnUrr1BN1bmp8l6/VZnflU3T3w X-Google-Smtp-Source: AGHT+IEU+XmxM1GR470I57wyEdW+7hCSsORnDfRjMTipsgQMR5of7E/AyDgkgs6gEMgpno/mD/h/lw== X-Received: by 2002:a05:600c:8185:b0:46e:3f6f:a8ee with SMTP id 5b1f17b1804b1-46e7110c256mr98066035e9.13.1759846325934; Tue, 07 Oct 2025 07:12:05 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 38/62] hw/arm/xlnx-versal: add a per_cluster_gic switch to VersalCpuClusterMap Date: Tue, 7 Oct 2025 15:10:58 +0100 Message-ID: <20251007141123.3239867-39-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.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: 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: 1759847123483116600 From: Luc Michel Add the per_cluster_gic switch to the VersalCpuClusterMap structure. When set, this indicates that a GIC instance should by created per-cluster instead of globally for the whole RPU or APU. This is in preparation for versal2. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-38-luc.michel@amd.com Signed-off-by: Peter Maydell --- hw/arm/xlnx-versal.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 49b5b244403..3d960ed2636 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -88,6 +88,11 @@ enum StartPoweredOffMode { =20 typedef struct VersalCpuClusterMap { VersalGicMap gic; + /* + * true: one GIC per cluster. + * false: one GIC for all CPUs + */ + bool per_cluster_gic; =20 const char *name; const char *cpu_model; @@ -825,12 +830,18 @@ static void versal_create_cpu_cluster(Versal *s, cons= t VersalCpuClusterMap *map) cpus[i * map->num_core + j] =3D cpu; } =20 + if (map->per_cluster_gic) { + versal_create_and_connect_gic(s, map, mr, &cpus[i * map->num_c= ore], + map->num_core); + } } =20 qdev_realize_and_unref(cluster, NULL, &error_fatal); =20 - versal_create_and_connect_gic(s, map, mr, cpus, - map->num_cluster * map->num_core); + if (!map->per_cluster_gic) { + versal_create_and_connect_gic(s, map, mr, cpus, + map->num_cluster * map->num_core); + } =20 has_gtimer =3D arm_feature(&ARM_CPU(cpus[0])->env, ARM_FEATURE_GENERIC= _TIMER); if (map->dtb_expose && has_gtimer) { --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847495; cv=none; d=zohomail.com; s=zohoarc; b=lV8xTYXT7h0V84AVtXuigmvrHr8r98CwB3mTSQtMj+UNsq3VBvy19H16xE0cOpe/xrUJL6smtXJI86gk+w4V6dWRTLCiAdEYRzwj1+uKeDMteWP8IxlllQvG7oWvtDOD9lqIBsJOCaGKWjvtXkUEbiwN8AcPNKRKObyZbo9gm7k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847495; 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=ziGJUQupY63rU8TMMMSnY4UYmwRsfHPmPg1J/VFbM4k=; b=Va/h2laYJZzlYDP5HhJCcdG0p+4bagqXPmdYbYX/YrrN7OLSSkLwXQSV8UVWbbnSBd4rSy27+vCkyDNXmRLCwdpPbGorMPOg3J9A5vUs2h2plezeQE9rxJR31++2OhHwAUqG68ItWBMCWU5nAf3qq1pRClLhbp0WTTY4l+v0Hhg= 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 1759847495501408.5369310599567; Tue, 7 Oct 2025 07:31:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Qr-0005yu-UJ; Tue, 07 Oct 2025 10:12:49 -0400 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 1v68QY-0005pT-1A for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:30 -0400 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 1v68QG-0002IA-Hd for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:28 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-46e3a50bc0fso51601835e9.3 for ; Tue, 07 Oct 2025 07:12:09 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846327; x=1760451127; 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=ziGJUQupY63rU8TMMMSnY4UYmwRsfHPmPg1J/VFbM4k=; b=Q4x+RBgwuzucuWwRjx4ufTMlUk0p0nsHDnCAQDVqkQPtRrvBd2At2qS5qfLIEvz/zr vlpfX0MWbUi6Of6MVGxif7hKbQELkbWh5ZU2bpO5IdYalQJ0GPZJZ62zb6OszWLtrIPZ AoT8saI7Rzy7ojNIyHGBwM8Eg518oUcQ5SbByK7XbDLCG5W6FwTJXDOA7gHOHrcAjPTN xBOwrzWGBQqqlupXWTCI6Of9gYSQlwyYQTg4hvv2k7shNFq8wRCBmZAZvtAejOcBr9KG DxWJXGTqcVqlN5nrPs8VY1udoMO/5PSHHVy7NA/L/5Idv5FwpwlWKWwlEXQoQBSY0XbX dgKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846327; x=1760451127; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ziGJUQupY63rU8TMMMSnY4UYmwRsfHPmPg1J/VFbM4k=; b=KV6ZfOjftFn3YG9icsJt80Gzm9M7JpHm9zqdHUAixqG+QySNq6e2PZITWuWDepyZ1M yMrJnZTOWAdDKno5nnFMYA9AWNDGRril3fSKWWjq4wprqING/89vnRYBNjkVHz3nQIf+ NYw/b7caJyuWztpwcy+lk2Y+5LmRx2YV4+lXWe+8lnQ6m5H8PIbdXmRGzGuU/q2Sl0kT Zym8IqBGe98JRFmUqmmlGdkgctZ+iKiIMbZMiQ+iORpf9LKVKnJclL1P2SyNvSaj84vi zGQybWW//ilE0Nx0jzUHiO6aC/nqFnsYTY06rQ2MdQ+6hMe23EUncZLP78JqLUr+gEKU jCRw== X-Gm-Message-State: AOJu0Yy30E1GxDnh0z2zI4UTvTnfTKI6AXKmkyUUnAtxqNtf4Thrr/w+ /OM9GM3ZFmap/1oL1JnVqaXg4/DdRjfb+lnC/QnVX9TGCUGxJklUXzn0fljZKP9RaKUYc+STdkw UbzgD X-Gm-Gg: ASbGncuERIjQINkRHlCkyiKY/GFAOE+VEs28nST09/L3EYDzMxDg46M2mIlLCcOVYxX lLrOLUcW5iY0i6y+uqN97ceT7evGRQPi4RjC1zf9P4+RYsPPyn9wIu7pv3PhdBVe98b+bLPDlHb NaH7GQMT7Sj3V9ZtFJWH3GIsJ2ZmPa8MZUb5XskdYPjzooj8p59uIsRW9qRks9TkhGEfBf1/9y3 xeYsH84rAqT/ID/uB/ucb+VD5ZGVYqIdRQ0HnZrXEKV7SMwsO46RlkF6zJr07CnF2RFlEtCQMBC KXqa62/PCOPKgwfsIlsmbHDuUFPI6temCpOoo85mKjo8k5yId913fbKwQP8JCAwITOICeVDvQFV vSPqf9P5CwPhUEKC7X7O5+WymtFjyvpqNhTftymk52UPLe5ak0zckz+n3 X-Google-Smtp-Source: AGHT+IFHWrUDATjrE2Ij+Gl+D2Kp4RYlfVcHNLtzH8kAWBqHSdezwZTrKQD/AXjgcya+/oqeGsbtqQ== X-Received: by 2002:a05:600c:8b41:b0:456:1a69:94fa with SMTP id 5b1f17b1804b1-46e71102767mr99148965e9.13.1759846327001; Tue, 07 Oct 2025 07:12:07 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 39/62] hw/arm/xlnx-versal: add the target field in IRQ descriptor Date: Tue, 7 Oct 2025 15:10:59 +0100 Message-ID: <20251007141123.3239867-40-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::331; envelope-from=peter.maydell@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, T_SPF_TEMPERROR=0.01 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: 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: 1759847496691154100 From: Luc Michel Add the target field in the IRQ descriptor. This allows to target an IRQ to another IRQ controller than the GIC(s). Other supported targets are the PMC PPU1 CPU interrupt controller and the EAM (Error management) device. Those two devices are currently not implemented so IRQs targeting those will be left unconnected. This is in preparation for versal2. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-39-luc.michel@amd.com Signed-off-by: Peter Maydell --- hw/arm/xlnx-versal.c | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 3d960ed2636..64744401182 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -52,14 +52,26 @@ =20 /* * IRQ descriptor to catch the following cases: + * - An IRQ can either connect to the GICs, to the PPU1 intc, or the the= EAM * - Multiple devices can connect to the same IRQ. They are OR'ed togeth= er. */ FIELD(VERSAL_IRQ, IRQ, 0, 16) +FIELD(VERSAL_IRQ, TARGET, 16, 2) FIELD(VERSAL_IRQ, ORED, 18, 1) FIELD(VERSAL_IRQ, OR_IDX, 19, 4) /* input index on the IRQ OR gate */ =20 +typedef enum VersalIrqTarget { + IRQ_TARGET_GIC, + IRQ_TARGET_PPU1, + IRQ_TARGET_EAM, +} VersalIrqTarget; + +#define PPU1_IRQ(irq) ((IRQ_TARGET_PPU1 << R_VERSAL_IRQ_TARGET_SHIFT) | (i= rq)) +#define EAM_IRQ(irq) ((IRQ_TARGET_EAM << R_VERSAL_IRQ_TARGET_SHIFT) | (irq= )) #define OR_IRQ(irq, or_idx) \ (R_VERSAL_IRQ_ORED_MASK | ((or_idx) << R_VERSAL_IRQ_OR_IDX_SHIFT) | (i= rq)) +#define PPU1_OR_IRQ(irq, or_idx) \ + ((IRQ_TARGET_PPU1 << R_VERSAL_IRQ_TARGET_SHIFT) | OR_IRQ(irq, or_idx)) =20 typedef struct VersalSimplePeriphMap { uint64_t addr; @@ -414,6 +426,13 @@ static qemu_irq versal_get_gic_irq(Versal *s, int irq_= idx) static qemu_irq versal_get_irq_or_gate_in(Versal *s, int irq_idx, qemu_irq target_irq) { + static const char *TARGET_STR[] =3D { + [IRQ_TARGET_GIC] =3D "gic", + [IRQ_TARGET_PPU1] =3D "ppu1", + [IRQ_TARGET_EAM] =3D "eam", + }; + + VersalIrqTarget target; Object *container =3D versal_get_child(s, "irq-or-gates"); DeviceState *dev; g_autofree char *name; @@ -421,8 +440,9 @@ static qemu_irq versal_get_irq_or_gate_in(Versal *s, in= t irq_idx, =20 idx =3D FIELD_EX32(irq_idx, VERSAL_IRQ, IRQ); or_idx =3D FIELD_EX32(irq_idx, VERSAL_IRQ, OR_IDX); + target =3D FIELD_EX32(irq_idx, VERSAL_IRQ, TARGET); =20 - name =3D g_strdup_printf("irq[%d]", idx); + name =3D g_strdup_printf("%s-irq[%d]", TARGET_STR[target], idx); dev =3D DEVICE(object_resolve_path_at(container, name)); =20 if (dev =3D=3D NULL) { @@ -438,12 +458,29 @@ static qemu_irq versal_get_irq_or_gate_in(Versal *s, = int irq_idx, =20 static qemu_irq versal_get_irq(Versal *s, int irq_idx) { + VersalIrqTarget target; qemu_irq irq; bool ored; =20 + target =3D FIELD_EX32(irq_idx, VERSAL_IRQ, TARGET); ored =3D FIELD_EX32(irq_idx, VERSAL_IRQ, ORED); =20 - irq =3D versal_get_gic_irq(s, irq_idx); + switch (target) { + case IRQ_TARGET_EAM: + /* EAM not implemented */ + return NULL; + + case IRQ_TARGET_PPU1: + /* PPU1 CPU not implemented */ + return NULL; + + case IRQ_TARGET_GIC: + irq =3D versal_get_gic_irq(s, irq_idx); + break; + + default: + g_assert_not_reached(); + } =20 if (ored) { irq =3D versal_get_irq_or_gate_in(s, irq_idx, irq); --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847256; cv=none; d=zohomail.com; s=zohoarc; b=jSA2gHKORkyzrhsbEu8YFq7pPizjAnpOVGfmE7sfTIC6BbospGLxkFi6zyCDM+7cpcNit2tkfbP9vF+Y5mFoHe+FbQruqnILdAlbMxCS5Ai1el3mD/OHCUqnUNrx07hDKKb93syV12QQzFEFCo1rSVmBYDTRDx2ZUqepWTz8tq8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847256; 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=TwQ7dF2D5NalzDhCdRGQlVTp8HgEcdaiq/9rMuXGS7g=; b=JYMBILrFO7hZVcW7r/2Kz7vsoLRltWxncWtmvnvUvdG6dzt9u8Bz9cu/HvVQNk2MBbH2pW/THhAn0Lvneatw3FC+e8W5YD3MvQo7wr28KQ5nuq9MVxqqlSmA+XczjneZqGTmGXR11EYkPKQA1mGQo5ez/5MfTFmzegVWDri/amc= 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 1759847256219963.2904382536323; Tue, 7 Oct 2025 07:27:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68R1-000689-KQ; Tue, 07 Oct 2025 10:13:00 -0400 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 1v68Qb-0005pm-DW for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:34 -0400 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68QJ-0002Ia-AA for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:30 -0400 Received: by mail-wr1-x42e.google.com with SMTP id ffacd0b85a97d-3ece0e4c5faso4892325f8f.1 for ; Tue, 07 Oct 2025 07:12:13 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846328; x=1760451128; 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=TwQ7dF2D5NalzDhCdRGQlVTp8HgEcdaiq/9rMuXGS7g=; b=FB7Z8KruStuNKLKjUkUv0kSVa4MJm9XXjuO/VpFJGuVce2iTRuOYe8hHZKkxdYxCfQ 1sx6SCOI4LYlyODobgxHKuHHsYGn7cq3vfPTWXxnvN/Cwf/jh7dVuMgy2ac5UJP50vTR 77/LSSfQwznTR9kyzlMuJ7eBWVS8vz3xPX0LOQa/85FtEo84fxIvSWMJALm9wuhmefZz ydK6/pnB53HbVXDluaeZzc7WKNFz7BTNQAHkEZBGl5IakzWQyT53yE/B3TS7tTaeGiox QhxQ9pSNyzBlSeELaZoKUSi1fQNbGNqAsbkepuRlXeOoGPysFeotbzzV/I3ROLVDI6tl 31vA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846328; x=1760451128; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TwQ7dF2D5NalzDhCdRGQlVTp8HgEcdaiq/9rMuXGS7g=; b=Bt4ozTnZf+CmjGbHaB/64m/sCZkJR3+L+STs/yJv3bxafcKNOCneRdS4942jyuxB4u wBgYzbE21HMns9JSsDOBBa5E+CbL1DMZem48KOfj+f24IeE3+tLn2AB3w9P7kK3sSZ4/ 4QhkZZkeYGggLfQ5PlaJ6DX85hN26kth1sa9CWu7YdLAQdF0HXdS3rdIw25GvShk6DHd F51QE8KuZsKGvlEeA+syMktMc82SK0U3ylZgrx/rJstUKgXW0IZWjupb/lIdjE7CUirc +y5bKMRmUnaZY/6c1ndpWAzwYUcNhOpKYM4h3h/0nIrCbxR8UiX3NHyyUznFQqHfnc/4 hI2Q== X-Gm-Message-State: AOJu0YzFUIl1/KwNLHfbueV8ERj9rWsMR/mGPUChGC4y4kt21ERpZ/SR SpVenWWYMlxvAfzZfebkX3+LDYGUc34mrKd3ETqLXWcLOxBPbj5ezkm+60UnctSK7cRMF8d3zhL E0UPR X-Gm-Gg: ASbGncv3HcsuL5sJb+BTmTRGhwZ683K4ev6pwt5FYnOxR8grsyXaLOkCBzlp2VqAToJ wNEUFFBPG8YnJD3G1/fdNDrIL0BaPw5S7XwtdU73hLRfHa1W1KhCNQpjnt9WII3/LPf/HuiiEYj 8lPTV48GfpwX01+ol9RThFOkXkuupkNp1VAeLy6v/bAaipYq+H8ExZH1Nd6k0N5QxHdycC/O88X hmMC73OZUIJZKSJkgup/lPGhtmZDuIOzdXP2OkCJ0PlFVqNjlfsqCTHv6Gh36Y8BuOqypwhysko SCTf/R21O4ej+RM0nAIxQ7rX+MrkteVj86S5oFi+qWvky+gsGHC8VTwpoULj9FH4otagKzvQ3G0 YoOamPx4jj8PExa/PJkTk8yGT+SGFGn2BaiGGinQNq7DsVz9GPtmAfxlp X-Google-Smtp-Source: AGHT+IEL9qk9Cd535nWhadRrMVCH3VYAbiKhGkV6ojUPeWK0Zpo3P/VCq3MRvCUYMaYLkSUIEC7hfA== X-Received: by 2002:a05:6000:4210:b0:425:75ce:9f5f with SMTP id ffacd0b85a97d-42575ce9fcdmr6680134f8f.48.1759846328128; Tue, 07 Oct 2025 07:12:08 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 40/62] target/arm/tcg/cpu64: add the cortex-a78ae CPU Date: Tue, 7 Oct 2025 15:11:00 +0100 Message-ID: <20251007141123.3239867-41-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::42e; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42e.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: 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: 1759847257402154100 From: Luc Michel Add support for the ARM Cortex-A78AE CPU. Signed-off-by: Luc Michel Reviewed-by: Edgar E. Iglesias Reviewed-by: Peter Maydell Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-40-luc.michel@amd.com Signed-off-by: Peter Maydell --- target/arm/tcg/cpu64.c | 78 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index abef6a246e8..90b6c0ebb0e 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -406,6 +406,79 @@ static void aarch64_a76_initfn(Object *obj) cpu->isar.reset_pmcr_el0 =3D 0x410b3000; } =20 +static void aarch64_a78ae_initfn(Object *obj) +{ + ARMCPU *cpu =3D ARM_CPU(obj); + ARMISARegisters *isar =3D &cpu->isar; + + cpu->dtb_compatible =3D "arm,cortex-a78ae"; + set_feature(&cpu->env, ARM_FEATURE_V8); + set_feature(&cpu->env, ARM_FEATURE_NEON); + set_feature(&cpu->env, ARM_FEATURE_GENERIC_TIMER); + set_feature(&cpu->env, ARM_FEATURE_AARCH64); + set_feature(&cpu->env, ARM_FEATURE_EL2); + set_feature(&cpu->env, ARM_FEATURE_EL3); + set_feature(&cpu->env, ARM_FEATURE_PMU); + + /* Ordered by 3.2.4 AArch64 registers by functional group */ + SET_IDREG(isar, CLIDR, 0x82000023); + cpu->ctr =3D 0x9444c004; + cpu->dcz_blocksize =3D 4; + SET_IDREG(isar, ID_AA64DFR0, 0x0000000110305408ull); + SET_IDREG(isar, ID_AA64ISAR0, 0x0010100010211120ull); + SET_IDREG(isar, ID_AA64ISAR1, 0x0000000001200031ull); + SET_IDREG(isar, ID_AA64MMFR0, 0x0000000000101125ull); + SET_IDREG(isar, ID_AA64MMFR1, 0x0000000010212122ull); + SET_IDREG(isar, ID_AA64MMFR2, 0x0000000100001011ull); + SET_IDREG(isar, ID_AA64PFR0, 0x1100000010111112ull); /* GIC filled in = later */ + SET_IDREG(isar, ID_AA64PFR1, 0x0000000000000010ull); + SET_IDREG(isar, ID_AFR0, 0x00000000); + SET_IDREG(isar, ID_DFR0, 0x04010088); + SET_IDREG(isar, ID_ISAR0, 0x02101110); + SET_IDREG(isar, ID_ISAR1, 0x13112111); + SET_IDREG(isar, ID_ISAR2, 0x21232042); + SET_IDREG(isar, ID_ISAR3, 0x01112131); + SET_IDREG(isar, ID_ISAR4, 0x00010142); + SET_IDREG(isar, ID_ISAR5, 0x01011121); + SET_IDREG(isar, ID_ISAR6, 0x00000010); + SET_IDREG(isar, ID_MMFR0, 0x10201105); + SET_IDREG(isar, ID_MMFR1, 0x40000000); + SET_IDREG(isar, ID_MMFR2, 0x01260000); + SET_IDREG(isar, ID_MMFR3, 0x02122211); + SET_IDREG(isar, ID_MMFR4, 0x00021110); + SET_IDREG(isar, ID_PFR0, 0x10010131); + SET_IDREG(isar, ID_PFR1, 0x00010000); /* GIC filled in later */ + SET_IDREG(isar, ID_PFR2, 0x00000011); + cpu->midr =3D 0x410fd423; /* r0p3 */ + cpu->revidr =3D 0; + + /* From 3.2.33 CCSIDR_EL1 */ + /* 64KB L1 dcache */ + cpu->ccsidr[0] =3D make_ccsidr(CCSIDR_FORMAT_LEGACY, 4, 64, 64 * KiB, = 7); + /* 64KB L1 icache */ + cpu->ccsidr[1] =3D make_ccsidr(CCSIDR_FORMAT_LEGACY, 4, 64, 64 * KiB, = 2); + /* 512KB L2 cache */ + cpu->ccsidr[2] =3D make_ccsidr(CCSIDR_FORMAT_LEGACY, 8, 64, 512 * KiB,= 7); + + /* From 3.2.118 SCTLR_EL3 */ + cpu->reset_sctlr =3D 0x30c50838; + + /* From 3.4.23 ICH_VTR_EL2 */ + cpu->gic_num_lrs =3D 4; + cpu->gic_vpribits =3D 5; + cpu->gic_vprebits =3D 5; + /* From 3.4.8 ICC_CTLR_EL3 */ + cpu->gic_pribits =3D 5; + + /* From 3.5.1 AdvSIMD AArch64 register summary */ + cpu->isar.mvfr0 =3D 0x10110222; + cpu->isar.mvfr1 =3D 0x13211111; + cpu->isar.mvfr2 =3D 0x00000043; + + /* From 5.5.1 AArch64 PMU register summary */ + cpu->isar.reset_pmcr_el0 =3D 0x41223000; +} + static void aarch64_a64fx_initfn(Object *obj) { ARMCPU *cpu =3D ARM_CPU(obj); @@ -1321,6 +1394,11 @@ static const ARMCPUInfo aarch64_cpus[] =3D { { .name =3D "cortex-a55", .initfn =3D aarch64_a55_initfn }, { .name =3D "cortex-a72", .initfn =3D aarch64_a72_initfn }, { .name =3D "cortex-a76", .initfn =3D aarch64_a76_initfn }, + /* + * The Cortex-A78AE differs slightly from the plain Cortex-A78. We don= 't + * currently model the latter. + */ + { .name =3D "cortex-a78ae", .initfn =3D aarch64_a78ae_initfn }, { .name =3D "cortex-a710", .initfn =3D aarch64_a710_initfn }, { .name =3D "a64fx", .initfn =3D aarch64_a64fx_initfn }, { .name =3D "neoverse-n1", .initfn =3D aarch64_neoverse_n1_init= fn }, --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846408; cv=none; d=zohomail.com; s=zohoarc; b=BYlQ0dhAkbAHT1W9W9t5M1nm2p/zkl3+3WbCdMYNoW3quSVQNVQjcoCYx9U1y+PrgbsAGzRnInyjJOX4jIZPFb3eDR9uOR90pcutndquTlTjdbBsOn52/VelR0VppmZy4C9PcT5paZ38PyWjoQiEqzV7lcehN3pDYb9ILdEiDho= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846408; 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=ljLVQYj6EFjBqdDC9krwMMQQpCfLxr9owFKPvHlUamA=; b=mq6t2TMdHssY58f64/SCHmgt4Hzp1r8xdsvvvWHgHeNFCzuu99uj3cS9JHj8GuOyw+aRdNYASTXTB5I3XgS8jFrlEmmytaYdZVZ+YxU5E/nsxBnuR1Y1Ke7rGly02kdNgzoWN7L4A04+6P4oQLetAjcpf05NNRtwp0aYPlUBqFs= 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 1759846408563290.6316692483882; Tue, 7 Oct 2025 07:13:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68R2-00068l-UB; Tue, 07 Oct 2025 10:13:00 -0400 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 1v68Qc-0005qM-L9 for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:36 -0400 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68QJ-0002Iv-2w for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:34 -0400 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-46e542196c7so41122855e9.0 for ; Tue, 07 Oct 2025 07:12:11 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846329; x=1760451129; 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=ljLVQYj6EFjBqdDC9krwMMQQpCfLxr9owFKPvHlUamA=; b=sAlNZ1I/dWsc8aY1pgP4SK+gyBHFO5UuaKnGkY76g9cusPQQ05zCsO1Y8280Go94+5 e+qJeBPYaUd/FkP6zQUzJO3bC6JYPWoxH/BpfIUYzj9cL3cl07CC4e08N2Xd1Zcufp+j 7OsJhlMtAtygjvgWqGDHWsmTWYLHHKuMVM/cMbez4lCXdkPRxcbzzek/TSHn8l9OFCrW OdWBucacPMCYAKYEQWc0iPx+EWHJzTgAHSx53z0pQJkNrL/ALqfq/HyUtdrNsp6kVvWi C6IhFP+y0MA+ghH2y+D/IgFFwIOlhqdQ78I97ThSTyUi2uYA8jtEkmVOuHHNk/HhYL2l CUqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846329; x=1760451129; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ljLVQYj6EFjBqdDC9krwMMQQpCfLxr9owFKPvHlUamA=; b=dxJNq2wSsjyY2OPIVDjnIYwXgtFVkigzzNfnHESsVaQCpM2y0A6BBL5+UTW+5ZauVW 6NPMqZmEnmcXqDp4wrK5F53tCYgxeTlquRQwfng1zhHPZ8zpCbN4v9Qnxr2cPaUWQXtX ZoYWLnAlnwqIrSt6n/FmFoudyXRPF+Qk7KwP1AKWIjeRfP+OuU1LsSv38D7dBkOVs0Ly 4VwroKXNMMtmgDLB5I+588trfFpsAzSHSRVlsTxcWBsC5Kunb3+DfgxXfGwEqY4kRYgq n/YJB6O04ftsczyx1WLEdIYCtDLQLx3xOGCUMajbcKEYQPKs7reiQNE5EVwGHX5rpPeg 6eUg== X-Gm-Message-State: AOJu0YwHB0lvweoJKfq6sSgakas/iJloMcqtmXR9sa1/irXqTsDQTtBY jp0gFwzIxvRI14+TwnSSJ53rXUxsDZZAAIp3Dg4/CSjgBfspLsKJUznIHt51sfknp80+IYltCkI SDXw6 X-Gm-Gg: ASbGncu2EOfG4Q8c6LMleByRGNPFdLVp6z4ZDgeF/wWOpZB6erdaLplxZ5h6d083iMI PazwEPxP+5RkBKhZ8cCGBRvj/gGqiAHK+cVkCwWwbMEdj1lz51TZ1yykNnXqpBouEyAOneTmOmB I0+IRaFmB7EtjzLQd7jEyLW6DJivqQaaeBt/aRmNJ38bsG1mkuKR1e2qc1A1UKn48dd7uUEdOuR 2L8WCRrb8TR7zBR5PXzx3HrSWk+7SBBfQA/v/9rLqPV4S3UfUB2q9DNQf7Z4R+bTC63fmN4C5ll AqkuIooBmf1vSEkppIROC5hHcEUdmIgoAkyl5TADbLQiOGKwZyugn4sCrm8gs47OPReX39JUHS0 4xOxcHOSd2dHAN44ylim7T6b0XkKf/m+OvhlJAp5NENSrULCLjIFNWh75 X-Google-Smtp-Source: AGHT+IFypqrV3PKxE5sExY3jsAJUMoZfSXxF0ItjIUFtoJwTsBc4lGTy9xjGXFmMkr3+MbKdQG2H9w== X-Received: by 2002:a05:600c:8288:b0:45b:910c:adf with SMTP id 5b1f17b1804b1-46fa29e1c33mr24690925e9.12.1759846329182; Tue, 07 Oct 2025 07:12:09 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 41/62] hw/arm/xlnx-versal: add versal2 SoC Date: Tue, 7 Oct 2025 15:11:01 +0100 Message-ID: <20251007141123.3239867-42-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::32e; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32e.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: 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: 1759846410854154100 From: Luc Michel Add the Versal Gen 2 (versal2) version of the Versal SoC family. This version embeds up to 8 Cortex-A78AE cores (split into 4 clusters) and 10 Cortex-R52 cores (split into 5 clusters). The similarities between versal and versal2 in term of architecture allow to reuse the VersalMap structure to almost fully describe the implemented parts of versal2. The versal2 eFuse device differs quite a lot from the versal one and is left as future work. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-41-luc.michel@amd.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-versal.h | 17 ++- hw/arm/xlnx-versal.c | 207 ++++++++++++++++++++++++++++++++--- 2 files changed, 209 insertions(+), 15 deletions(-) diff --git a/include/hw/arm/xlnx-versal.h b/include/hw/arm/xlnx-versal.h index b6cc71f7209..e1fb1f4cf5b 100644 --- a/include/hw/arm/xlnx-versal.h +++ b/include/hw/arm/xlnx-versal.h @@ -1,5 +1,5 @@ /* - * Model of the Xilinx Versal + * AMD/Xilinx Versal family SoC model. * * Copyright (c) 2018 Xilinx Inc. * Copyright (c) 2025 Advanced Micro Devices, Inc. @@ -22,6 +22,7 @@ OBJECT_DECLARE_TYPE(Versal, VersalClass, XLNX_VERSAL_BASE) =20 #define TYPE_XLNX_VERSAL "xlnx-versal" +#define TYPE_XLNX_VERSAL2 "xlnx-versal2" =20 struct Versal { /*< private >*/ @@ -72,4 +73,18 @@ int versal_get_num_cpu(VersalVersion version); int versal_get_num_can(VersalVersion version); int versal_get_num_sdhci(VersalVersion version); =20 +static inline const char *versal_get_class(VersalVersion version) +{ + switch (version) { + case VERSAL_VER_VERSAL: + return TYPE_XLNX_VERSAL; + + case VERSAL_VER_VERSAL2: + return TYPE_XLNX_VERSAL2; + + default: + g_assert_not_reached(); + } +} + #endif diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c index 64744401182..81cb6294cfa 100644 --- a/hw/arm/xlnx-versal.c +++ b/hw/arm/xlnx-versal.c @@ -1,5 +1,5 @@ /* - * Xilinx Versal SoC model. + * AMD/Xilinx Versal family SoC model. * * Copyright (c) 2018 Xilinx Inc. * Copyright (c) 2025 Advanced Micro Devices, Inc. @@ -352,8 +352,124 @@ static const VersalMap VERSAL_MAP =3D { .reserved =3D { 0xa0000000, 111, 8 }, }; =20 +static const VersalMap VERSAL2_MAP =3D { + .ocm =3D { + .addr =3D 0xbbe00000, + .size =3D 2 * MiB, + }, + + .ddr =3D { + .chan[0] =3D { .addr =3D 0x0, .size =3D 2046 * MiB }, + .chan[1] =3D { .addr =3D 0x800000000ull, .size =3D 32 * GiB }, + .chan[2] =3D { .addr =3D 0xc00000000ull, .size =3D 256 * GiB }, + .chan[3] =3D { .addr =3D 0x10000000000ull, .size =3D 734 * GiB }, + .num_chan =3D 4, + }, + + .apu =3D { + .name =3D "apu", + .cpu_model =3D ARM_CPU_TYPE_NAME("cortex-a78ae"), + .num_cluster =3D 4, + .num_core =3D 2, + .qemu_cluster_id =3D 0, + .mp_affinity =3D { + .base =3D 0x0, /* TODO: the MT bit should be set */ + .core_shift =3D ARM_AFF1_SHIFT, + .cluster_shift =3D ARM_AFF2_SHIFT, + }, + .start_powered_off =3D SPO_SECONDARIES, + .dtb_expose =3D true, + .gic =3D { + .version =3D 3, + .dist =3D 0xe2000000, + .redist =3D 0xe2060000, + .num_irq =3D 544, + .has_its =3D true, + .its =3D 0xe2040000, + }, + }, + + .rpu =3D { + .name =3D "rpu", + .cpu_model =3D ARM_CPU_TYPE_NAME("cortex-r52"), + .num_cluster =3D 5, + .num_core =3D 2, + .qemu_cluster_id =3D 1, + .mp_affinity =3D { + .core_shift =3D ARM_AFF0_SHIFT, + .cluster_shift =3D ARM_AFF1_SHIFT, + }, + .start_powered_off =3D SPO_ALL, + .dtb_expose =3D false, + .per_cluster_gic =3D true, + .gic =3D { + .version =3D 3, + .dist =3D 0x0, + .redist =3D 0x100000, + .num_irq =3D 288, + }, + }, + + .uart[0] =3D { 0xf1920000, 25 }, + .uart[1] =3D { 0xf1930000, 26 }, + .num_uart =3D 2, + + .canfd[0] =3D { 0xf19e0000, 27 }, + .canfd[1] =3D { 0xf19f0000, 28 }, + .canfd[2] =3D { 0xf1a00000, 95 }, + .canfd[3] =3D { 0xf1a10000, 96 }, + .num_canfd =3D 4, + + .gem[0] =3D { { 0xf1a60000, 39 }, 2, "rgmii-id", 1000 }, + .gem[1] =3D { { 0xf1a70000, 41 }, 2, "rgmii-id", 1000 }, + .gem[2] =3D { { 0xed920000, 164 }, 4, "usxgmii", 10000 }, /* MMI 10Gb = GEM */ + .num_gem =3D 3, + + .zdma[0] =3D { "adma", { 0xebd00000, 72 }, 8, 0x10000, 1 }, + .zdma[1] =3D { "sdma", { 0xebd80000, 112 }, 8, 0x10000, 1 }, + .num_zdma =3D 2, + + .usb[0] =3D { .xhci =3D 0xf1b00000, .ctrl =3D 0xf1ee0000, .irq =3D 29 = }, + .usb[1] =3D { .xhci =3D 0xf1c00000, .ctrl =3D 0xf1ef0000, .irq =3D 34 = }, + .num_usb =3D 2, + + .efuse =3D { .ctrl =3D 0xf1240000, .cache =3D 0xf1250000, .irq =3D 230= }, + + .ospi =3D { + .ctrl =3D 0xf1010000, + .dac =3D 0xc0000000, .dac_sz =3D 0x20000000, + .dma_src =3D 0xf1011000, .dma_dst =3D 0xf1011800, + .irq =3D 216, + }, + + .sdhci[0] =3D { 0xf1040000, 218 }, + .sdhci[1] =3D { 0xf1050000, 220 }, /* eMMC */ + .num_sdhci =3D 2, + + .pmc_iou_slcr =3D { 0xf1060000, 222 }, + .bbram =3D { 0xf11f0000, PPU1_OR_IRQ(18, 0) }, + .crl =3D { 0xeb5e0000 }, + .trng =3D { 0xf1230000, 233 }, + .rtc =3D { + { 0xf12a0000, PPU1_OR_IRQ(18, 1) }, + .alarm_irq =3D 200, .second_irq =3D 201 + }, + + .cfu =3D { + .cframe_base =3D 0xf12d0000, .cframe_stride =3D 0x1000, + .cframe_bcast_reg =3D 0xf12ee000, .cframe_bcast_fdri =3D 0xf12ef00= 0, + .cfu_apb =3D 0xf12b0000, .cfu_sfr =3D 0xf12c1000, + .cfu_stream =3D 0xf12c0000, .cfu_stream_2 =3D 0xf1f80000, + .cfu_fdro =3D 0xf12c2000, + .cfu_apb_irq =3D 235, .cframe_irq =3D EAM_IRQ(7), + }, + + .reserved =3D { 0xf5e00000, 270, 8 }, +}; + static const VersalMap *VERSION_TO_MAP[] =3D { [VERSAL_VER_VERSAL] =3D &VERSAL_MAP, + [VERSAL_VER_VERSAL2] =3D &VERSAL2_MAP, }; =20 static inline VersalVersion versal_get_version(Versal *s) @@ -1294,6 +1410,11 @@ static void versal_create_efuse(Versal *s, DeviceState *ctrl; DeviceState *cache; =20 + if (versal_get_version(s) !=3D VERSAL_VER_VERSAL) { + /* TODO for versal2 */ + return; + } + ctrl =3D qdev_new(TYPE_XLNX_VERSAL_EFUSE_CTRL); cache =3D qdev_new(TYPE_XLNX_VERSAL_EFUSE_CACHE); bits =3D qdev_new(TYPE_XLNX_EFUSE); @@ -1545,22 +1666,32 @@ static inline void crl_connect_dev_by_name(Versal *= s, Object *crl, static inline void versal_create_crl(Versal *s) { const VersalMap *map; + VersalVersion ver; const char *crl_class; DeviceState *dev; + size_t num_gem; Object *obj; =20 map =3D versal_get_map(s); + ver =3D versal_get_version(s); =20 - crl_class =3D TYPE_XLNX_VERSAL_CRL; + crl_class =3D xlnx_versal_crl_class_name(ver); dev =3D qdev_new(crl_class); obj =3D OBJECT(dev); object_property_add_child(OBJECT(s), "crl", obj); =20 + /* + * The 3rd GEM controller on versal2 is in the MMI subsystem. + * Its reset line is not connected to the CRL. Consider only the first= two + * ones. + */ + num_gem =3D ver =3D=3D VERSAL_VER_VERSAL2 ? 2 : map->num_gem; + crl_connect_dev_by_name(s, obj, "rpu-cluster/rpu", map->rpu.num_cluster * map->rpu.num_core); crl_connect_dev_by_name(s, obj, map->zdma[0].name, map->zdma[0].num_ch= an); crl_connect_dev_by_name(s, obj, "uart", map->num_uart); - crl_connect_dev_by_name(s, obj, "gem", map->num_gem); + crl_connect_dev_by_name(s, obj, "gem", num_gem); crl_connect_dev_by_name(s, obj, "usb", map->num_usb); =20 sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_abort); @@ -1568,7 +1699,10 @@ static inline void versal_create_crl(Versal *s) memory_region_add_subregion(&s->mr_ps, map->crl.addr, sysbus_mmio_get_region(SYS_BUS_DEVICE(dev)= , 0)); =20 - versal_sysbus_connect_irq(s, SYS_BUS_DEVICE(dev), 0, map->crl.irq); + if (ver =3D=3D VERSAL_VER_VERSAL) { + /* CRL IRQ line has been removed in versal2 */ + versal_sysbus_connect_irq(s, SYS_BUS_DEVICE(dev), 0, map->crl.irq); + } } =20 /* @@ -1660,17 +1794,12 @@ static void versal_unimp_irq_parity_imr(void *opaqu= e, int n, int level) "is not yet implemented\n"); } =20 -static void versal_unimp(Versal *s) +static void versal_unimp_common(Versal *s) { DeviceState *slcr; qemu_irq gpio_in; =20 - versal_unimp_area(s, "psm", &s->mr_ps, 0xffc80000, 0x70000); - versal_unimp_area(s, "crf", &s->mr_ps, 0xfd1a0000, 0x140000); - versal_unimp_area(s, "apu", &s->mr_ps, 0xfd5c0000, 0x100); versal_unimp_area(s, "crp", &s->mr_ps, 0xf1260000, 0x10000); - versal_unimp_area(s, "iou-scntr", &s->mr_ps, 0xff130000, 0x10000); - versal_unimp_area(s, "iou-scntr-seucre", &s->mr_ps, 0xff140000, 0x1000= 0); =20 qdev_init_gpio_in_named(DEVICE(s), versal_unimp_sd_emmc_sel, "sd-emmc-sel-dummy", 2); @@ -1693,6 +1822,25 @@ static void versal_unimp(Versal *s) qdev_connect_gpio_out_named(slcr, SYSBUS_DEVICE_GPIO_IRQ, 0, gpio_in); } =20 +static void versal_unimp(Versal *s) +{ + versal_unimp_area(s, "psm", &s->mr_ps, 0xffc80000, 0x70000); + versal_unimp_area(s, "crf", &s->mr_ps, 0xfd1a0000, 0x140000); + versal_unimp_area(s, "apu", &s->mr_ps, 0xfd5c0000, 0x100); + versal_unimp_area(s, "iou-scntr", &s->mr_ps, 0xff130000, 0x10000); + versal_unimp_area(s, "iou-scntr-secure", &s->mr_ps, 0xff140000, 0x1000= 0); + + versal_unimp_common(s); +} + +static void versal2_unimp(Versal *s) +{ + versal_unimp_area(s, "fpd-systmr-ctrl", &s->mr_ps, 0xec920000, 0x1000); + versal_unimp_area(s, "crf", &s->mr_ps, 0xec200000, 0x100000); + + versal_unimp_common(s); +} + static uint32_t fdt_add_clk_node(Versal *s, const char *name, unsigned int freq_hz) { @@ -1710,9 +1858,8 @@ static uint32_t fdt_add_clk_node(Versal *s, const cha= r *name, return phandle; } =20 -static void versal_realize(DeviceState *dev, Error **errp) +static void versal_realize_common(Versal *s) { - Versal *s =3D XLNX_VERSAL_BASE(dev); DeviceState *slcr, *ospi; MemoryRegion *ocm; Object *container; @@ -1787,7 +1934,6 @@ static void versal_realize(DeviceState *dev, Error **= errp) versal_create_crl(s); =20 versal_map_ddr(s, &map->ddr); - versal_unimp(s); =20 /* Create the On Chip Memory (OCM). */ ocm =3D g_new(MemoryRegion, 1); @@ -1795,6 +1941,22 @@ static void versal_realize(DeviceState *dev, Error *= *errp) memory_region_add_subregion_overlap(&s->mr_ps, map->ocm.addr, ocm, 0); } =20 +static void versal_realize(DeviceState *dev, Error **errp) +{ + Versal *s =3D XLNX_VERSAL_BASE(dev); + + versal_realize_common(s); + versal_unimp(s); +} + +static void versal2_realize(DeviceState *dev, Error **errp) +{ + Versal *s =3D XLNX_VERSAL_BASE(dev); + + versal_realize_common(s); + versal2_unimp(s); +} + DeviceState *versal_get_boot_cpu(Versal *s) { return DEVICE(versal_get_child_idx(s, "apu-cluster/apu", 0)); @@ -1943,7 +2105,6 @@ static void versal_base_class_init(ObjectClass *klass= , const void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); =20 - dc->realize =3D versal_realize; device_class_set_props(dc, versal_properties); /* No VMSD since we haven't got any top-level SoC state to save. */ } @@ -1951,8 +2112,19 @@ static void versal_base_class_init(ObjectClass *klas= s, const void *data) static void versal_class_init(ObjectClass *klass, const void *data) { VersalClass *vc =3D XLNX_VERSAL_BASE_CLASS(klass); + DeviceClass *dc =3D DEVICE_CLASS(klass); =20 vc->version =3D VERSAL_VER_VERSAL; + dc->realize =3D versal_realize; +} + +static void versal2_class_init(ObjectClass *klass, const void *data) +{ + VersalClass *vc =3D XLNX_VERSAL_BASE_CLASS(klass); + DeviceClass *dc =3D DEVICE_CLASS(klass); + + vc->version =3D VERSAL_VER_VERSAL2; + dc->realize =3D versal2_realize; } =20 static const TypeInfo versal_base_info =3D { @@ -1972,10 +2144,17 @@ static const TypeInfo versal_info =3D { .class_init =3D versal_class_init, }; =20 +static const TypeInfo versal2_info =3D { + .name =3D TYPE_XLNX_VERSAL2, + .parent =3D TYPE_XLNX_VERSAL_BASE, + .class_init =3D versal2_class_init, +}; + static void versal_register_types(void) { type_register_static(&versal_base_info); type_register_static(&versal_info); + type_register_static(&versal2_info); } =20 type_init(versal_register_types); --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847255; cv=none; d=zohomail.com; s=zohoarc; b=Cvn9mInYVsmxHJe4NTwNUWypwe2YFCcZ0y2J4bfmpIeDYEVXfLDuNdRWfUEf/VJk7gzRm0OV+/R0ER3R7pCzL5gbbxf3OKmq449vojuYc3S8yRwFpwRO8UlS6zQwIKBF640arCMqgOeI/IKEFY1RSu36xYMZJWQ8ZbBJkPn/n2E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847255; 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=fePF+CNK01A50MBnR5x5T/juuliOVBOVncbNMYtPEwA=; b=Fsr0r5k8uSxEyJKTLXM94FovLFYEofB3bW9FIHlvkxUqYuNtVnX2KqiNQndZ2Z+iJQOR3y2KlDp11bHmM92tz4PUqmABjafBGxr4an7fP5m9dU5H05IWEwo/qhpS6hDrt0GP5V5mRl8YeM5v+vi0AESoLqAq4uR4wQXbNBo4+uM= 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 175984725527098.417221303475; Tue, 7 Oct 2025 07:27:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Qs-0005zw-Th; Tue, 07 Oct 2025 10:12:51 -0400 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 1v68Qe-0005qW-3i for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:38 -0400 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 1v68QL-0002JN-Ht for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:35 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-46e6674caa5so32551185e9.0 for ; Tue, 07 Oct 2025 07:12:11 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846330; x=1760451130; 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=fePF+CNK01A50MBnR5x5T/juuliOVBOVncbNMYtPEwA=; b=yclG4zRPi7pCj9szxHiWL2bMPa88g94jOG0+d6B86188jq2DzA9ofxVu7Kop2sUzW0 n/Ev9oZGBksI+U1yt7vJsw4EnO/MS6d37jHpyZi8MFr7M6VWpFZxYkqE21t3m2ENjejf hivWwpLFpA680ehvtUdoTGwxiaffazYLTA7+oK8sbI1ucMIcC7khCLbKhNL+YWLonzh+ hpOfmqDoj/+GZLs55S+6bykh/eWqqRe+HzddOWdbEBkdVEjRFUWf1CanQsKhg36fDSb9 7Yf1IlHZrRGtk6Z87uZOxQmwgId0s58ngHY+CPgoLoNiB4vwDDacaNhTc1WJhM8P00SH Iiww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846330; x=1760451130; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fePF+CNK01A50MBnR5x5T/juuliOVBOVncbNMYtPEwA=; b=hfy8mJTZ5Qsf0gSW/ER4RBbTe7xO7toSyAg+0Ai8wGrKk2aU2y7phtjN5QTXe0x89Z Y74aeQP7iVDP+xeNjVDDMxUBOOiqYvz6CgZHKMpDTpQ9jNttYdPquI4Ebv4IjIQaLCMB r/pYhprd5f6f8cLFdHbCIE6VJJDbBZeGWHOhXdqemcSMQ0/Ej7y8JVWVDzHXP49X7a84 sNL0o5q3dtX0VN/Y3OGLHPKRROllc5+Sy/qnZM57yAxLIGyr4JayGIMeStKDShbY7lpE skqk3SS/9/E4crlAEKjxo9rJW4A68e5VEk7xkOeZTDkCMHHRoWlMEDi91AP8o1TrLdRl 8mow== X-Gm-Message-State: AOJu0YyFvdu1q4vm5AcZDJ2HB4OJMi5ThbyoClhoVEhfQd4qM1RYDNcu gjZSMfBlywnJ01uLGExy3KQxWS2wjtjMXzxFR+IFsQESO6e1eZFiMgXz9M9x30SE0V+F9uR9kiS kTpsR X-Gm-Gg: ASbGncsLTpzsTNUQ4kd6fULuJCAMNgCqppiu0vlWrefhhr7w2H+DxmAsysGUpe96jLm JvzBeWGLfQxOsdzhtZt5o2qzUngEcSeUjHSmIQa0tK7VcttWQp4PjVx2vnWqr9Nxjj0CXg9scMQ KfzAX4+NQdcBWMoF7JMYeCjQk0eqw8qx7rHvfzUkV5tsVwy9A+rxfLulE4G/s1zFXEg17HMtkd0 nGPO5csF0aILl/IdDARdAJRhYDaDkaQ7iPDF1CN0638bJ3PeiPMUYRHkBvIT+/308HVxCXiFnvt dvnV8hxv5PSS+pSWuHnzPjpkXxqeIMXEL/JXL4/blxNwiTvrd8MIGWbNdChsortITdwGdEBQ+X2 W8OOjKIFIhEHgacM9EGC0o8uu2e3uVFJYotMwHCp3wkIPm6zZptvpE6xh X-Google-Smtp-Source: AGHT+IFMgHnmctS68vA45Rc17nq8KkUvCKardHYMXDs9R5JZbhiPNiw3nsP89ZTFi4cMZ3IY2kdmIw== X-Received: by 2002:a05:600c:6207:b0:45d:dbf0:4831 with SMTP id 5b1f17b1804b1-46fa28d54f0mr25898685e9.0.1759846330184; Tue, 07 Oct 2025 07:12:10 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 42/62] hw/arm/xlnx-versal-virt: rename the machine to amd-versal-virt Date: Tue, 7 Oct 2025 15:11:02 +0100 Message-ID: <20251007141123.3239867-43-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::32f; envelope-from=peter.maydell@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, WEIRD_QUOTING=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: 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: 1759847257572154100 From: Luc Michel To align with current branding and ensure coherency with the upcoming versal2 machine, rename the xlnx-versal-virt machine to amd-versal-virt. Keep an alias of the old name to the new one for command-line backward compatibility. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-42-luc.michel@amd.com Signed-off-by: Peter Maydell --- docs/system/arm/xlnx-versal-virt.rst | 26 +++++++++++--------- hw/arm/xlnx-versal-virt.c | 11 ++++++--- tests/functional/aarch64/test_xlnx_versal.py | 6 ++--- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/docs/system/arm/xlnx-versal-virt.rst b/docs/system/arm/xlnx-ve= rsal-virt.rst index c5f35f28e4f..2c63fbf519f 100644 --- a/docs/system/arm/xlnx-versal-virt.rst +++ b/docs/system/arm/xlnx-versal-virt.rst @@ -1,19 +1,23 @@ -Xilinx Versal Virt (``xlnx-versal-virt``) -=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 +AMD Versal Virt (``amd-versal-virt``) +=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 =20 -Xilinx Versal is a family of heterogeneous multi-core SoCs +AMD Versal is a family of heterogeneous multi-core SoCs (System on Chip) that combine traditional hardened CPUs and I/O peripherals in a Processing System (PS) with runtime programmable FPGA logic (PL) and an Artificial Intelligence Engine (AIE). =20 +QEMU implements the Versal Series variant of Versal SoCs, with the +``amd-versal-virt`` machine. The alias ``xlnx-versal-virt`` is kept for +backward compatibility. + More details here: -https://www.xilinx.com/products/silicon-devices/acap/versal.html +https://www.amd.com/en/products/adaptive-socs-and-fpgas/versal.html =20 The family of Versal SoCs share a single architecture but come in different parts with different speed grades, amounts of PL and other differences. =20 -The Xilinx Versal Virt board in QEMU is a model of a virtual board +The AMD Versal Virt board in QEMU is a model of a virtual board (does not exist in reality) with a virtual Versal SoC without I/O limitations. Currently, we support the following cores and devices: =20 @@ -74,7 +78,7 @@ Direct Linux boot of a generic ARM64 upstream Linux kerne= l: =20 .. code-block:: bash =20 - $ qemu-system-aarch64 -M xlnx-versal-virt -m 2G \ + $ qemu-system-aarch64 -M amd-versal-virt -m 2G \ -serial mon:stdio -display none \ -kernel arch/arm64/boot/Image \ -nic user -nic user \ @@ -87,7 +91,7 @@ Direct Linux boot of PetaLinux 2019.2: =20 .. code-block:: bash =20 - $ qemu-system-aarch64 -M xlnx-versal-virt -m 2G \ + $ qemu-system-aarch64 -M amd-versal-virt -m 2G \ -serial mon:stdio -display none \ -kernel petalinux-v2019.2/Image \ -append "rdinit=3D/sbin/init console=3DttyAMA0,115200n8 earlycon=3Dp= l011,mmio,0xFF000000,115200n8" \ @@ -100,7 +104,7 @@ version of ATF tries to configure the CCI which we don'= t model) and U-boot: =20 .. code-block:: bash =20 - $ qemu-system-aarch64 -M xlnx-versal-virt -m 2G \ + $ qemu-system-aarch64 -M amd-versal-virt -m 2G \ -serial stdio -display none \ -device loader,file=3Dpetalinux-v2018.3/bl31.elf,cpu-num=3D0 \ -device loader,file=3Dpetalinux-v2019.2/u-boot.elf \ @@ -125,7 +129,7 @@ Boot Linux as DOM0 on Xen via U-Boot: =20 .. code-block:: bash =20 - $ qemu-system-aarch64 -M xlnx-versal-virt -m 4G \ + $ qemu-system-aarch64 -M amd-versal-virt -m 4G \ -serial stdio -display none \ -device loader,file=3Dpetalinux-v2019.2/u-boot.elf,cpu-num=3D0 \ -device loader,addr=3D0x30000000,file=3Dlinux/2018-04-24/xen \ @@ -153,7 +157,7 @@ Boot Linux as Dom0 on Xen via ARM Trusted Firmware and = U-Boot: =20 .. code-block:: bash =20 - $ qemu-system-aarch64 -M xlnx-versal-virt -m 4G \ + $ qemu-system-aarch64 -M amd-versal-virt -m 4G \ -serial stdio -display none \ -device loader,file=3Dpetalinux-v2018.3/bl31.elf,cpu-num=3D0 \ -device loader,file=3Dpetalinux-v2019.2/u-boot.elf \ @@ -227,7 +231,7 @@ To use a different index value, N, from default of 1, a= dd: is highly recommended (albeit with usage complexity). =20 Better yet, do not use actual product data when running guest image - on this Xilinx Versal Virt board. + on this AMD Versal Virt board. =20 Using CANFDs for Versal Virt """""""""""""""""""""""""""" diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 274a7ef9889..6ef56103a75 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -1,5 +1,5 @@ /* - * Xilinx Versal Virtual board. + * AMD/Xilinx Versal Virtual board. * * Copyright (c) 2018 Xilinx Inc. * Copyright (c) 2025 Advanced Micro Devices, Inc. @@ -26,7 +26,7 @@ #include "qom/object.h" #include "target/arm/cpu.h" =20 -#define TYPE_XLNX_VERSAL_VIRT_MACHINE MACHINE_TYPE_NAME("xlnx-versal-virt") +#define TYPE_XLNX_VERSAL_VIRT_MACHINE MACHINE_TYPE_NAME("amd-versal-virt") OBJECT_DECLARE_SIMPLE_TYPE(VersalVirt, XLNX_VERSAL_VIRT_MACHINE) =20 #define XLNX_VERSAL_NUM_OSPI_FLASH 4 @@ -55,6 +55,7 @@ struct VersalVirt { static void fdt_create(VersalVirt *s) { MachineClass *mc =3D MACHINE_GET_CLASS(s); + const char versal_compat[] =3D "amd-versal-virt\0xlnx-versal-virt"; =20 s->fdt =3D create_device_tree(&s->fdt_size); if (!s->fdt) { @@ -72,7 +73,8 @@ static void fdt_create(VersalVirt *s) =20 /* Header */ qemu_fdt_setprop_string(s->fdt, "/", "model", mc->desc); - qemu_fdt_setprop_string(s->fdt, "/", "compatible", "xlnx-versal-virt"); + qemu_fdt_setprop(s->fdt, "/", "compatible", versal_compat, + sizeof(versal_compat)); } =20 static void fdt_add_clk_node(VersalVirt *s, const char *name, @@ -348,7 +350,8 @@ static void versal_virt_machine_class_init(ObjectClass = *oc, const void *data) MachineClass *mc =3D MACHINE_CLASS(oc); int num_cpu =3D versal_get_num_cpu(VERSAL_VER_VERSAL); =20 - mc->desc =3D "Xilinx Versal Virtual development board"; + mc->desc =3D "AMD Versal Virtual development board"; + mc->alias =3D "xlnx-versal-virt"; mc->init =3D versal_virt_init; mc->min_cpus =3D num_cpu; mc->max_cpus =3D num_cpu; diff --git a/tests/functional/aarch64/test_xlnx_versal.py b/tests/functiona= l/aarch64/test_xlnx_versal.py index 4b9c49e5d64..95e5c44771f 100755 --- a/tests/functional/aarch64/test_xlnx_versal.py +++ b/tests/functional/aarch64/test_xlnx_versal.py @@ -6,7 +6,7 @@ =20 from qemu_test import LinuxKernelTest, Asset =20 -class XlnxVersalVirtMachine(LinuxKernelTest): +class AmdVersalVirtMachine(LinuxKernelTest): =20 ASSET_KERNEL =3D Asset( ('http://ports.ubuntu.com/ubuntu-ports/dists/bionic-updates/main/' @@ -20,8 +20,8 @@ class XlnxVersalVirtMachine(LinuxKernelTest): '/ubuntu-installer/arm64/initrd.gz'), 'e7a5e716b6f516d8be315c06e7331aaf16994fe4222e0e7cfb34bc015698929e') =20 - def test_aarch64_xlnx_versal_virt(self): - self.set_machine('xlnx-versal-virt') + def test_aarch64_amd_versal_virt(self): + self.set_machine('amd-versal-virt') kernel_path =3D self.ASSET_KERNEL.fetch() initrd_path =3D self.ASSET_INITRD.fetch() =20 --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846480; cv=none; d=zohomail.com; s=zohoarc; b=fteOR2Uy8evQ8yArpLW/L3zGFnrUgqXh3xryGiL7Q1qgrHfyczZyU1XL7xEkv85apo3owTOwMakiTg+0Az84/ApEUi/WAj6XfEIH5JK8ZsVIxdx9ZAxnGigKflU8EXB9Og2yYDN+BbPuTUvwZja+bRpWJgKsVtVOwsaK4uCim/I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846480; 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=b5F7YcfNU2NzxmB58yghVvVIVczR9V5gj3nGlRyNo4g=; b=kmjmfMlV1+cXRX9wzzTwaRpgd4YTXqJVcOx7tEMp0hJcoKDMbFA8mltqiMB6Q08VCcJfiPM28a9dwkJfXwgkA2tfueHBclEH8YxbUR3feTIVGDB92rPfcb8z8tdgnw3NY1goBwGleBJXQ1xArWIej4AhCEaMBZg9IiH67N6hFw8= 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 1759846480981825.4249266418509; Tue, 7 Oct 2025 07:14:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68R9-00069o-Bo; Tue, 07 Oct 2025 10:13:07 -0400 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 1v68Qh-0005ru-Ud for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:43 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68QJ-0002Jl-37 for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:37 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-46e3af7889fso39184135e9.2 for ; Tue, 07 Oct 2025 07:12:13 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846332; x=1760451132; 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=b5F7YcfNU2NzxmB58yghVvVIVczR9V5gj3nGlRyNo4g=; b=DZAfSpLqR8nGL36TuAd+lJ1SQqOTTGbNNCV95t8tYj24cOVA7Cd3ogdqrcbRJpqLvF 2jR5cwxNmP04MrzHsEDNTUOFuY635cwrqNvvCl+IVLz01DptF13xeZv99Rh3IAkTCOPS fZxV4Lvq6GRx4T7t9hYUjsfVbc2SJtX7IoL3WH06GHFctf5XSwpeBYMy7JbifBf0iXH1 4sk3IzJkYXRLtDrOGXOvkV+TauB30a+Q5ekzAYsunptRqncHTJaVi9m/6W5/9mK1sOsx +S0itSyzW88oKPyeag3nJGYnjacEcSvQOP7XkonHlbGag0ME4myANYdVbcz6+Wb6JAzO D4zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846332; x=1760451132; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=b5F7YcfNU2NzxmB58yghVvVIVczR9V5gj3nGlRyNo4g=; b=qffEP7e7S9YjozeCfEQOzkTAtinNYTVyd5MoRuz7TX+PO8ZByztMzV1s9SO1RnvJG6 nij/Zv8ASq5WKW9LAPCRkEdIG/Lvk4M6iGzgzyABF6KzGVfQVLH+v0Ejg1G4n+ldcjwE 1Z7qn1LaPO2m2ZhRnBcUOhHgoQicJKiINREFN3PRwiJ7tceE8nEiJYPeOZ7qSJ0R2nYU tacPsnKiAcGdqkMzHw/WZs9jjnCIVKnbfQmXV2LM3AUlYSIvKK30B2xc439MQsZ6JJ05 CyjqPT8g40DxTJNyDO1LUMXopJeq8wAnOkugP5UeuYJwgjWjY2rMBF+K1SrzGpKTr4zd ky+g== X-Gm-Message-State: AOJu0Yz5rRP4Z6WGudrMKMHGQ7Y/wto60xV1Mjc8qOvKtOvc9QObjuhT PMawP5kaVHj1SW76QJipe8tkVyzw1HbL+ZkHNxjMM4jTkzctUI7bWKqKRn0Qf7pZzujog9sbQI2 2bqH0 X-Gm-Gg: ASbGncveuIQB6SdGIcbJ/uXOkNQ+HZ64kGXgaLgcg1+ZmoTE+AB9tX/e0jjw78s8/O4 h6ZTBn9QoXxioy6P58ikp8ljdU9BN0NhVr5e+fe+AYwqreIyJI2fw/nCV5LqiuEDhimtA2EDcEL +2JSN0sjQ/GNderj850LctrzRATMM+Hg08bKGlqxSLAQpt8NLTifVJtKfk7WnyH83MhsKeW+Sjs 8EBMsbH7GZS2PciP5YhiLDk5m0dNVW2UrzL/ZSC835G2CSxUs/h7aNMxA4yqVKkanop+O7jWMc0 5RN8ZtHCDOJFqsoHB8UC6eee3Gtjo5EvcyUW0VSNqy8XT/KhuOXnIxdE/VcXyBo6BpF+fygZvQP rgGfRRVFzqZnJUYaN2W0yirwtuulJnlXBnodB3C/n9esK7sH7a+9tumoKhqbCJNjzvQ8= X-Google-Smtp-Source: AGHT+IF1KKQR1eY8LQesZsQ7tb05/yxAx3Cf6J7b40JN4qlB9PlPZRCGKRjyTvvUuuECcUwtmJd5nw== X-Received: by 2002:a05:600c:3b1f:b0:46e:4c67:ff17 with SMTP id 5b1f17b1804b1-46e711254e4mr94386555e9.14.1759846331506; Tue, 07 Oct 2025 07:12:11 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 43/62] hw/arm/xlnx-versal-virt: split into base/concrete classes Date: Tue, 7 Oct 2025 15:11:03 +0100 Message-ID: <20251007141123.3239867-44-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::330; envelope-from=peter.maydell@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, T_SPF_TEMPERROR=0.01 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: 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: 1759846483648154100 From: Luc Michel Split the xlnx-versal-virt machine type into a base abstract type and a concrete type. There is no functional change. This is in preparation for the versal2 machine. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-43-luc.michel@amd.com Signed-off-by: Peter Maydell --- hw/arm/xlnx-versal-virt.c | 74 +++++++++++++++++++++++++++------------ 1 file changed, 52 insertions(+), 22 deletions(-) diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 6ef56103a75..f9abb9ed639 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -26,8 +26,11 @@ #include "qom/object.h" #include "target/arm/cpu.h" =20 +#define TYPE_XLNX_VERSAL_VIRT_BASE_MACHINE \ + MACHINE_TYPE_NAME("amd-versal-virt-base") +OBJECT_DECLARE_TYPE(VersalVirt, VersalVirtClass, XLNX_VERSAL_VIRT_BASE_MAC= HINE) + #define TYPE_XLNX_VERSAL_VIRT_MACHINE MACHINE_TYPE_NAME("amd-versal-virt") -OBJECT_DECLARE_SIMPLE_TYPE(VersalVirt, XLNX_VERSAL_VIRT_MACHINE) =20 #define XLNX_VERSAL_NUM_OSPI_FLASH 4 =20 @@ -52,6 +55,12 @@ struct VersalVirt { } cfg; }; =20 +struct VersalVirtClass { + MachineClass parent_class; + + VersalVersion version; +}; + static void fdt_create(VersalVirt *s) { MachineClass *mc =3D MACHINE_GET_CLASS(s); @@ -193,14 +202,14 @@ static void sd_plug_card(VersalVirt *s, int idx, Driv= eInfo *di) =20 static char *versal_get_ospi_model(Object *obj, Error **errp) { - VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(obj); + VersalVirt *s =3D XLNX_VERSAL_VIRT_BASE_MACHINE(obj); =20 return g_strdup(s->cfg.ospi_model); } =20 static void versal_set_ospi_model(Object *obj, const char *value, Error **= errp) { - VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(obj); + VersalVirt *s =3D XLNX_VERSAL_VIRT_BASE_MACHINE(obj); =20 g_free(s->cfg.ospi_model); s->cfg.ospi_model =3D g_strdup(value); @@ -209,7 +218,8 @@ static void versal_set_ospi_model(Object *obj, const ch= ar *value, Error **errp) =20 static void versal_virt_init(MachineState *machine) { - VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(machine); + VersalVirt *s =3D XLNX_VERSAL_VIRT_BASE_MACHINE(machine); + VersalVirtClass *vvc =3D XLNX_VERSAL_VIRT_BASE_MACHINE_GET_CLASS(machi= ne); int psci_conduit =3D QEMU_PSCI_CONDUIT_DISABLED; int i; =20 @@ -241,11 +251,11 @@ static void versal_virt_init(MachineState *machine) } =20 object_initialize_child(OBJECT(machine), "xlnx-versal", &s->soc, - TYPE_XLNX_VERSAL); + versal_get_class(vvc->version)); object_property_set_link(OBJECT(&s->soc), "ddr", OBJECT(machine->ram), &error_abort); =20 - for (i =3D 0; i < versal_get_num_can(VERSAL_VER_VERSAL); i++) { + for (i =3D 0; i < versal_get_num_can(vvc->version); i++) { g_autofree char *prop_name =3D g_strdup_printf("canbus%d", i); =20 object_property_set_link(OBJECT(&s->soc), prop_name, @@ -274,7 +284,7 @@ static void versal_virt_init(MachineState *machine) efuse_attach_drive(s); =20 /* Plug SD cards */ - for (i =3D 0; i < versal_get_num_sdhci(VERSAL_VER_VERSAL); i++) { + for (i =3D 0; i < versal_get_num_sdhci(vvc->version); i++) { sd_plug_card(s, i, drive_get(IF_SD, 0, i)); } =20 @@ -318,10 +328,11 @@ static void versal_virt_init(MachineState *machine) =20 static void versal_virt_machine_instance_init(Object *obj) { - VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(obj); + VersalVirt *s =3D XLNX_VERSAL_VIRT_BASE_MACHINE(obj); + VersalVirtClass *vvc =3D XLNX_VERSAL_VIRT_BASE_MACHINE_GET_CLASS(s); size_t i, num_can; =20 - num_can =3D versal_get_num_can(VERSAL_VER_VERSAL); + num_can =3D versal_get_num_can(vvc->version); s->canbus =3D g_new0(CanBusState *, num_can); =20 /* @@ -339,45 +350,64 @@ static void versal_virt_machine_instance_init(Object = *obj) =20 static void versal_virt_machine_finalize(Object *obj) { - VersalVirt *s =3D XLNX_VERSAL_VIRT_MACHINE(obj); + VersalVirt *s =3D XLNX_VERSAL_VIRT_BASE_MACHINE(obj); =20 g_free(s->cfg.ospi_model); g_free(s->canbus); } =20 -static void versal_virt_machine_class_init(ObjectClass *oc, const void *da= ta) +static void versal_virt_machine_class_init_common(ObjectClass *oc) { MachineClass *mc =3D MACHINE_CLASS(oc); - int num_cpu =3D versal_get_num_cpu(VERSAL_VER_VERSAL); + VersalVirtClass *vvc =3D XLNX_VERSAL_VIRT_BASE_MACHINE_CLASS(mc); + int num_cpu =3D versal_get_num_cpu(vvc->version); =20 - mc->desc =3D "AMD Versal Virtual development board"; - mc->alias =3D "xlnx-versal-virt"; - mc->init =3D versal_virt_init; - mc->min_cpus =3D num_cpu; - mc->max_cpus =3D num_cpu; - mc->default_cpus =3D num_cpu; mc->no_cdrom =3D true; mc->auto_create_sdcard =3D true; mc->default_ram_id =3D "ddr"; + mc->min_cpus =3D num_cpu; + mc->max_cpus =3D num_cpu; + mc->default_cpus =3D num_cpu; + mc->init =3D versal_virt_init; + object_class_property_add_str(oc, "ospi-flash", versal_get_ospi_model, versal_set_ospi_model); object_class_property_set_description(oc, "ospi-flash", "Change the OSPI Flash model"); } =20 -static const TypeInfo versal_virt_machine_init_typeinfo =3D { - .name =3D TYPE_XLNX_VERSAL_VIRT_MACHINE, +static void versal_virt_machine_class_init(ObjectClass *oc, const void *da= ta) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + VersalVirtClass *vvc =3D XLNX_VERSAL_VIRT_BASE_MACHINE_CLASS(oc); + + mc->desc =3D "AMD Versal Virtual development board"; + mc->alias =3D "xlnx-versal-virt"; + vvc->version =3D VERSAL_VER_VERSAL; + + versal_virt_machine_class_init_common(oc); +} + +static const TypeInfo versal_virt_base_machine_init_typeinfo =3D { + .name =3D TYPE_XLNX_VERSAL_VIRT_BASE_MACHINE, .parent =3D TYPE_MACHINE, - .class_init =3D versal_virt_machine_class_init, + .class_size =3D sizeof(VersalVirtClass), .instance_init =3D versal_virt_machine_instance_init, .instance_size =3D sizeof(VersalVirt), .instance_finalize =3D versal_virt_machine_finalize, + .abstract =3D true, +}; + +static const TypeInfo versal_virt_machine_init_typeinfo =3D { + .name =3D TYPE_XLNX_VERSAL_VIRT_MACHINE, + .parent =3D TYPE_XLNX_VERSAL_VIRT_BASE_MACHINE, + .class_init =3D versal_virt_machine_class_init, }; =20 static void versal_virt_machine_init_register_types(void) { + type_register_static(&versal_virt_base_machine_init_typeinfo); type_register_static(&versal_virt_machine_init_typeinfo); } =20 type_init(versal_virt_machine_init_register_types) - --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847607; cv=none; d=zohomail.com; s=zohoarc; b=W4AGoyq+UIrhGyEU8dduPGjNaAjHcRDXj7xTfGDbGpDspdqTyedeBHmI2BF7uCUiAXIo9McOAwM3i6BptDITx2Tbhl//gqxog+gW+9WnHdJ9VgXBng86IAL0j4I3+5SRYQEwK17WgtWXMtGSvHaW4Z3DGP402V5Kvw/r5U8E3Tk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847607; 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=64bm6zQUNNcbqTI3Im3LQpuyvcJOm+Jr9r6z2jplxD0=; b=lw4Rcu6YyMsvYtw5n/ySvKA+OqGfhAvAlwjjiG2fXFh+pk4AnB1U5rdNKOxGpj9DpmZLkkps1j1uNqG4eJju8JXFyG6NlQdtifKKq3E6BC73DSOVGWyRLTa5xkCYtq2OfrZtgRD+rwtzLYZI3VHgoZcDy8ptJrG3CpelZuyJZmQ= 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 1759847607891892.4647390438934; Tue, 7 Oct 2025 07:33:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Qu-00061i-Qy; Tue, 07 Oct 2025 10:12:52 -0400 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 1v68Qc-0005q8-DK for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:34 -0400 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 1v68QM-0002Jx-0O for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:34 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-46e384dfde0so70063455e9.2 for ; Tue, 07 Oct 2025 07:12:17 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846333; x=1760451133; 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=64bm6zQUNNcbqTI3Im3LQpuyvcJOm+Jr9r6z2jplxD0=; b=z2R8s6E+d6n1/GLW8GgbDYfr0jsIFTOVSEFDXBx2PpK1TqW37v1kzRxqoM8QRNVXWu 5mGnQSuGpUy74uSOhhcyAVKh8YCNWRkYyAY12Q/MPFf0c8OeAz9jV1XI/34Cxz7MvAnu VAFeg6EY7pPcsZs4DT6+fns3lirJvOKEOhQVWfO1o6JUZm6lN12tMLQyJJS9bu33KHxw GheIUWIhOfp4lpMhu6neQHB+zRQp/Vus8ioqXTruLc+8NplX2UusV1LbKkJamXWyI8ET 4f6tB8LEl/dDO2WYiiTQ0crFoH5nmmOht8diiT36sZno0fjW9yOWgDPiZ90TnfuBDTwD JdIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846333; x=1760451133; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=64bm6zQUNNcbqTI3Im3LQpuyvcJOm+Jr9r6z2jplxD0=; b=TaiSb9iTirFYWvbXazWXAkQdiedHkX5bT495L8oYNLjgssXuzIJwBDG2yowEfMfV1G NnzTXqsAb7I7L6sYiiQwdI+XPyCGAeO/Dk03wg+7qh1K/FIORhTU7QQjk4OuQWNq4XzN +4wBnQb7xQhLH2DcvcED17tW8q1M2HZODn+z2jg+JcPmMCudLbQtiPJzZaXppe2KKbKP OSsO0xhT2vrYjSnyuENUbjE7L4vnccbZ1rz3MsjVMl7I3uaSU/gPD+2xTDkFoGDr52bI A1ZHF8zpN13XwBZqx8iYYW1mgncvESN0uHU+9AvJD2Fa8vZs/jqH3N+whQ+KiXWYFrCs Vrng== X-Gm-Message-State: AOJu0YzEM70dSLWe0VwG2FJc8GZoQFQ/Em27jWTwOxpkPUDdLUh8m+ZE x/+7Cmw1G5rYOjnq85BDN7a754yJk9f3dFzxxVdyLUPrPAnnn5UX6rMiiQ60qo2+DJYi/aTcXOI uoN3s X-Gm-Gg: ASbGncu1bYa6q2HgEVJfEsluklVj302b1sEwD81nFUNVQ0xCOlDdf/tumYNSoH8fg2u VcOqro5rj14KySCDknEFEaeeyIefOYHjCaZqZWxYcZLMhHEczfPz518PGoAPDYMsLopC5/PQpDZ 8NuoBpk/8j99alBeLgEry02l+AFJ7A0pG18ywfumWA51BcjZBHqamajE+bUkpTfKuEhE5pesO6r Ie3L/p5HQeZR4BK5q1bPbsMV0E/VMj0MtyJBHP+5d/c1rlPPMTDIk3G9D+t3GA/7YcyO50DcwVr 9dFZuz2mjTQxvtdp5Bwj87qIgSJU9G0ZUEJ9EGoCOHUqm8qkjy/skXMNBqbMX4L/8jdx8fsvPUw JPJgLw4tStMmPrhHakTKLMCzK/dKI/WavmIkWffS7XsbfPTEacFmFW3ZN X-Google-Smtp-Source: AGHT+IGUiwf4odeZjl8tOHx00qJcN0rBlU7n8l0igSk21qsl34TLZb2PC8eWCPWfsGto9IT4uUWOvg== X-Received: by 2002:a05:600c:64c4:b0:46d:45e:3514 with SMTP id 5b1f17b1804b1-46e7114310amr132482525e9.17.1759846332576; Tue, 07 Oct 2025 07:12:12 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 44/62] hw/arm/xlnx-versal-virt: tidy up Date: Tue, 7 Oct 2025 15:11:04 +0100 Message-ID: <20251007141123.3239867-45-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::32f; envelope-from=peter.maydell@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: 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: 1759847609635154100 From: Luc Michel Remove now unused clock nodes. They have been replaced by the ones created in the SoC. Remove the unused cfg.secure VersalVirt field. Remove unecessary include directives. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-44-luc.michel@amd.com Signed-off-by: Peter Maydell --- hw/arm/xlnx-versal-virt.c | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index f9abb9ed639..14c2d5cc924 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -19,10 +19,8 @@ #include "hw/boards.h" #include "hw/sysbus.h" #include "hw/arm/fdt.h" -#include "hw/qdev-properties.h" #include "hw/arm/xlnx-versal.h" #include "hw/arm/boot.h" -#include "target/arm/multiprocessing.h" #include "qom/object.h" #include "target/arm/cpu.h" =20 @@ -41,16 +39,11 @@ struct VersalVirt { =20 void *fdt; int fdt_size; - struct { - uint32_t clk_125Mhz; - uint32_t clk_25Mhz; - } phandle; struct arm_boot_info binfo; =20 CanBusState **canbus; =20 struct { - bool secure; char *ospi_model; } cfg; }; @@ -72,10 +65,6 @@ static void fdt_create(VersalVirt *s) exit(1); } =20 - /* Allocate all phandles. */ - s->phandle.clk_25Mhz =3D qemu_fdt_alloc_phandle(s->fdt); - s->phandle.clk_125Mhz =3D qemu_fdt_alloc_phandle(s->fdt); - /* Create /chosen node for load_dtb. */ qemu_fdt_add_subnode(s->fdt, "/chosen"); qemu_fdt_add_subnode(s->fdt, "/aliases"); @@ -86,17 +75,6 @@ static void fdt_create(VersalVirt *s) sizeof(versal_compat)); } =20 -static void fdt_add_clk_node(VersalVirt *s, const char *name, - unsigned int freq_hz, uint32_t phandle) -{ - qemu_fdt_add_subnode(s->fdt, name); - qemu_fdt_setprop_cell(s->fdt, name, "phandle", phandle); - qemu_fdt_setprop_cell(s->fdt, name, "clock-frequency", freq_hz); - qemu_fdt_setprop_cell(s->fdt, name, "#clock-cells", 0x0); - qemu_fdt_setprop_string(s->fdt, name, "compatible", "fixed-clock"); - qemu_fdt_setprop(s->fdt, name, "u-boot,dm-pre-reloc", NULL, 0); -} - static void fdt_nop_memory_nodes(void *fdt, Error **errp) { Error *err =3D NULL; @@ -268,9 +246,6 @@ static void versal_virt_init(MachineState *machine) sysbus_realize(SYS_BUS_DEVICE(&s->soc), &error_fatal); create_virtio_regions(s); =20 - fdt_add_clk_node(s, "/old-clk125", 125000000, s->phandle.clk_125Mhz); - fdt_add_clk_node(s, "/old-clk25", 25000000, s->phandle.clk_25Mhz); - /* * Map the SoC address space onto system memory. This will allow virti= o and * other modules unaware of multiple address-spaces to work. --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847125; cv=none; d=zohomail.com; s=zohoarc; b=L6ThCwFx+NpC1+O4x62iRVxiXiyoHCizbWVFAJ9LZ+xhpPR4Hix1RoY5yOdU5loCowWq2iWss08AWtrDhNNXgrY+OQW7UShuDW6lmStZUucPOksBBbXYwu+M7VaCgUVv1zVJWC4Zai7byRcQhzi/JMglemAjmyOIBGdMQsvpRiw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847125; 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=VGPgMMlCVRnRjuzbPKqc0kAA2T5wiZUCBp+W8rMaiIk=; b=Jmds/hFBDgVnV11068CKzxaxOPaXFfjBBfNvx7i9Db0IHPJNMCndvwbm8qxB3X1DyB1BwDS3Fz7xNVYhnUC2hU/PSx0k2Uw5OWo+syScwSysO1fkEgbmbhYGEceAAjm8evga8W/x8kPMv3Yi7qnKJJ9ByUVCQV2UE70XbS9ghRk= 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 1759847125692140.96279030103847; Tue, 7 Oct 2025 07:25:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68R4-00068m-9p; Tue, 07 Oct 2025 10:13:02 -0400 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 1v68Ql-0005vE-O9 for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:43 -0400 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 1v68QM-0002Ka-2a for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:43 -0400 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-46f53f88e0bso18541725e9.1 for ; Tue, 07 Oct 2025 07:12:16 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846334; x=1760451134; 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=VGPgMMlCVRnRjuzbPKqc0kAA2T5wiZUCBp+W8rMaiIk=; b=fNmft2nUUrfr4ZA2Z4sr0/86ga2CXg3ISGj7bvn0yEWRTPUZZJ7kGNffLuUsiOQMuh mmBC/mE3Zpn8i2HOqWUBh9ELn7rKugZMN6Jg0mce6ZBEQ/SKu7GwKfzPR858h0hPeUy3 U4pNsfk5YgDWqFcT5nogsNUpPP9nx/pf8bdNXX+//eOJoUN61V6GfW5EBxwCRsF9ZMOh yGPPddVwFtJj9B6i95O7sC1udk2BvpXS+GIWly9Gc2fvmLRakyCRVhQdIPzAOM4UHw5u Qz7XrW94M3s4ni+NFrvj29pKYUybPAq4NkFeYkJobe4iLqaYv1zCJUSy2x7WUdMHh3TN Wbkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846334; x=1760451134; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VGPgMMlCVRnRjuzbPKqc0kAA2T5wiZUCBp+W8rMaiIk=; b=O3CnoOqODbzOa4wJfof7/ICZF2wjaVCm9dPUXAacQaXmq3AVAxggCQrTw4ndEbcXVG UOgvNcc1KeQCGmEk2gX6hD4ZvZhNpDOiFJQAXghKTbheVCNXqKlcO36v8qe0zaugiPyB w4HZIELnQKdCaGykE1VaJG+g/lIMxYVa42ZdRmjgDwbMPtl/XhDDmfZlKMxLUAINTdsJ 2tL9TWa1prnbSq6p3mDX/DzVt69ycijmJdFpuk/zG3MLWzS5dNu+Qn6Ak8jHfjbbuMbM DF3o8oMns07LKGkD4gmqTYf8CeVk1Krvr+PlrY+SJjdBv2hvrulxqSxgsaKIKtnFvv9m I4Bw== X-Gm-Message-State: AOJu0Yx5mG5z7foqb00CvIFPaVBlzUPAqx4uXQ2DgRGv8Lh6v6PqhVWK H78YA7bE6+pgnqaVBXjFgfUR1P+q43MPomJVTgjuBtjpLCdmttvor54jnnt/O9mHkrWCPrw2t4z dh0sm X-Gm-Gg: ASbGncso4mFx0ScAr3j9fMfN3H8jXMHFgGJhS+y8ia61DttvNkE9WT7BhJSNSVt/PBr S6WI8+HdOFvTmtiseDNDW8QXDh+4UHiT+rQzFNVn3STQ0QWb6p9K1l2uV/o7faBWHrypRoPUgqT Cm2DhR+eBCqoa8Gr9b/SP0atiD7cI9jSM0jkKHVaeRfV0HHMqXh5silNwDw5wnRpgcuOKCuQCbY 5rCoJBUkv+/Tfx4e131XZcI02w85KxYx4Tn5ktkqClREsSs5uPf7+FEo4LYbnbKMEyH+lB6yoc9 HPGq/ZC34UaarAB+fWOqGSoosXW5gqW9MAxXyioDDizVCFvbzflQRokugTD5Ww0/h+KitNmZLaj magB+mxtY0/dyDezgtWb/T2KV3gxmeg6oi7l5QM3haYL+WUkEhpGCYMtR X-Google-Smtp-Source: AGHT+IHYkUvMIMvpEBgOxn3sCAyJrutPHbD6UDwWlCw/pzgvE7lGYbScWPXNVwN9FKEKDykLv+CfrQ== X-Received: by 2002:a05:600c:a319:b0:46e:74cc:42b8 with SMTP id 5b1f17b1804b1-46e74cc4609mr86519385e9.17.1759846334234; Tue, 07 Oct 2025 07:12:14 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 45/62] docs/system/arm/xlnx-versal-virt: update supported devices Date: Tue, 7 Oct 2025 15:11:05 +0100 Message-ID: <20251007141123.3239867-46-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::329; envelope-from=peter.maydell@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, SPF_HELO_NONE=0.001, T_SPF_TEMPERROR=0.01 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: 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: 1759847128157154100 From: Luc Michel Update the list of supported devices in the Versal SoCs. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-45-luc.michel@amd.com Signed-off-by: Peter Maydell --- docs/system/arm/xlnx-versal-virt.rst | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/system/arm/xlnx-versal-virt.rst b/docs/system/arm/xlnx-ve= rsal-virt.rst index 2c63fbf519f..94c8bacf61a 100644 --- a/docs/system/arm/xlnx-versal-virt.rst +++ b/docs/system/arm/xlnx-versal-virt.rst @@ -23,11 +23,11 @@ limitations. Currently, we support the following cores = and devices: =20 Implemented CPU cores: =20 -- 2 ACPUs (ARM Cortex-A72) +- 2 ACPUs (ARM Cortex-A72) with their GICv3 and ITS +- 2 RCPUs (ARM Cortex-R5F) with their GICv2 =20 Implemented devices: =20 -- Interrupt controller (ARM GICv3) - 2 UARTs (ARM PL011) - An RTC (Versal built-in) - 2 GEMs (Cadence MACB Ethernet MACs) @@ -39,6 +39,9 @@ Implemented devices: - BBRAM (36 bytes of Battery-backed RAM) - eFUSE (3072 bytes of one-time field-programmable bit array) - 2 CANFDs +- USB controller +- OSPI controller +- TRNG controller =20 QEMU does not yet model any other devices, including the PL and the AI Eng= ine. =20 --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847132; cv=none; d=zohomail.com; s=zohoarc; b=jF4QS7pQwBn8jxaT7q5sC9jDTdzvrulPrjzUS5g1L00c0qE+9zc7so2WJUy8oSTtAboFovClxzIIMOZE5LX4MpRI6ys8wL9OFwUnCQ7KoIvft/+Q8nwIoqZ318A0O1AxlB6Zdcyn3ZSXPfjcI+p/ONqAeRjcAppL9ERmME21YvI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847132; 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=PlsAz1YE54uBsJN/iqS/yfydW1uYs/0hWnLbeRXDss0=; b=dicIDNPFgH3YVr0OANmcdNxDDULdRCIwbmPRK2sbED+nqKVkYrYqifU+Pq//6IiS79iJxEMbuTuPtyQ9ziUT5LqjPEWF/9otnqORs7iAVAyMO9B1TW/HABuFgvS6nuMOZ2hHOJ1OPITzzZzwTT8coY90Wyt/n1dnf+F3PCKd89o= 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 1759847132349925.3526249642148; Tue, 7 Oct 2025 07:25:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68R5-00069d-Su; Tue, 07 Oct 2025 10:13:03 -0400 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 1v68Qh-0005rs-Qk for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:43 -0400 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 1v68QL-0002Kj-KW for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:37 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-46e542196c7so41124115e9.0 for ; Tue, 07 Oct 2025 07:12:16 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846335; x=1760451135; 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=PlsAz1YE54uBsJN/iqS/yfydW1uYs/0hWnLbeRXDss0=; b=QYEipsZnua0t9/z6VPZQVjf1TWFvyt5RjILb8CE2jbMEXWxY8gwMn24FsW/JYgzKzk fWiq9+SciEkmas5IZKwMcMKG1UGRLtYPCtCHKwh3CvJNeqMx+/NXR6/7vXasYTLkJAXJ LNJLdjFO4nbD8/nmb41XLH/URs7dj+DlqHyn0LOaRVuDNrbn2/EciWVEvkyBqn4p+j5q YmfeQoHnfsESvl+wbN18HZELqAqRbtYhRHTb1ME2UjpPdYYs8RfJos+jwjRpoSt2xn2D pcfcQFvSPzym0EQtYr1M9Bqovy8lcBBJe4tqopyKVYxf8Ha4NZzUNwH5pbMz5g2Mik3c VvYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846335; x=1760451135; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PlsAz1YE54uBsJN/iqS/yfydW1uYs/0hWnLbeRXDss0=; b=ZHeuzq6+tggMsEP+KEUXLVZM4iE58iNYksOmA5vTgxbt7i7n3DfSLwn+ApfK7Xs4BR M+1JMdbhP5RX458KGo4uqrCD0AYtjCBrgtQZ50C1Lb3uuctNlWP2wZSIJ781vUH+FT8p O6oDOZ+1SAnAG3znzNdEK9V3wr8NQ6GYoagvawLeZnywKuadNeHDiG99I2B+7NxFpUXU LehvKhTaDKmdct8tZz6AZSU57YJfpBL9vq/+yk4V9Zik1g237IkcFSL9xaMW3ARnwEih QPtrtvpArFKUTBn15gJDWlZmWsJ2ly1KMezR5mVC8Sf76MfjfrNUjbhZcJovBzKApJgn bBQw== X-Gm-Message-State: AOJu0Yxns0jcbjVJS3n+MOUy1CqlJd+XJQQPYwKdES4onmjV6N/wLKH7 e2omcXMyqN07JgT8iE1S64f5zerACpxDM8vcl/WIfiE4/2OL2n/Ba4eGKLrXJRZEEtlJ9EYizpH Jwxer X-Gm-Gg: ASbGncupu8GI79tQOJI/3wjwEDsiIZLhW7+MSuV9h7ECY8II+keHhuJA7iRYNT1v0T3 gelpWpSnOvPmW0tV5ae1kEcK62+WnANFIwSz/j469Si2LTbRPtaNNalS8Z23on3Bmuq5POqhrv1 R+5viHCWNPW95xDJLQ/5zG5xFNX6e+U/DaNQDR4Q5G5/nx0Zc/Rqvuu0xxiEP50T0svxfSzAkur hgjtcgv44OqM/CzNM8AADYCvYRRkSL6JXmr8EnDEs8GE/Iw+8iKakDr61aT/iDTdcjhiox66dFW hkAfc5GW11Kx2x+G/hyeSatMOXvhWnw32DlBPnodPGzl7JTX8pMv3mTQ/eLp14C3z0OhUWfcsks A3lbYgTGXlT9eaXc3r2bneruSBAnZlrYVIU7O36wllBkNp5MU7pduS2f/ X-Google-Smtp-Source: AGHT+IGZ+j3AKsFpD0qdpsBXugJtbhdg9fBuW1ymcx+oyKIGyos5WojTTMbjMNhiUfCqItvQn56JfQ== X-Received: by 2002:a05:600c:c16e:b0:45f:29eb:2148 with SMTP id 5b1f17b1804b1-46fa298e604mr24797115e9.7.1759846335136; Tue, 07 Oct 2025 07:12:15 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 46/62] docs/system/arm/xlnx-versal-virt: add a note about dumpdtb Date: Tue, 7 Oct 2025 15:11:06 +0100 Message-ID: <20251007141123.3239867-47-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::32c; envelope-from=peter.maydell@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: 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: 1759847134089154100 From: Luc Michel Add a note in the DTB section explaining how to dump the generated DTB using the dumpdtb machine option. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-46-luc.michel@amd.com Signed-off-by: Peter Maydell --- docs/system/arm/xlnx-versal-virt.rst | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/system/arm/xlnx-versal-virt.rst b/docs/system/arm/xlnx-ve= rsal-virt.rst index 94c8bacf61a..5d7fa18592b 100644 --- a/docs/system/arm/xlnx-versal-virt.rst +++ b/docs/system/arm/xlnx-versal-virt.rst @@ -65,7 +65,13 @@ When loading an OS, QEMU generates a DTB and selects an = appropriate address where it gets loaded. This DTB will be passed to the kernel in register x0. =20 If there's no ``-kernel`` option, we generate a DTB and place it at 0x1000 -for boot-loaders or firmware to pick it up. +for boot-loaders or firmware to pick it up. To dump and observe the genera= ted +DTB, one can use the ``dumpdtb`` machine option: + +.. code-block:: bash + + $ qemu-system-aarch64 -M amd-versal-virt,dumpdtb=3Dexample.dtb -m 2G + =20 If users want to provide their own DTB, they can use the ``-dtb`` option. These DTBs will have their memory nodes modified to match QEMU's --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847159; cv=none; d=zohomail.com; s=zohoarc; b=kk9XvJbSQ51v4IHOOVOLF5BjWdBAXwTw/82SlWgfxRXnahTbI7vIcPbxZIIW+13BpXQojyNBhuXqYqRMht0gYaGPpm0/Iv2myDIKukK38ufDhS0NFSPT4q5GxGrHx0zBy+apEpT7ozvD081ZKpO77uMnEdJ6U0v6nu3Hqzj/xrE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847159; 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=dGmYbo2rVXtajcKm/g3Rndf5Lcf2+PivR+N0VoHyQDg=; b=g/D4mvA3YZaNmgazJJ5KIQIUuTP1ABXaOwfeFx1/3BUNmn2odA08+sFkJx3WowFb80LO+mmjPKOC4Vay7qYHAC1OVddoc91JqemEHstRkhmSZDDZT1UhaJpYyCpr3AuZRzOsEZCcMotkV+dSDsOPFc8pxh7A38zxxrSllebeRIo= 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 1759847159461351.14607690529147; Tue, 7 Oct 2025 07:25:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Qs-0005yj-9X; Tue, 07 Oct 2025 10:12:50 -0400 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 1v68Qe-0005qV-3e for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:38 -0400 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 1v68QM-0002L2-CU for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:34 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-46e2826d5c6so49131165e9.1 for ; Tue, 07 Oct 2025 07:12:17 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846336; x=1760451136; 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=dGmYbo2rVXtajcKm/g3Rndf5Lcf2+PivR+N0VoHyQDg=; b=hlCPBhd3Jb8DYyBv7q6VKXsbpOZT2Nfd/R3Be71KZXX9Y75AmYh1pV6bcD/LMQY7+O KI0nHfQNPk2LBMhlisGSmy0tWFGrf1wc6nLvBxuDy50aH6UcJzFP6O0r9xBDSPLVUvqY MFWwz12dUr3hoU6tjFKjySt/l4sYdQFB7KC3WpOYLJCYHsp1P8Sb1J8oJ5G2g6UYPbdV BkcRExKvoXWMr35hm/DEiyc0CdpKWNWLKTg399IoA2Kgj+h15wH2M1daQjuewpo2Yw9g I3jNOWo61pMhXmkdsAl+hLc3LfBBJW/0lpy3Aow70A6EbadKgB68uXlPrLjCG0Bp2nkk SUNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846336; x=1760451136; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dGmYbo2rVXtajcKm/g3Rndf5Lcf2+PivR+N0VoHyQDg=; b=sNrwlr+Jkq+rAnKYKeivhX//CpIXhi0TOiSVkzHOxbA1TKAN03jFsrrkPdGKFkcmQx 6yJN1+hqwnh2vZB1Y17o8yjSPoEB52xYADGm4U3c4VakXHgeyBQhG7rU/Bj6Q0Nlc7eT VivU7R/fp8BlEH0IByE2ScVPNRktz3AfTXJ53EyqwPSb+jk6Ytb51F7azy2putbS2riR 6b75r24cC5Y94GP6Y6B0rQuPY9ZeTRsVEE9kHH5yeWcOZMz5D8Qg7WX/5XLJ7LCLrRMQ MYXGYpQtWFng5hACOk0B3xRChidFNJkKUjCvD8n7kw5CAtKHhe6uC1jmxR+Ryysr3ed9 RijA== X-Gm-Message-State: AOJu0Yyi3wiP7gAU+ni8J9MHAMNlEFmcdMRYMPRv7EI4AjXyjaiaIKjq GhOjPuFmkeEjBsqQOBbh5iVBwD2CBXB/i0QjxalKojrPl4oOJV/Bvy1hHj/61YyZTEwR9x98GYC 0Dd5O X-Gm-Gg: ASbGncvD3SUyjaG7A1Kuarq1ZbM86mXyZxemL8d7gT5wxHBZJCZDB5fh/a/FIX8JluL jQsii1AltqVMJTTzFpkWbCly3cI45UEmCE6Wgjl/CGIiJ0gPopBvzvoWaDa3tIjbzjJ1rYHTgZr wrZII0Xx6Nv3RDoOA2NKudcfqqbjjnxtjt+qJgGSsvyM72zjH0BTzybn3aq6BxCpBcmj7huw1AO DKN76Et7KoEPbaWc5W9DA99U7OnGNz5ONyMAAip9DduZLeYWUyJCTH3BhbNJsn5He485ru75A66 qq6jMzmy0+oWDcaKjdOYBAwC0apU5h5SY/Eh2FyAsjprUn+X3ExDtDCv57iJkfeLxW73OMmgP8e 2pr28m6ykYyi3K32GgQv/QPQlcu0WFAWeKANrSx/Ib6Jr9qIXjZA9605kTimSjrZzJds= X-Google-Smtp-Source: AGHT+IETWbmWtYS7DhIY/Va5c8eDS1nYo/wVpcKr4/ymkDagAZbzDr9ZF5r7gLgG3Kp9NQkjwSFoVg== X-Received: by 2002:a05:600c:a118:b0:46e:4784:cdf5 with SMTP id 5b1f17b1804b1-46e7227f720mr85550685e9.15.1759846336243; Tue, 07 Oct 2025 07:12:16 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 47/62] hw/arm/xlnx-versal-virt: add the xlnx-versal2-virt machine Date: Tue, 7 Oct 2025 15:11:07 +0100 Message-ID: <20251007141123.3239867-48-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::32f; envelope-from=peter.maydell@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, WEIRD_QUOTING=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: 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: 1759847162253116600 From: Luc Michel Add the Versal Gen 2 Virtual development machine embedding a versal2 SoC. This machine follows the same principle than the xlnx-versal-virt machine. It creates its own DTB and feeds it to the software payload. This way only implemented devices are exposed to the guest and the user does not need to provide a DTB. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-47-luc.michel@amd.com Signed-off-by: Peter Maydell --- docs/system/arm/xlnx-versal-virt.rst | 49 ++++++++++++++++++++++++---- hw/arm/xlnx-versal-virt.c | 37 +++++++++++++++++++-- 2 files changed, 76 insertions(+), 10 deletions(-) diff --git a/docs/system/arm/xlnx-versal-virt.rst b/docs/system/arm/xlnx-ve= rsal-virt.rst index 5d7fa18592b..640cc07f808 100644 --- a/docs/system/arm/xlnx-versal-virt.rst +++ b/docs/system/arm/xlnx-versal-virt.rst @@ -1,14 +1,16 @@ -AMD Versal Virt (``amd-versal-virt``) -=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 +AMD Versal Virt (``amd-versal-virt``, ``amd-versal2-virt``) +=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=3D=3D=3D =20 AMD Versal is a family of heterogeneous multi-core SoCs (System on Chip) that combine traditional hardened CPUs and I/O peripherals in a Processing System (PS) with runtime programmable FPGA logic (PL) and an Artificial Intelligence Engine (AIE). =20 -QEMU implements the Versal Series variant of Versal SoCs, with the -``amd-versal-virt`` machine. The alias ``xlnx-versal-virt`` is kept for -backward compatibility. +QEMU implements the following Versal SoCs variants: + +- Versal (the ``amd-versal-virt`` machine, the alias ``xlnx-versal-virt`` = is + kept for backward compatibility) +- Versal Gen 2 (the ``amd-versal2-virt`` machine) =20 More details here: https://www.amd.com/en/products/adaptive-socs-and-fpgas/versal.html @@ -21,6 +23,8 @@ The AMD Versal Virt board in QEMU is a model of a virtual= board (does not exist in reality) with a virtual Versal SoC without I/O limitations. Currently, we support the following cores and devices: =20 +Versal +"""""" Implemented CPU cores: =20 - 2 ACPUs (ARM Cortex-A72) with their GICv3 and ITS @@ -43,6 +47,28 @@ Implemented devices: - OSPI controller - TRNG controller =20 +Versal Gen 2 +"""""""""""" +Implemented CPU cores: + +- 8 ACPUs (ARM Cortex-A78AE) with their GICv3 and ITS +- 10 RCPUs (ARM Cortex-R52) with their GICv3 (one per cluster) + +Implemented devices: + +- 2 UARTs (ARM PL011) +- An RTC (Versal built-in) +- 3 GEMs (Cadence MACB Ethernet MACs) +- 8 ADMA (Xilinx zDMA) channels +- 2 SD Controllers +- OCM (256KB of On Chip Memory) +- DDR memory +- BBRAM (36 bytes of Battery-backed RAM) +- 2 CANFDs +- 2 USB controllers +- OSPI controller +- TRNG controller + QEMU does not yet model any other devices, including the PL and the AI Eng= ine. =20 Other differences between the hardware and the QEMU model: @@ -51,8 +77,8 @@ Other differences between the hardware and the QEMU model: ``-m`` argument. If a DTB is provided on the command line then QEMU will edit it to include suitable entries describing the Versal DDR memory ran= ges. =20 -- QEMU provides 8 virtio-mmio virtio transports; these start at - address ``0xa0000000`` and have IRQs from 111 and upwards. +- QEMU provides 8 virtio-mmio virtio transports. They use reserved memory + regions and IRQ pins to avoid conflicts with real SoC peripherals. =20 Running """"""" @@ -214,6 +240,11 @@ To use a different index value, N, from default of 0, = add: =20 eFUSE File Backend """""""""""""""""" + +.. note:: + The eFUSE device is not implemented in the Versal Gen 2 QEMU model + yet. + eFUSE can have an optional file backend, which must be a seekable binary file with a size of 3072 bytes or larger. A file with all binary 0s is a 'blank'. @@ -271,3 +302,7 @@ To connect CANFD0 and CANFD1 to host machine's CAN inte= rface can0: =20 -object can-bus,id=3Dcanbus -machine canbus0=3Dcanbus -machine canbus1= =3Dcanbus -object can-host-socketcan,id=3Dcanhost0,if=3Dcan0,canbus=3Dcanbus + +.. note:: + Versal Gen 2 has 4 CAN controllers. ``canbus0`` to ``canbus3`` can + be specified on the command line. diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c index 14c2d5cc924..149b448546e 100644 --- a/hw/arm/xlnx-versal-virt.c +++ b/hw/arm/xlnx-versal-virt.c @@ -1,5 +1,5 @@ /* - * AMD/Xilinx Versal Virtual board. + * AMD/Xilinx Versal family Virtual board. * * Copyright (c) 2018 Xilinx Inc. * Copyright (c) 2025 Advanced Micro Devices, Inc. @@ -29,6 +29,7 @@ OBJECT_DECLARE_TYPE(VersalVirt, VersalVirtClass, XLNX_VERSAL_VIRT_BASE_MAC= HINE) =20 #define TYPE_XLNX_VERSAL_VIRT_MACHINE MACHINE_TYPE_NAME("amd-versal-virt") +#define TYPE_XLNX_VERSAL2_VIRT_MACHINE MACHINE_TYPE_NAME("amd-versal2-virt= ") =20 #define XLNX_VERSAL_NUM_OSPI_FLASH 4 =20 @@ -57,7 +58,9 @@ struct VersalVirtClass { static void fdt_create(VersalVirt *s) { MachineClass *mc =3D MACHINE_GET_CLASS(s); + VersalVirtClass *vvc =3D XLNX_VERSAL_VIRT_BASE_MACHINE_GET_CLASS(s); const char versal_compat[] =3D "amd-versal-virt\0xlnx-versal-virt"; + const char versal2_compat[] =3D "amd-versal2-virt"; =20 s->fdt =3D create_device_tree(&s->fdt_size); if (!s->fdt) { @@ -71,8 +74,18 @@ static void fdt_create(VersalVirt *s) =20 /* Header */ qemu_fdt_setprop_string(s->fdt, "/", "model", mc->desc); - qemu_fdt_setprop(s->fdt, "/", "compatible", versal_compat, - sizeof(versal_compat)); + + switch (vvc->version) { + case VERSAL_VER_VERSAL: + qemu_fdt_setprop(s->fdt, "/", "compatible", versal_compat, + sizeof(versal_compat)); + break; + + case VERSAL_VER_VERSAL2: + qemu_fdt_setprop(s->fdt, "/", "compatible", versal2_compat, + sizeof(versal2_compat)); + break; + } } =20 static void fdt_nop_memory_nodes(void *fdt, Error **errp) @@ -363,6 +376,17 @@ static void versal_virt_machine_class_init(ObjectClass= *oc, const void *data) versal_virt_machine_class_init_common(oc); } =20 +static void versal2_virt_machine_class_init(ObjectClass *oc, const void *d= ata) +{ + MachineClass *mc =3D MACHINE_CLASS(oc); + VersalVirtClass *vvc =3D XLNX_VERSAL_VIRT_BASE_MACHINE_CLASS(oc); + + mc->desc =3D "AMD Versal Gen 2 Virtual development board"; + vvc->version =3D VERSAL_VER_VERSAL2; + + versal_virt_machine_class_init_common(oc); +} + static const TypeInfo versal_virt_base_machine_init_typeinfo =3D { .name =3D TYPE_XLNX_VERSAL_VIRT_BASE_MACHINE, .parent =3D TYPE_MACHINE, @@ -379,10 +403,17 @@ static const TypeInfo versal_virt_machine_init_typein= fo =3D { .class_init =3D versal_virt_machine_class_init, }; =20 +static const TypeInfo versal2_virt_machine_init_typeinfo =3D { + .name =3D TYPE_XLNX_VERSAL2_VIRT_MACHINE, + .parent =3D TYPE_XLNX_VERSAL_VIRT_BASE_MACHINE, + .class_init =3D versal2_virt_machine_class_init, +}; + static void versal_virt_machine_init_register_types(void) { type_register_static(&versal_virt_base_machine_init_typeinfo); type_register_static(&versal_virt_machine_init_typeinfo); + type_register_static(&versal2_virt_machine_init_typeinfo); } =20 type_init(versal_virt_machine_init_register_types) --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846798; cv=none; d=zohomail.com; s=zohoarc; b=GgmyjBM6fCRPFFUSodGBxf8kgrBE8K4zBnYwSe1iT2+cD2kWkNzTRSOyohVWLuDyU5MFOzKEGyMy261wHXT/q2doE4vwsACr+4oEukCdLGZ8oGAYtEqr2oaguvlxmpjgvN/ixyhvbYSoCLWDKQSGDrRiM2xOmrQL4z8w4HsSN4I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846798; 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=SI4CyOuHnAyNnn1ALu382C8YNZCTgZ8H8fSMouj/XxY=; b=TCCpXxhpXaJopkaRUk0mQI911B3Kp2rxZDJftIxjZfldrEekz+iNmCKmaZybxpR0vUVGL4UzbUsnxah3znxyNYBQfH5hfBxf7hCKv32uQlKoZYuamO6ztcnliFABiXCx2RnIjb6G5VrvB4MilpYPoa8vT+qHf0OKRD6VfLOooYY= 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 1759846798437982.8942511301466; Tue, 7 Oct 2025 07:19:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68R2-00067n-7j; Tue, 07 Oct 2025 10:13:00 -0400 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 1v68Qh-0005rt-Qk for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:43 -0400 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 1v68QQ-0002LM-1V for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:38 -0400 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-3f0134ccc0cso3822912f8f.1 for ; Tue, 07 Oct 2025 07:12:18 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846337; x=1760451137; 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=SI4CyOuHnAyNnn1ALu382C8YNZCTgZ8H8fSMouj/XxY=; b=wK8boeZ01CX3Ue2UaiB1Tb5z3UqGHHhwzjh82itTdqbH/JltEjcCUGE0xI5NaCUkFB QW6HBfB9uWy5qVPv9CuQxz2vQl/+vsFXaTxCuQdbyyhb/FyqJSs01sBJ6nAwYM73UCqh CVtkSUgA1FXiqRaawt6YGFyEuAV9ZG267tiXzjLOYMB+W0QX+fmbP77dT9mrgpYfaWZF EeZJnPX+tJdeV8CW6vug29AYNSQERTWEaXTWRh8As1PsyHLTD2NCVis0x2WaQmI4piwL 1LEyy2PT/oDR5L6VAbZ65HDA1jm7i7KppDneUk7mAuACmcDckc1K9f4grrPwy5vKqtsG t2Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846337; x=1760451137; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SI4CyOuHnAyNnn1ALu382C8YNZCTgZ8H8fSMouj/XxY=; b=hWeCEhvNtPIK3pLPxaioTv6McHdyc1d2ZBzH3/Q+iBKbj/sWpWD7SIq95SgqfrTP+s 1Q90x4iEqaaLCzry26IS9s32nCyZL5TDagAZbaxKxahoZ6VnpoFq4UwBkH0MJG4ryrQC VY2Oi4O1Rw8nIUeZCPVQcceKBmrV5jG9S3Fl1tRHRYtPkpLkqvGILR/+OZP51iBH6r0C e7rF6NvStQP1VoOjHD0baenrlbDByvcBU2ygR0llioEfHdP9+GbuTsw0ld2QpocZv2sW ueuB+kDWX3Z+2QCO7Fhlqj0msbhwRkxzxijzWckxeU1nNuG5C6b9SPplVrhyTJsUIBEa pOlg== X-Gm-Message-State: AOJu0YypGVw431qUVqn07lV0Gkp8hcjuQvBl7jvLjrdKxQwXN72JToa5 FG59GTJqCwrt6msHSaWgyxTHPZ0VELz+QKbvPKVS87kDmY3qLKN4LI3E98UGr6n544L5oZwNV6a WiPCQ X-Gm-Gg: ASbGncvLC2ot42zFPUJ1mFAGs6wS49XnxVahjFdRv1YKTNr2QhepE/vtIhD7GsygdAd 2bcw/hknFeA/X9qjRstXxAxmBjLr6BF7UNt3sNLBlYykntGMVulogFUR1Ju6NGhAqE/EdsoHnsW p8dwzc+ZBn7wpCx6ySHcSl/qzQnJVDCwqPe7uk8wUtrvRtE3iuTxuX6LewNd0jDo802ccZNW/zf k/5W8SCRSlXEkEagnzh34klftCmnaW/EriLk2VUjfKVKUEvQ5XH+ZmJGRv5M5D0GfcNBlNIjOJQ 7OpCOuShE9KBpTn70RhbEPdG0pe0IOqqdai4zZwWfXicuUFnBtTJA1sJmeYJ2PyFDedwg4/AoZU XfbjOhsRhgLyak/78rB33WpqK87RX57FMColQX9VW2SdxW6nWFvt0n63M X-Google-Smtp-Source: AGHT+IEuCDuT4b5IHBshZsu4S39nfQVdqsG8n1EhJPGecquO/iLjZ3ne6eA6okVr2ksZB0OjSL0KXA== X-Received: by 2002:a05:6000:40c9:b0:3dd:981d:43a5 with SMTP id ffacd0b85a97d-425671c71a6mr10731964f8f.47.1759846337233; Tue, 07 Oct 2025 07:12:17 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 48/62] tests/functional/test_aarch64_xlnx_versal: test the versal2 machine Date: Tue, 7 Oct 2025 15:11:08 +0100 Message-ID: <20251007141123.3239867-49-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::42d; envelope-from=peter.maydell@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: 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: 1759846800181154100 From: Luc Michel Add a test for the amd-versal2-virt machine using the same command line, kernel, initrd than the ones used for amd-versal-virt. Signed-off-by: Luc Michel Reviewed-by: Francisco Iglesias Reviewed-by: Edgar E. Iglesias Tested-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20250926070806.292065-48-luc.michel@amd.com Signed-off-by: Peter Maydell --- tests/functional/aarch64/test_xlnx_versal.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/functional/aarch64/test_xlnx_versal.py b/tests/functiona= l/aarch64/test_xlnx_versal.py index 95e5c44771f..45aa6e1b881 100755 --- a/tests/functional/aarch64/test_xlnx_versal.py +++ b/tests/functional/aarch64/test_xlnx_versal.py @@ -20,8 +20,8 @@ class AmdVersalVirtMachine(LinuxKernelTest): '/ubuntu-installer/arm64/initrd.gz'), 'e7a5e716b6f516d8be315c06e7331aaf16994fe4222e0e7cfb34bc015698929e') =20 - def test_aarch64_amd_versal_virt(self): - self.set_machine('amd-versal-virt') + def common_aarch64_amd_versal_virt(self, machine): + self.set_machine(machine) kernel_path =3D self.ASSET_KERNEL.fetch() initrd_path =3D self.ASSET_INITRD.fetch() =20 @@ -33,5 +33,11 @@ def test_aarch64_amd_versal_virt(self): self.vm.launch() self.wait_for_console_pattern('Checked W+X mappings: passed') =20 + def test_aarch64_amd_versal_virt(self): + self.common_aarch64_amd_versal_virt('amd-versal-virt') + + def test_aarch64_amd_versal2_virt(self): + self.common_aarch64_amd_versal_virt('amd-versal2-virt') + if __name__ =3D=3D '__main__': LinuxKernelTest.main() --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847421; cv=none; d=zohomail.com; s=zohoarc; b=KZH0goK57oLB3eQLYMqcEN429Tk7rjtSd0p6GpVN1sicAfNav1co2dYYReOWaEqHuXfmemzCI/DnVQ4R8cXhVjapIU6Xtdeb12aAyHXE32ljg4JiHuV35seLvbspbhktoz2DgPWXRhypB4nMS3khfKHBaZEAVRL4thUdUExT++8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847421; 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=Zw5KMxceB9NmKCgbX8APAj8IVt3ga1wC/nI26rLINp0=; b=QzvoIZTRL8JGW3JZr8SvzXw2EwRGIdyFXlGA6GlmdZAOYwdHt1ce5nCUfmzx1ojW0BgA/vSDn6/DzAg8RV7IZZaMR7VijL+VuVVE70JQqw2xj7cxTo6oq3Rz4i9cEfSvP5r4xzW77qXlrab6Hv/lwzsBwZV5K/5E/cFrQfeOnec= 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 175984742171793.95239484508124; Tue, 7 Oct 2025 07:30:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68R5-00069M-A5; Tue, 07 Oct 2025 10:13:03 -0400 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 1v68Qk-0005tG-Qk for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:43 -0400 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68QU-0002Lr-HW for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:40 -0400 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-3ece0e4c5faso4892513f8f.1 for ; Tue, 07 Oct 2025 07:12:21 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.17 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846338; x=1760451138; 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=Zw5KMxceB9NmKCgbX8APAj8IVt3ga1wC/nI26rLINp0=; b=RBv2D9Uj1fgIVR11ObkBkMJRm+A/2KtI2c5Ifjdn+1qdwdmAvxOj1n39pRnUq9dQEZ Ao3DoAdbKssjnvaRYAn4jUiVODcnTSxTvdBw4aCCSrYh3iUtD0+SVfw4ZsdYQWRo89E3 RM6s5gvZ8bv8PuSLPeAwov9t79/C+0ZBOQvrtGa/Mzf87ZHhlEYmlNTwzieXdBrFD4ZI eh/Y1ToPT7QfjgVRTdcyGUaIt33gyNAnpFAr7N2Shgoz+QHge/NhS65RPx6b2P+RUpTH qEccUCe8u3XHjUBbwEU+ea2N3mGgSphM2UFv/QzIfWiCZdgAo3hMfZdd1IM7ycZCeaKP VWdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846338; x=1760451138; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Zw5KMxceB9NmKCgbX8APAj8IVt3ga1wC/nI26rLINp0=; b=ndRwjUjQN0qGH19i9Ad7+1alAwHKp7Lsln9HmFcOZRW7FcHn8yzpjhBlilU1oA0URL rv0Z5K8Qm+rWD28mzLIgcBTLBs0CQgU6L9o2VeXn3r4lJmuX29s2Tc359i2gfbDFJ6V2 wBKEN41IKKuynPjax4Fo/RweaYtbrfrCQ/etvwIq8xdrPwc0gCLj52T7xTF6KV+fwUtk 2tqh4BsFS5TTRiT7p7rhcj0MqYDtvLW/Zq6KZDk6HAZaf4gibAOu1KpUemZEhPuXYevB MGC+U45HbLSK1vZaqZ716EqF0wEB3zltTVjz5QaJj5VVR+xqEPHGAsxye3AUy1zA0kPy nuCw== X-Gm-Message-State: AOJu0Yzpcy1KjnVCxSGIamzLw+Nr2zDKY2BPPD4rOp4ZxsgyhHLhMNkg dQ40bM4w90W6ScrKtyJT6R7XsN03ElmxiDgYmZeJBItWn7SrpKmsPjg2U7fal57qQy7KPN1/3I2 6kXp9 X-Gm-Gg: ASbGncs+jWFRUqsWPhGbP1phks6EaX3B0vBCQBx+J7edLy0PiU9J4NUUP7ldtDA0TD8 PbTEaxa+8nVvkCbHEGNIxSY4hXJfIvKooncnOCBQldivhdXgvDIWx6G1+mYZTameapQu2uGDMw+ +EVVdiLvn4mFKgh6Yta30eyMQKrsH76qzw0ORTZY/4QMwV3ROpnVFc4iyheyZZ6xx6QbZ+K3dru uzzqW1/IUUtTLLEYpUKVEPl9TbearrSGZ2Z+Ig5WahYX2PhKgb1+7PKZhx4IW1nlUeAKF+bHqFH Ihs3JCW8hAL8WDMXGxOt1SQOwwAilp7ybdTIma9tva2nqT4/u4qJXqkhOIk9kFvgaqIoDpEaxVL unR60AVmtKs8r93Sk3WguIUwotKH09W7oJ+TxmLPv2YxzSmMmpIuwC7Y2 X-Google-Smtp-Source: AGHT+IFLO9HiqM0xoS+SEuvUqgSGcisvp3xLuPD33qVzQKzRw1TkoObGIrPSkVr2gnCgv6ZtRRTcrQ== X-Received: by 2002:a05:6000:2dc9:b0:3ec:dbcc:8104 with SMTP id ffacd0b85a97d-425671aa874mr11644847f8f.36.1759846338202; Tue, 07 Oct 2025 07:12:18 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 49/62] hw/arm/xlnx-zynqmp: move GIC_NUM_SPI_INTR define in header Date: Tue, 7 Oct 2025 15:11:09 +0100 Message-ID: <20251007141123.3239867-50-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::42a; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1759847423518154100 From: Cl=C3=A9ment Chigot This define will be needed in a later patch in XlnxZynqMPState structure, hence move it within xlnx-zynqmp header. Add XLXN_ZYNQMP prefix as it's now public. Signed-off-by: Cl=C3=A9ment Chigot Reviewed-by: Edgar E. Iglesias Message-id: 20250930115718.437100-2-chigot@adacore.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-zynqmp.h | 1 + hw/arm/xlnx-zynqmp.c | 11 +++++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h index c137ac59e85..6a407c29624 100644 --- a/include/hw/arm/xlnx-zynqmp.h +++ b/include/hw/arm/xlnx-zynqmp.h @@ -67,6 +67,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(XlnxZynqMPState, XLNX_ZYNQMP) #define XLNX_ZYNQMP_OCM_RAM_SIZE 0x10000 =20 #define XLNX_ZYNQMP_GIC_REGIONS 6 +#define XLNX_ZYNQMP_GIC_NUM_SPI_INTR 160 =20 /* * ZynqMP maps the ARM GIC regions (GICC, GICD ...) at consecutive 64k off= sets diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index ec96a46eec3..d7adc070f8b 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -26,8 +26,6 @@ #include "target/arm/cpu-qom.h" #include "target/arm/gtimer.h" =20 -#define GIC_NUM_SPI_INTR 160 - #define ARM_PHYS_TIMER_PPI 30 #define ARM_VIRT_TIMER_PPI 27 #define ARM_HYP_TIMER_PPI 26 @@ -206,7 +204,7 @@ static const XlnxZynqMPGICRegion xlnx_zynqmp_gic_region= s[] =3D { =20 static inline int arm_gic_ppi_index(int cpu_nr, int ppi_index) { - return GIC_NUM_SPI_INTR + cpu_nr * GIC_INTERNAL + ppi_index; + return XLNX_ZYNQMP_GIC_NUM_SPI_INTR + cpu_nr * GIC_INTERNAL + ppi_inde= x; } =20 static void xlnx_zynqmp_create_rpu(MachineState *ms, XlnxZynqMPState *s, @@ -454,7 +452,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error= **errp) int num_apus =3D MIN(ms->smp.cpus, XLNX_ZYNQMP_NUM_APU_CPUS); const char *boot_cpu =3D s->boot_cpu ? s->boot_cpu : "apu-cpu[0]"; ram_addr_t ddr_low_size, ddr_high_size; - qemu_irq gic_spi[GIC_NUM_SPI_INTR]; + qemu_irq gic_spi[XLNX_ZYNQMP_GIC_NUM_SPI_INTR]; Error *err =3D NULL; =20 ram_size =3D memory_region_size(s->ddr_ram); @@ -502,7 +500,8 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error= **errp) g_free(ocm_name); } =20 - qdev_prop_set_uint32(DEVICE(&s->gic), "num-irq", GIC_NUM_SPI_INTR + 32= ); + qdev_prop_set_uint32(DEVICE(&s->gic), "num-irq", + XLNX_ZYNQMP_GIC_NUM_SPI_INTR + 32); qdev_prop_set_uint32(DEVICE(&s->gic), "revision", 2); qdev_prop_set_uint32(DEVICE(&s->gic), "num-cpu", num_apus); qdev_prop_set_bit(DEVICE(&s->gic), "has-security-extensions", s->secur= e); @@ -613,7 +612,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error= **errp) return; } =20 - for (i =3D 0; i < GIC_NUM_SPI_INTR; i++) { + for (i =3D 0; i < XLNX_ZYNQMP_GIC_NUM_SPI_INTR; i++) { gic_spi[i] =3D qdev_get_gpio_in(DEVICE(&s->gic), i); } =20 --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846786; cv=none; d=zohomail.com; s=zohoarc; b=E+0pdAihAT5apJ1WSwI4HESL1mFJD1OAvx7ahpD/eTk+8yMDuORL8Ga3ft2JZaOwvNPHyouRKWx6ZZmJnzSax6vPjC5O2UpBd5MeLNqpcRFN8YxhIkdUHPPfjaA4+IiKGkloeTDPK6rh30z9CLj+6mBRpSxsZvov9gPqkIoGqUM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846786; 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=SkslV1yaMtt0NINKDoLOHpZl/KR79AU0Um8mFMWwiMQ=; b=R4hB9dHStHrsjuqPJ5SDSAwFp1EnrwF6fXop31aMqT8p68qy+4QZCSqNnTEcdVlGgYvdc5NEOV6Y/+wfqvY1bd8o/Qzl77AnhNve0BdYNdN8rf7ao/sTCHVvmvlQBYlAtNdfPayr1/p527q771mhNoFnHraGv7jl7VG1OH1JqwQ= 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 1759846786382765.9129289969176; Tue, 7 Oct 2025 07:19:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68RB-0006Ab-La; Tue, 07 Oct 2025 10:13:09 -0400 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 1v68Qn-0005wE-Pc for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:46 -0400 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 1v68QU-0002Mc-No for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:44 -0400 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-46e34052bb7so68785075e9.2 for ; Tue, 07 Oct 2025 07:12:23 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846341; x=1760451141; 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=SkslV1yaMtt0NINKDoLOHpZl/KR79AU0Um8mFMWwiMQ=; b=QIUHacq8OVckniQRcXc8woW+JYLZQMZYMs8cdvyeeuidjXHmxM2CYzoDxtDhDa5gzB Ux3XxB85AHF3UVfAG4AQIEo9nNCnIpDPEXgI1ls7uv6/kbzF2u6EvcSYCzsrgiun+bUq a42W/tzuVGBre0Pks2FCVu1IrW8yTNyp/pNJrobldzNu/yhrg0j0kGRdgvjAD5Ujwu1M pgb/ia9FyjEAASaebEnTFsrHlXWIrPlVEmbMoeJKm5rPYr1fCdkwtD7uBb9kYTJjLucB OAWBKXfi/LDwADLq9uXPolTAorjAgnJXiR4G5VCjnRc2q3W1u5tJJmoMqcQH4qzCHCTI 6/Mw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846341; x=1760451141; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SkslV1yaMtt0NINKDoLOHpZl/KR79AU0Um8mFMWwiMQ=; b=PCOXkU6ra3Sc5T1zQ+a/JhFt3EM0yQ5TsW5pO6vryuz3AbZgvBgqtvUMDZApPe25zV wm8ado+0nbgXLvrIb1kJFgLSwyubYTTWVWsKCzsv6viz/Wd8N/rEiP+E0cbBjSOmedZ8 c5uXXY3KttYFFGGRyS2LYdai9DCbFu+4QAHsYGmioHWvv/UZ3WWtryT6g6eYXt/Ih9qu 5XKXB2U1ENIyWlhuxexRoR5lKXZzw4oVs9T60YCZxVYzC0bUDMo+b8+QqXWQz1ECLlcw F9pstNPPzdkVs4UgRq6h8EbwkRTDooYAZpmI3V6oTH5fKPtdqOdLSvME66Mk+OtXqbVA JsKg== X-Gm-Message-State: AOJu0YxMAXyKCI6lUca097ryeWxK8Af/2JdSeqrT6oCpMA+SZCDExuCZ 3V9KpBCsoN8b81f0Q4vpBs0DbPio3rhW1ZEldqozjesL/nQtK3mmz+94BGaP41gfiYqPVOexLQR m+SVF X-Gm-Gg: ASbGnctcJ4lXO9sdKCo4Bva3XVYSY1teYqyUxTMCUYvqUHXGlHv5FkJ+jMP4pK/HSMh ZWb/53rYDgfd3VJwTI/ri7KMOtjp8DM83fTbdyc54en8Snfs9Gv16fauoHiutZmM4EtLO2R8IeL eQy/rijEzue0KVhEv8cJo7ns7FayCU3x3NcNc2VKQYN750daLfjxkcpB2QH9+qruHppqAugAyEq BH3qas91muJ/+Yakd2MOye8EqvLxUPmXlS/AzCmc+f4CWxPtsDSOk6mi+JxFwRClkSmo87oQays T9MCSO0Ob2hmyrd0PVBIrCvisEyRWsEFF4vb2vuzVf4luJeY9erRWoVJtAmJqTxqVkUqNf/K9Q8 NC3ezskkCJWBNZ4A1lG1HXRz2U4tTM5b9bYYw04K60U3B7lGJzXELiZDLa8OVgDaw58Q= X-Google-Smtp-Source: AGHT+IGolDlbRhT6QPyq4Cgp0QifFfrsGrrakuToeRVi39amWEVWlAzUFGZvwe1ZuSI+ucxCJ8kvXw== X-Received: by 2002:a05:600c:1389:b0:45f:27fb:8016 with SMTP id 5b1f17b1804b1-46e711043b1mr88268245e9.1.1759846339178; Tue, 07 Oct 2025 07:12:19 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 50/62] hw/arm/xlnx-zynqmp: introduce helper to compute RPU number Date: Tue, 7 Oct 2025 15:11:10 +0100 Message-ID: <20251007141123.3239867-51-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::329; envelope-from=peter.maydell@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: 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: 1759846788057154100 From: Cl=C3=A9ment Chigot This helper will avoid repeating the MIN/MAX formula everytime the number of RPUs available is requested. Signed-off-by: Cl=C3=A9ment Chigot Reviewed-by: Edgar E. Iglesias Message-id: 20250930115718.437100-3-chigot@adacore.com Signed-off-by: Peter Maydell --- hw/arm/xlnx-zynqmp.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index d7adc070f8b..3d8c46986eb 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -207,14 +207,23 @@ static inline int arm_gic_ppi_index(int cpu_nr, int p= pi_index) return XLNX_ZYNQMP_GIC_NUM_SPI_INTR + cpu_nr * GIC_INTERNAL + ppi_inde= x; } =20 +static unsigned int xlnx_zynqmp_get_rpu_number(MachineState *ms) +{ + /* + * RPUs will be created only if "-smp" is higher than the maximum + * of APUs. Round it up to 0 to avoid dealing with negative values. + */ + return MAX(0, MIN((int)(ms->smp.cpus - XLNX_ZYNQMP_NUM_APU_CPUS), + XLNX_ZYNQMP_NUM_RPU_CPUS)); +} + static void xlnx_zynqmp_create_rpu(MachineState *ms, XlnxZynqMPState *s, const char *boot_cpu, Error **errp) { int i; - int num_rpus =3D MIN((int)(ms->smp.cpus - XLNX_ZYNQMP_NUM_APU_CPUS), - XLNX_ZYNQMP_NUM_RPU_CPUS); + int num_rpus =3D xlnx_zynqmp_get_rpu_number(ms); =20 - if (num_rpus <=3D 0) { + if (!num_rpus) { /* Don't create rpu-cluster object if there's nothing to put in it= */ return; } --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846775; cv=none; d=zohomail.com; s=zohoarc; b=Z5KHXXaCxxCR68Pm4StJWZproyz3te9kxy2xAuuxihg6/VXBbSiGQRuLeBzvdvJ1keoy1itGxs+WWXsCnSasxB6abzHy0Yt3uWaBjZd0SchAaqk8JUgmLDn1Wxkv8rZvjC2nW3SjHKG7VMaBwfAAMLtaTFQpS8fe0r3Bp0XL1mg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846775; 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=VSPvfoJk8tL01udiQoFnoSbF4UodUrjktsNUrDzx8iI=; b=aefvddTmmmft3ugX30WRS+CI3IRbmnouwK9RStCPwcYvTYCXdym9SkNesm6FO3w8uWscCTQ5gRv3V1RrINfZRe9I0ooGPAGKLS9nvBq20uibd4PVOwTgGOtwB/HrOEBsaKiBIO6ZqYFUj/qMOo19J+a9O8DQroOQc+xQo2yEBRE= 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 1759846775489274.47241501239796; Tue, 7 Oct 2025 07:19:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Qz-00065W-7r; Tue, 07 Oct 2025 10:12:57 -0400 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 1v68Qi-0005s3-JW for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:43 -0400 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 1v68QU-0002Ml-1w for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:40 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-46e2e6a708fso41817055e9.0 for ; Tue, 07 Oct 2025 07:12:23 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846342; x=1760451142; 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=VSPvfoJk8tL01udiQoFnoSbF4UodUrjktsNUrDzx8iI=; b=ZRWY+I+RtGb40/BWRKj2RpqjiFlsWXMAhocCxTFnT7VnOqa3ECQGgrd37Zyml3VGQ5 WopSPOG3wzAxUMQqUMDFbQbj3cTz2u8FsqG0FXJywBorqkqZerHVMtro2zB0/BRSTdhP pm6UnLKmnpbaWunYlYtUoAlAAF/rHFpb30zW6RU1vvD1QUaWgqbcTlWcj97lWMlR5P1A nEtRgDfTk/Ql6gFwlKQB/dGUYIdOS3KOjl2f8MTYlhLTb9wlZUom2Qn0qU0QuSjO4O2e 1sW66UWtFXlzF7/6Psx3gkwhWah4zCiBm9s/dk7mlj9ix92HT7HIKLs0Pt85blqRVwFv vVpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846342; x=1760451142; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VSPvfoJk8tL01udiQoFnoSbF4UodUrjktsNUrDzx8iI=; b=Chf35SlhzUefXaJCErKyK9Vf7QpQFLh89ry3VhlVAVIvzGIUWDE/Bb5ld12LfpduiY VMBZ8OKhPdkkRGItzVAkGu0ahBTUDbzGVTESTxhISKs9tbxddZNqKDHs4oPkSFQJrbs0 3RepQlI0jerxYE66uVcfNsjDPA54khxKGyPTEnshus4AkwcE12X3s5k9gNkHOQctE7vg 0TxXCQYVAWh/l6Klu6aXCmavuWighc+koelVUA32tJ5Oq6IIK7uxgX5VGstixqtCS9ma IhjdqwUDKl/aMcbbShbjW4eYPL2VDzuGCsHu+Xj2RwxgSuN+GceU2Wu49omvE/NOM6lT a1TQ== X-Gm-Message-State: AOJu0Yyx4W18Or5uvlfn08j+tzjptAd8sXG1RdJoXOPWqjZcMxXRPktE fLXiZw/QSncV8C+LYmAmmdBqgxXaeVydQfkKrMUZp94YnQhCggfLPWB1a6spD7AYF0DEAAC5pCH gehDj X-Gm-Gg: ASbGncusiSJ0rGR64lB4IbIPbbmUgdtsrSXX6HKlRTc+VHurBXQrwjQpnWa3fGSMbHV Ry4VABMgq14s1Vyy1YfXN+EEAtRnTqChTo5oS4/HgCxCLZj89EltvbmaWZ6mZ7jPNJE3pshdeJM ZvVXoZaXqgxyJnMpKokcmnhnvF6WSk7QN3COtx0LBd5RXx0u6tT4Y6pVRW7W5BQ3jhfxFvI7C9b 5MtVNv/C0F2pQ8MuBweAS75HWVB5CM2s9rcROqW3gBXWGQgljrDmMFI0mm3krrr9G0GeVNZwcjz WVdpY3m1+LsexYm9cVUKz+TBibbwC072f1ckdYIqNfThJZV7HQDX28ZS5p1LXmtX2sRHgvknesX YzapUxPfQ18gLTiuL89HCyDhqVp/nVcQ1c6o0PqGunNVOmr8VYS/OObAB X-Google-Smtp-Source: AGHT+IEvB0RJXMGBT0J8DcX8yvDU+JJYWhGWX1bZOnSUxTowafzy6IFW45Ow45fp+XtxGAic5yMWNQ== X-Received: by 2002:a05:600c:4ec6:b0:46e:1a14:a81b with SMTP id 5b1f17b1804b1-46e7115b667mr116100945e9.36.1759846341668; Tue, 07 Oct 2025 07:12:21 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 51/62] hw/arm/xlnx-zynqmp: wire a second GIC for the Cortex-R5 Date: Tue, 7 Oct 2025 15:11:11 +0100 Message-ID: <20251007141123.3239867-52-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::331; envelope-from=peter.maydell@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: 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: 1759846777887154100 From: Frederic Konrad This wires a second GIC for the Cortex-R5, all the IRQs are split when there is an RPU instanciated. Signed-off-by: Cl=C3=A9ment Chigot Acked-by: Edgar E. Iglesias Message-id: 20250930115718.437100-4-chigot@adacore.com Signed-off-by: Peter Maydell --- include/hw/arm/xlnx-zynqmp.h | 4 ++ hw/arm/xlnx-zynqmp.c | 77 +++++++++++++++++++++++++++++++++++- 2 files changed, 80 insertions(+), 1 deletion(-) diff --git a/include/hw/arm/xlnx-zynqmp.h b/include/hw/arm/xlnx-zynqmp.h index 6a407c29624..a3117bd6c50 100644 --- a/include/hw/arm/xlnx-zynqmp.h +++ b/include/hw/arm/xlnx-zynqmp.h @@ -42,6 +42,7 @@ #include "hw/misc/xlnx-zynqmp-crf.h" #include "hw/timer/cadence_ttc.h" #include "hw/usb/hcd-dwc3.h" +#include "hw/core/split-irq.h" =20 #define TYPE_XLNX_ZYNQMP "xlnx-zynqmp" OBJECT_DECLARE_SIMPLE_TYPE(XlnxZynqMPState, XLNX_ZYNQMP) @@ -106,6 +107,9 @@ struct XlnxZynqMPState { GICState gic; MemoryRegion gic_mr[XLNX_ZYNQMP_GIC_REGIONS][XLNX_ZYNQMP_GIC_ALIASES]; =20 + GICState rpu_gic; + SplitIRQ splitter[XLNX_ZYNQMP_GIC_NUM_SPI_INTR]; + MemoryRegion ocm_ram[XLNX_ZYNQMP_NUM_OCM_BANKS]; =20 MemoryRegion *ddr_ram; diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index 3d8c46986eb..ffed6e5126e 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -384,6 +384,7 @@ static void xlnx_zynqmp_init(Object *obj) XlnxZynqMPState *s =3D XLNX_ZYNQMP(obj); int i; int num_apus =3D MIN(ms->smp.cpus, XLNX_ZYNQMP_NUM_APU_CPUS); + int num_rpus =3D xlnx_zynqmp_get_rpu_number(ms); =20 object_initialize_child(obj, "apu-cluster", &s->apu_cluster, TYPE_CPU_CLUSTER); @@ -397,6 +398,12 @@ static void xlnx_zynqmp_init(Object *obj) =20 object_initialize_child(obj, "gic", &s->gic, gic_class_name()); =20 + if (num_rpus) { + /* Do not create the rpu_gic if we don't have rpus */ + object_initialize_child(obj, "rpu_gic", &s->rpu_gic, + gic_class_name()); + } + for (i =3D 0; i < XLNX_ZYNQMP_NUM_GEMS; i++) { object_initialize_child(obj, "gem[*]", &s->gem[i], TYPE_CADENCE_GE= M); object_initialize_child(obj, "gem-irq-orgate[*]", @@ -446,6 +453,15 @@ static void xlnx_zynqmp_init(Object *obj) object_initialize_child(obj, "qspi-irq-orgate", &s->qspi_irq_orgate, TYPE_OR_IRQ); =20 + if (num_rpus) { + for (i =3D 0; i < ARRAY_SIZE(s->splitter); i++) { + g_autofree char *name =3D g_strdup_printf("irq-splitter%d", i); + object_initialize_child(obj, name, &s->splitter[i], TYPE_SPLIT= _IRQ); + } + } + + + for (i =3D 0; i < XLNX_ZYNQMP_NUM_USB; i++) { object_initialize_child(obj, "usb[*]", &s->usb[i], TYPE_USB_DWC3); } @@ -459,6 +475,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error= **errp) uint8_t i; uint64_t ram_size; int num_apus =3D MIN(ms->smp.cpus, XLNX_ZYNQMP_NUM_APU_CPUS); + int num_rpus =3D xlnx_zynqmp_get_rpu_number(ms); const char *boot_cpu =3D s->boot_cpu ? s->boot_cpu : "apu-cpu[0]"; ram_addr_t ddr_low_size, ddr_high_size; qemu_irq gic_spi[XLNX_ZYNQMP_GIC_NUM_SPI_INTR]; @@ -517,6 +534,14 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Erro= r **errp) qdev_prop_set_bit(DEVICE(&s->gic), "has-virtualization-extensions", s->virt); =20 + if (num_rpus) { + qdev_prop_set_uint32(DEVICE(&s->rpu_gic), "num-irq", + XLNX_ZYNQMP_GIC_NUM_SPI_INTR + 32); + qdev_prop_set_uint32(DEVICE(&s->rpu_gic), "revision", 1); + qdev_prop_set_uint32(DEVICE(&s->rpu_gic), "num-cpu", num_rpus); + qdev_prop_set_uint32(DEVICE(&s->rpu_gic), "first-cpu-index", 4); + } + qdev_realize(DEVICE(&s->apu_cluster), NULL, &error_fatal); =20 /* Realize APUs before realizing the GIC. KVM requires this. */ @@ -616,13 +641,63 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Err= or **errp) return; } =20 + if (num_rpus) { + if (!sysbus_realize(SYS_BUS_DEVICE(&s->rpu_gic), errp)) { + return; + } + + for (i =3D 0; i < num_rpus; i++) { + qemu_irq irq; + + sysbus_mmio_map(SYS_BUS_DEVICE(&s->rpu_gic), i + 1, + GIC_BASE_ADDR + i * 0x1000); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->rpu_gic), i, + qdev_get_gpio_in(DEVICE(&s->rpu_cpu[i]), + ARM_CPU_IRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->rpu_gic), i + num_rpus, + qdev_get_gpio_in(DEVICE(&s->rpu_cpu[i]), + ARM_CPU_FIQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->rpu_gic), i + num_rpus *= 2, + qdev_get_gpio_in(DEVICE(&s->rpu_cpu[i]), + ARM_CPU_VIRQ)); + sysbus_connect_irq(SYS_BUS_DEVICE(&s->rpu_gic), i + num_rpus *= 3, + qdev_get_gpio_in(DEVICE(&s->rpu_cpu[i]), + ARM_CPU_VFIQ)); + irq =3D qdev_get_gpio_in(DEVICE(&s->rpu_gic), + arm_gic_ppi_index(i, ARM_PHYS_TIMER_PPI= )); + qdev_connect_gpio_out(DEVICE(&s->rpu_cpu[i]), GTIMER_PHYS, irq= ); + irq =3D qdev_get_gpio_in(DEVICE(&s->rpu_gic), + arm_gic_ppi_index(i, ARM_VIRT_TIMER_PPI= )); + qdev_connect_gpio_out(DEVICE(&s->rpu_cpu[i]), GTIMER_VIRT, irq= ); + irq =3D qdev_get_gpio_in(DEVICE(&s->rpu_gic), + arm_gic_ppi_index(i, ARM_HYP_TIMER_PPI)= ); + qdev_connect_gpio_out(DEVICE(&s->rpu_cpu[i]), GTIMER_HYP, irq); + irq =3D qdev_get_gpio_in(DEVICE(&s->rpu_gic), + arm_gic_ppi_index(i, ARM_SEC_TIMER_PPI)= ); + qdev_connect_gpio_out(DEVICE(&s->rpu_cpu[i]), GTIMER_SEC, irq); + } + + sysbus_mmio_map(SYS_BUS_DEVICE(&s->rpu_gic), 0, GIC_BASE_ADDR); + } + if (!s->boot_cpu_ptr) { error_setg(errp, "ZynqMP Boot cpu %s not found", boot_cpu); return; } =20 for (i =3D 0; i < XLNX_ZYNQMP_GIC_NUM_SPI_INTR; i++) { - gic_spi[i] =3D qdev_get_gpio_in(DEVICE(&s->gic), i); + if (num_rpus) { + DeviceState *splitter =3D DEVICE(&s->splitter[i]); + qdev_prop_set_uint16(splitter, "num-lines", 2); + qdev_realize(splitter, NULL, &error_abort); + gic_spi[i] =3D qdev_get_gpio_in(splitter, 0); + qdev_connect_gpio_out(splitter, 0, + qdev_get_gpio_in(DEVICE(&s->gic), i)); + qdev_connect_gpio_out(splitter, 1, + qdev_get_gpio_in(DEVICE(&s->rpu_gic), i)= ); + } else { + gic_spi[i] =3D qdev_get_gpio_in(DEVICE(&s->gic), i); + } } =20 for (i =3D 0; i < XLNX_ZYNQMP_NUM_GEMS; i++) { --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847140; cv=none; d=zohomail.com; s=zohoarc; b=UEOEAFtMXEPYqeICuaqeRDprLv1HMJj6BTpMrq3/EpL5wS5IWcO+7ODos6+DE/278E+Jf7T0AeH/ZSqIZsYVIz5YQiINtJM5+lYZWbj/0DCYomuU9yXr8vIvu65/JWxhFBaUa8m9HbD0RhNKVOT0zajU7ieaLLm64byQpJ/C5OE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847140; 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=obeXY0oM+RvnNeVW9ans/XMLJrizgVMLKOkNMjRO3Fc=; b=Ags+KCM3hBfYwNGOzB1/QG6BQretHpxVMclJDtOz+l4jCJuH4zufBwiyX+kQiiXbt/7JbCGPfr6HTy02/QmrrgYjtduWDMNOK63tufZ2PMA+cpiYHcMVd6KmTWbNG401P5ndv1KyK9/sDmd1wvdiqR+Tb+zH1yHwbFw2aQClU1M= 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 1759847140181330.03586699838365; Tue, 7 Oct 2025 07:25:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Qv-00061u-RI; Tue, 07 Oct 2025 10:12:54 -0400 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 1v68Qp-0005xt-PF for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:47 -0400 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68QW-0002NE-RO for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:46 -0400 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-46e384dfde0so70065795e9.2 for ; Tue, 07 Oct 2025 07:12:25 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846343; x=1760451143; 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=obeXY0oM+RvnNeVW9ans/XMLJrizgVMLKOkNMjRO3Fc=; b=ZnHY0yxkXPnvh9kkpMoP1v9Elrd2HzJ0e7X2SBCgEDRJfPfBAfu/aEleCfxhCq4/4U 27oxQalYtHTooGcrdD3cEgm1QGxfoejX/xGw3NnWgtDSUZKgITGuFFuQJIkzFp8px2qi GwfzriEdRASMILMoGWb3c3+zY1hkUDDAIPgs0PDsk/TlfMg5OxnNTY9DLdrKkklusHiV tCIozHheS5w/FFpwX+apenyPMwEIG6pv6KLAvfEFawNVXYoTUYUI8GxmXzUfzDQuuSG/ Py0K4T+KxUZhvuC9L41JFr9AhnlgpPfB7L42CsHiVcMwdZACCC3QhTVaNDcpjS9Z8F7c J5/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846343; x=1760451143; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=obeXY0oM+RvnNeVW9ans/XMLJrizgVMLKOkNMjRO3Fc=; b=A5MFuobNdyiFkdAr2mLJumq1v5CbPqWF4WiJ+c9POi9JzSNJSfJodQYd+UNFVShjRE pwZfj0RTSXYs6CiAOhY5SDI2UAOZcHOu4drzEOHazjpm3/J/93gTyDcRiT/C+tr7p560 9L5S0IivJ4H3HT5d767QB5kN1GRl/blLeo8QBGLqS3LV/xXA3WdMuq9/RuOJVtWux54Q tMckETdf3dWSK7EvhQKGd3dXJEYmI7Ph2DEnPSp+o9+RbgVY45r5x0hDiR7fnsYubaz+ 0UBbgSiQpwgd0yQdMXAnqjnnigbIS9oiVpua2+8bAzSgG6Ssat4CBMp60B+xJI/aQdx/ vBkg== X-Gm-Message-State: AOJu0Yxl7aJNmZv2RLThyR5c//ycTa4dBH+ycuBe9C6hMgC7mxD/B8HW KTz+vKMaF9BzXh77SQsfHN6HDDkbdinUcqkFMsNkfTaiacocq6E0gZpc8LJmuKoXJy5dqvwWucK m1zfR X-Gm-Gg: ASbGncsGYumHPunkeO2IKf7PUPF8x68uPxF5/o5arcURwJx4FYwtijF20WFXBPRQOnZ dx0UnNezctgZkuLpRG+MlXRVseAtCpogWcwuIw7E+pihCvI9mHEi/prg8uuqi1k1pS5X80g/sIz krf6QDNcFgeeWiuqixPKJmzO1Dw/eWKU6PCdchtygPj8BJVbBH/Ih2Yhs6UF5MBN8Y66eu755rT phpPhaMybNqKKvJRQGLRqrd5KdxgmlZqQcFcSsSIjK8FiHNpUTd0BmwDAbSEkHqQJB+4zEUYwXb ANiOwAdBR09WYG5f/msJhGt2RkyYkm2wIOOSi4YgBxA45sUGCeJeVORtmBKkyj2Cs+QJdfQbeRD KKSi/ZewnAIev9+EL8yz0kbRzdle4pY91FR7rcjwdefOiWAkjeB2vduK7 X-Google-Smtp-Source: AGHT+IHHifXGLw1BxiL/KLjFRt5E33iKZ0810MCJ8pQdSpSJYjzwqLjfwm8aVtejEUQ6PbVDO+wHuQ== X-Received: by 2002:a05:600c:19ce:b0:45f:2919:5e6c with SMTP id 5b1f17b1804b1-46e7110c3d5mr144127995e9.16.1759846342747; Tue, 07 Oct 2025 07:12:22 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 52/62] hw/arm: Remove sl_bootparam_write() and 'hw/arm/sharpsl.h' header Date: Tue, 7 Oct 2025 15:11:12 +0100 Message-ID: <20251007141123.3239867-53-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@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 client-ip=2a00:1450:4864:20::333; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x333.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, 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: 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: 1759847142162154100 From: Philippe Mathieu-Daud=C3=A9 When removing the spitz and tosa board, commit b62151489ae ("hw/arm: Remove deprecated akita, borzoi spitz, terrier, tosa boards") removed the last calls to sl_bootparam_write(). Remove it, along with the "hw/arm/sharpsl.h" header. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20251001084047.67423-1-philmd@linaro.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- MAINTAINERS | 1 - include/hw/arm/sharpsl.h | 17 ---------------- hw/gpio/zaurus.c | 42 ---------------------------------------- 3 files changed, 60 deletions(-) delete mode 100644 include/hw/arm/sharpsl.h diff --git a/MAINTAINERS b/MAINTAINERS index 75e1fa5c307..bb7fa76c324 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1006,7 +1006,6 @@ S: Odd Fixes F: hw/arm/collie.c F: hw/arm/strongarm* F: hw/gpio/zaurus.c -F: include/hw/arm/sharpsl.h F: docs/system/arm/collie.rst F: tests/functional/arm/test_collie.py =20 diff --git a/include/hw/arm/sharpsl.h b/include/hw/arm/sharpsl.h deleted file mode 100644 index 1e3992fcd00..00000000000 --- a/include/hw/arm/sharpsl.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Common declarations for the Zaurii. - * - * This file is licensed under the GNU GPL. - */ - -#ifndef QEMU_SHARPSL_H -#define QEMU_SHARPSL_H - -#include "exec/hwaddr.h" - -/* zaurus.c */ - -#define SL_PXA_PARAM_BASE 0xa0000a00 -void sl_bootparam_write(hwaddr ptr); - -#endif diff --git a/hw/gpio/zaurus.c b/hw/gpio/zaurus.c index b8d27f59738..590ffde89d1 100644 --- a/hw/gpio/zaurus.c +++ b/hw/gpio/zaurus.c @@ -18,7 +18,6 @@ =20 #include "qemu/osdep.h" #include "hw/irq.h" -#include "hw/arm/sharpsl.h" #include "hw/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" @@ -265,44 +264,3 @@ static void scoop_register_types(void) } =20 type_init(scoop_register_types) - -/* Write the bootloader parameters memory area. */ - -#define MAGIC_CHG(a, b, c, d) ((d << 24) | (c << 16) | (b << 8) | a) - -static struct QEMU_PACKED sl_param_info { - uint32_t comadj_keyword; - int32_t comadj; - - uint32_t uuid_keyword; - char uuid[16]; - - uint32_t touch_keyword; - int32_t touch_xp; - int32_t touch_yp; - int32_t touch_xd; - int32_t touch_yd; - - uint32_t adadj_keyword; - int32_t adadj; - - uint32_t phad_keyword; - int32_t phadadj; -} zaurus_bootparam =3D { - .comadj_keyword =3D MAGIC_CHG('C', 'M', 'A', 'D'), - .comadj =3D 125, - .uuid_keyword =3D MAGIC_CHG('U', 'U', 'I', 'D'), - .uuid =3D { -1 }, - .touch_keyword =3D MAGIC_CHG('T', 'U', 'C', 'H'), - .touch_xp =3D -1, - .adadj_keyword =3D MAGIC_CHG('B', 'V', 'A', 'D'), - .adadj =3D -1, - .phad_keyword =3D MAGIC_CHG('P', 'H', 'A', 'D'), - .phadadj =3D 0x01, -}; - -void sl_bootparam_write(hwaddr ptr) -{ - cpu_physical_memory_write(ptr, &zaurus_bootparam, - sizeof(struct sl_param_info)); -} --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846766; cv=none; d=zohomail.com; s=zohoarc; b=RRrtW5zT5tryalfekgBgDpUQdv85+fOrnEjD23tEmhWNUrf0mtM5ss5sInOhaJBMZv2YPWW5kvMp4jEYxx7AXYV1940FiyX01DLRoHxhilGFQcFJcMogBvXOnbwFkD+nrLftVoHBrglyRkgFyPB4i5LUVUIi3hFj7vDLkTzIKwI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846766; h=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=6nKj99KdmBR33nuMOThvE6JAKFc6l5qFA/gSXuXJhag=; b=kUXkqqtgTPD9zeUHs8ySJVIeJiON/GWWU1IECh57b5jg76zGl3KvcWUVM2r1TFU4ZrgK/W5q+/Yg8doXwlNNwPLzOVxpt+bY1dkOc7bAY6DTjsJ0L4P/KI22XYmYssj2sjTjP2jKnebEgGTBiJTWDFZexwB/MYFvkx85raX1ezc= 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 1759846766348178.63784681984532; Tue, 7 Oct 2025 07:19:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Qw-00062u-Nt; Tue, 07 Oct 2025 10:12:54 -0400 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 1v68Qi-0005s2-IR for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:45 -0400 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 1v68QU-0002NC-Cy for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:40 -0400 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-46f53f88e0bso18543435e9.1 for ; Tue, 07 Oct 2025 07:12:25 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846344; x=1760451144; 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=6nKj99KdmBR33nuMOThvE6JAKFc6l5qFA/gSXuXJhag=; b=yJ/Z5GDRuLS2J0U2zupXvEj+E/3yosiFZxJcHrdJ0KZ4zeWpu/fClFd8M5vkUr4E0B hDTqAqGn/m6MhwjiIwEO/y4POa4va59RMFCa412mR7Tm9FGrwpQteFov3RdH/1+Gxp/d CcvhQgFj3rbmfPjVI6pp/Xuvwr7J5U5lp+KECJo6CHRMEGjWjMTaSBmebByDt4BPW437 tnTC34aCSG1EW+kJEEXSXQlryQJ+BRyrcr0U5HUrdjettaKhIyVK3b3XJgMRS740UJ8N 6IwFNaiBOhIjTVI+AZkpRbr2sMaze3+Vh+99UqhhR9pV3RMChoVbfPw2n1pdmlzYnkUN 1YAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846344; x=1760451144; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6nKj99KdmBR33nuMOThvE6JAKFc6l5qFA/gSXuXJhag=; b=m/UNP10HCMyU/FUjxrcBcNQaReEtq48CXwC0/x4Sv03LdYis1SJEMo39hVvZq1n+2H jtywOO/DZPDcFCk57CeIse4HhO3yj2rPBYWJqfYKIEuR4GP3CsUFthTd0wWne3XkoiAV EhDYO47HtyeEjq98b1BpnDAzIndZ9MLdX8ukmaw44mDLwsANXXrIdI5Pg1P6EMmOeOBL D4ayOy5zduGGL8I82Tl7pRW/CkGO1xkNGxiHf9BRbZMzuncHGnJBLNoEMGwKOT6I1HHI LKgErT5R/Ir9dHeBE33RGgf4XbNPSGUjYK7te6RolKu3ol3I9PsBivDbrf2Kx3XNkB6y vhgQ== X-Gm-Message-State: AOJu0Yz3Dkh5pudN6PL9wN9EmyCsIqpFeGHk5RYgYL1NRSvNGObpOuQF 8ELGIkva0ad/nC/bA82TLaCxjo+A18UZsklCM34Z+0IuwCBGCrAKssXGYk4S5ZbGcWK2w9PHYb1 RSMHK X-Gm-Gg: ASbGncuBvjLSuRkibsPPdC2iJNoh22gsLgSUCM842FymeperMmeiNW8sRO+sG8t3vIj ajEM7MVDR7wlMGJhZ2Skk/iHoCtFwlLwYYJd4sc2zfBbAjIno275IjthoKGdr3vPV9ueAM9Aqqj S8HfPUN3EFeDj9SuRr7kskFDGnkdGGk3bf2jz59T5G0MXfk4w4EcAhOjG1sA1hXTvDq79EcxzTI DewO9j1gpGwf1AsevC6UIpv2X0GviBs0c0qSRI6BIDM1A5wvXvlHlo4gqVhYk2YCDPKFM9t0mTF HNXpXmJmPFzRBR57RTgXXxgoTE8FgC1/L3Nxh78w3QAEeoFkE7rqi+MEg7/1+D0SMIj7EoLNIZ2 kMOvLjwqct84mYptLzaYhZrU72PQBOmtT4gi6Y4GxTp3V5Gdb1xGvLXn6gBS5DH4TAW0= X-Google-Smtp-Source: AGHT+IHr14AJZLG8/JQvR8FZxKhzEpsQAPh+tTTsCmLavXFe5lPxntlRuGUJHpNmBRRE4e70tRxzMg== X-Received: by 2002:a05:600c:a101:b0:46f:a95d:e9e7 with SMTP id 5b1f17b1804b1-46fa95dec1amr1275735e9.0.1759846343736; Tue, 07 Oct 2025 07:12:23 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 53/62] target/arm: Add isar feature test for FEAT_RME_GPC2 Date: Tue, 7 Oct 2025 15:11:13 +0100 Message-ID: <20251007141123.3239867-54-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::335; envelope-from=peter.maydell@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: 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: 1759846767853154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Message-id: 20250926001134.295547-2-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 602f6a88e53..f59c18b6ef6 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1091,6 +1091,11 @@ static inline bool isar_feature_aa64_rme(const ARMIS= ARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64PFR0, RME) !=3D 0; } =20 +static inline bool isar_feature_aa64_rme_gpc2(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64PFR0, RME) >=3D 2; +} + static inline bool isar_feature_aa64_dit(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64PFR0, DIT) !=3D 0; --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847448; cv=none; d=zohomail.com; s=zohoarc; b=m5mpbhR6JXgY8bfjnErENxUYIQ13E2nt0nbHRgQOMLLGcdjl4hEVnTNsHe5EgJhEB0WnCC6tLK9A1EQs/U0gLoLuL4kvDStIevRZYntiqEKtWTweZF/tEoPMUU52/DLChsvsXEVoYAEeArT+02lhomSuAFKxQ7MnwwKVJSaIzgc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847448; h=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=KSc0ams8oTJrngGOePz/vyrE7HMZyBOFuHXIPVZb+bY=; b=HbnjSEnERV23qII1gbEnrSyXhMvS10e5shPgMFeeMECetb2f0cxbNU5gBl5Wc8kP8NMJYtE46SOF9b0g87ePdDdPS7ipCiahqxUfJF9vtkNP/+SYj/gdycV5lupzo3m3RqHDc5hSqict6wu/kySXK9zjfUyY0Vd4b0XBXxvfKyY= 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 1759847448874377.4261271651641; Tue, 7 Oct 2025 07:30:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68Qy-00063B-B9; Tue, 07 Oct 2025 10:12:56 -0400 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 1v68Qq-0005yM-3s for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:48 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68QY-0002NJ-UI for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:47 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-46e6a689bd0so49727675e9.1 for ; Tue, 07 Oct 2025 07:12:26 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846345; x=1760451145; 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=KSc0ams8oTJrngGOePz/vyrE7HMZyBOFuHXIPVZb+bY=; b=iYaogQaaPKq2pQnOP5bNOvjQg+8tIWk6k301JpfGOysFWXkjz/R0azysgRzANuxt00 1f3LFTxRyENExikViGupgO0kCx7FnEi090MULyu3SoQ8sAAm479IoZR4wLiu7SoBjtlT llZZQEYaZU4Wjgc1eSLV0hGrwC4h8bvoVQluMAVI+mfoydc7QP5hTUE4KiWr0cjaAkEl jWX6QSy4wW+ajfpAR34Ul8rqJVWdNRj4KUBG30tgQN+6oW22texh6qimKsVauGG/g89H 7WGubVDB0koKPyeX3i7TQo6HDh14gTwnt/DU2UR6QWGgFR+/Z6PxlYKKXUqGn+JWnhRK 3apA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846345; x=1760451145; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KSc0ams8oTJrngGOePz/vyrE7HMZyBOFuHXIPVZb+bY=; b=ByG2j3DDeEG2x6dNiAPdH7k/Yl60xuqss/BthFIrasKpoGwfP8DL/pqYj5n94taDgH NNSToTy/9nHPtSxavwq7HQmEdtyP3oG3BRMA9unSK4OtQvSoDXUCZx25D31NQDV7peB2 ctyw+/vMUZqcSyAre72kJ2cjAwOnE8uy9aIn3fjElErrR0Xj/nC1G971DzTc1qLQRf9D cJh+hmVY10/9hAzK0q+TFNBbshhnt4prFNlWPfacNPQM4Ot0ltW7yHsO98/rG5r/uCnX GYD4pip8M+SKT7Ns+14FZ8kjHRiiq/j7nfSglCajDzxqKFfVTv1GR7Fi8fzSEsIENHUu ATpA== X-Gm-Message-State: AOJu0Ywcpyx5BHqiJ9TrYvbyQ+/I/m7OIkkH2ci2apgu2OIOOO6A6LbX LO93O7iP45VUMhuagniMZ12R6IleCpvVcyCaHEZ0sUKtlIvUBfv7LFfPjouNKN2IrVR0tX8+Bqz Lmen4 X-Gm-Gg: ASbGnctEORe30db1vqJehYo4mPSWm6FyT4yglaMPq8UqOAb9blhxoIcrA07clpMMT08 zaOw9Rrdw1irNdt/TnHH8BGuDYFp8Y+cI/XzBeO7ahDE4KaBvsNQWb06UKkFcy8+Hq9kOM2S42q Ay5ajCW7IAdjq15N5yVVlQuGE/kLz1J4mj5CDeS2/iyUnJM2kc7bqQ46QNJhyZWaFJj9v+vpWOE OcekrxRtEsEqfbTTMzS0Ig9amUkLsW34emOTR3PjmNH1B9yGpXm1cqDdDqcWWlO3OVYnpDoalYH cdGyhwufLLJjz05Yvy1YMn/n2S69YS7b9rw+MqvweH4fWFB2nkV6c3/t9YlLkhGmcZeYi+uvrcz Ljoixc4lFnb9q0eOIvQ8AYidc9GvwXGyF6s/Vd/VnPzWIdr4JpcfmH9pH X-Google-Smtp-Source: AGHT+IEnfZppIC/+/HslLxTrxh6gDQ6NdayqWcjvXsDmuDIKgKwVeAXT01mVcMqi87yxCOYLH3UekQ== X-Received: by 2002:a05:600c:8591:b0:468:9798:2043 with SMTP id 5b1f17b1804b1-46e7114ea2cmr86693425e9.26.1759846344649; Tue, 07 Oct 2025 07:12:24 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 54/62] target/arm: Add GPCCR fields from ARM revision L.b Date: Tue, 7 Oct 2025 15:11:14 +0100 Message-ID: <20251007141123.3239867-55-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::332; envelope-from=peter.maydell@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: 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: 1759847451788154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Message-id: 20250926001134.295547-3-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 2b9585dc80a..41414ac22b8 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -1995,13 +1995,19 @@ FIELD(V7M_VPR, MASK01, 16, 4) FIELD(V7M_VPR, MASK23, 20, 4) =20 FIELD(GPCCR, PPS, 0, 3) +FIELD(GPCCR, RLPAD, 5, 1) +FIELD(GPCCR, NSPAD, 6, 1) +FIELD(GPCCR, SPAD, 7, 1) FIELD(GPCCR, IRGN, 8, 2) FIELD(GPCCR, ORGN, 10, 2) FIELD(GPCCR, SH, 12, 2) FIELD(GPCCR, PGS, 14, 2) FIELD(GPCCR, GPC, 16, 1) FIELD(GPCCR, GPCP, 17, 1) +FIELD(GPCCR, TBGPCD, 18, 1) +FIELD(GPCCR, NSO, 19, 1) FIELD(GPCCR, L0GPTSZ, 20, 4) +FIELD(GPCCR, APPSAA, 24, 1) =20 FIELD(MFAR, FPA, 12, 40) FIELD(MFAR, NSE, 62, 1) --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846789; cv=none; d=zohomail.com; s=zohoarc; b=G2Y2a6dwDbZ7BbykqgYJHVLmtxp6DjFmKJ0KfpcJ1Y1rR9/39MCm5J0litLIploV0H69BRdqM/k7bdoZRXQ//4onJIx8PkC8sCmg7CSZ1vz35dO4OyuKyiIDHvIy/uLN5gRqe7mOiY6HdSIrpxfqExaMyjc52k6HOl7ydfRYXx8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846789; h=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=JlnJcFeHbHMBh2Yw43F702qkS6xRXwUXT+IdK5Bk9a0=; b=mK2+As/2hwHzOjjWys6QBtrqEVUj8ULL0ISXtE582gO5ODrDCsqIXhD+IVUP5/9o8WJD9Nk+x7+H0mbqWwdMj+G+snHwuybWR7iWH9vByJ9vRvz/hyx/kCWIlo3rt2nS05Ys3AtSStF5mSUSBcLiaXBrNqEO2n4oZqzfW2XR6hU= 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 1759846789939346.2395684645695; Tue, 7 Oct 2025 07:19:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68RD-0006Iy-T4; Tue, 07 Oct 2025 10:13:12 -0400 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 1v68Qw-000634-IX for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:54 -0400 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 1v68Qc-0002NW-7t for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:53 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-46e47cca387so66621725e9.3 for ; Tue, 07 Oct 2025 07:12:28 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846346; x=1760451146; 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=JlnJcFeHbHMBh2Yw43F702qkS6xRXwUXT+IdK5Bk9a0=; b=vPSVBj3uLSf+t6B7bzMUVywxIXLt/WJPxuOQLm3tNXbHzwF9sCdLsmDkzrEHV09JrB NgZASooN8gOX81OdskkGiKKQYaoosFuwP1zNOj4b0kNFcVUUBe7og6GjEAx3xCuO3lKo 4wuR0Xa6iJ9M5OV/GcQxNhwtNdrA3thrwMnyzH6res+dPCbA6RCP20z7KfXcDHva4ivG GDTS03szoqv2Y3w9JP68352Ucgfhr4N3R8tTWHxVLrM6Wvbpy/YTcluiS36vzdEaOOSc rBj87wUo0Dh7yYjXN4XEBASe9JZkILSVVzuq+kUQ25B0d8aAnHZVYTLFze5E5p7wDwKh bG+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846346; x=1760451146; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JlnJcFeHbHMBh2Yw43F702qkS6xRXwUXT+IdK5Bk9a0=; b=UszwcJmfcqcVX2Zg94SOxN6NDE/dWHhTizz0bfvIG6l50x515Gb8WZH75ePk84lYqH zro6ltAyTFYdCI98QXlfc/UvGN3X0RwQGV3ZB4509I+YNo3CeFt4LHlhZNpp1EDIorCk ARADY3Up6WF/NaekE730X4DaeOgbbFWwmpJurXoGW+o29K2Li+tfjvV9XBHS2XKfRORZ jeWa7QULDnGGRdBdm1OYiKF79cC83cNEtXNp06EDKFU9+WPJljVwoKbEj6GcuMRlPovB 6LHNJ02kTConC+d0RWvc/CiVo0YKCf6gKsVy5jYCJ3iUJW/usZTsd/4u4L9lmctOBHYS fuFw== X-Gm-Message-State: AOJu0YwZrYSw9AW5PjF7BDwQ86bhssdUNCbPUEZ8WUm9buIQ8tg67m1B jcwxPCrGDOdKKmoYl5Pkzb3TvvwDeM0CEYmDSC0h2cFPDBbMYjNgsnJKZjDPaIkYgx7Bqav8wSY hm0Qx X-Gm-Gg: ASbGnctZEXO8QDmzrUODNd9kjgMfuGcV12wV1DRZcDgfHUJDSd5XPWspOiig2YdxQB7 u15+iEbu1VMGKD45RWe3y3r8TLGnj/S478mdG15OcoaGXVuG7x/B+LKJJ7dhLiAXQgyYl0fkR+G Rr4hOt7lGFErfSLQr5bANGL3N2lPwAsTrR6bnb1PdwD/UpXA0EMiP1CR8eIzgUjj/j4NeeUWLgL CAA/rnZKFFyzHefUZrDVFJneRb9g4nCNR0yXAqMNO4A3SWdnkYrCF4VcJ2InRKAQ0Zzpad+K2dx UPcQyxXGdmF+nbCzLP3/F3LANkEODQKhmFU/AG/hahSzaqCWX9qgWehFvAHefEQL9aAI0S9W4St 0J1jGM3PhJ9IJxnl0DrFh3RQe+quhC9NNKiYzEU722CYMRT6WgMKVJcdz X-Google-Smtp-Source: AGHT+IEDgvkIr4mWzO9HN4FwKG+iXC1nD2zMjORiQ/JStyFCeqXsY/DnkdnPuNYE53lKHx+Z0cGdRA== X-Received: by 2002:a05:600c:354f:b0:46e:394b:49b7 with SMTP id 5b1f17b1804b1-46e7116149bmr120698015e9.37.1759846345605; Tue, 07 Oct 2025 07:12:25 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 55/62] target/arm: Enable FEAT_RME_GPC2 bits in gpccr_write Date: Tue, 7 Oct 2025 15:11:15 +0100 Message-ID: <20251007141123.3239867-56-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32f; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32f.google.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, T_SPF_TEMPERROR=0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: 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: 1759846792149154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Message-id: 20250926001134.295547-4-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/helper.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/target/arm/helper.c b/target/arm/helper.c index 792a47a9c50..b7bf45afc13 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -4933,6 +4933,11 @@ static void gpccr_write(CPUARMState *env, const ARMC= PRegInfo *ri, R_GPCCR_ORGN_MASK | R_GPCCR_SH_MASK | R_GPCCR_PGS_MASK | R_GPCCR_GPC_MASK | R_GPCCR_GPCP_MASK; =20 + if (cpu_isar_feature(aa64_rme_gpc2, env_archcpu(env))) { + rw_mask |=3D R_GPCCR_APPSAA_MASK | R_GPCCR_NSO_MASK | + R_GPCCR_SPAD_MASK | R_GPCCR_NSPAD_MASK | R_GPCCR_RLPAD_= MASK; + } + env->cp15.gpccr_el3 =3D (value & rw_mask) | (env->cp15.gpccr_el3 & ~rw= _mask); } =20 --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846997; cv=none; d=zohomail.com; s=zohoarc; b=Xr9ZnzFaxHHj9cnJ5kkNVZEqYR+1ESQOHO1OpXxbxkD5LBurnkP0hm/x0jH3RFhad1EFiCjsU5zp2/eabEyMURfrptBl3SeD+K9iX+0CZRZnNgIClnmB/9953J0rbAkgtXdBGusq21mTUwiek9oNLfJUeO+Lq7RYmPOpH2RVQSg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846997; h=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=hwPb2YzQ1UwPlk42tppCYJQXDB/lXxWTd86sY0+xMP4=; b=BBms9Eca7Z7HOO2dLDGgmmokmxo/aHLAYi2Xh3s79N2EPYnB+id8K9YvYCkwSksXOhOayy0cNW0RLf5dIOVLQlKes6XXbNLiCXucLBr4GXoY0uLCbk0lixA+/c2Mcv7oaq8+pDUduNKSsvQ8HcES5eTt/bqRQe4i4zVp64VCOPU= 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 1759846997472265.654767671288; Tue, 7 Oct 2025 07:23:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68R0-00066n-Q2; Tue, 07 Oct 2025 10:12:58 -0400 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 1v68Qs-0005zQ-EQ for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:50 -0400 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Qc-0002O1-7z for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:50 -0400 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-46e33b260b9so60043455e9.2 for ; Tue, 07 Oct 2025 07:12:29 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846347; x=1760451147; 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=hwPb2YzQ1UwPlk42tppCYJQXDB/lXxWTd86sY0+xMP4=; b=N5DPfGcrwPTpfJXq844x4GP6kPQopF/sMQUbu7THtZPybT6cFtsQ4Lr2J6WzRF4VeW NajDSWNnjfQRdjenTJbheFlN4xnnemQ8OqXPUUgvDuBmnr6U1mc94DLpQjbo0Vw6GZOf 2bXjXMPvC7dcR+sRk4jtMPEywDdMXRAH+pjjRbJ8cLy848/McrCtTfxH3UxJe+ToZb3p yQ+GKNO0nNFh0IHO1kQ9c7QfOrMSKwqqfcXNN7fEAQdOc6YJqSG1FQi2TTik4lrIyx+g 9N/lv8zaNrpdVe8QBmbS9ta8YN82M+DQi7OZ1de5l1DlrlplgoKFw5jD/bEZMNgLvATL 4CjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846347; x=1760451147; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hwPb2YzQ1UwPlk42tppCYJQXDB/lXxWTd86sY0+xMP4=; b=I9/Hz7FLP7UDl1C8pC8Ou5n0YK3pk72JOULL0jgOZ3Na3Mh8kO9Sir9nD5O8+Tc3b0 LgiaAcfRMlnWrIceeUtcJ6qWK/Fu3OJntQMIy4Re2sWU0oVa6qebvUyZThr25fFPiCk4 joO1YSr+gQPFwb7neRVHPZvKIj0X2TwqYLA3ilfT0AmXV3y+FmLGDvyul/YBOdu2+e2k P636nDMxJg4IXg7w3b/kOpREFcEZlzATwCoQVtR7ZnY63OMikYHZYmle5r7dS9hWiQd/ jwIrvUMx9WNXYUNcaGaiPwIFByfFzgBoTsVkXTnJ5uY3Owz6/pZscvHusjxZwiq3zg82 DmYA== X-Gm-Message-State: AOJu0YzF8kAjJsxK9gI9L04ywTUePdklY50r1bionrIDknaMQNvPG2BY nIzQYyb6EHfZlJ77WHcY8fHhhgYIB0kB5LzZqb3SX3MPWyQo6UWtCgmjve1QAvlpTSIrBMIAvWh Km+OI X-Gm-Gg: ASbGncvuHM6Mi8E6YyqBj+/UzTvafjZrK2gENHeUzPh9jAQTI+Z8MjFiFOQVq6AU/yg oEEkCBNBBaCgkU3xTPTJ9aLdcwx6y1/eAGEGZQ4rRKz4q+ie2vdr1+riHOgtxMX2ftEHQtFvGe1 SvqOaioT56j26Vjf7rW3VJI0nmUSoEQkEzuwA0CXXl0Stt9DbixCwcSHEzG4wbmYJu0w+OI57Q7 DFv5bRn25ZVZ06UtQDOM1QJuS00SXH9beDX0rm2wEvSd6gQvpg53Z7ujsmeBYXse9rjnucVfh00 s3BSvzerYZC+qIsIMWpP39md5gSY5K4gglBTuePGt2q8wIg7b7K+ZH3BbB98LBJ39cpwLlHUXpX rJOWPDQkHNl5cyoqrqJrrOhgIObiEy88ShTI07iMTdq71FjQ9yKAjePmh X-Google-Smtp-Source: AGHT+IHssEH2IgP411ijaNXMrHo8erzP68f4RvVGSy1HOzF++LqB9AS5oQRyk2p4f58StZbigdNAhA== X-Received: by 2002:a05:600c:8b22:b0:46e:4937:dd1b with SMTP id 5b1f17b1804b1-46e7113f670mr144496615e9.17.1759846346857; Tue, 07 Oct 2025 07:12:26 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 56/62] target/arm: Add cur_space to S1Translate Date: Tue, 7 Oct 2025 15:11:16 +0100 Message-ID: <20251007141123.3239867-57-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32d; envelope-from=peter.maydell@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: 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: 1759847005415116600 Content-Type: text/plain; charset="utf-8" From: Richard Henderson We've been updating in_space and then using hacks to access the original space. Instead, update cur_space and leave in_space unchanged. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Message-id: 20250926001134.295547-5-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/ptw.c | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 6344971fa64..1cafe8f4f7b 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -36,8 +36,6 @@ typedef struct S1Translate { /* * in_space: the security space for this walk. This plus * the in_mmu_idx specify the architectural translation regime. - * If a Secure ptw is "downgraded" to NonSecure by an NSTable bit, - * this field is updated accordingly. * * Note that the security space for the in_ptw_idx may be different * from that for the in_mmu_idx. We do not need to explicitly track @@ -52,6 +50,11 @@ typedef struct S1Translate { * value being Stage2 vs Stage2_S distinguishes those. */ ARMSecuritySpace in_space; + /* + * Like in_space, except this may be "downgraded" to NonSecure + * by an NSTable bit. + */ + ARMSecuritySpace cur_space; /* * in_debug: is this a QEMU debug access (gdbstub, etc)? Debug * accesses will not update the guest page table access flags @@ -587,7 +590,8 @@ static bool S1_ptw_translate(CPUARMState *env, S1Transl= ate *ptw, * From gdbstub, do not use softmmu so that we don't modify the * state of the cpu at all, including softmmu tlb contents. */ - ARMSecuritySpace s2_space =3D S2_security_space(ptw->in_space, s2_= mmu_idx); + ARMSecuritySpace s2_space + =3D S2_security_space(ptw->cur_space, s2_mmu_idx); S1Translate s2ptw =3D { .in_mmu_idx =3D s2_mmu_idx, .in_ptw_idx =3D ptw_idx_for_stage_2(env, s2_mmu_idx), @@ -630,7 +634,7 @@ static bool S1_ptw_translate(CPUARMState *env, S1Transl= ate *ptw, } =20 if (regime_is_stage2(s2_mmu_idx)) { - uint64_t hcr =3D arm_hcr_el2_eff_secstate(env, ptw->in_space); + uint64_t hcr =3D arm_hcr_el2_eff_secstate(env, ptw->cur_space); =20 if ((hcr & HCR_PTW) && S2_attrs_are_device(hcr, pte_attrs)) { /* @@ -641,7 +645,7 @@ static bool S1_ptw_translate(CPUARMState *env, S1Transl= ate *ptw, fi->s2addr =3D addr; fi->stage2 =3D true; fi->s1ptw =3D true; - fi->s1ns =3D fault_s1ns(ptw->in_space, s2_mmu_idx); + fi->s1ns =3D fault_s1ns(ptw->cur_space, s2_mmu_idx); return false; } } @@ -657,7 +661,7 @@ static bool S1_ptw_translate(CPUARMState *env, S1Transl= ate *ptw, fi->s2addr =3D addr; fi->stage2 =3D regime_is_stage2(s2_mmu_idx); fi->s1ptw =3D fi->stage2; - fi->s1ns =3D fault_s1ns(ptw->in_space, s2_mmu_idx); + fi->s1ns =3D fault_s1ns(ptw->cur_space, s2_mmu_idx); return false; } =20 @@ -844,7 +848,7 @@ static uint64_t arm_casq_ptw(CPUARMState *env, uint64_t= old_val, fi->s2addr =3D ptw->out_virt; fi->stage2 =3D true; fi->s1ptw =3D true; - fi->s1ns =3D fault_s1ns(ptw->in_space, ptw->in_ptw_idx); + fi->s1ns =3D fault_s1ns(ptw->cur_space, ptw->in_ptw_idx); return 0; } =20 @@ -1224,7 +1228,7 @@ static bool get_phys_addr_v6(CPUARMState *env, S1Tran= slate *ptw, g_assert_not_reached(); } } - out_space =3D ptw->in_space; + out_space =3D ptw->cur_space; if (ns) { /* * The NS bit will (as required by the architecture) have no effec= t if @@ -1254,7 +1258,7 @@ static bool get_phys_addr_v6(CPUARMState *env, S1Tran= slate *ptw, } =20 result->f.prot =3D get_S1prot(env, mmu_idx, false, user_rw, prot_r= w, - xn, pxn, result->f.attrs.space, out_sp= ace); + xn, pxn, ptw->in_space, out_space); if (ptw->in_prot_check & ~result->f.prot) { /* Access permission fault. */ fi->type =3D ARMFault_Permission; @@ -1857,7 +1861,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Tr= anslate *ptw, * NonSecure. With RME, the EL3 translation regime does not change * from Root to NonSecure. */ - if (ptw->in_space =3D=3D ARMSS_Secure + if (ptw->cur_space =3D=3D ARMSS_Secure && !regime_is_stage2(mmu_idx) && extract32(tableattrs, 4, 1)) { /* @@ -1867,7 +1871,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Tr= anslate *ptw, QEMU_BUILD_BUG_ON(ARMMMUIdx_Phys_S + 1 !=3D ARMMMUIdx_Phys_NS); QEMU_BUILD_BUG_ON(ARMMMUIdx_Stage2_S + 1 !=3D ARMMMUIdx_Stage2); ptw->in_ptw_idx +=3D 1; - ptw->in_space =3D ARMSS_NonSecure; + ptw->cur_space =3D ARMSS_NonSecure; } =20 if (!S1_ptw_translate(env, ptw, descaddr, fi)) { @@ -1991,7 +1995,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Tr= anslate *ptw, } =20 ap =3D extract32(attrs, 6, 2); - out_space =3D ptw->in_space; + out_space =3D ptw->cur_space; if (regime_is_stage2(mmu_idx)) { /* * R_GYNXY: For stage2 in Realm security state, bit 55 is NS. @@ -2089,12 +2093,8 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1T= ranslate *ptw, =20 user_rw =3D simple_ap_to_rw_prot_is_user(ap, true); prot_rw =3D simple_ap_to_rw_prot_is_user(ap, false); - /* - * Note that we modified ptw->in_space earlier for NSTable, but - * result->f.attrs retains a copy of the original security space. - */ result->f.prot =3D get_S1prot(env, mmu_idx, aarch64, user_rw, prot= _rw, - xn, pxn, result->f.attrs.space, out_sp= ace); + xn, pxn, ptw->in_space, out_space); =20 /* Index into MAIR registers for cache attributes */ attrindx =3D extract32(attrs, 2, 3); @@ -2192,7 +2192,7 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1Tr= anslate *ptw, fi->level =3D level; fi->stage2 =3D regime_is_stage2(mmu_idx); } - fi->s1ns =3D fault_s1ns(ptw->in_space, mmu_idx); + fi->s1ns =3D fault_s1ns(ptw->cur_space, mmu_idx); return true; } =20 @@ -3413,6 +3413,7 @@ static bool get_phys_addr_nogpc(CPUARMState *env, S1T= ranslate *ptw, * cannot upgrade a NonSecure translation regime's attributes * to Secure or Realm. */ + ptw->cur_space =3D ptw->in_space; result->f.attrs.space =3D ptw->in_space; result->f.attrs.secure =3D arm_space_is_secure(ptw->in_space); =20 --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846491; cv=none; d=zohomail.com; s=zohoarc; b=fP3xGZe4KESt7YVPbuI9f0VJfxXch8abel5+9EUkuIOg+xNNohnSlpi2mpIRgWc6dI935YfnZzMBP93WUI4pogLc+h0IMUMGKZLX+IRAJyfchi5TJJpH63/sq4jHi8p24d2V6tFwdVBZHdm4p8TIY6GYg/FJT6Dg15UBF7Mcu8M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846491; h=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=N9YvFJw1BE7TLxHV/uM9H0ZKT4t2vSS9XAmGq0QeqZQ=; b=WGiq4CnIfJNPdc/Hs8kJRtQAKgWED0vVIcXHoiCFbDNFhhl1a7yw1XYidZCfodEEIODkGPLbLCILrOuERqNA19BTt/uWPLUdxXRpgczLp7lW8DfDB64BePwxOCxAYdc8RwMbCS9nRP6gyfLJ5c4jGOstNnAg+AOUf9Ppe4Zz+b0= 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 1759846491634408.1388079787654; Tue, 7 Oct 2025 07:14:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68R8-00069p-E5; Tue, 07 Oct 2025 10:13:06 -0400 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 1v68R1-000685-4G for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:59 -0400 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Qg-0002Of-1g for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:58 -0400 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-46e4f2696bdso76077955e9.0 for ; Tue, 07 Oct 2025 07:12:33 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846348; x=1760451148; 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=N9YvFJw1BE7TLxHV/uM9H0ZKT4t2vSS9XAmGq0QeqZQ=; b=gHELE98e8CW99EXgZd63l+bo5MPShYtoe6H9LzjoGJdYp1DDqfbYNKABZMvz2PCWxf h8nzmW54lcKNEwZvZ1pVxjtszra5RdDt/rtxrY0m8Ho79mLsi1dMkGI7t8hdjtGa4JqF TU3bnm/O48RnDERKNm11tJhDSpMGR0eDMHzqBbdwUUueLLw50LyO9Zmg0euLkJlpRdSa NooWHs1OyeWHcHKL09gJoCD0FSNJBk75KNzj5SBGUtKNXqUERGuThwAz3LGlLI6R+dNM 3Hw2kVLVZlejOBTrJ7ktc8+5snsy/jrSgAkf3lpUp3uYrWhDAbR4/TP+KymwUmX4gF1H 8eqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846348; x=1760451148; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=N9YvFJw1BE7TLxHV/uM9H0ZKT4t2vSS9XAmGq0QeqZQ=; b=DgSXhYRh319EnUjT89WfspKNlMgGJeoMjdwXvl+H1jkDylTFQlqygdsHlUnuiWfEwp RJ3Fn3eVbXzLsjCoFODdlasJIsXST118qgOD80jcgD8R0cADuuK9TmHyVTfoptJR6Dwv jPK5mkMXcO7yujyXhfKUgD+h5FJbe1kL0h27x4mlkQF8gemh2Mstt3QCGx9OwJMSixDi qLT5uhGIySiJM18LnUvqkSR5gurePOCpfmvNYfmhth9WqtkmQW3ypGWseRpTWEOwyvAs vIjNfOWv8JYRnohnw9gKuonwGCj6nYZa5oT+zZysy3VV1SkyfcJ4YVyPIALH1td3u6H6 Cpfg== X-Gm-Message-State: AOJu0Ywrxv2xVI4gZ+6G1JACEpRaxCegJ3MdwMSwzSaASNmCC3PfqcRD wpdfgONPuubaNczBA/oV0XMXyGT1OhlvF8bHXex0ItapG/tx2z8gHmDeHIMLgh7CA9d88HEVo5s CP4FI X-Gm-Gg: ASbGncs2jQ2RTGFcScY6PFd3FVE1OSUxYuW9NMGO37yfv8MJ+cY2P4NMGnMSQNn0chu ApmwtWQBztvh1/2Q6xHfx4FoWQ+SauWez+KiDVRw2evBywZYMF5AnLhAulehr7iDIBqAcHQTXnm 2iXe+u0zTCBv5BazmgMXc+SOoIzS4baCuyvXVDcH4UDz/J86MEocewjZPvABp6pIWMFxnMiqsKe +necIqamGB0wkinGkcYw8H2rdE2Az8Wb4so73JUGsD/Ira7Kl6zRTchwEIK6Ja1ijzCldBMR/Pi iBJSyI1gNnVFzygo479xQgykj238+LHVToLqS/yvPdrtidRcbCKMcp76B2XTrvN6tCS7Xan2COC VF8QbjrAjEPmXeVkKoXvm3vNkw95qBAQtzYr4KWonqau0RsYD3YyMBY+2 X-Google-Smtp-Source: AGHT+IEgAuJ/94BqGnKnWob05mGXwKVoMbqedG/jCpJQJNfef7ZTg2xWX7SwI/J/qkcpi9v/KVik5w== X-Received: by 2002:a05:600c:8409:b0:46e:5aac:54f9 with SMTP id 5b1f17b1804b1-46e7115c89fmr120915525e9.37.1759846347723; Tue, 07 Oct 2025 07:12:27 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 57/62] target/arm: GPT_Secure is reserved without FEAT_SEL2 Date: Tue, 7 Oct 2025 15:11:17 +0100 Message-ID: <20251007141123.3239867-58-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32d; envelope-from=peter.maydell@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, T_SPF_TEMPERROR=0.01 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: 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: 1759846494131116600 Content-Type: text/plain; charset="utf-8" From: Richard Henderson For GPT_Secure, if SEL2 is not enabled, raise a GPCF_Walk exception. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Message-id: 20250926001134.295547-6-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/ptw.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 1cafe8f4f7b..3df5d4da12f 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -478,10 +478,14 @@ static bool granule_protection_check(CPUARMState *env= , uint64_t paddress, break; case 0b1111: /* all access */ return true; - case 0b1000: - case 0b1001: - case 0b1010: - case 0b1011: + case 0b1000: /* secure */ + if (!cpu_isar_feature(aa64_sel2, cpu)) { + goto fault_walk; + } + /* fall through */ + case 0b1001: /* non-secure */ + case 0b1010: /* root */ + case 0b1011: /* realm */ if (pspace =3D=3D (gpi & 3)) { return true; } --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759846728; cv=none; d=zohomail.com; s=zohoarc; b=T+sJ7pwHG+MiVNX+5gt6EIGCnkx4uE0XwrWJt+oTUSgPUDYxEtmJTaD/xdKr4aEBnj90rf7GFj87EAeUmGtmET5BorMU7iqaFmYoAkaDQFKGgNqyUIDtUB3piY5X+fQ60s/KKm4OjnyCAseyVcCT+NkIZ08H+IYJxiH6Z6yUrHY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759846728; h=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=C37HhRfgSBySWdsamOj7MZINphxZR6Xh1rWMZf7fW/Q=; b=ZxsuShND7XinSz2uC4cxFH+C+C5z/oJkn2ORCQJeivcCqEgKgzyZXdmBm8anO5HbcLPPod34F/kaE4J0oDjrAJ/flP0dlsX+XAwDRkn93iGjsIO8I5G1gdgxfQCHVCJZu8CX+grOmmgOy4YaEL3s7OT7qtUPer4ozsOCQZlWtCU= 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 1759846728387251.9435186196929; Tue, 7 Oct 2025 07:18:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68R2-00068h-R8; Tue, 07 Oct 2025 10:13:00 -0400 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 1v68Qt-00060w-Ly for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:51 -0400 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Qc-0002P0-9U for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:51 -0400 Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-46e3a50bc0fso51605195e9.3 for ; Tue, 07 Oct 2025 07:12:30 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846349; x=1760451149; 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=C37HhRfgSBySWdsamOj7MZINphxZR6Xh1rWMZf7fW/Q=; b=B7QJHG3x5h6waKMhtH/SO9Bsv341uLYCQ5OcvegXVkPY2h9vUp/dsWPt+sRxj6R1XJ 9txAcXOLdSngRcRPtfPwMDRdBmvYlT08/1rUvIAqULHeqq6Jl+EUSKFjp1UCHmZ3Oht1 xxjvFMfmfsJu42OQIYEJHvS8JK47Eir95hAB4qZ+Wt6/8bX02IPyi46hMP8FjBbB0zGi ND4kyuDYw9iDsJuuleQHj8cnA2SmFDMVRLk03Un50VgXG5nGYEYDy3GXynH3xH2SEI4G kX+pHzMvrj4KtIUtFaQ0/FWbngoN/sHack1/0TMooeK9V03c/9EZyZevMDydyIz5gu8w jauw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846349; x=1760451149; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=C37HhRfgSBySWdsamOj7MZINphxZR6Xh1rWMZf7fW/Q=; b=EldvkRyZ0r4vzHOfHwX3TuMGKH0j6Fr5Q3RhlzTlHM3QfZLEyX8e7DDKtpnwfYSWTz BymymHTbAAKiO0fQpXrV5nMtUh4QT4qk1/+uExkIcduqgQuX0oZv762RyPspbDXI6V89 EIQTLyUyDQLgFKU8Zxv56ZnfPHuymyxAID2vby+W+2LfLbox82QglxLu9O4R/DJGvmiy 3qfvb8Jbnvp/4OtOOtwMufubeQHAE/mV/qjGHwnklLqKs9rthcIEQAwJ6zcxDeG3v4cp bAY9iQawg1J+pe8ULB08yCtK3nnuX8C2X7Re35T8HRkD4kDBv3PPcSULUT51tPYhTh1f +NaQ== X-Gm-Message-State: AOJu0YygFc9a4uBWVkB2mMVzKqRfbAlLXl6lPmqkrG5yfHjoOeCS9BoJ pcGivNotsd/jxejrto6ZJbrogt6eOWhwvlIUlSd1jHwI1II+eU+DKknxLvSrsVPfpx4HpVt5s1h yEOfs X-Gm-Gg: ASbGncsoGWh0IhzQzj0ed+AnbEyDVQnUgD6V8mlSKXwQxKjlzfmmah+MTaPSt4rb/yh 7xCxoDOeTMyz+KWdqlBJQneECnF92/5132O4Dr5jLNTM9a9DlTD8A8pr415Qqa4uQSLByvhUzYN ir8FwVnK2N6eIcKhwFlvR04UACmEZTgHB3De44SAtAFm3E6WXi8cWvd1/E9I0Ly/P+G5shszOdk dr9y/f8PrxnU7uJwqkTE1U5n5Ziy+8snKbe4F8MukpK/ijQey0L7sTFRszgGQbNO1KUNPQnBmfO Qhg9SSXipcB0Q3hJg+JfUtgbqitVzfhctKaJ5Jd+jcsgRz8NJ52eLMhVguA0lwUP+4Ni/dv58fG VL+ChKv4vaPDuhu3lXZPS3bBKK6A07TTNhLkAsAk0tcppLJYpZ0IOGo56 X-Google-Smtp-Source: AGHT+IFy20/v/FzP09YGcvhqe3bHwWx8t/xf+34fq2J7EVNrA++QIbePsDsgDEAkJrD/5ERDrrD02A== X-Received: by 2002:a05:600c:4fd3:b0:46e:32dd:1b1a with SMTP id 5b1f17b1804b1-46e710f6d02mr117267845e9.7.1759846348688; Tue, 07 Oct 2025 07:12:28 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 58/62] target/arm: Implement GPT_NonSecureOnly Date: Tue, 7 Oct 2025 15:11:18 +0100 Message-ID: <20251007141123.3239867-59-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::336; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x336.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: 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: 1759846731550154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Message-id: 20250926001134.295547-7-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/ptw.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 3df5d4da12f..56a3cd8fa0f 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -318,6 +318,7 @@ static bool regime_translation_disabled(CPUARMState *en= v, ARMMMUIdx mmu_idx, =20 static bool granule_protection_check(CPUARMState *env, uint64_t paddress, ARMSecuritySpace pspace, + ARMSecuritySpace ss, ARMMMUFaultInfo *fi) { MemTxAttrs attrs =3D { @@ -490,6 +491,13 @@ static bool granule_protection_check(CPUARMState *env,= uint64_t paddress, return true; } break; + case 0b1101: /* non-secure only */ + /* aa64_rme_gpc2 was checked in gpccr_write */ + if (FIELD_EX64(gpccr, GPCCR, NSO)) { + return (pspace =3D=3D ARMSS_NonSecure && + (ss =3D=3D ARMSS_NonSecure || ss =3D=3D ARMSS_Root)); + } + goto fault_walk; default: goto fault_walk; /* reserved */ } @@ -3553,7 +3561,7 @@ static bool get_phys_addr_gpc(CPUARMState *env, S1Tra= nslate *ptw, return true; } if (!granule_protection_check(env, result->f.phys_addr, - result->f.attrs.space, fi)) { + result->f.attrs.space, ptw->in_space, fi= )) { fi->type =3D ARMFault_GPCFOnOutput; return true; } --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847413; cv=none; d=zohomail.com; s=zohoarc; b=mte4A2HWhfAceXTDK6w8sH4dWf2a83IZc76aYh7xQp3a568RJ2hXha7TGt8PC3cf03GSYiOK8FcglLnjNmb3x4DJmXD3g9/VW2eZooLn+4yh4+SSOs4H8EmLX2XSFwt9fBJE93SsItRdAX3vpGAbKIqZYpcWwKrtdLZnly5xlyw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847413; h=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=D40qfYdygi4qxK7R3G0gRUYsCh2wZ6BpNynFJicW9VI=; b=OOlbLOLg3SY0GBztPGcKH77Zx4CcjZVEFFLn4J4cEoXEbYzEIfjsy/jtEPJXdwVW3b+4k9JQPHtO6ia46aL0Z6CYhifo5jsED+9g+9NXHq7RGUB2L2rs7S9rD+zSM3x+iK+N7y4UQPjTFB44lNt009nfleqOrvRTeWHR40hy7hQ= 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 1759847413708863.6314597040288; Tue, 7 Oct 2025 07:30:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68R5-00069O-Gg; Tue, 07 Oct 2025 10:13:03 -0400 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 1v68Qx-00063k-FU for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:55 -0400 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Qe-0002PP-GW for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:55 -0400 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-46e34052bb7so68787345e9.2 for ; Tue, 07 Oct 2025 07:12:31 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846350; x=1760451150; 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=D40qfYdygi4qxK7R3G0gRUYsCh2wZ6BpNynFJicW9VI=; b=Y64O6W+lgfyKgXu7vOD08T1UzQ2PxxkABbmxOJVIJ2J8CpgMKk151XL3BDP/jIIr2o M/Jlxpr16nBeK45B9WsACO1ggDYft5BZEeuLX0WgG6mO4Ou3CaUSfALs3NblXYT9ashl z2lnlPK0yptmS5f8in5YNwy9Tv+T4EnzIrJCEjpuD8hr/BwI7L+VQo4BZ/YRY8EjhQPN 5gKCMTD/4umuyvaGB4O59BMZuvmC5hYan5LxZfkXZ4EntbDXFHhxwaOMTEJt2BBIaa8h 4xsD/tOn3jXOWz7MyQnysPoigSOn3rfpIanK5+V2QfMcjyvH2p4XsKkukA2hcJvUhiPa aXMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846350; x=1760451150; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=D40qfYdygi4qxK7R3G0gRUYsCh2wZ6BpNynFJicW9VI=; b=kOxD+/zrUDUZ80AJS2hQ37olWPqkpO5I+m2UJZam02GZuEzbRYeIdK5vuk/mZkdDoj S2RYpcpn1jV1UDFcsawGlrkj+zXy4AimRVGmh6/uhpiLOENYlUCAwz889NjXYh9T7UXV ASr5G3aYQ/RXz9yn7yvHRBCpj77nsADdOGRE1RcQRZhfXIjz8Bi5VSvK9OTJniBU2kvx +cYIhr9/q6uGmldndBnXPPfEUcGZX8OWREu8nmAuwTljvSngEF8xhJdS11GsfjOk2dJu edGI3zFaiE80B0vitfXi9t0KXbcqlKgqowvyiOSv9h4LcUI9kklrwpWE8sqByhv70KHR 6exg== X-Gm-Message-State: AOJu0YwI9BZ3rLvGPArHWz2tvoQQOuoGDdZfXgnFNnbVBLa4BdOloPXM AGso2dAAQkTD+TbtP4bYuc/lCnEJ80szPNTW97Kh4BGtuZyj2gwHigG/DtdQH3k2CRijE2ci873 0FzM3 X-Gm-Gg: ASbGnctvoO6i2W1/QDXPYU/vacbvvHr1DV2DviV3hagVQ8TlNGq0qkIPryhY0Uq88eI 7SCdTW3rfnIkK9zDl6ZYHuh72UCQ+OYOLZyk5bP5VXgmuK9gO7F4B0R/gae5yjFOf92wuRhlzVM WG3Hr+J7KKceaT0dxPm5kK+8vwWCPs3K70dNHKek94kQsy0HOPPhaw6HPPwBu/PZM3rSk55/f+z sgDpW7hEdbE6g2MO3F0bzXsHPvbZJPfCVT7B7iofvRq2Be1130xsrD/Y8bBfSGKy8ken4yV6M/h ELsYvFT7EDa8EN+L831snGiluZQra84cRwI9QlRKN49mhv/6OD3bBpUKdc7h9SoUPUzim51niSg hVy2DG2Rk/3Iiwg8it5p88H5zCuyV/FGW3YBYIbogPX1PrHkVajwyX2wY X-Google-Smtp-Source: AGHT+IFhlIVIkeoD1uv8TR22qC77+F5sZjTop4P7TPHdCKSZvMc2SHnN+jGNfAiRinFcNFVEqNlidQ== X-Received: by 2002:a05:600c:1e20:b0:45d:f7cb:70f4 with SMTP id 5b1f17b1804b1-46e7110ef7bmr92097965e9.13.1759846349562; Tue, 07 Oct 2025 07:12:29 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 59/62] target/arm: Implement SPAD, NSPAD, RLPAD Date: Tue, 7 Oct 2025 15:11:19 +0100 Message-ID: <20251007141123.3239867-60-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::333; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x333.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, 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: 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: 1759847415068116600 Content-Type: text/plain; charset="utf-8" From: Richard Henderson These bits disable all access to a particular address space. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Message-id: 20250926001134.295547-8-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/ptw.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 56a3cd8fa0f..36917be83e3 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -387,7 +387,25 @@ static bool granule_protection_check(CPUARMState *env,= uint64_t paddress, l0gptsz =3D 30 + FIELD_EX64(gpccr, GPCCR, L0GPTSZ); =20 /* - * GPC Priority 2: Secure, Realm or Root address exceeds PPS. + * GPC Priority 2: Access to Secure, NonSecure or Realm is prevented + * by one of the GPCCR_EL3 address space disable bits (R_TCWMD). + * All of these bits are checked vs aa64_rme_gpc2 in gpccr_write. + */ + { + static const uint8_t disable_masks[4] =3D { + [ARMSS_Secure] =3D R_GPCCR_SPAD_MASK, + [ARMSS_NonSecure] =3D R_GPCCR_NSPAD_MASK, + [ARMSS_Root] =3D 0, + [ARMSS_Realm] =3D R_GPCCR_RLPAD_MASK, + }; + + if (gpccr & disable_masks[pspace]) { + goto fault_fail; + } + } + + /* + * GPC Priority 3: Secure, Realm or Root address exceeds PPS. * R_CPDSB: A NonSecure physical address input exceeding PPS * does not experience any fault. */ @@ -398,7 +416,7 @@ static bool granule_protection_check(CPUARMState *env, = uint64_t paddress, goto fault_size; } =20 - /* GPC Priority 3: the base address of GPTBR_EL3 exceeds PPS. */ + /* GPC Priority 4: the base address of GPTBR_EL3 exceeds PPS. */ tableaddr =3D env->cp15.gptbr_el3 << 12; if (tableaddr & ~pps_mask) { goto fault_size; @@ -502,6 +520,7 @@ static bool granule_protection_check(CPUARMState *env, = uint64_t paddress, goto fault_walk; /* reserved */ } =20 + fault_fail: fi->gpcf =3D GPCF_Fail; goto fault_common; fault_eabt: --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847044; cv=none; d=zohomail.com; s=zohoarc; b=Wnq0b7rlI5Zgh8DAmJPj8oU2LhTNvfZDBY3Zry6d4FKu/3RDcYDVIv4THkry23sjXNvfNfeFFt7+MYzECDE25l8Y5aNWo0ooNe1s4P4aTUzCaa7meHh81p4fwxcIso3GTNrDHKa1NjLpfIJ5oN3cizlk0cyn+v0CtcxvIG+3Bco= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847044; h=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=ciHin1nXK1LBMprXq5HBDqiTlLNb84vyWLyK9s/zYjk=; b=lDIJWwMhTnhfqIX2nyT5oO+YlpwnAdqOv5ks9XqPTBBeQ3uDu0jB6rmAdJ9ckEfpamBU2O1+zAZ/AP9aKtFMDpd9+aF9TlqZaeGo8eGS5mOokTlbKB+nTul+ilW592gE0y8l+hFeaeEg5Cb/VAirbj6ZvYYqG0496bAsAV06SQ0= 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 1759847044272294.08102304881197; Tue, 7 Oct 2025 07:24:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68R7-00069f-8s; Tue, 07 Oct 2025 10:13:05 -0400 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 1v68Qz-000665-KM for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:57 -0400 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 1v68Qg-0002PW-1g for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:56 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-46e42deffa8so63472575e9.0 for ; Tue, 07 Oct 2025 07:12:33 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846350; x=1760451150; 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=ciHin1nXK1LBMprXq5HBDqiTlLNb84vyWLyK9s/zYjk=; b=g9FbfbD4RUEzRP/C+8UDAthjQrQgai19Im4zEs0by1xcQ/84dLcx40e7nSBEatLqvZ HQq1uOHZX9Mddd8sXXazdWfN0DzLiyqino3Lhz2HWKz69R8fllFhMmOQOXhq7sA8McaF 7P8cTPxWej5CZoJn80C3AR/Ko2kBZUYWVgLClhdIbRr2sXB/qY34ijPyj20ijWX6Qjrt 6fzZzKm3GaRq+jX3zeozVhLfBMfW3GPjP7MSpo/xJyHHa+dxHE8SvjiPnK35F5t6txHj 4pkLGUTjtoYoJ7Upat3+pgPAxT5dtuGMKBGI8y1AvHcFYLBT9Wpg9LZpSXefn4WB4RNZ RzKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846350; x=1760451150; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ciHin1nXK1LBMprXq5HBDqiTlLNb84vyWLyK9s/zYjk=; b=UwwIT/Mb15COVP2w73ImRZnQfSkFu3fc2zfIqO/6x1b4G2zNKN6Om9ih+3Oz+jl8U6 21FjsgGLUNRxfOeclcF4yxWQwIgcf+zuP9A5j+ki78ee/57Cb7Jk40oZ+S+t55dKuI4J WR9+nZw+ybhl2FvqRUeso30gfgJ4Xg9I1bKhcWvWAdCs91insUikLyJ/rSInWlzP6GlS yHElXf+5SVAY4kNlApztLNRZwz66V46TnjvoGiJ7wTxY3zLgDIb1zoZwxorXBDe8Ofjn 4YXWdrsocDdeDoq2CkML6HI6NM6BVgEoKKW0HD8fBCGVD9vyQYJ9ZYkqIlAozEncvNe3 xDzw== X-Gm-Message-State: AOJu0YyTFKYjGggoMghRBn6WG4xgLlZBhKtKPHutOKht9wxRKA54rP8R q3sCRyqchP1tRi8ROF2sK8qbpcGqYEMmGWwTfczDFRuhJjjh7E9E3NJZPqj8OC1QkICn/Eez476 9S+dB X-Gm-Gg: ASbGncteYEK7lC+9eBiGx8tvImSFji/JWjnaBQUcDBIVLJi+NDruLLkyUtBgaYJCz4z fJR/iSUmEqapzXcapHyyhlrWPP3LkbQafdL3aS+sd38+3pvUGBJtVIuzCd14FuorcRKFQBaBZ8W io1E9H6RzonjYy0Eeb9DDJqk6+fPm9+0Cuki0BfWf1ssJEgVekvkKv9E/NpBZTOxWHbTcr3kKN8 BaaFgf5YFe8SEl279t9BlVUkWb6WFJ8DYz7oe0Wj8U9mIN/3zC/KyYiw4x0xaEng8lFKqLNWCwA a106gkdsO7LHhVRDgZrDsObE3rlCDLlo0Pf07y3/yYC6YXkD6nqGWtx/birUY9ZQj5SRj7eyZq6 1ilT97nfET5uF6BowO5l3JaZin8rtyBy58DfJrPwnvcvfLwFur/2c8ljRiiuQYlqS8OE= X-Google-Smtp-Source: AGHT+IHwfu42TezPFenRjB9SCO/BMAkKj/4kYBmx8B9DuBGdiZ4F8LUuJeixdEVr7zBz4KCdHYU7Ng== X-Received: by 2002:a05:600c:64c4:b0:46d:45e:3514 with SMTP id 5b1f17b1804b1-46e7114310amr132491385e9.17.1759846350526; Tue, 07 Oct 2025 07:12:30 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 60/62] target/arm: Fix GPT fault type for address outside PPS Date: Tue, 7 Oct 2025 15:11:20 +0100 Message-ID: <20251007141123.3239867-61-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32f; envelope-from=peter.maydell@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: 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: 1759847050550116600 Content-Type: text/plain; charset="utf-8" From: Richard Henderson The GPT address size fault is for the table itself. The physical address being checked gets Granule protection fault at Level 0 (R_JFFHB). Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Message-id: 20250926001134.295547-9-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/ptw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 36917be83e3..236c3a9569b 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -413,7 +413,7 @@ static bool granule_protection_check(CPUARMState *env, = uint64_t paddress, if (pspace =3D=3D ARMSS_NonSecure) { return true; } - goto fault_size; + goto fault_fail; } =20 /* GPC Priority 4: the base address of GPTBR_EL3 exceeds PPS. */ --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847395; cv=none; d=zohomail.com; s=zohoarc; b=EGGzQzcFpoEhqaq+6kh4AN0ozKcPLLb86oPjhpxYf32jntDpLpCcDY7XBCKq61mWJWeK2npMU1TqE/moNQxb54xPLMiB722qHSMDGT61NrxGCe2MEps5AKmrA/lQg4Guigl8z1jT8Tp0DDN9AL/sZyTk1BlpJelcZNiBdtuG2nM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847395; h=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=atUnk8Przy2b+arpo+tXXmWSEKJkyumG1wRWNZoP8OE=; b=AHrOExdfD0Zniea4Ufz2uX2J1Mnnke8lCckILSBd3Fe6So/0Voxdayw8bTsyoP2wV0h2Houg2wLKW8rQvMMDSRBlObMESog9Eihh1gJT53mUALmHrrX/CcJNTVoX6AQSsSK5X5sh2Cs6RbWTkatQADx8A+fKSVrUSpqhmw0Ghv8= 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 1759847395742763.4293783004462; Tue, 7 Oct 2025 07:29:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68R3-00068r-FK; Tue, 07 Oct 2025 10:13:01 -0400 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 1v68Qu-00061k-SY for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:52 -0400 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 1v68Qe-0002Pk-Il for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:52 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-46e6674caa5so32553755e9.0 for ; Tue, 07 Oct 2025 07:12:34 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846351; x=1760451151; 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=atUnk8Przy2b+arpo+tXXmWSEKJkyumG1wRWNZoP8OE=; b=fIrQMsZ7B+VWI8aiq7Jz7vfsuAZ/NdZ4TsrhKCz+GQKLr50B4Sc1AOV230GZJ3W/ya AbP0EWHe/uvH/jedfSEmIPOq12i6BIgOnFpObj2vaTgAGh5sY/O1jZjtDF42wCWhOwgd yA0wFGuAYyVykRhbLoHgulBqVyawTfHokgl1WZbPnU7IYr9n40PW6C1NYMoxRK0Qd6c8 mhvW6mELK+ehyZKcr43b7sajHMLT2JJKg7aHUxdCzFNxt/5wv9++bithByeD/TyALc4V 1biP3LjIhMcmL4jTN/BI+4mRYoipk9WpIZpB2xI7DXxa6VctZUrLbYae6eTHhFHVQnlA kgjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846351; x=1760451151; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=atUnk8Przy2b+arpo+tXXmWSEKJkyumG1wRWNZoP8OE=; b=p00vqHY8AftTXHPBueuOm5vfNr2Cz4aaJZFGUPLJBlr5rxXinbQfAnbog4diJ0Wirv 3AbYlJrVqqKikBDbkoB32AzKr1SDEyIT8SK1c3V8vubNkP0cnADJrwDPXWrsaLVuITbu UB1vxeHhWIC50reqVag2Eu/OKl4WDfqgLACi/+lXyTl6ShdU3wcJd2vITJZRj6TSz2u6 DGzgwO/R1revTCSVZLqkZM1oY4gUoPuz4LF7rVsbyo01GkcptiE0Ap/EcQvAzRSYpIg/ MdMtG7vTVUuP2IGFnqb04+rgrNds2bzEFBDukS/YNHR5vr0I17Gt6Qmnt12hTV8qB6vQ wKhQ== X-Gm-Message-State: AOJu0YxTjN+WhXefqTxmTb6ZuS5PQe/qf8YgPcWQD/B3sP4grZ/kDaK/ lGtqWpPdaGCGU6cV49StTUReqOdMYsra5tbUcMvDE/p41rMPe37gaQmWroKgxWu3d6NZY3Q9gAd DAKhZ X-Gm-Gg: ASbGncsxPYBtdnp6duppBLajKCNBoMzcBsORg2q1pQGoquz9ptniFwxlnmT/q2lwktI ftLNSQojw363KTQE7yejaqIU7qxL3GstYScAb+u5zZAaxje6wxQ/VGvcvzWZp42Ou9fTK+Y+TFM B37mrMxj/g7GzGmM92qQc6lMYjcmQU9NMQkjkOhvv3fy0bRAW/3xSs1rihAROyRdUc6Sl7C6XI6 CUj3LsT+9ynUSpgd0ztaHRdVxM5NBD3zW54a2cq6t83vWxidNY/KQdcTNXxjmHoHQ2fOm+iCpJC 9W6ZRIAk9YtIvP+KbAdRNPs1zer7EP2CddwbB7HjczGFE6SGlpaMzLLKajx6b9CnITP0+1YI+pz 2mMpF1iYN8PiXdgiQJ+7PAyTQH81pakD9p6kGUBz3fQqe9jTaUG3RUbCu X-Google-Smtp-Source: AGHT+IEOPWv3oJj22F8on6skrvRXwY16CItP4EJDC6+qlZMFzk/44Z5dotgiF37NjRo8b7xl6Neyzg== X-Received: by 2002:a7b:cc06:0:b0:46e:7dbf:6cc2 with SMTP id 5b1f17b1804b1-46fa296e763mr16273705e9.8.1759846351428; Tue, 07 Oct 2025 07:12:31 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 61/62] target/arm: Implement APPSAA Date: Tue, 7 Oct 2025 15:11:21 +0100 Message-ID: <20251007141123.3239867-62-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::331; envelope-from=peter.maydell@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: 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: 1759847403899116600 Content-Type: text/plain; charset="utf-8" From: Richard Henderson This bit allows all spaces to access memory above PPS. Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Message-id: 20250926001134.295547-10-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/ptw.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 236c3a9569b..e03657f309e 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -408,9 +408,10 @@ static bool granule_protection_check(CPUARMState *env,= uint64_t paddress, * GPC Priority 3: Secure, Realm or Root address exceeds PPS. * R_CPDSB: A NonSecure physical address input exceeding PPS * does not experience any fault. + * R_PBPSH: Other address spaces have fault suppressed by APPSAA. */ if (paddress & ~pps_mask) { - if (pspace =3D=3D ARMSS_NonSecure) { + if (pspace =3D=3D ARMSS_NonSecure || FIELD_EX64(gpccr, GPCCR, APPS= AA)) { return true; } goto fault_fail; --=20 2.43.0 From nobody Fri Nov 14 22:21:23 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1759847089; cv=none; d=zohomail.com; s=zohoarc; b=F5S+f2PDtlyftgqKJgnlReTE31gKj5MZXTd+eR5nMxcxJBgIoD4CdWF7HAiwkoAYQ4r8w2RdjHCFfXzFKZcRVd9dXbjZBH8JuTVnawk5RCFNBmbR8YI6KhPHmhpY+rngetTOK8bFmcsV8DGRV0qEqnSIqcxj29+g5XUNoKhdkHw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1759847089; h=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=OVtMeI/FVDsMoa56+s5FLsgV/tUeeQKVrnHYRfnwDuw=; b=FesL9o1exzzbaN7ajOpQlz7jAyzLBQJYwbClBFkk31lbAP8UOF94TswaOckADrlonaTcteygZPBNhm0eNftxxG2Oyn9BytmkCyfpzW8EGEz20aHxsYjo5FDcrG78MKcyaJ2RoD6uRg8uJRdqqlooy8TNuSzbkSJzqhjxdLhoyYs= 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 1759847089402633.3860449365684; Tue, 7 Oct 2025 07:24:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v68RH-0006Ow-1r; Tue, 07 Oct 2025 10:13:15 -0400 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 1v68Qx-00063i-FU for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:55 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1v68Qe-0002Q2-50 for qemu-devel@nongnu.org; Tue, 07 Oct 2025 10:12:55 -0400 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-46e2e363118so57814125e9.0 for ; Tue, 07 Oct 2025 07:12:34 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-46e78c5d290sm167037135e9.0.2025.10.07.07.12.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Oct 2025 07:12:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1759846352; x=1760451152; 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=OVtMeI/FVDsMoa56+s5FLsgV/tUeeQKVrnHYRfnwDuw=; b=ktyWOyQgDFSv7fG7Whh1jQnTQBE4oBxXPN4tPLU3tGpMPmPbSrrMOHpF3Cfvn49SxS Ij29x1T38On1oJtwfyiA2ocWzSQ4UpqW3zDaLPG2JSVBVWKcdiedemjKtm66m15REO+M zRYhemD6SMwHl8GT5MBGuYRzkL8/c2qTBPaetbjUAt5qHwXtqCLy1/9+koO5zpkLAoEa UezfzeEfaaYJZ9ZE55VuRGScbihAcYsCiGUWDbhJlJyVVIDIAJUg33oJ+/mc8bdlpDca 0Dl1WJi9lgluPzMbG/X7Iig1gunsV/oWxMY7QZ9j4hmvP3bgSMCawNBdgCXbR5bPpAFd /U+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759846352; x=1760451152; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OVtMeI/FVDsMoa56+s5FLsgV/tUeeQKVrnHYRfnwDuw=; b=THJrkctgKtWc8+xKQ/YCMN5dhFboxzWRfCp7p8FR1sqBbtlCF7ShFvwNBTDrC3+xrm 7Tmu+mkfeo0hhu0BXoSndKcQ195gOmIhb+xhmLhwrV+glfy1gbU7Nj8WhPCAnfNCwf7e iJvdDLjFdamVRaIsbaGcC0u5iYcTO2keqGAIpKWh0HqbcguHwE6DAjryUSiAxNNWzuSJ sy1ntC4L9bVCZIrqysFW9c5sYcZQNRsu94gVdVz4u4i4EasoaL40T676Sk119+aKn0oQ vfC8IugvQSJdzEE0zvwvYuFgSeubFWPiqX4j+Ojgy/ikQZZUaGAV7pDokRTu//iId8vi yzeQ== X-Gm-Message-State: AOJu0YwoDwwFeSAGvsIQ6xO6EQA2LPvlMyeIS5SExLh+hCIPMWCxTnf+ MVGWv/VeBnY+RvhVl4nFjYsRcKzXlXMo3S8nqdF4h2byi2otuB7QCSAmwUJqksRksU1L8th0wb2 LakG5 X-Gm-Gg: ASbGncvcQDmoXNxkFpbm8YZ/ZyO88W60JcVOZzMNiIIAfHdd0OHBgDXxiT5Q2EsnDto ZYGIjURl8evkkl5cn4MqZDEa/GWdzJm2NUR27c8kF2swVsheZvSlpfKmU2i7942h0Roig78bKSb 54ln25t7OyZAa7/HH/ndhTo0nL9ZUEkFwLColHxA4J4nCXXOtSckO8xCK6LzIbLVipphBaaj2dF eRvLw8QHwTrTxOSW2FRn6RyBXwN0186Yuyx34FqB7sjtobNKIAP+gxcHlJZrShkfNY7DU8jf+he rwfeh0pA58fjhKhL5h2bjX8C5qMB7Ad2m4ghQtdPXXT5AjGzC8T77n5PlanOdb0B9VdwwFsEhnq O3j6WjldavqfMDQzAeegSh1/XhogSOg9OFrCb6pF1b+NWRbxuwUOmgmmX+oudH8mlxCM= X-Google-Smtp-Source: AGHT+IGPChO3zUgyERnDqITOyfwu41DlyKmV0Gwkofj4cBJ1zn/P/vrMW/e6MdLks8SsU5HgtbPKow== X-Received: by 2002:a05:600c:540c:b0:458:c094:8ba5 with SMTP id 5b1f17b1804b1-46e71124468mr111984995e9.12.1759846352318; Tue, 07 Oct 2025 07:12:32 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 62/62] target/arm: Enable FEAT_RME_GPC2 for -cpu max with x-rme Date: Tue, 7 Oct 2025 15:11:22 +0100 Message-ID: <20251007141123.3239867-63-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251007141123.3239867-1-peter.maydell@linaro.org> References: <20251007141123.3239867-1-peter.maydell@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.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: 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: 1759847091651154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: Pierrick Bouvier Message-id: 20250926001134.295547-11-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 1 + target/arm/tcg/cpu64.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 6b04c96c8c4..1aa0a6e4c39 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -120,6 +120,7 @@ the following architecture extensions: - FEAT_RASv1p1 (RAS Extension v1.1) - FEAT_RDM (Advanced SIMD rounding double multiply accumulate instructions) - FEAT_RME (Realm Management Extension) (NB: support status in QEMU is exp= erimental) +- FEAT_RME_GPC2 (RME Granule Protection Check 2 Extension) - FEAT_RNG (Random number generator) - FEAT_RPRES (Increased precision of FRECPE and FRSQRTE) - FEAT_S2FWB (Stage 2 forced Write-Back) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 90b6c0ebb0e..8c617fe37b2 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -159,7 +159,8 @@ static void cpu_arm_set_rme(Object *obj, bool value, Er= ror **errp) { ARMCPU *cpu =3D ARM_CPU(obj); =20 - FIELD_DP64_IDREG(&cpu->isar, ID_AA64PFR0, RME, value); + /* Enable FEAT_RME_GPC2 */ + FIELD_DP64_IDREG(&cpu->isar, ID_AA64PFR0, RME, value ? 2 : 0); } =20 static void cpu_max_set_l0gptsz(Object *obj, Visitor *v, const char *name, --=20 2.43.0