Received: by 2002:ab2:7407:0:b0:1f4:b336:87c4 with SMTP id e7csp214504lqn; Thu, 11 Apr 2024 21:19:03 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCVyuohi0EfrIO8i8T/tJBrgOviiIJQ14+lxhF0WP8p7oY0N4nWzEdkP+cjy67l/u7iJLMDqQkVlHqVD5KhtRNVI9WB6o4tgyQ609i00Cg== X-Google-Smtp-Source: AGHT+IHZE5itQ1YdsyXfqBeROU3zyBcyZE7BEc1udUB+2CfseSe/9Vqul4Wbj3QetLulEtWMCn/o X-Received: by 2002:a17:90a:af93:b0:2a6:4b09:6602 with SMTP id w19-20020a17090aaf9300b002a64b096602mr1375019pjq.17.1712895542917; Thu, 11 Apr 2024 21:19:02 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712895542; cv=pass; d=google.com; s=arc-20160816; b=t8r1F3Zkt2jOyIjvsSb0ltuYp94hpqcwGNlJstW+aCySzq3QAtY/xarxJ1ijspasHt 6sXbHLHCVsmKaNmBjnaw2LC6NDkkXWSP7K1+4YotAZwUhbsmInfTaUZabSk8GEf7PPkl e2yyT71CCBQ/Gj8vap8eJRS9uTc1nJvU3VZRC7H8X+6f0DIAJuaW2imSbH3nNNLyWRI8 c3R1wqyUdOmR8t9PNhjNW5haciAZp0WPgZq30Vq+kAKzfo1VeRfbXdKHOfxrJLhsbhl0 J02f9/rWRDoEI1IFsMV4SVD/S7eHPaVPmbfNXIjSUp1lbmJu+KSbFX/8l1df//JkNmH/ zVtw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:list-unsubscribe:list-subscribe :list-id:precedence:dkim-signature; bh=fo5SLf6qc+k7TZKo1hv/1vmHlI1sXYZyAiVXB7lRwtU=; fh=SsZ0LaqKE9o1LXy0tIkqm0k3KzkdbiofYKjGLbQA+kg=; b=DMlXf/sUGqEnI5IYHUnKR+NRQ9UK5oqqWNRBH2UmyyHrM1iWYrsLSfvvNk+Et70Mv7 K4EEyy6nZ0NuQtw2GfvQjTHM8loENZkfD9WUFQWawR7W68eWXhynxCUNIg3f+VBDkjxK Lqb8xZYo3GkehQh5EsoNiXBvJgtZ6zCiA+473B/mPAFbnJkOtHGFEbHs4ncxJFm0P+bm MZU6dI+GLZhpQ8OrMltC01bcob5N2oQUfSDL/MiOShOpP+q8t4KsXOiTL4WpFvCrWccE Ef/dVRx+crnaavJrR9NjQ28Oewg7n+Zzzo8YBDIT2pFpNxKYHPEwV02V7H7mrqSnBWK+ V2sw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=onlePDWk; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-141915-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-141915-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id bg10-20020a17090b0d8a00b002a29d72cf8fsi4665036pjb.26.2024.04.11.21.19.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Apr 2024 21:19:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-141915-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=onlePDWk; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-141915-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-141915-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 94F8428178E for ; Fri, 12 Apr 2024 04:19:02 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4F6FE17C96; Fri, 12 Apr 2024 04:18:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="onlePDWk" Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 797751B5AA for ; Fri, 12 Apr 2024 04:18:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712895536; cv=none; b=TOQ3SqtY5Id01Rl91Y8gj60IC1cvphD7ObH4BhywjHUjj8BiPWvr0yDIJRa6YDNQwNospEtH7mv8Wjk84BVexiIH1ThWepFIV/cgYz2Nb0hlFijwvdZSYC4QNv85N0aUe9MjZK+Ql976QMNhkgkzYVl26rctfUavSEAFEO7Vpzc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712895536; c=relaxed/simple; bh=9qZzQZ/0gGIJAQ+03rAWiljV9/jUKUWMrXaa+HpiIv0=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=U/lC4AURrZhxv/9/yQHMxO/Jz+yQUJfpf//9+ei+y9pQYsjiYZZES+/BLOYdYdqt6MPTucn9EPhU4P7GPYJO9e1+rw5KRICZASdokibja7sv7TE94p1xMz9TAfAphJlKNtRKHyA20uwNRie3pnOjjNFg1Z0/yjgq6sRc1PZfKGM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=onlePDWk; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 55BB1C4AF07 for ; Fri, 12 Apr 2024 04:18:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712895536; bh=9qZzQZ/0gGIJAQ+03rAWiljV9/jUKUWMrXaa+HpiIv0=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=onlePDWkN9uI2Lx4cugi/tuUAzigRCYq13jXCu+K8rPuxcm4xep0+KH5u0xhUmecg zS6oCXBn06utl5tfVEVoi7Xllylf15OBeV2zCdzIibLA2KwskOq2BuqvABQEKhBsO6 0aUVBgX1WLL8hEnLfhJO21gyBaDb5PkKLd0h9SJhmdDlABVfWySVJLmShMItMDWX20 YRBAcFlpL5bIO2HiltyvrqBM1FZH6ikEZWUU7KztjllziiPSxBRJAI/3ovfzArqkcn CLz+a2mIgaQmCjdlfDaSq8GZHDfUWk0YDls8IMW1xRLmckApTt/0v3okrqpkrTQdv7 vCs6eK03RwJCg== Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-a51addddbd4so51672366b.0 for ; Thu, 11 Apr 2024 21:18:56 -0700 (PDT) X-Forwarded-Encrypted: i=1; AJvYcCVvNq84Xyth1WV8O7GzFhJLe6u7wwtMm2z2j9vK/dcnSG9FE6j9dLR7J5LFQWfcCMjY9dPZxWgyrBgILdejvdckAeXHGHz6NRNHt0Ak X-Gm-Message-State: AOJu0YycvL11cUkO9jE5/VCHgSddTuKypTrTu7O1Aq99N8qXE90p1Tz/ JchAiwJZoRzxsGa2YOV5Zq48RHD9fwbe1xKmIS+dfE75mxIx3jx0vrKrwQvJer3hCPkRpEXjygc PKDiI3tqZ6xs4LwsqQXVeEPtU3kM= X-Received: by 2002:a17:907:868b:b0:a52:3654:e42 with SMTP id qa11-20020a170907868b00b00a5236540e42mr410913ejc.0.1712895534906; Thu, 11 Apr 2024 21:18:54 -0700 (PDT) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20240411010510.22135-1-yangtiezhu@loongson.cn> <20240411010510.22135-4-yangtiezhu@loongson.cn> In-Reply-To: <20240411010510.22135-4-yangtiezhu@loongson.cn> From: Huacai Chen Date: Fri, 12 Apr 2024 12:18:46 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v3 3/4] LoongArch: Save and restore PERCPU_BASE_KS for ACPI S3 state To: Tiezhu Yang Cc: Thomas Gleixner , Arnd Bergmann , Marc Zyngier , loongarch@lists.linux.dev, linux-kernel@vger.kernel.org, loongson-kernel@lists.loongnix.cn Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Tiezhu, On Thu, Apr 11, 2024 at 9:05=E2=80=AFAM Tiezhu Yang wrote: > > Currently, per_cpu_offset(x) is defined as __per_cpu_offset[x]) > only under CONFIG_SMP in include/asm-generic/percpu.h, that is > to say, the implementation of loongarch_common_resume() which > calls per_cpu_offset(0) is not suitable for the case of non-SMP, > so do not write per_cpu_offset(0) to PERCPU_BASE_KS when resume, > just save the value of PERCPU_BASE_KS when suspend and restore > it when resume to make it work well for both SMP and non-SMP. For non-SMP you need PERCPU_BASE_KS to do what? Huacai > > Tested with the command "rtcwake -d rtc1 -s 20 -m mem -v", dmesg > shows that "PM: suspend entry (deep)" and "PM: suspend exit". > > Signed-off-by: Tiezhu Yang > --- > arch/loongarch/power/suspend.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/arch/loongarch/power/suspend.c b/arch/loongarch/power/suspen= d.c > index 166d9e06a64b..7a97949ddade 100644 > --- a/arch/loongarch/power/suspend.c > +++ b/arch/loongarch/power/suspend.c > @@ -16,6 +16,7 @@ > #include > > u64 loongarch_suspend_addr; > +static u64 saved_pcpu_base; > > struct saved_registers { > u32 ecfg; > @@ -36,6 +37,7 @@ void loongarch_common_suspend(void) > saved_regs.pwctl1 =3D csr_read32(LOONGARCH_CSR_PWCTL1); > saved_regs.ecfg =3D csr_read32(LOONGARCH_CSR_ECFG); > saved_regs.euen =3D csr_read32(LOONGARCH_CSR_EUEN); > + saved_pcpu_base =3D csr_read64(PERCPU_BASE_KS); > > loongarch_suspend_addr =3D loongson_sysconf.suspend_addr; > } > @@ -44,7 +46,7 @@ void loongarch_common_resume(void) > { > sync_counter(); > local_flush_tlb_all(); > - csr_write64(per_cpu_offset(0), PERCPU_BASE_KS); > + csr_write64(saved_pcpu_base, PERCPU_BASE_KS); > csr_write64(eentry, LOONGARCH_CSR_EENTRY); > csr_write64(eentry, LOONGARCH_CSR_MERRENTRY); > csr_write64(tlbrentry, LOONGARCH_CSR_TLBRENTRY); > -- > 2.42.0 > >