From patchwork Mon Jan 12 20:57:16 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnab Basu X-Patchwork-Id: 428131 X-Patchwork-Delegate: albert.aribaud@free.fr Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 155881401DA for ; Tue, 13 Jan 2015 08:02:34 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 3EADE4B6A7; Mon, 12 Jan 2015 22:02:01 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eeXtcmyff4m3; Mon, 12 Jan 2015 22:02:01 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id C396D4B695; Mon, 12 Jan 2015 22:01:34 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id C9B894B608 for ; Mon, 12 Jan 2015 22:00:29 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id aghQcU3s3mWW for ; Mon, 12 Jan 2015 22:00:29 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from nm50-vm4.bullet.mail.ne1.yahoo.com (nm50-vm4.bullet.mail.ne1.yahoo.com [98.138.121.148]) by theia.denx.de (Postfix) with ESMTPS id 44FAC4B605 for ; Mon, 12 Jan 2015 22:00:25 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rocketmail.com; s=s2048; t=1421096423; bh=3Bbwv3vAP2k+t27IAVtcqNPVnXCXpeZtI10/fVbxMFY=; h=From:To:Cc:Subject:Date:From:Subject; b=rcSznZx2MtR5r8Z9ZArlb7LAspiCPHNLoHyAEMA8yBtGcCHxF6gpPjJSgi86hoHDblF9PnB1/gWBjTiLFcJ0q7opFKWzFJY1uct/rpv21TMoRLk5dLIsUCq9GPh62WZHwLLdQ1LdBM+keuxuU5YNu0YNG+KbvihEHolk6DJVTC5PiGO0N9D6+I6AdTuS1DBaKcIBVmuX1hgfsk0SrLAtv+23KE3mHVltm8W6sQoGYcHtDMDT0AVOb0+3O46qyzZhYsMGUsZQYOhFBb5iMCnQ8YhMdIGY7ODAdxwI5U8yE7mpIzhBp/gnLk37a0pLm4sI6DprKtDLkbxZPPMXR+aBSA== DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s2048; d=rocketmail.com; b=sdpdYZq7JLuHoxB6CmfEomDEQib4ai9ngVb7FXDCOOu8N/WWZoqXEUDkjhCgTumJAU5enw9sjUzjIxV5KwKGjQ9KNlBSQGh6qw55oQx2U8qs/9WeNswc8PhSyRzLO9N3u5QWaHVzky7FUNXD/wKaDJB/gsUy+Xx2KNnGS80d40isHjp7fvg5BqxB8KqNj/LQjB4XRcMfr6xlXMLjvezaZfLSBz9SvXdBW4NFTWKv4JDQZY8zHDMRrwsp3usBO6ilclpdO6oUMH3IXjvBxu35Z9tTTVS5Iiu/rPbIzuQcQeLgjiFpL8EcvGyLrmXRDtXNl7iH+uxdTUcHMyjdt+XMig==; Received: from [127.0.0.1] by nm50.bullet.mail.ne1.yahoo.com with NNFMP; 12 Jan 2015 21:00:23 -0000 Received: from [98.138.100.112] by nm50.bullet.mail.ne1.yahoo.com with NNFMP; 12 Jan 2015 20:57:23 -0000 Received: from [106.10.166.62] by tm103.bullet.mail.ne1.yahoo.com with NNFMP; 12 Jan 2015 20:57:23 -0000 Received: from [106.10.167.130] by tm19.bullet.mail.sg3.yahoo.com with NNFMP; 12 Jan 2015 20:57:22 -0000 Received: from [127.0.0.1] by smtp103.mail.sg3.yahoo.com with NNFMP; 12 Jan 2015 20:57:22 -0000 X-Yahoo-Newman-Id: 861551.25373.bm@smtp103.mail.sg3.yahoo.com X-Yahoo-Newman-Property: ymail-4 X-YMail-OSG: st7V2ycVM1kpJxpASKWdlELd2q118RcefOHYdbufXfnlyoS FSDcS_4M8AkRK4D_GFBz5V_g48GqTmdaKfMQchpqjJRFGGV3SFBkWeCC.mdd x4yh8AEqaBb.gGi2ohWfAgN5r3sF.r74Mst8nc12GPAjPFH3xWMEbkTQr2BA e09TjdgO3s2hiXpeY4sphs2hTgpcR96HP3XO6idVVR7uWAGsMikdnwoATDww z57QpoSNwSAtWl7HLOwwta5TArJM4j1BD6bGw9j94Y8VIQy54dFNN3eRAlUq 1mdBZZ3WNw6jbD6jn7My_Y19tSQNv4w6euABrnk5UzgEXe5VJDdrdsOQDbpZ 4Bo9YuFS1yi_zx1M9CijwDkIBo9SIXCvPThp0UKhCcGqa3kKxreXq.pjZJay T53J3XSHxEejmbTBtMzkui5.ElIn1U1tyNQGBoVFnVxfYu7fAFJWeG1WIjN3 3KD8XtRo0s1MsZHLAAk310.LH8QFkeFi9T6kRIHaczbB7CKrZyJIDTeLIClb AuA.AuAkuKciDJ9sX.GwlrXMkytc2KTGJ2ST3IbvLF_ypy8xx_RBspsW3wSW Q.mTUH1EPlzlHkKxk X-Yahoo-SMTP: crLrLjSswBAdKO_oWys7UTWLvPXPfbdd3XtEOYM5nEof1j3oy80- From: Arnab Basu To: u-boot@lists.denx.de, Albert Aribaud Date: Tue, 13 Jan 2015 02:27:16 +0530 Message-Id: <1421096236-27820-1-git-send-email-arnab_basu@rocketmail.com> X-Mailer: git-send-email 1.9.1 X-Mailman-Approved-At: Mon, 12 Jan 2015 22:01:16 +0100 Cc: stuart.yoder@freescale.com, Marc Zyngier , yorksun@freescale.com Subject: [U-Boot] [PATCH v2 8/9] ARMv8: PSCI: Setup ARMv8 PSCI X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.13 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de Setup the ARMv8 PSCI code just before switching to EL2 and jumping to the kernel. Signed-off-by: Arnab Basu Cc: Bhupesh Sharma Cc: Marc Zyngier --- arch/arm/cpu/armv8/cpu.c | 23 +++++++++++++++++++++++ arch/arm/cpu/armv8/psci.S | 6 ++++++ arch/arm/include/asm/system.h | 3 +++ arch/arm/lib/bootm.c | 3 +++ 4 files changed, 35 insertions(+) diff --git a/arch/arm/cpu/armv8/cpu.c b/arch/arm/cpu/armv8/cpu.c index 2c8be1c..286ac05 100644 --- a/arch/arm/cpu/armv8/cpu.c +++ b/arch/arm/cpu/armv8/cpu.c @@ -154,3 +154,26 @@ int cleanup_before_linux(void) return 0; } + +#ifdef CONFIG_ARMV8_PSCI + +static void relocate_secure_section(void) +{ +#ifdef CONFIG_ARMV8_SECURE_BASE + size_t sz = __secure_end - __secure_start; + + memcpy((void *)CONFIG_ARMV8_SECURE_BASE, __secure_start, sz); + flush_dcache_range(CONFIG_ARMV8_SECURE_BASE, + CONFIG_ARMV8_SECURE_BASE + sz + 1); + invalidate_icache_all(); +#endif +} + +void setup_psci(void) +{ + relocate_secure_section(); + fixup_vectors(); + psci_arch_init(); +} + +#endif diff --git a/arch/arm/cpu/armv8/psci.S b/arch/arm/cpu/armv8/psci.S index 6028020..508e6eb 100644 --- a/arch/arm/cpu/armv8/psci.S +++ b/arch/arm/cpu/armv8/psci.S @@ -160,3 +160,9 @@ psci_vectors: b unhandled_exception /* Lower EL Error (64b) */ .popsection + +ENTRY(fixup_vectors) + adr x0, psci_vectors + msr vbar_el3, x0 + ret +ENDPROC(fixup_vectors) diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h index f3f4ace..a2074a4 100644 --- a/arch/arm/include/asm/system.h +++ b/arch/arm/include/asm/system.h @@ -78,6 +78,9 @@ void gic_send_sgi(unsigned long sgino); void wait_for_wakeup(void); void smp_kick_all_cpus(void); #ifdef CONFIG_ARMV8_PSCI +void setup_psci(void); +void fixup_vectors(void); +void psci_arch_init(void); extern char __secure_start[]; extern char __secure_end[]; #endif diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c index 0c1298a..0430fa5 100644 --- a/arch/arm/lib/bootm.c +++ b/arch/arm/lib/bootm.c @@ -275,6 +275,9 @@ static void boot_jump_linux(bootm_headers_t *images, int flag) announce_and_cleanup(fake); if (!fake) { +#ifdef CONFIG_ARMV8_PSCI + setup_psci(); +#endif do_nonsec_virt_switch(); kernel_entry(images->ft_addr, NULL, NULL, NULL); }