From patchwork Tue Jun 13 07:26:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nylon Chen X-Patchwork-Id: 107127 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp362645vqr; Tue, 13 Jun 2023 00:32:06 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6LPfmnp4gyiQHJWbLN9B6ZfPDwjXscF1uhRUtE/CeVykwtehdJoXz1cVBLuGyg5Y2+sRbT X-Received: by 2002:a05:6a21:78e:b0:116:99fe:e6de with SMTP id mg14-20020a056a21078e00b0011699fee6demr11492418pzb.30.1686641526493; Tue, 13 Jun 2023 00:32:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686641526; cv=none; d=google.com; s=arc-20160816; b=N6Ni74Uievi9lba93xLgjHKIlvrU8y/D7EKHWwDkc5+POYJDFrboaAdwgreuT5xrkU m9iAv3uStYsJQ8yfwQ7oxd8yKIwgt8bKH6aP4/SweKamSeC2Q89VXIuvd4epJJGhqW6c Z7xTzAs9F/rxb8QsqyYo2c8xjM1lJkEwZThQtmAGtmkeOCTEZgnJwlNC0Q7k1MWo6q4l mQVQbLDbKtg5DpgpT4tAAyL0WoK1wbuYWKqTSthPOmTbGT6zO4FZXyoaALZgQ7XxDNuI ggXXVXyfGQAa/oWTPe2O1vy4iS9KB4Shq87hFUOHxz3YlfZ+Kq11e9ngqn5+bBEppCSl +APQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=XCTKwSM7nGfTgkpcwxuzbHKvrUHLJBGdS4r/wN5pXSo=; b=MkTZaBDTJZ3hxvyRQtscuoN6dw3YHtdipIT0LIY5UvuFAVClUogIE/NYaobbPBkAyu hU4CeDO24e+Hp0tm+gDr0yZ9FS+YvmRIecl40SAiwhjzJkOYRYPJC0kfaFT/q9lb1DCh Y5n/BTC1CuZU67tW55BtEHtvyeQI171vrMvTwA6r0VkNJH6JM4Pp6snqIXiPvWrpEkgf qJaO71cLuwHxFw7hSip3LCFatN6yY4+MEZVqvH8IFoBlAtiTDyY3ll9j+K59QWC+ulpS OiRfS+UQW9jODrRYK4g0oBm2SB7hmUf7UA7Fha6AYuIUYcvdMipe2cksQAi6xvypx0Rd liHQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sifive.com header.s=google header.b=LiWdB17E; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=sifive.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q27-20020a63751b000000b005348c54150bsi549489pgc.316.2023.06.13.00.31.54; Tue, 13 Jun 2023 00:32:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@sifive.com header.s=google header.b=LiWdB17E; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=sifive.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234770AbjFMH1S (ORCPT + 99 others); Tue, 13 Jun 2023 03:27:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59044 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238813AbjFMH0v (ORCPT ); Tue, 13 Jun 2023 03:26:51 -0400 Received: from mail-pl1-x62c.google.com (mail-pl1-x62c.google.com [IPv6:2607:f8b0:4864:20::62c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C6F7EAA for ; Tue, 13 Jun 2023 00:26:50 -0700 (PDT) Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-1b3ce6607cbso16667165ad.2 for ; Tue, 13 Jun 2023 00:26:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1686641210; x=1689233210; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=XCTKwSM7nGfTgkpcwxuzbHKvrUHLJBGdS4r/wN5pXSo=; b=LiWdB17E+jMG963EaRHIWlzJpAIjHvEvA6bk4BXb1N4r3YKPeO+SP2mkQPkR4PCnaz B6lk/eSWsSCcR7gIE0oL4Ngx0J5MrheuIJ1xyaQslocVd5ouF+kzNKZexYWLSd6q9J68 F5zIYtwYDGwrxB3ONyRFmJeIk7hWu3hzwrP3WffN7Dm4NOOeA3sNh9hjiGq2XOxmPFar ox0DLtxWHQDYLJFpcwamhFWtbh5XvtJQw9eiLbNyCcnrWLcQ4czn/Igkn9AmyAdnGzrR 4zNKIN8CJi7WJykqGqKHN5z9UxsgzEboK4ErLZYhiQSQbYBrU7Gq53w84BCT0soat3tP iYjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686641210; x=1689233210; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=XCTKwSM7nGfTgkpcwxuzbHKvrUHLJBGdS4r/wN5pXSo=; b=KUsaZ/aqJ3pdPrQnAnGEEBqwhkF6BuK0Ca8zRKcVzGLjiEZ36zJret9ye9jk8Neax9 +oTPwVQHFbnmOm+UNhsdPcM5KYmq6VAmdos3/f/d+Zwi84MLTgTlq9JGMpPPHgaqnINd sV0H+k7S/A3QsyrVnlXUjZBQrnY7p3T35AJXMu4kKGr8w2Zk0Eo/TkomP07VImwLZh0g xswEFI6e6veKlHvi0htPGrMKxBd6OEwWR5H0m/Wks6NwxLhqSBaDcTIk4P4+giv9X3s+ +6Gq+ja/SmFcuLnVpKmdSIozfJC/9C6M2/DI7d5n6CnKPamaA+XM+woFV+XSYSte0iM3 pK5w== X-Gm-Message-State: AC+VfDz1KPErOQKlkie3009LdEROgTzsRw4GvEeFYq4ZOpvxqixPnGv1 IIfwm1hi+Lmvy7mHxcgT1j8N87zH3d4UFpbY8oEdjnoElF00O6T0XNLTbjwu9sCBZ+bZqdmDqE5 4MJ+4lg1sAY1WFh9EaaKrvn2anUZkGwlSmHXUXh+uuFgY4C9kZtWESdCzQ6oPWZdLABvIXtMMf6 Cu8v44PLNwhw== X-Received: by 2002:a17:902:708a:b0:1b2:fa8:d9c9 with SMTP id z10-20020a170902708a00b001b20fa8d9c9mr8467088plk.49.1686641210024; Tue, 13 Jun 2023 00:26:50 -0700 (PDT) Received: from hsinchu15.internal.sifive.com (59-124-168-89.hinet-ip.hinet.net. [59.124.168.89]) by smtp.gmail.com with ESMTPSA id h4-20020a170902748400b001ab0d815dbbsm9446677pll.23.2023.06.13.00.26.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Jun 2023 00:26:49 -0700 (PDT) From: Nylon Chen To: linux-kernel@vger.kernel.org Cc: linux-riscv@lists.infradead.org, jszhang@kernel.org, conor.dooley@microchip.com, ajones@ventanamicro.com, aou@eecs.berkeley.edu, palmer@dabbelt.com, paul.walmsley@sifive.com, greentime.hu@sifive.com, zong.li@sifive.com, nylon7717@gmail.com, Nylon Chen Subject: [PATCH] RISC-V: Support 32_PCREL relocation type in kernel module Date: Tue, 13 Jun 2023 15:26:44 +0800 Message-Id: <20230613072644.10487-1-nylon.chen@sifive.com> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1768571825124757841?= X-GMAIL-MSGID: =?utf-8?q?1768571825124757841?= Signed-off-by: Nylon Chen --- arch/riscv/kernel/module.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/arch/riscv/kernel/module.c b/arch/riscv/kernel/module.c index 7c651d55fcbd..f52d8e3d4b63 100644 --- a/arch/riscv/kernel/module.c +++ b/arch/riscv/kernel/module.c @@ -310,6 +310,15 @@ static int apply_r_riscv_sub64_rela(struct module *me, u32 *location, return 0; } +static int apply_r_riscv_pcrel_32_rela(struct module *me, u32 *location, + Elf_Addr v) +{ + ptrdiff_t offset = (void *)v - (void *)location; + + *location = (*location & 0xffff0000) | (offset & 0xffff); + return 0; +} + static int (*reloc_handlers_rela[]) (struct module *me, u32 *location, Elf_Addr v) = { [R_RISCV_32] = apply_r_riscv_32_rela, @@ -335,6 +344,7 @@ static int (*reloc_handlers_rela[]) (struct module *me, u32 *location, [R_RISCV_SUB16] = apply_r_riscv_sub16_rela, [R_RISCV_SUB32] = apply_r_riscv_sub32_rela, [R_RISCV_SUB64] = apply_r_riscv_sub64_rela, + [R_RISCV_32_PCREL] = apply_r_riscv_pcrel_32_rela, }; int apply_relocate_add(Elf_Shdr *sechdrs, const char *strtab,