From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 4D764C00140 for ; Fri, 12 Aug 2022 11:48:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=p0Diz1GI40L2zzStzengGx1C+qRgJ7XPNyp1ZxRaSaU=; b=24b6KVZGgm8w0E BiOdGzYKJHw5k3SSezbkv66pnb6+MF1NpIE6ERN7LgG/RYQDv8k6ngDIm4YjE0FU1g6LGKUuTm3ME Hov2GEKSJfdBMP272s5YjfpoiaffKinQgN8LuHy76BFT83ZaHj4vK7tZKwhpxAnRrqLwYpjVl+qAT UF7J4dmzh3+DWXv3STsV0S/Y4vFlcItCupDK5qXTkoHmCt+OfbFJsxd9t98AOj7CUNXNy6H6toL8K b6ATfhaIdIXn1+Fzxe6YoK3z2pRkEccLNTZs2+DMR0+Hq6GrZIQFl8D0ac6IHwzWtFhYgD5Fevp9z eRuwCCn+87S8o8dqNa3w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oMT8E-006pKH-7n; Fri, 12 Aug 2022 11:47:14 +0000 Received: from pandora.armlinux.org.uk ([2001:4d48:ad52:32c8:5054:ff:fe00:142]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oMT88-006pFM-FB for linux-arm-kernel@lists.infradead.org; Fri, 12 Aug 2022 11:47:11 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=armlinux.org.uk; s=pandora-2019; h=Sender:In-Reply-To:Content-Type: MIME-Version:References:Message-ID:Subject:Cc:To:From:Date:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=+sF9TFYuFdJ/uXt4ET5sFZ+ysN/m6Z0V/QXevx4yUns=; b=Tzgpe640gDFS6KhF/FvRAz73Tu ctg11KbFMx1YSXFMM1ODEfDOGjE309AEMZaUVca6/S8vdIV9yhctCPIbhJ50rn/vOzbGPT50a7x9c GSiYUNbUMDgjP61GZ53VyRQs24xK0CnhTz/oa/Ew/gFCTH6X+IZkazbjhgxq6dYDGPQN7cnzTzFLR T+k6arXUrqhv4hcSUFMQl7cFSrkuwnFMe1sBz12tSRZ3yg6YfWKH4OF7TvNYhzFDA1MyqXauVkcOx 9zwZeY8yBCqzJ62d1vs9cpOeKGdumCazcBR5cgj2RuTZ7iIHRhGvOAi/gCoEplMWk8SpvM4qdK/hm cEJBcY4w==; Received: from shell.armlinux.org.uk ([fd8f:7570:feb6:1:5054:ff:fe00:4ec]:33760) by pandora.armlinux.org.uk with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1oMT7x-0000E6-8o; Fri, 12 Aug 2022 12:46:57 +0100 Received: from linux by shell.armlinux.org.uk with local (Exim 4.94.2) (envelope-from ) id 1oMT7v-0000u3-2m; Fri, 12 Aug 2022 12:46:55 +0100 Date: Fri, 12 Aug 2022 12:46:55 +0100 From: "Russell King (Oracle)" To: Catalin Marinas , Will Deacon Cc: linux-arm-kernel@lists.infradead.org Subject: Re: [arm:ktext 16/19] arch/arm64/mm/ktext.c:96:17: error: implicit declaration of function 'clean_dcache_range_nopatch' Message-ID: References: <202208120434.0ibxs7Y5-lkp@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <202208120434.0ibxs7Y5-lkp@intel.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220812_044708_694632_F0294351 X-CRM114-Status: GOOD ( 26.69 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org ARM64 folk, What do you think would be the best way to fix the issue with clean_dcache_range_nopatch() in this patch set? I see two possible solutions to it: 1) duplicate clean_dcache_range_nopatch() in arch/arm64/mm/ktext.c 2) make clean_dcache_range_nopatch() globally visible so ktext.c can call it. Neither of these feels like a great solution. I've thought about moving the code into arch/arm64/kernel/alternative.c but that means making other stuff globally visible instead. So it seems to be a case of what is the lesser of all the evils. The patch can be viewed at: http://git.armlinux.org.uk/cgit/linux-arm.git/commit/?h=ktext&id=b8557d9117093ebe17320d36dadd47fc742820c9 Thanks. On Fri, Aug 12, 2022 at 04:50:31AM +0800, kernel test robot wrote: > Hi Russell, > > First bad commit (maybe != root cause): > > tree: git://git.armlinux.org.uk/~rmk/linux-arm.git ktext > head: 6f969d4aee6bbafad356a7bae6e37d9e2dce9e08 > commit: 5e25ed1e1f5ddef3d1be949922f9ea10c2e45b24 [16/19] arm64: text replication: add Kconfig > config: arm64-allyesconfig (https://download.01.org/0day-ci/archive/20220812/202208120434.0ibxs7Y5-lkp@intel.com/config) > compiler: aarch64-linux-gcc (GCC) 12.1.0 > reproduce (this is a W=1 build): > wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross > chmod +x ~/bin/make.cross > git remote add arm git://git.armlinux.org.uk/~rmk/linux-arm.git > git fetch --no-tags arm ktext > git checkout 5e25ed1e1f5ddef3d1be949922f9ea10c2e45b24 > # save the config file > mkdir build_dir && cp config build_dir/.config > COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash arch/arm64/ > > If you fix the issue, kindly add following tag where applicable > Reported-by: kernel test robot > > All errors (new ones prefixed by >>): > > arch/arm64/mm/ktext.c: In function 'ktext_replication_patch_alternative': > >> arch/arm64/mm/ktext.c:96:17: error: implicit declaration of function 'clean_dcache_range_nopatch' [-Werror=implicit-function-declaration] > 96 | clean_dcache_range_nopatch((u64)p, (u64)p + size); > | ^~~~~~~~~~~~~~~~~~~~~~~~~~ > arch/arm64/mm/ktext.c: In function 'ktext_replication_init': > >> arch/arm64/mm/ktext.c:145:37: error: implicit declaration of function 'memblock_alloc_node'; did you mean 'kmem_cache_alloc_node'? [-Werror=implicit-function-declaration] > 145 | kernel_texts[nid] = memblock_alloc_node(size, PAGE_SIZE, nid); > | ^~~~~~~~~~~~~~~~~~~ > | kmem_cache_alloc_node > arch/arm64/mm/ktext.c:145:35: warning: assignment to 'void *' from 'int' makes pointer from integer without a cast [-Wint-conversion] > 145 | kernel_texts[nid] = memblock_alloc_node(size, PAGE_SIZE, nid); > | ^ > arch/arm64/mm/ktext.c:151:31: warning: assignment to 'struct pgtables *' from 'int' makes pointer from integer without a cast [-Wint-conversion] > 151 | pgtables[nid] = memblock_alloc_node(sizeof(*pgtables[0]), > | ^ > cc1: some warnings being treated as errors > > > vim +/clean_dcache_range_nopatch +96 arch/arm64/mm/ktext.c > > b8557d9117093e Russell King (Oracle 2022-05-24 73) > b8557d9117093e Russell King (Oracle 2022-05-24 74) /* Copy the patched alternative from the node0 image to the other > b8557d9117093e Russell King (Oracle 2022-05-24 75) * modes. src is the node 0 linear-mapping address. > b8557d9117093e Russell King (Oracle 2022-05-24 76) */ > b8557d9117093e Russell King (Oracle 2022-05-24 77) void ktext_replication_patch_alternative(__le32 *src, int nr_inst) > b8557d9117093e Russell King (Oracle 2022-05-24 78) { > b8557d9117093e Russell King (Oracle 2022-05-24 79) unsigned long offset; > b8557d9117093e Russell King (Oracle 2022-05-24 80) size_t size; > b8557d9117093e Russell King (Oracle 2022-05-24 81) int nid; > b8557d9117093e Russell King (Oracle 2022-05-24 82) __le32 *p; > b8557d9117093e Russell King (Oracle 2022-05-24 83) > b8557d9117093e Russell King (Oracle 2022-05-24 84) offset = (unsigned long)src - (unsigned long)lm_alias(_stext); > b8557d9117093e Russell King (Oracle 2022-05-24 85) if (WARN_ON_ONCE(offset >= _etext - _stext)) > b8557d9117093e Russell King (Oracle 2022-05-24 86) return; > b8557d9117093e Russell King (Oracle 2022-05-24 87) > b8557d9117093e Russell King (Oracle 2022-05-24 88) size = AARCH64_INSN_SIZE * nr_inst; > b8557d9117093e Russell King (Oracle 2022-05-24 89) > b8557d9117093e Russell King (Oracle 2022-05-24 90) for_each_node(nid) { > b8557d9117093e Russell King (Oracle 2022-05-24 91) if (!kernel_texts[nid]) > b8557d9117093e Russell King (Oracle 2022-05-24 92) continue; > b8557d9117093e Russell King (Oracle 2022-05-24 93) > b8557d9117093e Russell King (Oracle 2022-05-24 94) p = kernel_texts[nid] + offset; > b8557d9117093e Russell King (Oracle 2022-05-24 95) memcpy(p, src, size); > b8557d9117093e Russell King (Oracle 2022-05-24 @96) clean_dcache_range_nopatch((u64)p, (u64)p + size); > b8557d9117093e Russell King (Oracle 2022-05-24 97) } > b8557d9117093e Russell King (Oracle 2022-05-24 98) } > b8557d9117093e Russell King (Oracle 2022-05-24 99) > c328a296007681 Russell King (Oracle 2022-07-07 100) static bool ktext_enabled = true; > c328a296007681 Russell King (Oracle 2022-07-07 101) > c328a296007681 Russell King (Oracle 2022-07-07 102) static int __init parse_ktext(char *str) > c328a296007681 Russell King (Oracle 2022-07-07 103) { > c328a296007681 Russell King (Oracle 2022-07-07 104) bool enabled; > c328a296007681 Russell King (Oracle 2022-07-07 105) int ret = strtobool(str, &enabled); > c328a296007681 Russell King (Oracle 2022-07-07 106) > c328a296007681 Russell King (Oracle 2022-07-07 107) if (ret) > c328a296007681 Russell King (Oracle 2022-07-07 108) return ret; > c328a296007681 Russell King (Oracle 2022-07-07 109) > c328a296007681 Russell King (Oracle 2022-07-07 110) ktext_enabled = enabled; > c328a296007681 Russell King (Oracle 2022-07-07 111) return 0; > c328a296007681 Russell King (Oracle 2022-07-07 112) } > c328a296007681 Russell King (Oracle 2022-07-07 113) early_param("ktext", parse_ktext); > c328a296007681 Russell King (Oracle 2022-07-07 114) > 06e9efea0a2391 Russell King (Oracle 2022-04-20 115) /* Allocate page tables and memory for the replicated kernel texts. */ > 4a17b67dc0c254 Russell King (Oracle 2022-04-21 116) void ktext_replication_init(void) > 4a17b67dc0c254 Russell King (Oracle 2022-04-21 117) { > c5ce21bcc37dcf Russell King (Oracle 2022-06-17 118) size_t size = __end_rodata - _stext; > cc8a46d8fdca7d Russell King (Oracle 2022-04-21 119) int kidx = pgd_index((phys_addr_t)KERNEL_START); > 62f0b42355e0b5 Russell King (Oracle 2022-05-16 120) int nid; > cc8a46d8fdca7d Russell King (Oracle 2022-04-21 121) > cc8a46d8fdca7d Russell King (Oracle 2022-04-21 122) /* > cc8a46d8fdca7d Russell King (Oracle 2022-04-21 123) * If we've messed up and the kernel shares a L0 entry with the > cc8a46d8fdca7d Russell King (Oracle 2022-04-21 124) * module or vmalloc area, then don't even attempt to use text > cc8a46d8fdca7d Russell King (Oracle 2022-04-21 125) * replication. > cc8a46d8fdca7d Russell King (Oracle 2022-04-21 126) */ > cc8a46d8fdca7d Russell King (Oracle 2022-04-21 127) if (pgd_index(MODULES_VADDR) == kidx) { > cc8a46d8fdca7d Russell King (Oracle 2022-04-21 128) pr_warn("Kernel is located in the same L0 index as modules - text replication disabled\n"); > cc8a46d8fdca7d Russell King (Oracle 2022-04-21 129) return; > cc8a46d8fdca7d Russell King (Oracle 2022-04-21 130) } > cc8a46d8fdca7d Russell King (Oracle 2022-04-21 131) if (pgd_index(VMALLOC_START) == kidx) { > cc8a46d8fdca7d Russell King (Oracle 2022-04-21 132) pr_warn("Kernel is located in the same L0 index as vmalloc - text replication disabled\n"); > cc8a46d8fdca7d Russell King (Oracle 2022-04-21 133) return; > cc8a46d8fdca7d Russell King (Oracle 2022-04-21 134) } > 62f0b42355e0b5 Russell King (Oracle 2022-05-16 135) > c328a296007681 Russell King (Oracle 2022-07-07 136) if (!ktext_enabled) > c328a296007681 Russell King (Oracle 2022-07-07 137) return; > c328a296007681 Russell King (Oracle 2022-07-07 138) > 62f0b42355e0b5 Russell King (Oracle 2022-05-16 139) for_each_node(nid) { > 62f0b42355e0b5 Russell King (Oracle 2022-05-16 140) /* Nothing to do for node 0 */ > 62f0b42355e0b5 Russell King (Oracle 2022-05-16 141) if (!nid) > 62f0b42355e0b5 Russell King (Oracle 2022-05-16 142) continue; > 62f0b42355e0b5 Russell King (Oracle 2022-05-16 143) > 62f0b42355e0b5 Russell King (Oracle 2022-05-16 144) /* Allocate and copy initial kernel text for this node */ > 62f0b42355e0b5 Russell King (Oracle 2022-05-16 @145) kernel_texts[nid] = memblock_alloc_node(size, PAGE_SIZE, nid); > 62f0b42355e0b5 Russell King (Oracle 2022-05-16 146) memcpy(kernel_texts[nid], _stext, size); > 62f0b42355e0b5 Russell King (Oracle 2022-05-16 147) caches_clean_inval_pou((u64)kernel_texts[nid], > 62f0b42355e0b5 Russell King (Oracle 2022-05-16 148) (u64)kernel_texts[nid] + size); > 06e9efea0a2391 Russell King (Oracle 2022-04-20 149) > 06e9efea0a2391 Russell King (Oracle 2022-04-20 150) /* Allocate the pagetables for this node */ > 06e9efea0a2391 Russell King (Oracle 2022-04-20 151) pgtables[nid] = memblock_alloc_node(sizeof(*pgtables[0]), > 06e9efea0a2391 Russell King (Oracle 2022-04-20 152) PGD_SIZE, nid); > 06e9efea0a2391 Russell King (Oracle 2022-04-20 153) > 06e9efea0a2391 Russell King (Oracle 2022-04-20 154) /* Copy initial swapper page directory */ > 06e9efea0a2391 Russell King (Oracle 2022-04-20 155) memcpy(pgtables[nid]->swapper_pg_dir, swapper_pg_dir, PGD_SIZE); > 26904e19f00089 Russell King (Oracle 2022-05-16 156) > 26904e19f00089 Russell King (Oracle 2022-05-16 157) /* Clear the kernel mapping */ > 26904e19f00089 Russell King (Oracle 2022-05-16 158) memset(&pgtables[nid]->swapper_pg_dir[kidx], 0, > 26904e19f00089 Russell King (Oracle 2022-05-16 159) sizeof(pgtables[nid]->swapper_pg_dir[kidx])); > 26904e19f00089 Russell King (Oracle 2022-05-16 160) > 26904e19f00089 Russell King (Oracle 2022-05-16 161) /* Create kernel mapping pointing at our local copy */ > 26904e19f00089 Russell King (Oracle 2022-05-16 162) create_kernel_nid_map(pgtables[nid]->swapper_pg_dir, > 26904e19f00089 Russell King (Oracle 2022-05-16 163) kernel_texts[nid]); > 06e9efea0a2391 Russell King (Oracle 2022-04-20 164) } > 06e9efea0a2391 Russell King (Oracle 2022-04-20 165) } > 06e9efea0a2391 Russell King (Oracle 2022-04-20 166) > > :::::: The code at line 96 was first introduced by commit > :::::: b8557d9117093ebe17320d36dadd47fc742820c9 arm64: text replication: add node text patching > > :::::: TO: Russell King (Oracle) > :::::: CC: Russell King (Oracle) > > -- > 0-DAY CI Kernel Test Service > https://01.org/lkp > -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last! _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel