From nobody Mon Feb 9 21:12:28 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; 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 ARC-Seal: i=1; a=rsa-sha256; t=1583816922; cv=none; d=zohomail.com; s=zohoarc; b=LrbFbTyiXGX6u3AdOvo6thP/HVjmhgJmnw2T4fYkDc6DgELiRWA5ByaA/xXpA4EHG4U1kCfMlCORol1dRj6Ky4gSXvQQ5HTSiSLjiqCddgl60Z+93yUbLblUzOXshDBr13+6i3j0044vaMhqYNaYE3RwX4VEzXmKNFunrKYga7g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583816922; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=G8CSJ7U6IV7NP+T+iLr8cazW+Y+TwTRiG20U6fs3vJc=; b=Kx1EC8MjGM/I7XMSMSE+WOmh0KPeNAydIgNjV4x4ViGeAFZ5Sv4+Sk+h5s3LAtoWGNtNV7ZGfHaWe/EqXn+/jH6YTCPKJIOqMiH7H7YCf37mdnhc2VqxT4jqk447q+zmQdvqEhaUM6u+2zegcd9OBqCfk9nFAHsadigdIvir0RE= ARC-Authentication-Results: i=1; mx.zohomail.com; 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 Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1583816922186488.168752511261; Mon, 9 Mar 2020 22:08:42 -0700 (PDT) Received: from localhost ([::1]:53632 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jBX8C-0004Pc-U1 for importer@patchew.org; Tue, 10 Mar 2020 01:08:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58904) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jBX7L-0003Sy-BR for qemu-devel@nongnu.org; Tue, 10 Mar 2020 01:07:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jBX7J-0000In-55 for qemu-devel@nongnu.org; Tue, 10 Mar 2020 01:07:46 -0400 Received: from [107.174.27.60] (port=46198 helo=ozlabs.ru) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1jBX7I-0000Ea-Md; Tue, 10 Mar 2020 01:07:44 -0400 Received: from fstn1-p1.ozlabs.ibm.com (localhost [IPv6:::1]) by ozlabs.ru (Postfix) with ESMTP id EAF6CAE80062; Tue, 10 Mar 2020 01:06:00 -0400 (EDT) From: Alexey Kardashevskiy To: qemu-devel@nongnu.org Subject: [PATCH qemu v8 1/3] ppc/spapr: Move GPRs setup to one place Date: Tue, 10 Mar 2020 16:07:31 +1100 Message-Id: <20200310050733.29805-2-aik@ozlabs.ru> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200310050733.29805-1-aik@ozlabs.ru> References: <20200310050733.29805-1-aik@ozlabs.ru> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 107.174.27.60 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alexey Kardashevskiy , Paolo Bonzini , qemu-ppc@nongnu.org, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" At the moment "pseries" starts in SLOF which only expects the FDT blob pointer in r3. As we are going to introduce a OpenFirmware support in QEMU, we will be booting OF clients directly and these expect a stack pointer in r1, Linux looks at r3/r4 for the initramdisk location (although vmlinux can find this from the device tree but zImage from distro kernels cannot). This extends spapr_cpu_set_entry_state() to take more registers. This should cause no behavioral change. Signed-off-by: Alexey Kardashevskiy Reviewed-by: Greg Kurz --- Changes: v7: * removed r5 as it points to prom entry which is now provided by a new firmware in later patches --- include/hw/ppc/spapr_cpu_core.h | 4 +++- hw/ppc/spapr.c | 2 +- hw/ppc/spapr_cpu_core.c | 6 +++++- hw/ppc/spapr_rtas.c | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_cor= e.h index 1c4cc6559c52..7aed8f555b4f 100644 --- a/include/hw/ppc/spapr_cpu_core.h +++ b/include/hw/ppc/spapr_cpu_core.h @@ -40,7 +40,9 @@ typedef struct SpaprCpuCoreClass { } SpaprCpuCoreClass; =20 const char *spapr_get_cpu_core_type(const char *cpu_type); -void spapr_cpu_set_entry_state(PowerPCCPU *cpu, target_ulong nip, target_u= long r3); +void spapr_cpu_set_entry_state(PowerPCCPU *cpu, target_ulong nip, + target_ulong r1, target_ulong r3, + target_ulong r4); =20 typedef struct SpaprCpuState { uint64_t vpa_addr; diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 2eb0d8f70de6..64bc8b83e91e 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1698,7 +1698,7 @@ static void spapr_machine_reset(MachineState *machine) spapr->fdt_blob =3D fdt; =20 /* Set up the entry state */ - spapr_cpu_set_entry_state(first_ppc_cpu, SPAPR_ENTRY_POINT, fdt_addr); + spapr_cpu_set_entry_state(first_ppc_cpu, SPAPR_ENTRY_POINT, 0, fdt_add= r, 0); first_ppc_cpu->env.gpr[5] =3D 0; =20 spapr->cas_reboot =3D false; diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c index 36ed3a2b665b..ac1c10942771 100644 --- a/hw/ppc/spapr_cpu_core.c +++ b/hw/ppc/spapr_cpu_core.c @@ -76,13 +76,17 @@ static void spapr_reset_vcpu(PowerPCCPU *cpu) spapr_irq_cpu_intc_reset(spapr, cpu); } =20 -void spapr_cpu_set_entry_state(PowerPCCPU *cpu, target_ulong nip, target_u= long r3) +void spapr_cpu_set_entry_state(PowerPCCPU *cpu, target_ulong nip, + target_ulong r1, target_ulong r3, + target_ulong r4) { PowerPCCPUClass *pcc =3D POWERPC_CPU_GET_CLASS(cpu); CPUPPCState *env =3D &cpu->env; =20 env->nip =3D nip; + env->gpr[1] =3D r1; env->gpr[3] =3D r3; + env->gpr[4] =3D r4; kvmppc_set_reg_ppc_online(cpu, 1); CPU(cpu)->halted =3D 0; /* Enable Power-saving mode Exit Cause exceptions */ diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c index 656fdd221665..fe83b50c6629 100644 --- a/hw/ppc/spapr_rtas.c +++ b/hw/ppc/spapr_rtas.c @@ -190,7 +190,7 @@ static void rtas_start_cpu(PowerPCCPU *callcpu, SpaprMa= chineState *spapr, */ newcpu->env.tb_env->tb_offset =3D callcpu->env.tb_env->tb_offset; =20 - spapr_cpu_set_entry_state(newcpu, start, r3); + spapr_cpu_set_entry_state(newcpu, start, 0, r3, 0); =20 qemu_cpu_kick(CPU(newcpu)); =20 --=20 2.17.1