Received: by 2002:a05:7412:2a8c:b0:e2:908c:2ebd with SMTP id u12csp2111567rdh; Tue, 26 Sep 2023 12:49:06 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH++Q/TH61Pb+i6GMSJXOgmn/RLuUFot8+XnNRZbbiJrh8vY06oqGL8E528LzmrKALS3NPX X-Received: by 2002:a17:902:ecd2:b0:1c5:ad14:9095 with SMTP id a18-20020a170902ecd200b001c5ad149095mr10140445plh.64.1695757746420; Tue, 26 Sep 2023 12:49:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695757746; cv=none; d=google.com; s=arc-20160816; b=l4wkvFpgkkmI0uVn2ajFprTE3fpXfUV9dTgXCrkZcQCbKus/THewnuEa8w71ixXUDW e2aYHoGg/sSTnBdF9OkXVsUh5MyllKIu2Po1IG+QCj5YFQahvWUgTHA0+G4ZDChm6ftZ 1DquWX/APyDIap/GmycuyZm7xfSbutu1kL3SuB95NLO69gDLmoFgX0S8FuGqKksdhX+Y WDwlcB5soTI/NbFZSsQ0gqNOmyK/P/YF85QuRAoN4mSe0rpaZki7DoQdlKfAG3++1akI piCLQgCZ1Y9EDIsILPpMjs1wmbdGYlfaxVLZ9RQk6PsN7J7O+MKWD3S90j1IygjO6MIf v73w== 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=RIpK3OqmG3E1OUm0KgMySKOtKP9RNzbuGFCeuFimfhg=; fh=eI1w0vL8wMQYq+89KHAVQG8zXClfMmqUQ4ir9T7VotM=; b=ugTAVM368OLOU8F6Rt7h39YYKQyuHJwgzT8/dDm7yeAJmqeNee7xLVErpD7baz2Xal uUnMhtUMFEGEteZsnI78j6unFJVYHBnPJ5VFkxP2rlDoYpEs1DtdERTXE/eiphb/NaFi Pw1xp1NXNvQN8Gy4zQcQMm7NPHwTVScmu3kjrDWYZAMtTEwYitT8LdMQ90zmnbCq1zfk VKbk/KZEEjTZCvnOBeUrEL7WcH2wcnVVBIr89aVN87WWvSq7NkmgK8HO2p6IswCp+Q30 Pd/52koMJ+xbQrhwAUXhrdiux1H3Jj8nZp8z1nZckhIlhAiBaUxcXatuCv4h8xj1wRg2 dkkA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=ijk1GXx8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id n12-20020a170902d2cc00b001b69ede5b79si2053321plc.470.2023.09.26.12.49.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Sep 2023 12:49:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=ijk1GXx8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 12E2182698C6; Tue, 26 Sep 2023 08:04:11 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234564AbjIZPEC (ORCPT + 99 others); Tue, 26 Sep 2023 11:04:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53700 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229519AbjIZPEB (ORCPT ); Tue, 26 Sep 2023 11:04:01 -0400 Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5201511D for ; Tue, 26 Sep 2023 08:03:53 -0700 (PDT) Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-4053e6e8ca7so22223625e9.1 for ; Tue, 26 Sep 2023 08:03:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1695740632; x=1696345432; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=RIpK3OqmG3E1OUm0KgMySKOtKP9RNzbuGFCeuFimfhg=; b=ijk1GXx8p6gF4Ogo26Ngd17caf/oV8jwwcKV2Mq3J311kzMUj6+kvsAwEG3A472d28 /vGnjHkOgWf1VZh94SVMCCNVXfQH6YG5b3Ecx1Eax38bqZLctul9kHdxFLTed8fELbyc MsujkzpvixzG069MSjZdrfiLOddDvRDnHXSQg+ye8sBN+yz7QV9pqaGdrI/DQDgXtv86 C248DPdNgNGN0YpBfgfBWIDE1/z7bTOYd63d3AgqUb1S4LAPGP9kq5ivLcwGW1ulzXqT H7Ho43COYwHBq45Wmp16TFKn9jCogh+6V3FYc7QIa/RpNWarYqpnCeMidrBpZ88Izbni J/Gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695740632; x=1696345432; 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=RIpK3OqmG3E1OUm0KgMySKOtKP9RNzbuGFCeuFimfhg=; b=RsEb7jczClhpHo8XWTY/Bs5h0qOTFpepw66pyOdIFOIY5rRvu7zrx3PvRFqsEmP991 +GrfMYk8VshYCdUmGU1bJYevixcTe4s2mTKPR0McN915HhW3NZlCChOmpuEjiGiujZb+ vLX2bcQOatm+/2EA3GMZmgblJ+UyS+S3WfetkeP9fnrkCdyVRXBvJ6GHmTZLxPxEvZOu w/u7g2ClDZfg1XkLEZqBtvBqSV314K0QAm8XxaFtPQe1FXq6dDKVjnbXEq1fjl1k/b+/ dQNe4kbbaj1MKMmaEAK+HyU0GetFFWL9fGhUWvY2YPH12sWAGkofGwOhm1EUwZkmuzKW PL9w== X-Gm-Message-State: AOJu0YwqvuWudl6r2QvncvjkTr5trGKe1lXjJJneTuMDt2TybXd0F9p4 juzXvoJXFyuh4GeXBgFzs06YdQ== X-Received: by 2002:a05:600c:1d82:b0:401:c07f:72bd with SMTP id p2-20020a05600c1d8200b00401c07f72bdmr8988881wms.4.1695740631744; Tue, 26 Sep 2023 08:03:51 -0700 (PDT) Received: from carbon-x1.. ([2a01:e0a:999:a3a0:2b3d:6c70:9dbf:5ede]) by smtp.gmail.com with ESMTPSA id x11-20020a5d650b000000b00318147fd2d3sm14926060wru.41.2023.09.26.08.03.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Sep 2023 08:03:51 -0700 (PDT) From: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= To: Paul Walmsley , Palmer Dabbelt , Albert Ou Cc: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= , Atish Patra , Andrew Jones , Evan Green , =?UTF-8?q?Bj=C3=B6rn=20Topel?= , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Ron Minnich , Daniel Maslowski Subject: [PATCH 0/7] Add support to handle misaligned accesses in S-mode Date: Tue, 26 Sep 2023 17:03:09 +0200 Message-Id: <20230926150316.1129648-1-cleger@rivosinc.com> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Tue, 26 Sep 2023 08:04:12 -0700 (PDT) Since commit 61cadb9 ("Provide new description of misaligned load/store behavior compatible with privileged architecture.") in the RISC-V ISA manual, it is stated that misaligned load/store might not be supported. However, the RISC-V kernel uABI describes that misaligned accesses are supported. In order to support that, this series adds support for S-mode handling of misaligned accesses as well support for prctl(PR_UNALIGN). Handling misaligned access in kernel allows for a finer grain control of the misaligned accesses behavior, and thanks to the prctl call, can allow disabling misaligned access emulation to generate SIGBUS. User space can then optimize its software by removing such access based on SIGBUS generation. Currently, this series is useful for people that uses a SBI that does not handled misaligned traps. In a near future, this series will make use a SBI extension [1] allowing to request delegation of the misaligned load/store traps to the S-mode software. This extension has been submitted for review to the riscv tech-prs group. An OpenSBI implementation for this spec is available at [2]. This series can be tested using the spike simulator [3] and an openSBI version [4] which allows to always delegate misaligned load/store to S-mode. [1] https://lists.riscv.org/g/tech-prs/message/540 [2] https://github.com/rivosinc/opensbi/tree/dev/cleger/fw_feature_upstream [3] https://github.com/riscv-software-src/riscv-isa-sim [4] https://github.com/rivosinc/opensbi/tree/dev/cleger/no_misaligned Clément Léger (7): riscv: remove unused functions in traps_misaligned.c riscv: add support for misaligned handling in S-mode riscv: report perf event for misaligned fault riscv: add floating point insn support to misaligned access emulation riscv: add support for sysctl unaligned_enabled control riscv: report misaligned accesses emulation to hwprobe riscv: add support for PR_SET_UNALIGN and PR_GET_UNALIGN arch/riscv/Kconfig | 1 + arch/riscv/include/asm/cpufeature.h | 6 + arch/riscv/include/asm/entry-common.h | 3 + arch/riscv/include/asm/processor.h | 9 + arch/riscv/kernel/Makefile | 2 +- arch/riscv/kernel/cpufeature.c | 6 +- arch/riscv/kernel/fpu.S | 117 ++++++++ arch/riscv/kernel/process.c | 18 ++ arch/riscv/kernel/setup.c | 1 + arch/riscv/kernel/traps.c | 9 - arch/riscv/kernel/traps_misaligned.c | 374 ++++++++++++++++++++++---- 11 files changed, 488 insertions(+), 58 deletions(-) -- 2.40.1