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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 95ED5ECAAD1 for ; Wed, 31 Aug 2022 08:09:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231325AbiHaIJK (ORCPT ); Wed, 31 Aug 2022 04:09:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48546 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230323AbiHaIJF (ORCPT ); Wed, 31 Aug 2022 04:09:05 -0400 Received: from xry111.site (xry111.site [89.208.246.23]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0D78CC4837 for ; Wed, 31 Aug 2022 01:09:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=xry111.site; s=default; t=1661933340; bh=dYM2ABHuBdNpbMeDD+pD09EJ4JGxsgtH346VLGYcKyI=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=S2xBrLTQ52BqHdMDrb/+Rj1dLynVRoX5yR9uxfrtB1v84BvZFdzMeRLSIl2VC6Rar U8Z9PHDsL9MM1UxWmrkaSXy/2cnfKDYDfH3UHcpJ+ttIoBP3WXLIObH3WUK6xxOa+H Ep2AfDsZ4MhNl687mOXXLSqvyBEBUPOyTeRlIotY= Received: from [IPv6:240e:358:118a:f800:dc73:854d:832e:4] (unknown [IPv6:240e:358:118a:f800:dc73:854d:832e:4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature ECDSA (P-384) server-digest SHA384) (Client did not present a certificate) (Authenticated sender: xry111@xry111.site) by xry111.site (Postfix) with ESMTPSA id 0702F66809; Wed, 31 Aug 2022 04:08:53 -0400 (EDT) Message-ID: Subject: Re: [PATCH v7 0/5] LoongArch: Support toolchain with new relocation types From: Xi Ruoyao To: Jinyang He , Huacai Chen , WANG Xuerui Cc: loongarch@lists.linux.dev, LKML , Youling Tang Date: Wed, 31 Aug 2022 16:08:39 +0800 In-Reply-To: References: <20220830104806.128365-1-xry111@xry111.site> <5b87173faeef587a2ffaaa6f58d34e0940231067.camel@xry111.site> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.45.2 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 2022-08-31 at 14:58 +0800, Jinyang He wrote: > That's right. Also I am wondering why new toolchain produce .got* in > kernel. It's unneeded. In the past, gcc create la.global and parsed > to la.pcrel by gas, and kernel works well. Now it seems we lost this > feature in gcc. I checked the x86 asm code just now. And some info > follows, >=20 > LoongArch64, ./net/ipv4/udp_diag.s, *have reloc hint* > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 pcalau12i=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 $r4,%got_pc_hi20(udplite_table) > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ld.d=C2=A0=C2=A0=C2=A0 $= r4,$r4,%got_pc_lo12(udplite_table) > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 b=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 udp_dump >=20 > x86_64, ./net/ipv4/udp_diag.s > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 movq=C2=A0=C2=A0=C2=A0 $= udplite_table, %rdi > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 jmp=C2=A0=C2=A0=C2=A0=C2= =A0 udp_dump >=20 > It seems related to -fno-PIE and -cmodel=3Dkernel on x86_64. > Hope new gcc with this feature now. On x86_64 -mcmodel=3Dkernel means "all code and data are located in [- 2GiB, 0) range. We actually don't strictly require a "high" range as we're mostly a PIC-friendly architecture: note that we use a pcalau12i/addi.d pair for PIC addressing in [PC-2GiB, PC+2GiB, and a lu12i.w/addi.d pair for "non-PIC" addressing in [-2GiB, 2GiB), both are 2-insn sequence. If we can put the main kernel image and the modules in one 2GiB VA range, we can avoid GOT completely. But it's not possible for now because main kernel image is loaded in XKPRANGE but the modules are in XKVRANGE. So the best we can achieve before implementing CONFIG_RELOCATION is using GOT in modules, and avoid GOT in the main kernel image (with a new code model in GCC, which will benefit both the kernel and statically linked executables). --=20 Xi Ruoyao School of Aerospace Science and Technology, Xidian University