From patchwork Mon Jan 11 15:17:03 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Krummenacher X-Patchwork-Id: 12010939 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.7 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 866F5C433E6 for ; Mon, 11 Jan 2021 15:18:44 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2F898229CA for ; Mon, 11 Jan 2021 15:18:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2F898229CA Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To:From: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=5Zvk9UlxsyAmau5iqgfF+haS2J2AFs0pIL9h0FTlpKE=; b=KPZnTN7rPEcquoycWtKNWOQ+NU WnbFEM1HiWCPLVmGIJEA6//bblYlDzVQaDkDtuRdQZVnQQ4DzOHXuTUc45fmgtqgIwFf3x6qbl77d kFUQRU3sccLp93dond0CsSTx3R2Ca1WYGLkhHa4TbwqxOg1VPJ3nZttQJmg0LlGnapuwq+fNxZz1v 0Fuge0cNd3Me7W5sSxQM/pR9CNchbd+8RiWFFwiWy9SwjiAGensNSHWHTu8J6qE5n9CdOcOgU2aoG Ox2tTCOQEmjFpnAQR3t8O4S5Inelz2UBWIW6YNmQ+7Y9VlleLDWcPBZAqNDavDgmqXe1zOE32epbj HYs+mmog==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kyywd-0000uy-SF; Mon, 11 Jan 2021 15:17:23 +0000 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kyywa-0000tu-JA for linux-arm-kernel@lists.infradead.org; Mon, 11 Jan 2021 15:17:21 +0000 Received: by mail-wm1-x32b.google.com with SMTP id c133so155275wme.4 for ; Mon, 11 Jan 2021 07:17:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=0TcPx+7pAz4mOWYUryj7o7tYaRTL8G4UVxUnW9m5I0k=; b=DEoO57eOc347UcLngC0mqGHqk13ZR+N6Vrv8iz9hXRyaMX1xMe+Cs1ifYqtzUA0nvd NQ57pZZKtYCU7ijRMRto7TtcU5RkH+RdDSjvymjocAbTyvIAHRGm14km6TRxdbqYIQAw NvQAY7kBorhPVZWQmSrYKWvUXbk5uBHNXBpjLW6OWPG/lj4zfAQwpxJYm4sow14P5lmJ uPRpj9aOo8/dLS75aaWftnEmBxt8tOgOJyB3By8UYlLYz4OIegliGMPaWvq+pMtZIt2T IPsphoISuAHVfmmRfpSDUQPQGfjXQ5EpClKGkjrsyFwCjKUd9egsvOUJwuR7O3l9l4D/ 4sNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=0TcPx+7pAz4mOWYUryj7o7tYaRTL8G4UVxUnW9m5I0k=; b=SKcj1FXm4FHnvc+cYUvB2QIXKAeUjjtR6d2fw1PhFuSFZPpSnfRsemWLYITgvM1u5J CRrsHIB8G6kQxAjfAnKQUM1IA+lhacqfrtUWZInrtHrFVw8y24CmysvBCRH66JzrmPpk hWQlVKMCgGo6z5Uq4NcchpYvtNV0ADj8qrMP5tF6RH4N5LsdY/OiZ14yrf5ZvUZFUgLY oUbfvZYKWN5lHaQeGPKi9ftb0Dey4PLhuPmDv3Mv347YzMvrYTj3ymfPzXbILbzWp+W3 d6jUd88V2p7o0Msizdaa4mVFdh8rWLYIeumUUEWMFzJ0mvWflySZjnB3tm7PY99ucfaQ 3O+Q== X-Gm-Message-State: AOAM532Ze5VQuMUCaB+NyAObN1+FzZx/agbFgdic7U1JBztPOLCczr+u V6HrS7Es0WNC4tUi4rs97hs= X-Google-Smtp-Source: ABdhPJzw1xmUcOJ05wP+KGreicwg6Mno9pFPVs5TMOS191SkVsAXLEG9EhYrETFd4Xn1hNBtx1X5gA== X-Received: by 2002:a05:600c:2117:: with SMTP id u23mr145106wml.153.1610378237257; Mon, 11 Jan 2021 07:17:17 -0800 (PST) Received: from Saturn.local.all ([81.221.211.103]) by smtp.gmail.com with ESMTPSA id h5sm25549623wrp.56.2021.01.11.07.17.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Jan 2021 07:17:16 -0800 (PST) From: Max Krummenacher X-Google-Original-From: Max Krummenacher To: Max Krummenacher Subject: [PATCH 0/1] ARM: imx: build suspend-imx6.S with arm instruction set Date: Mon, 11 Jan 2021 16:17:03 +0100 Message-Id: <20210111151704.26296-1-max.krummenacher@toradex.com> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210111_101720_652582_714ACFF9 X-CRM114-Status: GOOD ( 15.83 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Rouven Czerwinski , Pengutronix Kernel Team , Shawn Guo , Sascha Hauer , linux-kernel@vger.kernel.org, Russell King , NXP Linux Team , Max Krummenacher , Ahmad Fatoum , Fabio Estevam , linux-arm-kernel@lists.infradead.org, Lucas Stach Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org When the kernel is configured to use the Thumb-2 instruction set "suspend-to-memory" fails to resume while in ARM mode it works as expected. (I used imx_v6_v7_defconfig and deselected ARCH_MULTI_V6 and selected THUMB2_KERNEL) The system prints what is expected when suspending but an event of a wakeup source does give no output. root@colibri-imx6ull:~# echo mem > /sys/power/state [ 58.610809] PM: suspend entry (deep) [ 58.629354] Filesystems sync: 0.014 seconds [ 58.653411] Freezing user space processes ... (elapsed 0.001 seconds) done. [ 58.661941] OOM killer disabled. [ 58.665176] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done. [ 58.674028] printk: Suspending console(s) (use no_console_suspend to debug) -> trigger wakeup event, no reaction. It looks like the CPU resumes unconditionally in ARM instruction mode and then chokes on the presented Thumb-2 code it should execute on resume. With the following code change resume succeeds. I propose however to compile the whole file in ARM mode and have the linker taking care of the ARM/Thumb-2 switching. This would also keep the code working if a i.MX CPU variant exists that resumes in the same mode in which it went to sleep. Max Krummenacher (1): ARM: imx: build suspend-imx6.S with arm instruction set arch/arm/mach-imx/suspend-imx6.S | 1 + 1 file changed, 1 insertion(+) --- a/arch/arm/mach-imx/suspend-imx6.S +++ b/arch/arm/mach-imx/suspend-imx6.S @@ -287,11 +286,20 @@ rbc_loop: bne rbc_loop /* Zzz, enter stop mode */ wfi +#ifdef CONFIG_THUMB2_KERNEL + /* i.MX CPUs seem to leave stop mode set to ARM instruction set */ + .arm +#endif nop nop nop nop +#ifdef CONFIG_THUMB2_KERNEL + /* switch to Thumb2 mode */ + sub pc, pc, #3 + .thumb +#endif /*