From nobody Mon Feb 9 07:24:24 2026 Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 04AE91C1ABC for ; Sat, 26 Oct 2024 17:14:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729962887; cv=none; b=m7ztWFcaykSTFX6L58kxuSkBOqAk7RggOnE8DUEUyaY0zUVLDjQ0+8UWXS3UQqnPBPUF/OBRjyPDh7tEm3qRf4JwMUd4TegeOjAOLYPCF6DoQXyf26FdF6hla81qwLyQ5UC35GcTePXB0wiajvyGAhe/gT7QtDxHrz/JmaUKhn8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729962887; c=relaxed/simple; bh=jGEgimkaom91Z9EgZ4/3h2i1m/uy4fd9MoLfYA5LE4M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ukajBiND3yZRzIBDfJOZ3L0ppo2qY61GqUFHfUqltfRB1cxb2ySbP2C21OHutzOOoQJzAAJgO/zcbUuPC+37KAfxSb6HcEXc5CCtzTl2Lf65wugSKLA40LqKFUvbkCgN/rid+dW4Puogf/683ftCB5jpru3RTJD5T8l/StC7tDU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=sifive.com; spf=pass smtp.mailfrom=sifive.com; dkim=pass (2048-bit key) header.d=sifive.com header.i=@sifive.com header.b=FuRA2eZe; arc=none smtp.client-ip=209.85.216.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=sifive.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sifive.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sifive.com header.i=@sifive.com header.b="FuRA2eZe" Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-2e2e88cb0bbso2301609a91.3 for ; Sat, 26 Oct 2024 10:14:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1729962885; x=1730567685; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IgTekunG0cQy0vjVyXRBRATW95KVtugkqgihcshjjxQ=; b=FuRA2eZeAuxYCOhxIu6YjUtoCcYLVXiIposMh6pl83WW5vUdkTL/+i8yHAKiXpWnzq EhYzoYRge/Fz35kGdcVeiUnCs4nECTZKV8gX9NKhPRiHWe+Ro6oPQL0RE3AenfZWpODS MEFBGt6zgI69PTRe+I+zU7PIKNjwwqfa6SqAcJEJM76MrLyWSM+gkKmugFfD4SY5XWHw RtxL+DIjN8pHeeMBc8U0SUZOsUiREEnfy4gAoC9Mvw572R2ObXiU0m9MzxQmIGVmiPd6 YE7k/6cdi4D6LPzxhfgvMqUl5NOPUonnBIuBzSIww5tWStUJ7btdoLRMbyMRRKe2ok/z LoKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729962885; x=1730567685; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IgTekunG0cQy0vjVyXRBRATW95KVtugkqgihcshjjxQ=; b=TivL0GSeWJcghNdfNBdSYHxXBMArnSd5KtMqcPiXNxYVJxWGzbjSyI4ahpP9evywqL p0JNMJfB1gVYuPxJUXBoA0xcmMv6x8qQC2W2sj3ENDrphFFT5KvicgBEsFQagIBxJriD 8Ty88aE1SqsuyGWIU5yxtKrREl0+gPM/Esh/qYhVFXPoyqjb2vXxtC87I7m+WlUfLfXR Eh17pDVn69IzwhfZnoqKKsToTQDVDgZ12j2ItBMWZeXv8TPYrcrT0KB3fWOX3IDewyCm XZ5SYiLGzxrT8kP9hZnrJikW9Am6h14MyIlydVhAc9uYUgDelhUnCvGr/fXRlGZo6E+s yR+w== X-Forwarded-Encrypted: i=1; AJvYcCVNk+JrmnOShJPTRteqp6zUG63gTw1QXeMrwvi4u4WgamDtztUYrV3JLYjGbrPPBb4cMvHj0T2qqlrsezI=@vger.kernel.org X-Gm-Message-State: AOJu0YwfixDCBm0jQetF/l53o9Bfgds5afNFq8z01IiQLoLElj7iofaJ XdvMrx1irXDqWl8cd4Howund30lxMk/Z/91pz79nSlzYvBjpyseAMn2YWfeYKpQ= X-Google-Smtp-Source: AGHT+IHMFAwANT/EZuDl4La1BmNjmSNtM9o3wF8CMwHklFBsWwrPxYwZlipAsFiUTL+gnWOt/QYKpg== X-Received: by 2002:a17:90a:b111:b0:2e2:d16e:8769 with SMTP id 98e67ed59e1d1-2e8f106926emr4001679a91.15.1729962885304; Sat, 26 Oct 2024 10:14:45 -0700 (PDT) Received: from sw06.internal.sifive.com ([4.53.31.132]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2e77e558114sm5663762a91.36.2024.10.26.10.14.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Oct 2024 10:14:44 -0700 (PDT) From: Samuel Holland To: Palmer Dabbelt , linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org Cc: Andrew Morton , Arnd Bergmann , Alexandre Ghiti , Samuel Holland Subject: [PATCH 1/6] riscv: Remove duplicate CONFIG_PAGE_OFFSET definition Date: Sat, 26 Oct 2024 10:13:53 -0700 Message-ID: <20241026171441.3047904-2-samuel.holland@sifive.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20241026171441.3047904-1-samuel.holland@sifive.com> References: <20241026171441.3047904-1-samuel.holland@sifive.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This definition is already provided by include/generated/autoconf.h, so it does not need to be provided on the command line. Signed-off-by: Samuel Holland Reviewed-by: Jesse Taube --- arch/riscv/Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile index d469db9f46f4..6ff2cbde5296 100644 --- a/arch/riscv/Makefile +++ b/arch/riscv/Makefile @@ -92,7 +92,6 @@ KBUILD_AFLAGS +=3D -march=3D$(riscv-march-y) CC_FLAGS_FPU :=3D -march=3D$(shell echo $(riscv-march-y) | sed -E 's/(rv3= 2ima|rv64ima)([^v_]*)v?/\1\2/') =20 KBUILD_CFLAGS +=3D -mno-save-restore -KBUILD_CFLAGS +=3D -DCONFIG_PAGE_OFFSET=3D$(CONFIG_PAGE_OFFSET) =20 ifeq ($(CONFIG_CMODEL_MEDLOW),y) KBUILD_CFLAGS +=3D -mcmodel=3Dmedlow --=20 2.45.1 From nobody Mon Feb 9 07:24:24 2026 Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3CE7C1D040B for ; Sat, 26 Oct 2024 17:14:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729962889; cv=none; b=sZtR9faDKmzpKXpdVrj8M56vgQXa3sTwrCtodDgRutdTZ7FIw+Js6hHtLJwKgLZLNn/D1Jv6aQEPxhE7AZpBWn15i9D9A+iJz8grg3IBNkulx/dpCgWACsUyK/tZqi8Hzw0DpJgNS6nt4uwhE4VH3gBfYrkZ+66eQ1npaREdPkw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729962889; c=relaxed/simple; bh=iUX1BixGjkb0dNnZh+RA4SlDagbvHXtMA0l5ZKdixJo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GZvt7q+TJ67MSSMWWORVL8rmtlwT9Rj6Rf6RfnNcO0cHqi42j30KArXCdavQWnchw8d+isVZ1tBffBtvjZV/tSWnFIS6FVPzfYINK8mXrJdmzd/U+yXlEl8p2tAQQDd+tsJWf/X/f5FMH4kArSXGaQMiX3KnmhLP5f7qWoRVeag= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=sifive.com; spf=pass smtp.mailfrom=sifive.com; dkim=pass (2048-bit key) header.d=sifive.com header.i=@sifive.com header.b=MBD0bBv4; arc=none smtp.client-ip=209.85.216.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=sifive.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sifive.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sifive.com header.i=@sifive.com header.b="MBD0bBv4" Received: by mail-pj1-f43.google.com with SMTP id 98e67ed59e1d1-2e2ed59a35eso2444765a91.0 for ; Sat, 26 Oct 2024 10:14:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1729962886; x=1730567686; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qyKlYhyoQTsAn4L5ymM1gqMGEqmqMMy28NtniO4HhLo=; b=MBD0bBv4gGLLKX6iF4wGtqmfrJcTBQRh+RKIurUDC7BylmTLXJk5mEeudno4Ox/X9z VhVgaAjDt3R1KxQ+NBfhvmBU/qkhuyBU1MtTmKQ+hva0vJk1j+nEqMCWtI0KsoytHR2n cNnUye+uFStonojRwY+4MK1vKiFR7BKZVwozqR9YXR6LAUK0mGOaiDiU8V88JRzqtfxh 4lvgZ5SEdIQcr2WGPn6X7PhLiys0anP7pT/5IF6jlslKyf5KIM+ZgqcMQaTYPfrwKwdC fUtfpjPSe2bqAhF3nsykXkA1qKaC8PbCD2+XNOO3fH5+z5kfRykBmMbzYrvWHJbFmy6G XRcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729962886; x=1730567686; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qyKlYhyoQTsAn4L5ymM1gqMGEqmqMMy28NtniO4HhLo=; b=STzmIuqUXaqYUXy6rwctNwAGYnp5ufpjJ/+WYDNQ6FPEE4o966EgSSaPnaYdGmnFWl QJ3MS+l2u93Rdv367ddz88kw/j+Gz6sfHm043HZqGWtloMCKE+/YaUYtyaWmG+cIeGns 4V97xbkIZHKj/Ns5qofY1T3VL7RucunfWx0/jSlvuQsv1M2eiqgrao6NWETvsZt7pdMq +P9fVzhfTXr1IQcB2N0uQrXGHR1I/JjwOoU8W5boB3Yn0IQppgvYUonxtFrmeMi2kpoL E/l1AiBg+bNlyRe9qUSiqx/xYaZ16nDN9/z/MECAHMJwYQgvBtRelbSuCDAJhF/5R4q7 y0lw== X-Forwarded-Encrypted: i=1; AJvYcCUcZWNRUiAld4oFN5FboQdm8shU3qzxrfUbcZ0RHyxKHUMALkTUGGrBB6nKMFWXimPB3y7i+rhbual+XCk=@vger.kernel.org X-Gm-Message-State: AOJu0Yz/Djy/dNYQnb7yvXgsn6AZP3VPQWHFvUCQT7ReNdokzRiAHwbX UszykXLiN18lm6Wg5bEQ1fcE3AyvhwYkbRhUF6GdvgsWrkfb7AI5mGjnvhwMTjs= X-Google-Smtp-Source: AGHT+IGjNDukwViDngFMKYKbWwFFp9ljp4jqD+5ryDjxC8VoVYiX7cXbg3yZQRK0W4GSuzVMjeVSBQ== X-Received: by 2002:a17:90a:7847:b0:2e2:c69b:669 with SMTP id 98e67ed59e1d1-2e8f10a6f5bmr4102476a91.27.1729962886541; Sat, 26 Oct 2024 10:14:46 -0700 (PDT) Received: from sw06.internal.sifive.com ([4.53.31.132]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2e77e558114sm5663762a91.36.2024.10.26.10.14.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Oct 2024 10:14:46 -0700 (PDT) From: Samuel Holland To: Palmer Dabbelt , linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org Cc: Andrew Morton , Arnd Bergmann , Alexandre Ghiti , Samuel Holland Subject: [PATCH 2/6] riscv: Allow NOMMU kernels to access all of RAM Date: Sat, 26 Oct 2024 10:13:54 -0700 Message-ID: <20241026171441.3047904-3-samuel.holland@sifive.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20241026171441.3047904-1-samuel.holland@sifive.com> References: <20241026171441.3047904-1-samuel.holland@sifive.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" NOMMU kernels currently cannot access memory below the kernel link address. Remove this restriction by setting PAGE_OFFSET to the actual start of RAM, as determined from the devicetree. The kernel link address must be a constant, so keep using CONFIG_PAGE_OFFSET for that purpose. Signed-off-by: Samuel Holland Reviewed-by: Jesse Taube --- arch/riscv/include/asm/page.h | 12 ++++-------- arch/riscv/include/asm/pgtable.h | 2 +- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/arch/riscv/include/asm/page.h b/arch/riscv/include/asm/page.h index 32d308a3355f..24d1ac052609 100644 --- a/arch/riscv/include/asm/page.h +++ b/arch/riscv/include/asm/page.h @@ -26,12 +26,9 @@ * When not using MMU this corresponds to the first free page in * physical memory (aligned on a page boundary). */ -#ifdef CONFIG_64BIT #ifdef CONFIG_MMU +#ifdef CONFIG_64BIT #define PAGE_OFFSET kernel_map.page_offset -#else -#define PAGE_OFFSET _AC(CONFIG_PAGE_OFFSET, UL) -#endif /* * By default, CONFIG_PAGE_OFFSET value corresponds to SV57 address space = so * define the PAGE_OFFSET value for SV48 and SV39. @@ -41,6 +38,9 @@ #else #define PAGE_OFFSET _AC(CONFIG_PAGE_OFFSET, UL) #endif /* CONFIG_64BIT */ +#else +#define PAGE_OFFSET ((unsigned long)phys_ram_base) +#endif /* CONFIG_MMU */ =20 #ifndef __ASSEMBLY__ =20 @@ -97,11 +97,7 @@ typedef struct page *pgtable_t; #define MIN_MEMBLOCK_ADDR 0 #endif =20 -#ifdef CONFIG_MMU #define ARCH_PFN_OFFSET (PFN_DOWN((unsigned long)phys_ram_base)) -#else -#define ARCH_PFN_OFFSET (PAGE_OFFSET >> PAGE_SHIFT) -#endif /* CONFIG_MMU */ =20 struct kernel_mapping { unsigned long page_offset; diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgta= ble.h index e79f15293492..e224ac66e635 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -12,7 +12,7 @@ #include =20 #ifndef CONFIG_MMU -#define KERNEL_LINK_ADDR PAGE_OFFSET +#define KERNEL_LINK_ADDR _AC(CONFIG_PAGE_OFFSET, UL) #define KERN_VIRT_SIZE (UL(-1)) #else =20 --=20 2.45.1 From nobody Mon Feb 9 07:24:24 2026 Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6D0B91D47BB for ; Sat, 26 Oct 2024 17:14:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729962890; cv=none; b=myt7+U+SS2N7DyUDuAWDy5Mf81pRWvomcwJh85rBrq0+s8UXjNGaZDVwIK95A2IpsOl6JTuZ7rCyTYTCqSIjIQn63NdTtzDdoj2PyXz52DlJG8VMj+bOhD6PhdRDrgnL1CBjJuv2F0L+p+txzou5k2hpzMT+YxlNFzocAQWgVes= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729962890; c=relaxed/simple; bh=f0XkWnXn5gQr91r80HnZ4l91Q6+e90mpdLHSv7oesJE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Smge1CBMpztVTpyRyUl4kXBnZN6HQSvbMVWX4dO4/pIOCHy73YIi6uLY040dlQ/wT4KHIRMNnOUcyfazkLVbYbx38DTVKmPB2j/hPpunPzAm2O6hIck1Lx2sREGIqfxN+zYEylgThC7KyKE8hKUvR1MB8OOgG5vTRk3MXvzdhhc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=sifive.com; spf=pass smtp.mailfrom=sifive.com; dkim=pass (2048-bit key) header.d=sifive.com header.i=@sifive.com header.b=JYEOW7An; arc=none smtp.client-ip=209.85.216.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=sifive.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sifive.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sifive.com header.i=@sifive.com header.b="JYEOW7An" Received: by mail-pj1-f44.google.com with SMTP id 98e67ed59e1d1-2e30fb8cb07so2187934a91.3 for ; Sat, 26 Oct 2024 10:14:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1729962888; x=1730567688; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=IiHFo4DmtdeXVJSdAkSejNf62f3o6R3z/nVT/XM/LXQ=; b=JYEOW7An2RyYSqa32+bBUCYyHAS4uJ4+A+KqI0dAIHhZN2yGnX0VQEt9jaP4jMaMxV 4IcIQUD758pVlcVX4Xnamk832NrYQy6HFoW3VJQcagN/HzVeiIXKSLagztV48bczXWGE 59xFbxlHFNapfHnXoI7VAnfSf6w0v58oVBpPEr41dTn3U22GbpGWH8TTsrpFM2Fw/KDq CTYmHswYYeS72zF3OXiTvxHonaxyQBMq85681SiCz0Is0dLdlNvTqPWYpgZIVMKzBOP1 M5t1WuYRqRARmhc2jpS4qRrHnYZoLllg3LQfUXKKNaXOVMG8MFBJ7JUPByHpuLZpk93D St4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729962888; x=1730567688; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=IiHFo4DmtdeXVJSdAkSejNf62f3o6R3z/nVT/XM/LXQ=; b=vUSQjX2ButNjXFtphYAPbXo9be+S7UFV0S6Sqxp8frjwu/wW/M1ZU6ju7uH0v8W+aU CfBkI/l5YCZmsqgUL5rUozf4Km8Je/vtDNb5yaxYM/aADsLbPh/lA9VkiSUO2oWC4r88 ItbVZc1lVWtVKTJtlEqpk3F4EHlH5oXi3bWofQYERDlEnvdN0zQNfwK+iV+PiMV0/qDN hNTE0rOb/CjJcfyHZ8yx95AIyhDvIFKDL2Fuv4tCROZoTBC5Zc2+6BpgY5H5dbWpw4yW U195/SYxbt78PPrvHoFRBVMeAuHPUM9GA2rBVyen+iilrD0/qOG/xfv5PwyBSDrhtd+B pjow== X-Forwarded-Encrypted: i=1; AJvYcCXPi2tmVPmNG/w5cbv3+pQK5ytlLuHdc4xZSbI9LC9+aEYkCREgy8rKx72tZXz7ez0h4Pl3w+mGiFFr79I=@vger.kernel.org X-Gm-Message-State: AOJu0YznZiji2gYIdpprCiPO/+N+ZztqBFJplk7JEcqlIHpY7qQRGtxn sun97iYJO6pAx7koGFT2gU9TkuDtCf8wTPEzcjQZ+op36x7qpOQtC1ik5vbh+ziOsLJjBETPnsh u X-Google-Smtp-Source: AGHT+IEzN1IbGCkMVdSp3rlof3XN99qFbQm4PDAwtLCkE/kwbj+tFrZvPVcsHIV6RGdY5SSQlNI55A== X-Received: by 2002:a17:90b:1202:b0:2e2:bbcd:6cbb with SMTP id 98e67ed59e1d1-2e8f105081dmr3625438a91.6.1729962887736; Sat, 26 Oct 2024 10:14:47 -0700 (PDT) Received: from sw06.internal.sifive.com ([4.53.31.132]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2e77e558114sm5663762a91.36.2024.10.26.10.14.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Oct 2024 10:14:47 -0700 (PDT) From: Samuel Holland To: Palmer Dabbelt , linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org Cc: Andrew Morton , Arnd Bergmann , Alexandre Ghiti , Samuel Holland Subject: [PATCH 3/6] riscv: Support CONFIG_RELOCATABLE on NOMMU Date: Sat, 26 Oct 2024 10:13:55 -0700 Message-ID: <20241026171441.3047904-4-samuel.holland@sifive.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20241026171441.3047904-1-samuel.holland@sifive.com> References: <20241026171441.3047904-1-samuel.holland@sifive.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Move relocate_kernel() out of the CONFIG_MMU block so it can be called from the NOMMU version of setup_vm(). Set some offsets in kernel_map so relocate_kernel() does not need to be modified. Relocatable NOMMU kernels can be loaded to any physical memory address; they no longer depend on CONFIG_PAGE_OFFSET. Signed-off-by: Samuel Holland --- arch/riscv/Kconfig | 2 +- arch/riscv/include/asm/pgtable.h | 4 ++ arch/riscv/mm/init.c | 82 +++++++++++++++++--------------- 3 files changed, 49 insertions(+), 39 deletions(-) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 62545946ecf4..4420419e7054 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -934,7 +934,7 @@ config PARAVIRT_TIME_ACCOUNTING =20 config RELOCATABLE bool "Build a relocatable kernel" - depends on MMU && 64BIT && !XIP_KERNEL + depends on 64BIT && !XIP_KERNEL select MODULE_SECTIONS if MODULES help This builds a kernel as a Position Independent Executable (PIE), diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgta= ble.h index e224ac66e635..d0190ee9b2e4 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -12,7 +12,11 @@ #include =20 #ifndef CONFIG_MMU +#ifdef CONFIG_RELOCATABLE +#define KERNEL_LINK_ADDR UL(0) +#else #define KERNEL_LINK_ADDR _AC(CONFIG_PAGE_OFFSET, UL) +#endif #define KERN_VIRT_SIZE (UL(-1)) #else =20 diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c index 0e8c20adcd98..a74e28367f9f 100644 --- a/arch/riscv/mm/init.c +++ b/arch/riscv/mm/init.c @@ -307,6 +307,44 @@ static void __init setup_bootmem(void) hugetlb_cma_reserve(PUD_SHIFT - PAGE_SHIFT); } =20 +#ifdef CONFIG_RELOCATABLE +extern unsigned long __rela_dyn_start, __rela_dyn_end; + +static void __init relocate_kernel(void) +{ + Elf64_Rela *rela =3D (Elf64_Rela *)&__rela_dyn_start; + /* + * This holds the offset between the linked virtual address and the + * relocated virtual address. + */ + uintptr_t reloc_offset =3D kernel_map.virt_addr - KERNEL_LINK_ADDR; + /* + * This holds the offset between kernel linked virtual address and + * physical address. + */ + uintptr_t va_kernel_link_pa_offset =3D KERNEL_LINK_ADDR - kernel_map.phys= _addr; + + for ( ; rela < (Elf64_Rela *)&__rela_dyn_end; rela++) { + Elf64_Addr addr =3D (rela->r_offset - va_kernel_link_pa_offset); + Elf64_Addr relocated_addr =3D rela->r_addend; + + if (rela->r_info !=3D R_RISCV_RELATIVE) + continue; + + /* + * Make sure to not relocate vdso symbols like rt_sigreturn + * which are linked from the address 0 in vmlinux since + * vdso symbol addresses are actually used as an offset from + * mm->context.vdso in VDSO_OFFSET macro. + */ + if (relocated_addr >=3D KERNEL_LINK_ADDR) + relocated_addr +=3D reloc_offset; + + *(Elf64_Addr *)addr =3D relocated_addr; + } +} +#endif /* CONFIG_RELOCATABLE */ + #ifdef CONFIG_MMU struct pt_alloc_ops pt_ops __meminitdata; =20 @@ -877,44 +915,6 @@ static __init void set_satp_mode(uintptr_t dtb_pa) #error "setup_vm() is called from head.S before relocate so it should not = use absolute addressing." #endif =20 -#ifdef CONFIG_RELOCATABLE -extern unsigned long __rela_dyn_start, __rela_dyn_end; - -static void __init relocate_kernel(void) -{ - Elf64_Rela *rela =3D (Elf64_Rela *)&__rela_dyn_start; - /* - * This holds the offset between the linked virtual address and the - * relocated virtual address. - */ - uintptr_t reloc_offset =3D kernel_map.virt_addr - KERNEL_LINK_ADDR; - /* - * This holds the offset between kernel linked virtual address and - * physical address. - */ - uintptr_t va_kernel_link_pa_offset =3D KERNEL_LINK_ADDR - kernel_map.phys= _addr; - - for ( ; rela < (Elf64_Rela *)&__rela_dyn_end; rela++) { - Elf64_Addr addr =3D (rela->r_offset - va_kernel_link_pa_offset); - Elf64_Addr relocated_addr =3D rela->r_addend; - - if (rela->r_info !=3D R_RISCV_RELATIVE) - continue; - - /* - * Make sure to not relocate vdso symbols like rt_sigreturn - * which are linked from the address 0 in vmlinux since - * vdso symbol addresses are actually used as an offset from - * mm->context.vdso in VDSO_OFFSET macro. - */ - if (relocated_addr >=3D KERNEL_LINK_ADDR) - relocated_addr +=3D reloc_offset; - - *(Elf64_Addr *)addr =3D relocated_addr; - } -} -#endif /* CONFIG_RELOCATABLE */ - #ifdef CONFIG_XIP_KERNEL static void __init create_kernel_page_table(pgd_t *pgdir, __always_unused bool early) @@ -1359,6 +1359,12 @@ asmlinkage void __init setup_vm(uintptr_t dtb_pa) { dtb_early_va =3D (void *)dtb_pa; dtb_early_pa =3D dtb_pa; + +#ifdef CONFIG_RELOCATABLE + kernel_map.virt_addr =3D (uintptr_t)_start; + kernel_map.phys_addr =3D (uintptr_t)_start; + relocate_kernel(); +#endif } =20 static inline void setup_vm_final(void) --=20 2.45.1 From nobody Mon Feb 9 07:24:24 2026 Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 86CFC1D5CF2 for ; Sat, 26 Oct 2024 17:14:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729962891; cv=none; b=jxCpzKxga6O1e6MSd/jQ+pDDtgSM85BgzMYcBBXXd5ZFt/FeaRscWmbzTJ4oFEjm3ojar/r1aCCmBc3VAKdBRZ1RT5CdfRQ/55P5etTiRpveVbTrgfB1ZYDxLPR2vjGHL36cVhVurScamf/tMLpy7ixQPzmjDbbQMC4kvibWYcU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729962891; c=relaxed/simple; bh=rd6YWwjPYp0QiSDAMTFQN/MxjYmMfqqacnTci1hEjQI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=S1vdc6ndv/cnNktMcIMezt4PE4377lOf656hA6en36UdUBxx95KrJ6EiG1MlHzDLfGCdJfekqIbRdgzeZkgowW3nxGR7yTDRSaQtrRlnaXsWasBs0xQ+ypbqQ8hg/mONkv0wjN3CcNOZ0CX063yuZUYUi/zc+X564STZz3IHwxM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=sifive.com; spf=pass smtp.mailfrom=sifive.com; dkim=pass (2048-bit key) header.d=sifive.com header.i=@sifive.com header.b=jtLEsC/F; arc=none smtp.client-ip=209.85.216.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=sifive.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sifive.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sifive.com header.i=@sifive.com header.b="jtLEsC/F" Received: by mail-pj1-f41.google.com with SMTP id 98e67ed59e1d1-2e2a97c2681so2189277a91.2 for ; Sat, 26 Oct 2024 10:14:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1729962889; x=1730567689; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wv7+Dx0EhtdMcX+vS16ls1Tc801PV63GFkQzeGMvPJc=; b=jtLEsC/Fh9MxZMkFC8hwa/XisucQFaTJZ1zVzzZJHAB6O9rz1rCVuOrTXTaKbYjigx 5zJJ81T96asYkiuXvKEFm5Mvp9CG0VVRukXrNdYcL3zLqo6EmJj2h94+mwkAVa2wrNuc SrYZa0DcbhDehj95RHAoZM/eV1TUeiIPw29kZx/4sls/vzAjtuh6dkPMnOC6uh9HmFy4 ogk1jGzFrcVwg04J2WVMCje0SIyWn7MTF+np6Y2gyyxSWRQQNfyFENoozT1iqQcuMUO1 KId63ivS6F3hM1fEvlEAHTdMKJ1lushxd1+6hl9ieEJZa7+J13OaiVd77coUaC0X2yVU thiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729962889; x=1730567689; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wv7+Dx0EhtdMcX+vS16ls1Tc801PV63GFkQzeGMvPJc=; b=KemsCMHgIK2gMJLP6NfikLQGxzZu9JOTeng6U9UQqRKxYxNYacqL5uGOaGHhvrsv6X zO5J1+1iHCa8cfW3he2BocxBj9iGRvUa149iUzysBHzi8OnsNXZC51A6gJkUjjCRTUTt SzBmLydkh5Grn5QcJEPM+GG9Rxr3IDumyNNH1z8oSdr8l0Cdt533sAwZIqS8ZcpOLyHR DAeFyX7haXbNwniIMs+fz1hAimpO7/lZpYJ4hWDXRrrUqvKJHyt43VvDY56NHQ1WcTH3 Sln/orAzAxAVx0FfzlJ5BBxUCwAopXBIfX0oMKZTyjAJrjKHU3D2aadWY9h8RveCC4Lf ddFQ== X-Forwarded-Encrypted: i=1; AJvYcCUGrOym+JkIqp/LjRQHbff1KoFkv/vH92lUnQJ1T1+goaBYhF4z3w0Ei26Y6lS+Y9MuPASo3RWMu0nwpNY=@vger.kernel.org X-Gm-Message-State: AOJu0YwrJMppglvj6mf1Bhgm6/SjxsXfHOxFYhxcOLg9FgHhL9kIJz+K lkXTCxyU0s/i+g3LVxsgV3g9KqUCdd+4SmS5jm9Bc7wqV4/76DFY9yu61+GuTSI= X-Google-Smtp-Source: AGHT+IEjLY5x3N7GeCdbR6UpuMygbezclirV4ORscEH6CuiNkRrH5F4MjYIKgmPWwSgRogFjiRq95g== X-Received: by 2002:a17:90a:d807:b0:2da:9115:15ce with SMTP id 98e67ed59e1d1-2e8f106d6bdmr4079277a91.15.1729962888814; Sat, 26 Oct 2024 10:14:48 -0700 (PDT) Received: from sw06.internal.sifive.com ([4.53.31.132]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2e77e558114sm5663762a91.36.2024.10.26.10.14.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Oct 2024 10:14:48 -0700 (PDT) From: Samuel Holland To: Palmer Dabbelt , linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org Cc: Andrew Morton , Arnd Bergmann , Alexandre Ghiti , Samuel Holland Subject: [PATCH 4/6] asm-generic: Always define Elf_Rel and Elf_Rela Date: Sat, 26 Oct 2024 10:13:56 -0700 Message-ID: <20241026171441.3047904-5-samuel.holland@sifive.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20241026171441.3047904-1-samuel.holland@sifive.com> References: <20241026171441.3047904-1-samuel.holland@sifive.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" These definitions are useful for relocating the kernel image as well, regardless of the type of relocations used for modules. Signed-off-by: Samuel Holland --- include/asm-generic/module.h | 8 -------- 1 file changed, 8 deletions(-) diff --git a/include/asm-generic/module.h b/include/asm-generic/module.h index 98e1541b72b7..a8622501b975 100644 --- a/include/asm-generic/module.h +++ b/include/asm-generic/module.h @@ -19,12 +19,8 @@ struct mod_arch_specific #define Elf_Dyn Elf64_Dyn #define Elf_Ehdr Elf64_Ehdr #define Elf_Addr Elf64_Addr -#ifdef CONFIG_MODULES_USE_ELF_REL #define Elf_Rel Elf64_Rel -#endif -#ifdef CONFIG_MODULES_USE_ELF_RELA #define Elf_Rela Elf64_Rela -#endif #define ELF_R_TYPE(X) ELF64_R_TYPE(X) #define ELF_R_SYM(X) ELF64_R_SYM(X) =20 @@ -36,12 +32,8 @@ struct mod_arch_specific #define Elf_Dyn Elf32_Dyn #define Elf_Ehdr Elf32_Ehdr #define Elf_Addr Elf32_Addr -#ifdef CONFIG_MODULES_USE_ELF_REL #define Elf_Rel Elf32_Rel -#endif -#ifdef CONFIG_MODULES_USE_ELF_RELA #define Elf_Rela Elf32_Rela -#endif #define ELF_R_TYPE(X) ELF32_R_TYPE(X) #define ELF_R_SYM(X) ELF32_R_SYM(X) #endif --=20 2.45.1 From nobody Mon Feb 9 07:24:24 2026 Received: from mail-pg1-f181.google.com (mail-pg1-f181.google.com [209.85.215.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 973DA1D6DB6 for ; Sat, 26 Oct 2024 17:14:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729962892; cv=none; b=AHV0R4w1m7jtysUs1J0PgxmG/YTCf/v6SsyWmeONkImLLutcSj/gLVtAZRIiNhAV5dHlWqpmpfXIeJo9mcwB7lzrcX3YE3WfkVXUOr0TI8WX6H0p/Zheb7KWlPG4FDZPngUCo7YkHeeXQxW26a1kz7guvwBQ6Sr1US4Ni+MqG4g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729962892; c=relaxed/simple; bh=9n83+TFEs1sWuWurdveeddmsJrb/ReI1EWNzw3Tr+ww=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KTkF5c6sBdAF9QJntXYpNfs3tFEOxX6svyIqtDGArikTug+n5WIS6HtdaYmnzvbn4SODExtLgDAou5Zg9JStyB/9KZtJokOeB2Cy4wIWaijwhkKghWhwEJI19GjaounEyIIKFuBCNbumDSmBsUXUIO5WUQYG2Wo9i99V7lZRVw8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=sifive.com; spf=pass smtp.mailfrom=sifive.com; dkim=pass (2048-bit key) header.d=sifive.com header.i=@sifive.com header.b=DvCJA+lL; arc=none smtp.client-ip=209.85.215.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=sifive.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sifive.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sifive.com header.i=@sifive.com header.b="DvCJA+lL" Received: by mail-pg1-f181.google.com with SMTP id 41be03b00d2f7-7ea76a12c32so2261585a12.1 for ; Sat, 26 Oct 2024 10:14:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1729962890; x=1730567690; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=32SXpWlDW0kkamANJs274cWuCXV1jWs6Ch/GFZy2syA=; b=DvCJA+lLBQgbyFoAY3ZIgEVI1knNSbxFx+ef+DcawVxrwB0TPpNSZB+p76yMztJQes Iq9CPaFTXLroN/qCG1319gspJkxo5K36Rbq0jPcRoZprf06iz22S1AeI6p6+S9qf7V3O br1VfB9kYB31x63Yy9fZ6hdIoal/F3a57EaiCcLMlr4ryjl8Wbtt93VEhaP1tzDBUr4c 6aYqHBCb/hLvL7NJjtYtg3eqxgKneVgYnPnq5OpKVK1IyPIUgw7AQIJEKLU0RIf6Fvwg u4d9ome82fmLsGq56mPhKmI8NkTDDtpWXqFfbmN6l/lnS/YVmtv2iusnnlYSXUpndBQk AGnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729962890; x=1730567690; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=32SXpWlDW0kkamANJs274cWuCXV1jWs6Ch/GFZy2syA=; b=Y1qL0nQNi6mle0UjgD7eEVYnyX91+v1XWRU13xATlNF44DSUlm9RH7TrwmrWjSUztB mzuuZbTzYifDxc/TodqotzS1zRXfN0H7HMODkWn0uSnuuJiA+87MC0SE0K2Sy3+5df4M /Aqu5Imgi/NlK/pmyGmPRY9O8LYUdqcGQy2Q2QxdwqJV/2595JJLIeCu/WFclxO2ASNy OSqt7Cn8ZG/HDfrwqFxUvQPEM2OBjEbfFd8Yvc9THNaQZeWfa6z9pxcWaSyWT3PuqmnO 33oYKGg9PY5TIZI928Dpsa+KpqsenS2sCn8Eyay73s4zx2REYPscchRKOA7W31nhp9A8 BRzQ== X-Forwarded-Encrypted: i=1; AJvYcCWlfzMkE+PcuMqGehY3OnyG5+uTCQvGlkzhbRoU/dKF2r4Rq4o9WwLldAkzXsUi6ODh5zqYfcNWrDJEdc4=@vger.kernel.org X-Gm-Message-State: AOJu0YxJ4SrNYtdnix279IpAA6eDzW0d8o+AdsTJXAaR/g9OH2EbqOf8 jjhLV1NMpsDVVjXPelZdxH5tk5x7znFIombsv2XHWrJegd+3gS9ZSxcQ08zAL6w= X-Google-Smtp-Source: AGHT+IHuE/xLTvkb+BU83DmMK1Bc6hhBs45MKVg/zLV/CvtM1d0wHjLI0sEZOu1+WLDNR8rdwiJXEw== X-Received: by 2002:a17:90a:5e07:b0:2e2:eacc:3227 with SMTP id 98e67ed59e1d1-2e8f107c664mr4417836a91.23.1729962889947; Sat, 26 Oct 2024 10:14:49 -0700 (PDT) Received: from sw06.internal.sifive.com ([4.53.31.132]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2e77e558114sm5663762a91.36.2024.10.26.10.14.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Oct 2024 10:14:49 -0700 (PDT) From: Samuel Holland To: Palmer Dabbelt , linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org Cc: Andrew Morton , Arnd Bergmann , Alexandre Ghiti , Samuel Holland Subject: [PATCH 5/6] riscv: Support CONFIG_RELOCATABLE on riscv32 Date: Sat, 26 Oct 2024 10:13:57 -0700 Message-ID: <20241026171441.3047904-6-samuel.holland@sifive.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20241026171441.3047904-1-samuel.holland@sifive.com> References: <20241026171441.3047904-1-samuel.holland@sifive.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When adjusted to use the correctly-sized ELF types, relocate_kernel() works on riscv32 as well. The caveat about crossing an intermediate page table boundary does not apply to riscv32, since for Sv32 the early kernel mapping uses only PGD entries. Since KASLR is not yet supported on riscv32, this option is mostly useful for NOMMU. Signed-off-by: Samuel Holland --- arch/riscv/Kconfig | 2 +- arch/riscv/mm/init.c | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 4420419e7054..33aa79d84021 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -934,7 +934,7 @@ config PARAVIRT_TIME_ACCOUNTING =20 config RELOCATABLE bool "Build a relocatable kernel" - depends on 64BIT && !XIP_KERNEL + depends on !XIP_KERNEL select MODULE_SECTIONS if MODULES help This builds a kernel as a Position Independent Executable (PIE), diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c index a74e28367f9f..0aad925848a4 100644 --- a/arch/riscv/mm/init.c +++ b/arch/riscv/mm/init.c @@ -20,15 +20,13 @@ #include #include #include -#ifdef CONFIG_RELOCATABLE -#include -#endif #include #include =20 #include #include #include +#include #include #include #include @@ -312,7 +310,7 @@ extern unsigned long __rela_dyn_start, __rela_dyn_end; =20 static void __init relocate_kernel(void) { - Elf64_Rela *rela =3D (Elf64_Rela *)&__rela_dyn_start; + Elf_Rela *rela =3D (Elf_Rela *)&__rela_dyn_start; /* * This holds the offset between the linked virtual address and the * relocated virtual address. @@ -324,9 +322,9 @@ static void __init relocate_kernel(void) */ uintptr_t va_kernel_link_pa_offset =3D KERNEL_LINK_ADDR - kernel_map.phys= _addr; =20 - for ( ; rela < (Elf64_Rela *)&__rela_dyn_end; rela++) { - Elf64_Addr addr =3D (rela->r_offset - va_kernel_link_pa_offset); - Elf64_Addr relocated_addr =3D rela->r_addend; + for ( ; rela < (Elf_Rela *)&__rela_dyn_end; rela++) { + Elf_Addr addr =3D (rela->r_offset - va_kernel_link_pa_offset); + Elf_Addr relocated_addr =3D rela->r_addend; =20 if (rela->r_info !=3D R_RISCV_RELATIVE) continue; @@ -340,7 +338,7 @@ static void __init relocate_kernel(void) if (relocated_addr >=3D KERNEL_LINK_ADDR) relocated_addr +=3D reloc_offset; =20 - *(Elf64_Addr *)addr =3D relocated_addr; + *(Elf_Addr *)addr =3D relocated_addr; } } #endif /* CONFIG_RELOCATABLE */ @@ -1155,7 +1153,8 @@ asmlinkage void __init setup_vm(uintptr_t dtb_pa) * makes the kernel cross over a PUD_SIZE boundary, raise a bug * since a part of the kernel would not get mapped. */ - BUG_ON(PUD_SIZE - (kernel_map.virt_addr & (PUD_SIZE - 1)) < kernel_map.si= ze); + if (IS_ENABLED(CONFIG_64BIT)) + BUG_ON(PUD_SIZE - (kernel_map.virt_addr & (PUD_SIZE - 1)) < kernel_map.s= ize); relocate_kernel(); #endif =20 --=20 2.45.1 From nobody Mon Feb 9 07:24:24 2026 Received: from mail-pj1-f46.google.com (mail-pj1-f46.google.com [209.85.216.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D3A721D79B8 for ; Sat, 26 Oct 2024 17:14:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729962894; cv=none; b=bacqxQEpLz4fArbQmlISrrxA0UTVNWP4Lw/C2KB58NoTwxpUSTNnpW45DviOFK4CIG4BTNCVxB4g8YLHXz3E/g84thBfZdl5W1RWQEBqeEgV1cgrSROQEmplChiHwIu7/AmRnhOnwWfBpBAC6T0D9SJ9sRkGs6b5edEpmV9s+0w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1729962894; c=relaxed/simple; bh=6v/2B5pS1NQbKcx4Aq5/VZ8a+qebWC56UpnkfHq3Es8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cuwHJf+HhGM1ZDLljhZ3AoPyqTZqWb4zIDRY5R5/RADlvhu/qfRp1f3IUAOzAVa9k/OXtE7JB2jzPB72WDIt668HRTMhFVJQXi1FfINWppRCcaFjQtwMXRV3kVMdsB6mnW4zbiAqHolR87vsxTVQFRv+z0rEETUJS5XPEGFjc+Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=sifive.com; spf=pass smtp.mailfrom=sifive.com; dkim=pass (2048-bit key) header.d=sifive.com header.i=@sifive.com header.b=Rzmbx2Hs; arc=none smtp.client-ip=209.85.216.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=sifive.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sifive.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sifive.com header.i=@sifive.com header.b="Rzmbx2Hs" Received: by mail-pj1-f46.google.com with SMTP id 98e67ed59e1d1-2e2fb304e7dso2429962a91.1 for ; Sat, 26 Oct 2024 10:14:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1729962891; x=1730567691; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3iilPE9PRtO5dgnEVdYwMDgO0cR2NihKQ5GAqyVmi0I=; b=Rzmbx2Hs+kYbN/koVQwfBMju+R1WhWRIswEM/1mAWdcNPP8bBcTwAAtCtR8lR1XZD9 oL21rAiDAGK3Bm0PC9Rr35EWIg9ckg7hTo2KzSJPY/w6iRGorYKXC+8UiO20ULTAnFrs tSVqCvZ9ogvcD8IndvxuqxtrhwkT9BT4KFrcyzRxwH0+3HSNVS36L2AOdRHznLUJqxRF i4lgmxToW8xCHEx/0bP+cvOSSvXdPeCeGERDC0HVWlWaELDwKnoqQ17pZzigFXMy/1lg eW9XUH5A2MxaBQv7Va4dZwaBjz5ZtsjXJCdr84BtKF1wcsKRjJ13e5GS6CpQO6cpPB9r h+iQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729962891; x=1730567691; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3iilPE9PRtO5dgnEVdYwMDgO0cR2NihKQ5GAqyVmi0I=; b=Rjy6YPYh5aef6rIdS7C51shDnCGK8tAQJi+Pez+XEm1JBHC+CE6vDNdYKB/XHU87LQ zEm2MCsF0apmW+n1LVyF6/Wkf/McP87YmRq7hvGVpdp9iu9WzmOoo97TbK9WAzHQnM3T DRdctvZ61NSS3bc4pGYFbEu1aeVKjXaZIfheYt0V5Aap83RJi2BQwu8+Z/vYdRbM9IBO EoAk2vZpuutOJ8BFmJcX8P14rbbQ2bl5GhphKwJ4tsUjj3r+A3gUwX7EWID3Wvu/NeXX dtbu/KiqDjHQe6cS3K9KU6f0mZxJaNRYd4bAuOZ+2d0EjOlVIB1+TN+zI2zXs5OlT5yC /26A== X-Forwarded-Encrypted: i=1; AJvYcCVPOIM2Od2wQd7PBVzgh6BwDKtAcUoajfzeOrLuHWoo5wMSBCnPmN+RN42m7lnLRT4WBI9lRHQU8kcYJ7o=@vger.kernel.org X-Gm-Message-State: AOJu0YxCDHU8n56lERvOU47SBQ9JRaWxmtnn8bYCT8uKmfQlzvSAnc8G Qr4+z7y75PXmyg1jQOy4SVJxe+7a52BjFhkqxAqITTKJ/XMfzdAdWycnJ3hejdE= X-Google-Smtp-Source: AGHT+IHKHWEssFZ3dU4bK/XFfhtDHlaKTxMDsGGVAwitWxfjevjp7X7a3fieuNlFSdnYzB2SDFDTOA== X-Received: by 2002:a17:90a:3d0a:b0:2e2:c252:f861 with SMTP id 98e67ed59e1d1-2e8f10a7298mr4016154a91.28.1729962891258; Sat, 26 Oct 2024 10:14:51 -0700 (PDT) Received: from sw06.internal.sifive.com ([4.53.31.132]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2e77e558114sm5663762a91.36.2024.10.26.10.14.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Oct 2024 10:14:50 -0700 (PDT) From: Samuel Holland To: Palmer Dabbelt , linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org Cc: Andrew Morton , Arnd Bergmann , Alexandre Ghiti , Samuel Holland Subject: [PATCH 6/6] riscv: Remove CONFIG_PAGE_OFFSET Date: Sat, 26 Oct 2024 10:13:58 -0700 Message-ID: <20241026171441.3047904-7-samuel.holland@sifive.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20241026171441.3047904-1-samuel.holland@sifive.com> References: <20241026171441.3047904-1-samuel.holland@sifive.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The current definition of CONFIG_PAGE_OFFSET is problematic for a couple of reasons: 1) The value is misleading for normal 64-bit kernels, where it is overridden at runtime if Sv48 or Sv39 is chosen. This is especially the case for XIP kernels, which always use Sv39. 2) The option is not user-visible, but for NOMMU kernels it must be a valid RAM address, and for !RELOCATABLE it must additionally be the exact address where the kernel is loaded. Fix both of these by removing the option. 1) For MMU kernels, drop the indirection through Kconfig. Additionally, for XIP, drop the indirection through kernel_map. 2) For NOMMU kernels, use the user-visible physical RAM base if provided. Otherwise, force the kernel to be relocatable. Signed-off-by: Samuel Holland Reviewed-by: Jesse Taube --- arch/riscv/Kconfig | 8 +------- arch/riscv/include/asm/page.h | 15 ++++++++------- arch/riscv/include/asm/pgtable.h | 2 +- arch/riscv/mm/init.c | 8 ++------ 4 files changed, 12 insertions(+), 21 deletions(-) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 33aa79d84021..297ccbf4b5ce 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -195,6 +195,7 @@ config RISCV select PCI_DOMAINS_GENERIC if PCI select PCI_ECAM if (ACPI && PCI) select PCI_MSI if PCI + select RELOCATABLE if !MMU && !PHYS_RAM_BASE_FIXED select RISCV_ALTERNATIVE if !XIP_KERNEL select RISCV_APLIC select RISCV_IMSIC @@ -282,13 +283,6 @@ config MMU Select if you want MMU-based virtualised addressing space support by paged memory management. If unsure, say 'Y'. =20 -config PAGE_OFFSET - hex - default 0x80000000 if !MMU && RISCV_M_MODE - default 0x80200000 if !MMU - default 0xc0000000 if 32BIT - default 0xff60000000000000 if 64BIT - config KASAN_SHADOW_OFFSET hex depends on KASAN_GENERIC diff --git a/arch/riscv/include/asm/page.h b/arch/riscv/include/asm/page.h index 24d1ac052609..d1acd1efe0dc 100644 --- a/arch/riscv/include/asm/page.h +++ b/arch/riscv/include/asm/page.h @@ -28,15 +28,16 @@ */ #ifdef CONFIG_MMU #ifdef CONFIG_64BIT -#define PAGE_OFFSET kernel_map.page_offset -/* - * By default, CONFIG_PAGE_OFFSET value corresponds to SV57 address space = so - * define the PAGE_OFFSET value for SV48 and SV39. - */ +#define PAGE_OFFSET_L5 _AC(0xff60000000000000, UL) #define PAGE_OFFSET_L4 _AC(0xffffaf8000000000, UL) #define PAGE_OFFSET_L3 _AC(0xffffffd600000000, UL) +#ifdef CONFIG_XIP_KERNEL +#define PAGE_OFFSET PAGE_OFFSET_L3 #else -#define PAGE_OFFSET _AC(CONFIG_PAGE_OFFSET, UL) +#define PAGE_OFFSET kernel_map.page_offset +#endif /* CONFIG_XIP_KERNEL */ +#else +#define PAGE_OFFSET _AC(0xc0000000, UL) #endif /* CONFIG_64BIT */ #else #define PAGE_OFFSET ((unsigned long)phys_ram_base) @@ -100,7 +101,6 @@ typedef struct page *pgtable_t; #define ARCH_PFN_OFFSET (PFN_DOWN((unsigned long)phys_ram_base)) =20 struct kernel_mapping { - unsigned long page_offset; unsigned long virt_addr; unsigned long virt_offset; uintptr_t phys_addr; @@ -114,6 +114,7 @@ struct kernel_mapping { uintptr_t xiprom; uintptr_t xiprom_sz; #else + unsigned long page_offset; unsigned long va_kernel_pa_offset; #endif }; diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgta= ble.h index d0190ee9b2e4..b8125c3aa85d 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -15,7 +15,7 @@ #ifdef CONFIG_RELOCATABLE #define KERNEL_LINK_ADDR UL(0) #else -#define KERNEL_LINK_ADDR _AC(CONFIG_PAGE_OFFSET, UL) +#define KERNEL_LINK_ADDR _AC(CONFIG_PHYS_RAM_BASE, UL) #endif #define KERN_VIRT_SIZE (UL(-1)) #else diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c index 0aad925848a4..a1a185e6faf0 100644 --- a/arch/riscv/mm/init.c +++ b/arch/riscv/mm/init.c @@ -843,6 +843,8 @@ static __init void set_satp_mode(uintptr_t dtb_pa) uintptr_t set_satp_mode_pmd =3D ((unsigned long)set_satp_mode) & PMD_MASK; u64 satp_mode_cmdline =3D __pi_set_satp_mode_from_cmdline(dtb_pa); =20 + kernel_map.page_offset =3D PAGE_OFFSET_L5; + if (satp_mode_cmdline =3D=3D SATP_MODE_57) { disable_pgtable_l5(); } else if (satp_mode_cmdline =3D=3D SATP_MODE_48) { @@ -1090,11 +1092,6 @@ asmlinkage void __init setup_vm(uintptr_t dtb_pa) kernel_map.virt_addr =3D KERNEL_LINK_ADDR + kernel_map.virt_offset; =20 #ifdef CONFIG_XIP_KERNEL -#ifdef CONFIG_64BIT - kernel_map.page_offset =3D PAGE_OFFSET_L3; -#else - kernel_map.page_offset =3D _AC(CONFIG_PAGE_OFFSET, UL); -#endif kernel_map.xiprom =3D (uintptr_t)CONFIG_XIP_PHYS_ADDR; kernel_map.xiprom_sz =3D (uintptr_t)(&_exiprom) - (uintptr_t)(&_xiprom); =20 @@ -1106,7 +1103,6 @@ asmlinkage void __init setup_vm(uintptr_t dtb_pa) kernel_map.va_kernel_xip_data_pa_offset =3D kernel_map.virt_addr - kernel= _map.phys_addr + (uintptr_t)&_sdata - (uintptr_t)&_start; #else - kernel_map.page_offset =3D _AC(CONFIG_PAGE_OFFSET, UL); kernel_map.phys_addr =3D (uintptr_t)(&_start); kernel_map.size =3D (uintptr_t)(&_end) - kernel_map.phys_addr; kernel_map.va_kernel_pa_offset =3D kernel_map.virt_addr - kernel_map.phys= _addr; --=20 2.45.1