From patchwork Thu Jul 6 17:38:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anup Patel X-Patchwork-Id: 1804451 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=kvm-riscv-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=ztbcezhz; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ventanamicro.com header.i=@ventanamicro.com header.a=rsa-sha256 header.s=google header.b=YiUseGS+; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4QxkKs22dyz20ZQ for ; Fri, 7 Jul 2023 03:39:13 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=8++QaxwSEHYqGY2VUeixJcZFsLmJUHK5G6ElwqUk4Uc=; b=ztbcezhzdr4PSQ OOrXPvlybqZdS+lwFRUZW02npA0n8DOU9U70QCCV3Ei4SxBU+Lfh2ZqfESkvgl9KfU3nmKLRR2Ntj dTB8hH0H7wfqjfdQ1Q4w43eoh1J+Hi9M22S+eZ5C36K8L/Df95E1qnRGTsEYJJ54wzUjWCTK+iOqy N3GRtAmRmduD+9pTrijN9CCJo/fIA6fvXqCMw5r8296hv6vST6CIyNjsTzh0/L4BiQykoP4RSGL/l 5bSsNehrWCSofHjREa4s0M2P4C007XjNDJ4yr/MRWeZ61qhOWf1n+2v+0Ku9NGZrzeElzeTWPscAr i9QlAV11Xs0rDGJTx70A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qHSwf-002J0p-2l; Thu, 06 Jul 2023 17:39:09 +0000 Received: from mail-io1-xd31.google.com ([2607:f8b0:4864:20::d31]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qHSwd-002Izg-22 for kvm-riscv@lists.infradead.org; Thu, 06 Jul 2023 17:39:08 +0000 Received: by mail-io1-xd31.google.com with SMTP id ca18e2360f4ac-7835ae70e46so33992239f.3 for ; Thu, 06 Jul 2023 10:39:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1688665147; x=1691257147; 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=UIYA8beJZmA2NMdlgIpBmajMkuQ+bKy8H3Ug9/MSXpA=; b=YiUseGS++NnZP5HYtNORUhBq4BPckrWLkmidqcclaQe4tMk9YoaIBfE+vG/OMmIKvI fwk3URZqqS99ijG8L5cbuJADwqXO1xLkS1mfVKz87qiUcedEkGpgoiZkz6+5LsNRv+Fq TKh9iDvmkrNf+LkbVsRl5+Qj6JD3NNIy8mV+/VQaQFduUVjvYRn2KS3j9QQ7UhZwBpR0 f3Xj7qHHIhVTp12qVxEYPifnk8WCahxoCUmyQdfadBV/0Xs14MHZ8Cu70AsSsfEsY880 cAfJ/Zg3NtWnqWxAVzlUO03DC+w0fbMqE/VVPEQzHRf135Kfi0GyVJQsQGcVxyf0VjGl cAQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688665147; x=1691257147; 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=UIYA8beJZmA2NMdlgIpBmajMkuQ+bKy8H3Ug9/MSXpA=; b=bxRbJ4ndebSAoV2i+8NGrtQiEXLX5DsVkC4E70Gd6Sg5P/iDhM8JLNevUZkUHs5qkC FQPjZ1EXYRJC/ZFqjwueLlKTffxHcaslP7Qgq19FduCD1fa7OXnUCMDehV/Yt52OKICy TmDl5+jthYyXVIJM9OYnZu4CR6lEss+eLDNDZdyaq3hE/pFoBMYwRFjF3DvJN/iwLkkG 0UMoNmlauKDdY5dzscI2h1ugpvgDgMKCLpeBrQdtJ3TEXULS0JhtxR8JFm8vCKrIF1fX OhZTWkpEf67zz4B9fcvTo5+Q8eRtstEZfQuYK7Uu1ZTk3H4xP+CCC0wIODT/iS+BM8C0 6cLw== X-Gm-Message-State: ABy/qLbhrZmHekSWJGcoZ7c4ix2/2qytYC4cNPHAXuhT98ZTljRynvNl gTOtSI/kp2exyzHn1yX5sAcLpw== X-Google-Smtp-Source: APBJJlGO5febAOpcUaBoLA4EyZCXXCdSIHwz/JG901yWz0oqePeSfgIHDeICDdFHW2H3bHgKg5QiIw== X-Received: by 2002:a5d:9eda:0:b0:783:58f4:2e2e with SMTP id a26-20020a5d9eda000000b0078358f42e2emr2274826ioe.0.1688665146895; Thu, 06 Jul 2023 10:39:06 -0700 (PDT) Received: from anup-ubuntu-vm.localdomain ([103.97.165.210]) by smtp.gmail.com with ESMTPSA id q8-20020a0566380ec800b0042b70c5d242sm633528jas.116.2023.07.06.10.39.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Jul 2023 10:39:06 -0700 (PDT) From: Anup Patel To: Will Deacon , julien.thierry.kdev@gmail.com, maz@kernel.org Cc: Paolo Bonzini , Atish Patra , Andrew Jones , Anup Patel , kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Anup Patel Subject: [kvmtool PATCH v3 8/8] riscv: Fix guest RAM alloc size computation for RV32 Date: Thu, 6 Jul 2023 23:08:04 +0530 Message-Id: <20230706173804.1237348-9-apatel@ventanamicro.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230706173804.1237348-1-apatel@ventanamicro.com> References: <20230706173804.1237348-1-apatel@ventanamicro.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230706_103907_675987_047FCA6C X-CRM114-Status: UNSURE ( 9.75 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: 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 --- riscv/kvm.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions( [...] Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:d31 listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain X-BeenThere: kvm-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "kvm-riscv" Errors-To: kvm-riscv-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org 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 --- 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);