From nobody Tue Feb 10 12:57:30 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1523551445883726.2014807963478; Thu, 12 Apr 2018 09:44:05 -0700 (PDT) Received: from localhost ([::1]:53533 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f6fKP-0005zU-4C for importer@patchew.org; Thu, 12 Apr 2018 12:44:05 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58298) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f6fI7-00046Q-9f for qemu-devel@nongnu.org; Thu, 12 Apr 2018 12:41:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f6fI6-00018z-77 for qemu-devel@nongnu.org; Thu, 12 Apr 2018 12:41:43 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:52856 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f6fI0-00013s-Si; Thu, 12 Apr 2018 12:41:36 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 6E50F8DC38; Thu, 12 Apr 2018 16:41:31 +0000 (UTC) Received: from dell-r430-03.lab.eng.brq.redhat.com (dell-r430-03.lab.eng.brq.redhat.com [10.37.153.18]) by smtp.corp.redhat.com (Postfix) with ESMTP id B026810B00B2; Thu, 12 Apr 2018 16:41:30 +0000 (UTC) From: Igor Mammedov To: qemu-devel@nongnu.org Date: Thu, 12 Apr 2018 18:40:18 +0200 Message-Id: <1523551221-11612-2-git-send-email-imammedo@redhat.com> In-Reply-To: <1523551221-11612-1-git-send-email-imammedo@redhat.com> References: <1523551221-11612-1-git-send-email-imammedo@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.2]); Thu, 12 Apr 2018 16:41:31 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.2]); Thu, 12 Apr 2018 16:41:31 +0000 (UTC) for IP:'10.11.54.3' DOMAIN:'int-mx03.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'imammedo@redhat.com' RCPT:'' X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 66.187.233.73 Subject: [Qemu-devel] [PATCH for-2.13 1/4] arm: reuse arm_boot_address_space() in armv7m_load_kernel() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, qemu-arm@nongnu.org, eric.auger@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" reduce code duplication by resusing arm_boot_address_space() Signed-off-by: Igor Mammedov --- include/hw/arm/arm.h | 2 ++ hw/arm/armv7m.c | 10 +--------- hw/arm/boot.c | 16 ++++++++-------- 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/include/hw/arm/arm.h b/include/hw/arm/arm.h index ce769bd..188d18b 100644 --- a/include/hw/arm/arm.h +++ b/include/hw/arm/arm.h @@ -143,6 +143,8 @@ struct arm_boot_info { */ void arm_load_kernel(ARMCPU *cpu, struct arm_boot_info *info); =20 +AddressSpace *arm_boot_address_space(ARMCPU *cpu, bool secure_boot); + /* Write a secure board setup routine with a dummy handler for SMCs */ void arm_write_secure_board_setup_dummy_smc(ARMCPU *cpu, const struct arm_boot_info *in= fo, diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c index f123cc7..d372d9c 100644 --- a/hw/arm/armv7m.c +++ b/hw/arm/armv7m.c @@ -289,8 +289,6 @@ void armv7m_load_kernel(ARMCPU *cpu, const char *kernel= _filename, int mem_size) uint64_t lowaddr; int big_endian; AddressSpace *as; - int asidx; - CPUState *cs =3D CPU(cpu); =20 #ifdef TARGET_WORDS_BIGENDIAN big_endian =3D 1; @@ -303,13 +301,7 @@ void armv7m_load_kernel(ARMCPU *cpu, const char *kerne= l_filename, int mem_size) exit(1); } =20 - if (arm_feature(&cpu->env, ARM_FEATURE_EL3)) { - asidx =3D ARMASIdx_S; - } else { - asidx =3D ARMASIdx_NS; - } - as =3D cpu_get_address_space(cs, asidx); - + as =3D arm_boot_address_space(cpu, true); if (kernel_filename) { image_size =3D load_elf_as(kernel_filename, NULL, NULL, &entry, &l= owaddr, NULL, big_endian, EM_ARM, 1, 0, as); diff --git a/hw/arm/boot.c b/hw/arm/boot.c index 26184bc..2f464ca 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -36,8 +36,7 @@ #define ARM64_TEXT_OFFSET_OFFSET 8 #define ARM64_MAGIC_OFFSET 56 =20 -static AddressSpace *arm_boot_address_space(ARMCPU *cpu, - const struct arm_boot_info *in= fo) +AddressSpace *arm_boot_address_space(ARMCPU *cpu, bool secure_boot) { /* Return the address space to use for bootloader reads and writes. * We prefer the secure address space if the CPU has it and we're @@ -46,7 +45,7 @@ static AddressSpace *arm_boot_address_space(ARMCPU *cpu, int asidx; CPUState *cs =3D CPU(cpu); =20 - if (arm_feature(&cpu->env, ARM_FEATURE_EL3) && info->secure_boot) { + if (arm_feature(&cpu->env, ARM_FEATURE_EL3) && secure_boot) { asidx =3D ARMASIdx_S; } else { asidx =3D ARMASIdx_NS; @@ -193,7 +192,7 @@ static void default_write_secondary(ARMCPU *cpu, const struct arm_boot_info *info) { uint32_t fixupcontext[FIXUP_MAX]; - AddressSpace *as =3D arm_boot_address_space(cpu, info); + AddressSpace *as =3D arm_boot_address_space(cpu, info->secure_boot); =20 fixupcontext[FIXUP_GIC_CPU_IF] =3D info->gic_cpu_if_addr; fixupcontext[FIXUP_BOOTREG] =3D info->smp_bootreg_addr; @@ -211,7 +210,7 @@ void arm_write_secure_board_setup_dummy_smc(ARMCPU *cpu, const struct arm_boot_info *in= fo, hwaddr mvbar_addr) { - AddressSpace *as =3D arm_boot_address_space(cpu, info); + AddressSpace *as =3D arm_boot_address_space(cpu, info->secure_boot); int n; uint32_t mvbar_blob[] =3D { /* mvbar_addr: secure monitor vectors @@ -262,7 +261,7 @@ void arm_write_secure_board_setup_dummy_smc(ARMCPU *cpu, static void default_reset_secondary(ARMCPU *cpu, const struct arm_boot_info *info) { - AddressSpace *as =3D arm_boot_address_space(cpu, info); + AddressSpace *as =3D arm_boot_address_space(cpu, info->secure_boot); CPUState *cs =3D CPU(cpu); =20 address_space_stl_notdirty(as, info->smp_bootreg_addr, @@ -753,7 +752,8 @@ static void do_cpu_reset(void *opaque) } =20 if (cs =3D=3D first_cpu) { - AddressSpace *as =3D arm_boot_address_space(cpu, info); + AddressSpace *as =3D + arm_boot_address_space(cpu, info->secure_boot); =20 cpu_set_pc(cs, info->loader_start); =20 @@ -950,7 +950,7 @@ static void arm_load_kernel_notify(Notifier *notifier, = void *data) ARMCPU *cpu =3D n->cpu; struct arm_boot_info *info =3D container_of(n, struct arm_boot_info, load_kernel_notifier); - AddressSpace *as =3D arm_boot_address_space(cpu, info); + AddressSpace *as =3D arm_boot_address_space(cpu, info->secure_boot); =20 /* The board code is not supposed to set secure_board_setup unless * running its code in secure mode is actually possible, and KVM --=20 2.7.4