From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38107) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y0Z5G-0008Tg-FS for qemu-devel@nongnu.org; Mon, 15 Dec 2014 12:05:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y0Z5B-0007SN-H4 for qemu-devel@nongnu.org; Mon, 15 Dec 2014 12:05:22 -0500 Received: from mail-la0-f51.google.com ([209.85.215.51]:34244) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y0Z5B-0007Rq-As for qemu-devel@nongnu.org; Mon, 15 Dec 2014 12:05:17 -0500 Received: by mail-la0-f51.google.com with SMTP id ms9so9756721lab.10 for ; Mon, 15 Dec 2014 09:05:16 -0800 (PST) MIME-Version: 1.0 In-Reply-To: <1418340569-30519-11-git-send-email-greg.bellows@linaro.org> References: <1418340569-30519-1-git-send-email-greg.bellows@linaro.org> <1418340569-30519-11-git-send-email-greg.bellows@linaro.org> From: Peter Maydell Date: Mon, 15 Dec 2014 17:04:56 +0000 Message-ID: Content-Type: text/plain; charset=UTF-8 Subject: Re: [Qemu-devel] [PATCH v2 10/15] target-arm: Add arm_boot_info secure_boot control List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Greg Bellows Cc: Sergey Fedorov , QEMU Developers , Fabian Aggeler , "Edgar E. Iglesias" On 11 December 2014 at 23:29, Greg Bellows wrote: > Adds the secure_boot boolean field to the arm_boot_info descriptor. This > fields is used to indicate whether Linux should boot into secure or non-secure > state if the ARM EL3 feature is enabled. The default is to leave the CPU in an > unaltered reset state. On EL3 enabled systems, the reset state is secure and > can be overridden by setting the added field to false. > > Signed-off-by: Greg Bellows > --- > hw/arm/boot.c | 10 ++++++++++ > include/hw/arm/arm.h | 4 ++++ > 2 files changed, 14 insertions(+) > > diff --git a/hw/arm/boot.c b/hw/arm/boot.c > index e6a3c5b..7ec33f3 100644 > --- a/hw/arm/boot.c > +++ b/hw/arm/boot.c > @@ -457,6 +457,16 @@ static void do_cpu_reset(void *opaque) > env->thumb = info->entry & 1; > } > } else { > + /* If we are booting Linux then we need to check whether we are > + * booting into secure or non-secure state and adjust the state > + * accordingly. Out of reset, ARM is defined to be in secure state > + * (SCR.NS = 0), we change that here is non-secure boot has been typo: "if" > + * requested. > + */ > + if (arm_feature(env, ARM_FEATURE_EL3) && !info->secure_boot) { > + env->cp15.scr_el3 |= SCR_NS; > + } > + > if (CPU(cpu) == first_cpu) { > if (env->aarch64) { > env->pc = info->loader_start; > diff --git a/include/hw/arm/arm.h b/include/hw/arm/arm.h > index cefc9e6..6659562 100644 > --- a/include/hw/arm/arm.h > +++ b/include/hw/arm/arm.h > @@ -37,6 +37,10 @@ struct arm_boot_info { > hwaddr gic_cpu_if_addr; > int nb_cpus; > int board_id; > + /* ARM machines that support security extensions use this field to control Strictly, this should say "the Security Extensions". > + * whether Linux is booted as securei(true) or non-secure(false). Typo: "secure". > + */ > + bool secure_boot; > int (*atag_board)(const struct arm_boot_info *info, void *p); > /* multicore boards that use the default secondary core boot functions > * can ignore these two function calls. If the default functions won't > -- > 1.8.3.2 thanks -- PMM