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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 01327C001DF for ; Thu, 19 Oct 2023 21:41:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 59D11800BD; Thu, 19 Oct 2023 17:41:30 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 54D00800BC; Thu, 19 Oct 2023 17:41:30 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 413D9800BD; Thu, 19 Oct 2023 17:41:30 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 30E17800BC for ; Thu, 19 Oct 2023 17:41:30 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id F3052B68AD for ; Thu, 19 Oct 2023 21:41:29 +0000 (UTC) X-FDA: 81363532698.02.1E5EB50 Received: from mail-ot1-f51.google.com (mail-ot1-f51.google.com [209.85.210.51]) by imf10.hostedemail.com (Postfix) with ESMTP id 0CA8BC001A for ; Thu, 19 Oct 2023 21:41:27 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b="F/mwpwjd"; dmarc=none; spf=pass (imf10.hostedemail.com: domain of charlie@rivosinc.com designates 209.85.210.51 as permitted sender) smtp.mailfrom=charlie@rivosinc.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1697751688; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=1PmU2FKsnzb5ZXX3tTX1X2BdGNJX62qrZ4JKEx6OuTU=; b=oe13wnISJp00QYwzA/DT0UZeE2qf+jQorfyMKIXBzCAeUBpomuVY1TfQWCjADBfHeFJ04C ukNCsBdXqm60g8PoZzeA8yhrPqfbCF0DjIEDBz143xAm1GJjhh6ZU3ufoAFFSlFl/Iyeyo Zqrg3wshxC4iqEfjkGXts9sVOPpdxig= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b="F/mwpwjd"; dmarc=none; spf=pass (imf10.hostedemail.com: domain of charlie@rivosinc.com designates 209.85.210.51 as permitted sender) smtp.mailfrom=charlie@rivosinc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1697751688; a=rsa-sha256; cv=none; b=p1Jh90tdFimoW6c0AnmsmHMSXppMpzdBKcGe0VbkaF1yTO0bk6+pPxdQ3oz/2eeb3qXc4l 5wI7j+74veUA+IvjXsvbsBb0x99RH09FzZKRbZo9pNXpS7An2jmiKiRoZjALM//Vi5OUL6 ydz6Y7fOH58okGYaqcBgWYhcwn59j0M= Received: by mail-ot1-f51.google.com with SMTP id 46e09a7af769-6cd09f51fe0so114631a34.1 for ; Thu, 19 Oct 2023 14:41:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1697751687; x=1698356487; darn=kvack.org; h=cc:to:content-transfer-encoding:mime-version:message-id:date :subject:from:from:to:cc:subject:date:message-id:reply-to; bh=1PmU2FKsnzb5ZXX3tTX1X2BdGNJX62qrZ4JKEx6OuTU=; b=F/mwpwjdzqQetmUyGkeXTmu43H+/VXhwBBqvOs7DeSa6YFPD4kDqpZKKMjycUi28oX sOCnsXmCwVqqgwhuWEeFUylcTBreNdWg8f1C8zVbb8Jaq2TLOCb5kfC1r+cUcPjI21Ks pU7e/cIz9kY6vkXOhS6gYTO9tCva3LKsbOQZSi/zWEELHNjjX5/VytB/+EVmwqc3o3x6 rLEPLokR3ZOO9dpLwpCwnkRt+b+euZLxeCmoNQF1ktxuMzJ7/ZNwT9ghYpUIqN92SHn6 1vaXFfSr4p0Wp5qK9vtFocAUFSXsDkg58FjxqBNnplJEWfJ6XR8/EoN5BYMbarXxKyGe Epmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697751687; x=1698356487; h=cc:to:content-transfer-encoding:mime-version:message-id:date :subject:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=1PmU2FKsnzb5ZXX3tTX1X2BdGNJX62qrZ4JKEx6OuTU=; b=WwrgzZXhDBw5ty7Comq6OeTp2zNKimh3swwna0bfw4NN2EVO8joLOIlfytbL5BFh7/ IoOTFlM6Mi1x7ih4yhuNyYdbXqeu4/VWSZ2xUQzUghLKHfmVSy8C6OK2Z/2a0PMd/e97 gA9hpIHtCQ3amhcK4rMJGb4WDnPZfuX1rZiRxvUqXK5GxJkgr5tZPuYVZGLZqQhl0iya H8zki0L25mjK+Rk3PpL2+QRUltKKKhSjQyLdm3Q7+BCxQz30sHOy89py5xpu3XBkVlj0 OXbEbVNK64wHkYNlFBOtYRuunNJ/GlUDTabsZUaD2gbRHhVS84sHu6s2K0h3yow1U+w7 FFcA== X-Gm-Message-State: AOJu0Yw4NX3Kyf2vWt5gQDCUEvu1FPRtdemKZwxfBmpMP54AksTbGN9k vzROSbqgF+QQxENVkdXzuuJ7Ig== X-Google-Smtp-Source: AGHT+IGPG6w5SHcB8Fe6oTorM2i0pm9QlPdmNXgGhPxZK621WOn1cjYRCOOGGek68mhOHXfNeLdemw== X-Received: by 2002:a05:6830:25d4:b0:6b8:f588:2c79 with SMTP id d20-20020a05683025d400b006b8f5882c79mr59079otu.1.1697751687063; Thu, 19 Oct 2023 14:41:27 -0700 (PDT) Received: from charlie.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id x19-20020a9d6293000000b006ce2c785ac7sm81812otk.8.2023.10.19.14.41.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Oct 2023 14:41:26 -0700 (PDT) From: Charlie Jenkins Subject: [PATCH v6 0/3] riscv: Add remaining module relocations and tests Date: Thu, 19 Oct 2023 14:41:23 -0700 Message-Id: <20231019-module_relocations-v6-0-94726e644321@rivosinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-B4-Tracking: v=1; b=H4sIAIOiMWUC/23Q0WoDIRAF0F8JPneLOjpm+9T/KKHsOmMjJGvRR FrC/ntNKGUpPt5h5gzcmyicIxfxsruJzDWWmJYW8Gkn/HFaPniI1LLQUoMc5X44J7qe+D3zKfn p0rbLEBA8E1o1kxPt8DNziF8P9O3Q8jGWS8rfjx9V3ae/nIIeV9Ugh3kG2ht07EZ4zbGmEhf/7 NNZ3MWq/xQlJXYV3RTjLKKxEJh8R4GNovoKNGVCdIFQOsVjRzFbxXUV05QRXLAcQGGQHcVulW7 N1TaFAjNoMhT8/17Wdf0Bv9/ugM8BAAA= To: linux-riscv@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: Eric Biederman , Kees Cook , Paul Walmsley , Palmer Dabbelt , Albert Ou , Andreas Schwab , Emil Renner Berthing , Samuel Holland , Charlie Jenkins , Emil Renner Berthing X-Mailer: b4 0.12.3 X-Rspam-User: X-Stat-Signature: r7x1ytixgqkwi881yi3em7fk7gx7pew4 X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 0CA8BC001A X-HE-Tag: 1697751687-307406 X-HE-Meta: U2FsdGVkX1+CTbVqUbYp1UWSjXhpstZB0/ZsFTD4c6nkw0U3P7jDypc9kwOeqR2pkNFN9fNnswMMaGca80/qROloXVW+zHxLv6mQLia4AS9RJaf5IMlle09I13+VFefpoageyas1DIc4gdFxf5uT5G3lCt3hr/2+rQCSaaCtyv2ojOaMbbELgcGCz9pHKp4xFMfjT7WOv2LEgrthQEWUhgJLuFwva/mziMfiLVALA/8PurmbCYZH0pkS2m/QP8bX5US6qz1EEhlJvDqS4Wj7ffY48Z10Lo5lNDlO4XHUzc1xZukx4DXSwVONGHUgjkWlRzPWXvK2rh99vgaMbAi/iQ/+hNkGPhVQmHo8aasAxTWz/0JFQPjOW3syvsAYakCnPWebQ9es39zzZqmuYfScBP6oc49qlrE75C6xZ+HSCvvBrU4AYqrUNWO8uKP5Um+oE0lK8yTHmK5qNB000B55V+SXwQmr69RLJM6dlrEc3JmobiCl4twUOPl2ITHGVOIzXWEga2VnQTv9ZNGrXTtmbkR5YuZuic+o+vb9h+GdOK4C8pYrUf4GJbKL87+UZtHm5Skpfhzbl2ewBTFPeDtLeWt7XwKR8ohxQfI5Xh7LEkFMf9/5fYOpyfm7V9Pfr4hacjv/BHdoWFohBuJATG+f3pzIpNTihp26uw36uOitbYOOW+/piBQdACbEDNztcfBZUtbiUT0VRTxUsBckykaOaxcENM1KjMXZTk3vh99vER/OwZNWYkzdbVlvmjzOBprAJB2fpWosclAIQgqti5cG1k4h4XP0Bld5Cwv4WnMRwyBkq7Wpo6D+YjJstFxqS8lGfeAGYddwXLqjmzWo6SJ/MBPNUcXFTlY2ZUXSJjxFHHmsQyxEg08Tu/UfbFZ4+AW+awVbbD47rfV74VWZN3Ta73IqL7W180xEKq8QHxVZGgwmaNnIib6D74mZlBRFpaE19ag+n6dRjPuKghLO/by LkbsG3u1 zsoxnUZXx3es/h/qkxwojfj+2pMew1rSOGe2roepf7NgY49D2Oc4+P03SDYHNdRiPjh/hVkNEGpGpQDuIDJ6kYks61CJJQA0hBoR0WdRVZ4vnWaHsWUkYK5La2AGDHzA72i5BDjQ+jRgHYlxZupl5fAsDgNh//6EcRd37+yDWvr9nUauQI9UxBqrLSUqHo25Jz4j/pxquvLcmvDWfLp6hXk3GCD2hDTcN2hYOEi3qMWIPQ4FL7piCcXdNqDj59jGW46ocz/kevC+93nN6K+p+fPj7EBqQUXs1rVNPKLYDb/GIZffeGBEPZwwRL18WfH3aVKj8qMXlgfD9q2ZQqNuEZ9ayDGTBuTRaT0sDXTeabkz7c/OdnOzpr4uROLhg42lhmx4T371vm5NvRHi1GZixv9RwUkB/Wr8Xb5Q7griMw0FzuveSTZwqCeiIjTYVOhWKJ21cwEsb3vY0yqBDauTLxtxZux5gH0pql84UVqNvZNw1aMc6hHmMpwoBYe92X21m95a4YZI4EAWqnlcUibJ1zIJNAg8acDGxXSvw X-Bogosity: Ham, tests=bogofilter, spamicity=0.020216, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: A handful of module relocations were missing, this patch includes the remaining ones. I also wrote some test cases to ensure that module loading works properly. Some relocations cannot be supported in the kernel, these include the ones that rely on thread local storage and dynamic linking. ULEB128 handling is a bit special because SET and SUB relocations must happen together, and SET must happen before SUB. A psABI proposal [1] mandates that the first SET_ULEB128 that appears before a SUB_ULEB128 is the associated SET_ULEB128. This can be tested by enabling KUNIT, RUNTIME_KERNEL_TESTING_MENU, and RISCV_MODULE_LINKING_KUNIT. [1] https://github.com/riscv-non-isa/riscv-elf-psabi-doc/pull/403 Signed-off-by: Charlie Jenkins --- Changes in v6: - Use (void *) instead of (u32 *) for handler type - Constrain ULEB128 to be consecutive relocations - Link to v5: https://lore.kernel.org/r/20231018-module_relocations-v5-0-dfee32d4dfc3@rivosinc.com Changes in v5: - Brought in patch by Emil and fixed it up to force little endian - Fixed up issues with apply_r_riscv_32_pcrel_rela and apply_r_riscv_plt32_rela (Samuel) - Added u8 cast in apply_r_riscv_sub6_rela (Andreas) - Link to v4: https://lore.kernel.org/r/20231017-module_relocations-v4-0-937f5ef316f0@rivosinc.com Changes in v4: - Complete removal of R_RISCV_RVC_LUI - Fix bug in R_RISCV_SUB6 linking - Only build ULEB128 tests if supported by toolchain - Link to v3: https://lore.kernel.org/r/20231016-module_relocations-v3-0-a667fd6071e9@rivosinc.com Changes in v3: - Add prototypes to test_module_linking_main as recommended by intel zero day bot - Improve efficiency of ULEB128 pair matching - Link to v2: https://lore.kernel.org/r/20231006-module_relocations-v2-0-47566453fedc@rivosinc.com Changes in v2: - Added ULEB128 relocations - Link to v1: https://lore.kernel.org/r/20230913-module_relocations-v1-0-bb3d8467e793@rivosinc.com --- Charlie Jenkins (2): riscv: Add remaining module relocations riscv: Add tests for riscv module loading Emil Renner Berthing (1): riscv: Avoid unaligned access when relocating modules arch/riscv/Kconfig.debug | 1 + arch/riscv/include/uapi/asm/elf.h | 5 +- arch/riscv/kernel/Makefile | 1 + arch/riscv/kernel/module.c | 368 +++++++++++++++------ arch/riscv/kernel/tests/Kconfig.debug | 35 ++ arch/riscv/kernel/tests/Makefile | 1 + arch/riscv/kernel/tests/module_test/Makefile | 15 + .../tests/module_test/test_module_linking_main.c | 85 +++++ arch/riscv/kernel/tests/module_test/test_set16.S | 23 ++ arch/riscv/kernel/tests/module_test/test_set32.S | 20 ++ arch/riscv/kernel/tests/module_test/test_set6.S | 23 ++ arch/riscv/kernel/tests/module_test/test_set8.S | 23 ++ arch/riscv/kernel/tests/module_test/test_sub16.S | 22 ++ arch/riscv/kernel/tests/module_test/test_sub32.S | 22 ++ arch/riscv/kernel/tests/module_test/test_sub6.S | 22 ++ arch/riscv/kernel/tests/module_test/test_sub64.S | 27 ++ arch/riscv/kernel/tests/module_test/test_sub8.S | 22 ++ arch/riscv/kernel/tests/module_test/test_uleb128.S | 20 ++ 18 files changed, 633 insertions(+), 102 deletions(-) --- base-commit: 4d320c2d9a2b22f53523a1b012cda17a50220965 change-id: 20230908-module_relocations-f63ced651bd7 -- - Charlie