Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp610217pxk; Wed, 16 Sep 2020 12:08:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzh95dkwEIzpY/2PEidNeURVijVekvD2cGn69RFDRbi6i3du+ZOjf7hJ/hgUrlOVXPMDmSi X-Received: by 2002:a17:906:838f:: with SMTP id p15mr28134020ejx.315.1600283302715; Wed, 16 Sep 2020 12:08:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1600283302; cv=none; d=google.com; s=arc-20160816; b=BUfqNRxcm3UVjHGvF1V9twmfftEeyQQ+LViWjyMvii+VxOURVKjgOlI9JM7feq3Bgi O2AMLrdnelPznxPdY2Cxf64bSJH0lH09z470h+LG4EfQoRAbs4ogPr1+PcPfTLn+gcGe k+1RqAJns1ysaBWCdJG7Mlg1zbDx3U/mmKLE7U2eyPV9NziGEWHOuzOkIuOwhOuGY0Zq SWiZj5MLJNFW40ephvraLY6ztbNiC6WNr+35bFvgI7tUcjleWTUCmhQp+oN86aajYWy8 IyVmSgYG0Zye7mNIYtr2TQGpdwVjmkYIZtShGVYyLLRSjZGawzdb96VDJkYNcnoj2pqf Lt8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=GgcynWy9C9EPljRb5+BynNpt9xyyYjESmqZIPh2nC2k=; b=Ba+M+CeQNrLf8a509s1UoSF+QjKyp3OhKdx4t4fTX8R41tR5RFFfHNdHgHz6+lBV1v x2XY0OXJzzBO9e4Xhq/JfSbZ7fqf9pRE9tGWQrURVbtxu+YbajRtKEKD2W6FCNN8ebSG XURYWIDXd+YiLTC9gq8hoegciAwmHE1Wo65bXX6AttPU5tajKnQlRLwnkctzmZ3WrAS+ JCfuUIhBqtp8RI2McaUf8I2URYPuli3KRNj9FmEW3gZhbwCGKM0Oake/ljBWux/DMJcz YGLH6GlzXE3zlpEBjKa5VGoILfuKrsR1uM1KBZISzmI9S70/0fM4g/MDBCbUlybjm2U3 1F4A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=clfcM+a6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o13si13015847edr.482.2020.09.16.12.07.59; Wed, 16 Sep 2020 12:08:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=clfcM+a6; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728246AbgIPTGT (ORCPT + 99 others); Wed, 16 Sep 2020 15:06:19 -0400 Received: from mail.kernel.org ([198.145.29.99]:36800 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727405AbgIPRpm (ORCPT ); Wed, 16 Sep 2020 13:45:42 -0400 Received: from willie-the-truck (236.31.169.217.in-addr.arpa [217.169.31.236]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C66EC22225; Wed, 16 Sep 2020 12:39:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1600259962; bh=SG4MuQp/zwduxe3VaSSRDORy0X7NqWtWqo77LpwkLVw=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=clfcM+a6rpyIvjE9f/xKkFEArCvnhlB83pHLnB4FRf9h/LWBgsDNWuLET6KuYTnlg ipu1/I8F0W3MU7Xv6S7hEF6BswSLvz2VZlaBcO+rZHonVu7dRFYKA54uWJ7VdXESG3 ryxftx2FjhHc+UTLAyC8ogG/hxgTSlN2VjehXuzo= Date: Wed, 16 Sep 2020 13:39:14 +0100 From: Will Deacon To: David Brazdil Cc: Marc Zyngier , Catalin Marinas , Dennis Zhou , Tejun Heo , Christoph Lameter , Arnd Bergmann , James Morse , Julien Thierry , Suzuki K Poulose , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kvmarm@lists.cs.columbia.edu, linux-arch@vger.kernel.org, kernel-team@android.com Subject: Re: [PATCH v2 00/10] Independent per-CPU data section for nVHE Message-ID: <20200916123913.GA28056@willie-the-truck> References: <20200903091712.46456-1-dbrazdil@google.com> <20200914174008.GA25238@willie-the-truck> <20200916115404.rhv4dkyjz35e4x25@google.com> <20200916122412.elxfxbdygvmdgrj5@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200916122412.elxfxbdygvmdgrj5@google.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Sep 16, 2020 at 01:24:12PM +0100, David Brazdil wrote: > > I was also wondering about another approach - using the PERCPU_SECTION macro > > unchanged in the hyp linker script. It would lay out a single .data..percpu and > > we would then prefix it with .hyp and the symbols with __kvm_nvhe_ as with > > everything else. WDYT? Haven't tried that yet, could be a naive idea. > > Seems to work. Can't use PERCPU_SECTION directly because then we couldn't > rename it in the same linker script, but if we just unwrap that one layer > we can use PERCPU_INPUT. No global macro changes needed. > > Let me know what you think. > > ------8<------ > diff --git a/arch/arm64/kernel/vmlinux.lds.S b/arch/arm64/kernel/vmlinux.lds.S > index 5904a4de9f40..9e6bf21268f1 100644 > --- a/arch/arm64/kernel/vmlinux.lds.S > +++ b/arch/arm64/kernel/vmlinux.lds.S > @@ -195,11 +195,9 @@ SECTIONS > PERCPU_SECTION(L1_CACHE_BYTES) > > /* KVM nVHE per-cpu section */ > - #undef PERCPU_SECTION_NAME > - #undef PERCPU_SYMBOL_NAME > - #define PERCPU_SECTION_NAME(suffix) CONCAT3(.hyp, PERCPU_SECTION_BASE_NAME, suffix) > - #define PERCPU_SYMBOL_NAME(name) __kvm_nvhe_ ## name > - PERCPU_SECTION(L1_CACHE_BYTES) > + . = ALIGN(PAGE_SIZE); > + .hyp.data..percpu : { *(.hyp.data..percpu) } > + . = ALIGN(PAGE_SIZE); > > .rela.dyn : ALIGN(8) { > *(.rela .rela*) > diff --git a/arch/arm64/kvm/hyp/nvhe/hyp.lds.S b/arch/arm64/kvm/hyp/nvhe/hyp.lds.S > index 7d8c3fa004f4..1d8e4f7edc29 100644 > --- a/arch/arm64/kvm/hyp/nvhe/hyp.lds.S > +++ b/arch/arm64/kvm/hyp/nvhe/hyp.lds.S > @@ -4,6 +4,10 @@ > * Written by David Brazdil > */ > > +#include > +#include > +#include > + > /* > * Defines an ELF hyp section from input section @NAME and its subsections. > */ > @@ -11,9 +15,9 @@ > > SECTIONS { > HYP_SECTION(.text) > - HYP_SECTION(.data..percpu) > - HYP_SECTION(.data..percpu..first) > - HYP_SECTION(.data..percpu..page_aligned) > - HYP_SECTION(.data..percpu..read_mostly) > - HYP_SECTION(.data..percpu..shared_aligned) > + > + .hyp..data..percpu : { Too many '.'s here? > + __per_cpu_load = .; I don't think we need this symbol. Otherwise, idea looks good to me. Can you respin like this, but also incorporating some of the cleanup in the diff I posted, please? Will