From: Anup Patel <apatel@ventanamicro.com>
To: kvm-riscv@lists.infradead.org
Subject: [kvmtool PATCH v4 9/9] riscv: Fix guest RAM alloc size computation for RV32
Date: Wed, 12 Jul 2023 22:05:01 +0530 [thread overview]
Message-ID: <20230712163501.1769737-10-apatel@ventanamicro.com> (raw)
In-Reply-To: <20230712163501.1769737-1-apatel@ventanamicro.com>
Currently, we ensure that guest RAM alloc size is at least 2M for
THP which works well for RV64 but breaks hugepage support for RV32.
To fix this, we use 4M as hugepage size for RV32.
Fixes: 867159a7963b ("riscv: Implement Guest/VM arch functions")
Signed-off-by: Anup Patel <apatel@ventanamicro.com>
---
riscv/kvm.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/riscv/kvm.c b/riscv/kvm.c
index 4d6f5cb..8daad94 100644
--- a/riscv/kvm.c
+++ b/riscv/kvm.c
@@ -61,16 +61,25 @@ void kvm__arch_set_cmdline(char *cmdline, bool video)
{
}
+#if __riscv_xlen == 64
+#define HUGEPAGE_SIZE SZ_2M
+#else
+#define HUGEPAGE_SIZE SZ_4M
+#endif
+
void kvm__arch_init(struct kvm *kvm)
{
/*
* Allocate guest memory. We must align our buffer to 64K to
* correlate with the maximum guest page size for virtio-mmio.
- * If using THP, then our minimal alignment becomes 2M.
- * 2M trumps 64K, so let's go with that.
+ * If using THP, then our minimal alignment becomes hugepage
+ * size. The hugepage size is always greater than 64K, so
+ * let's go with that.
*/
kvm->ram_size = min(kvm->cfg.ram_size, (u64)RISCV_MAX_MEMORY(kvm));
- kvm->arch.ram_alloc_size = kvm->ram_size + SZ_2M;
+ kvm->arch.ram_alloc_size = kvm->ram_size;
+ if (!kvm->cfg.hugetlbfs_path)
+ kvm->arch.ram_alloc_size += HUGEPAGE_SIZE;
kvm->arch.ram_alloc_start = mmap_anon_or_hugetlbfs(kvm,
kvm->cfg.hugetlbfs_path,
kvm->arch.ram_alloc_size);
--
2.34.1
WARNING: multiple messages have this Message-ID (diff)
From: Anup Patel <apatel@ventanamicro.com>
To: Will Deacon <will@kernel.org>,
julien.thierry.kdev@gmail.com, maz@kernel.org
Cc: Paolo Bonzini <pbonzini@redhat.com>,
Atish Patra <atishp@atishpatra.org>,
Andrew Jones <ajones@ventanamicro.com>,
Anup Patel <anup@brainfault.org>,
kvm@vger.kernel.org, kvm-riscv@lists.infradead.org,
Anup Patel <apatel@ventanamicro.com>
Subject: [kvmtool PATCH v4 9/9] riscv: Fix guest RAM alloc size computation for RV32
Date: Wed, 12 Jul 2023 22:05:01 +0530 [thread overview]
Message-ID: <20230712163501.1769737-10-apatel@ventanamicro.com> (raw)
In-Reply-To: <20230712163501.1769737-1-apatel@ventanamicro.com>
Currently, we ensure that guest RAM alloc size is at least 2M for
THP which works well for RV64 but breaks hugepage support for RV32.
To fix this, we use 4M as hugepage size for RV32.
Fixes: 867159a7963b ("riscv: Implement Guest/VM arch functions")
Signed-off-by: Anup Patel <apatel@ventanamicro.com>
---
riscv/kvm.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/riscv/kvm.c b/riscv/kvm.c
index 4d6f5cb..8daad94 100644
--- a/riscv/kvm.c
+++ b/riscv/kvm.c
@@ -61,16 +61,25 @@ void kvm__arch_set_cmdline(char *cmdline, bool video)
{
}
+#if __riscv_xlen == 64
+#define HUGEPAGE_SIZE SZ_2M
+#else
+#define HUGEPAGE_SIZE SZ_4M
+#endif
+
void kvm__arch_init(struct kvm *kvm)
{
/*
* Allocate guest memory. We must align our buffer to 64K to
* correlate with the maximum guest page size for virtio-mmio.
- * If using THP, then our minimal alignment becomes 2M.
- * 2M trumps 64K, so let's go with that.
+ * If using THP, then our minimal alignment becomes hugepage
+ * size. The hugepage size is always greater than 64K, so
+ * let's go with that.
*/
kvm->ram_size = min(kvm->cfg.ram_size, (u64)RISCV_MAX_MEMORY(kvm));
- kvm->arch.ram_alloc_size = kvm->ram_size + SZ_2M;
+ kvm->arch.ram_alloc_size = kvm->ram_size;
+ if (!kvm->cfg.hugetlbfs_path)
+ kvm->arch.ram_alloc_size += HUGEPAGE_SIZE;
kvm->arch.ram_alloc_start = mmap_anon_or_hugetlbfs(kvm,
kvm->cfg.hugetlbfs_path,
kvm->arch.ram_alloc_size);
--
2.34.1
next prev parent reply other threads:[~2023-07-12 16:35 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-12 16:34 [kvmtool PATCH v4 0/9] RISC-V SBI enable/disable, Zbb, Zicboz, and Ssaia support Anup Patel
2023-07-12 16:34 ` Anup Patel
2023-07-12 16:34 ` [kvmtool PATCH v4 1/9] kvm tools: Add __DECLARE_FLEX_ARRAY() in include/linux/stddef.h Anup Patel
2023-07-12 16:34 ` Anup Patel
2023-07-12 16:34 ` [kvmtool PATCH v4 2/9] Sync-up headers with Linux-6.4 Anup Patel
2023-07-12 16:34 ` Anup Patel
2023-07-12 16:34 ` [kvmtool PATCH v4 3/9] riscv: Allow setting custom mvendorid, marchid, and mimpid Anup Patel
2023-07-12 16:34 ` Anup Patel
2023-07-12 16:34 ` [kvmtool PATCH v4 4/9] riscv: Allow disabling SBI extensions for Guest Anup Patel
2023-07-12 16:34 ` Anup Patel
2023-07-12 16:34 ` [kvmtool PATCH v4 5/9] riscv: Sort the ISA extension array alphabetically Anup Patel
2023-07-12 16:34 ` Anup Patel
2023-07-12 16:34 ` [kvmtool PATCH v4 6/9] riscv: Add zbb extension support Anup Patel
2023-07-12 16:34 ` Anup Patel
2023-07-12 16:34 ` [kvmtool PATCH v4 7/9] riscv: Add Zicboz " Anup Patel
2023-07-12 16:34 ` Anup Patel
2023-07-12 16:35 ` [kvmtool PATCH v4 8/9] riscv: Add Ssaia " Anup Patel
2023-07-12 16:35 ` Anup Patel
2023-07-12 16:35 ` Anup Patel [this message]
2023-07-12 16:35 ` [kvmtool PATCH v4 9/9] riscv: Fix guest RAM alloc size computation for RV32 Anup Patel
2023-07-20 16:04 ` [kvmtool PATCH v4 0/9] RISC-V SBI enable/disable, Zbb, Zicboz, and Ssaia support Will Deacon
2023-07-20 16:04 ` Will Deacon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230712163501.1769737-10-apatel@ventanamicro.com \
--to=apatel@ventanamicro.com \
--cc=kvm-riscv@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.