From: yhchen312@gmail.com
To: anup@brainfault.org
Cc: atish.patra@linux.dev, pjw@kernel.org, palmer@dabbelt.com,
aou@eecs.berkeley.edu, alex@ghiti.fr, kvm@vger.kernel.org,
kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org,
linux-kernel@vger.kernel.org, "Yuhang.chen" <yhchen312@gmail.com>,
Quan Zhou <zhouquan@iscas.ac.cn>
Subject: [PATCH] RISC-V: KVM: Account VM-scoped allocations to the VM cgroup
Date: Thu, 16 Jul 2026 14:41:12 +0800 [thread overview]
Message-ID: <20260716064112.2387938-1-yhchen312@gmail.com> (raw)
From: "Yuhang.chen" <yhchen312@gmail.com>
Charge the per-VM and per-vCPU allocations (stage-2 PGD, APLIC state,
IMSIC context, vector context, FWFT config, PMU snapshot) to the
allocating process's memory cgroup via GFP_KERNEL_ACCOUNT / __GFP_ACCOUNT.
Per-CPU module-init allocations and transient scratch buffers are left
unaccounted.
Measured results (KVM guest run in a memory cgroup; VM cgroup
memory.current after guest boot):
VM cgroup memory.current 1044480 bytes
Assisted-by: YuanSheng:deepseek-v4-pro
Co-developed-by: Quan Zhou <zhouquan@iscas.ac.cn>
Signed-off-by: Quan Zhou <zhouquan@iscas.ac.cn>
Signed-off-by: Yuhang.chen <yhchen312@gmail.com>
---
arch/riscv/kvm/aia_aplic.c | 3 ++-
arch/riscv/kvm/aia_imsic.c | 4 ++--
arch/riscv/kvm/mmu.c | 4 ++--
arch/riscv/kvm/vcpu_pmu.c | 2 +-
arch/riscv/kvm/vcpu_sbi_fwft.c | 2 +-
arch/riscv/kvm/vcpu_vector.c | 4 ++--
6 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/arch/riscv/kvm/aia_aplic.c b/arch/riscv/kvm/aia_aplic.c
index 748107c347d9..be902ea6480b 100644
--- a/arch/riscv/kvm/aia_aplic.c
+++ b/arch/riscv/kvm/aia_aplic.c
@@ -581,7 +581,8 @@ int kvm_riscv_aia_aplic_init(struct kvm *kvm)
return 0;
/* Allocate APLIC global state */
- aplic = kzalloc_flex(*aplic, irqs, kvm->arch.aia.nr_sources + 1);
+ aplic = kzalloc_flex(*aplic, irqs, kvm->arch.aia.nr_sources + 1,
+ GFP_KERNEL_ACCOUNT);
if (!aplic)
return -ENOMEM;
kvm->arch.aia.aplic_state = aplic;
diff --git a/arch/riscv/kvm/aia_imsic.c b/arch/riscv/kvm/aia_imsic.c
index d38f5de0834c..507d82e5bc88 100644
--- a/arch/riscv/kvm/aia_imsic.c
+++ b/arch/riscv/kvm/aia_imsic.c
@@ -1108,7 +1108,7 @@ int kvm_riscv_vcpu_aia_imsic_init(struct kvm_vcpu *vcpu)
return -EINVAL;
/* Allocate IMSIC context */
- imsic = kzalloc_obj(*imsic);
+ imsic = kzalloc_obj(*imsic, GFP_KERNEL_ACCOUNT);
if (!imsic)
return -ENOMEM;
vcpu->arch.aia_context.imsic_state = imsic;
@@ -1121,7 +1121,7 @@ int kvm_riscv_vcpu_aia_imsic_init(struct kvm_vcpu *vcpu)
imsic->vsfile_hgei = imsic->vsfile_cpu = -1;
/* Setup IMSIC SW-file */
- swfile_page = alloc_pages(GFP_KERNEL | __GFP_ZERO,
+ swfile_page = alloc_pages(GFP_KERNEL_ACCOUNT | __GFP_ZERO,
get_order(sizeof(*imsic->swfile)));
if (!swfile_page) {
ret = -ENOMEM;
diff --git a/arch/riscv/kvm/mmu.c b/arch/riscv/kvm/mmu.c
index 082f9b261733..9b1d809daf2c 100644
--- a/arch/riscv/kvm/mmu.c
+++ b/arch/riscv/kvm/mmu.c
@@ -669,8 +669,8 @@ int kvm_riscv_mmu_alloc_pgd(struct kvm *kvm)
return -EINVAL;
}
- pgd_page = alloc_pages(GFP_KERNEL | __GFP_ZERO,
- get_order(kvm_riscv_gstage_pgd_size));
+ pgd_page = alloc_pages(GFP_KERNEL_ACCOUNT | __GFP_ZERO,
+ get_order(kvm_riscv_gstage_pgd_size));
if (!pgd_page)
return -ENOMEM;
kvm->arch.pgd = page_to_virt(pgd_page);
diff --git a/arch/riscv/kvm/vcpu_pmu.c b/arch/riscv/kvm/vcpu_pmu.c
index bb46dcbfb24d..e5018784779d 100644
--- a/arch/riscv/kvm/vcpu_pmu.c
+++ b/arch/riscv/kvm/vcpu_pmu.c
@@ -452,7 +452,7 @@ int kvm_riscv_vcpu_pmu_snapshot_set_shmem(struct kvm_vcpu *vcpu, unsigned long s
}
}
- kvpmu->sdata = kzalloc(snapshot_area_size, GFP_ATOMIC);
+ kvpmu->sdata = kzalloc(snapshot_area_size, GFP_ATOMIC | __GFP_ACCOUNT);
if (!kvpmu->sdata) {
sbiret = SBI_ERR_FAILURE;
goto out;
diff --git a/arch/riscv/kvm/vcpu_sbi_fwft.c b/arch/riscv/kvm/vcpu_sbi_fwft.c
index ab39ac464ffd..4984d3e54e23 100644
--- a/arch/riscv/kvm/vcpu_sbi_fwft.c
+++ b/arch/riscv/kvm/vcpu_sbi_fwft.c
@@ -377,7 +377,7 @@ static int kvm_sbi_ext_fwft_init(struct kvm_vcpu *vcpu)
int i;
fwft->configs = kzalloc_objs(struct kvm_sbi_fwft_config,
- ARRAY_SIZE(features));
+ ARRAY_SIZE(features), GFP_KERNEL_ACCOUNT);
if (!fwft->configs)
return -ENOMEM;
diff --git a/arch/riscv/kvm/vcpu_vector.c b/arch/riscv/kvm/vcpu_vector.c
index 62d2fb77bb9b..d748e7d825e1 100644
--- a/arch/riscv/kvm/vcpu_vector.c
+++ b/arch/riscv/kvm/vcpu_vector.c
@@ -76,11 +76,11 @@ void kvm_riscv_vcpu_host_vector_restore(struct kvm_cpu_context *cntx)
int kvm_riscv_vcpu_alloc_vector_context(struct kvm_vcpu *vcpu)
{
- vcpu->arch.guest_context.vector.datap = kzalloc(riscv_v_vsize, GFP_KERNEL);
+ vcpu->arch.guest_context.vector.datap = kzalloc(riscv_v_vsize, GFP_KERNEL_ACCOUNT);
if (!vcpu->arch.guest_context.vector.datap)
return -ENOMEM;
- vcpu->arch.host_context.vector.datap = kzalloc(riscv_v_vsize, GFP_KERNEL);
+ vcpu->arch.host_context.vector.datap = kzalloc(riscv_v_vsize, GFP_KERNEL_ACCOUNT);
if (!vcpu->arch.host_context.vector.datap) {
kfree(vcpu->arch.guest_context.vector.datap);
vcpu->arch.guest_context.vector.datap = NULL;
--
2.34.1
WARNING: multiple messages have this Message-ID (diff)
From: yhchen312@gmail.com
To: anup@brainfault.org
Cc: atish.patra@linux.dev, pjw@kernel.org, palmer@dabbelt.com,
aou@eecs.berkeley.edu, alex@ghiti.fr, kvm@vger.kernel.org,
kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org,
linux-kernel@vger.kernel.org, "Yuhang.chen" <yhchen312@gmail.com>,
Quan Zhou <zhouquan@iscas.ac.cn>
Subject: [PATCH] RISC-V: KVM: Account VM-scoped allocations to the VM cgroup
Date: Thu, 16 Jul 2026 14:41:12 +0800 [thread overview]
Message-ID: <20260716064112.2387938-1-yhchen312@gmail.com> (raw)
From: "Yuhang.chen" <yhchen312@gmail.com>
Charge the per-VM and per-vCPU allocations (stage-2 PGD, APLIC state,
IMSIC context, vector context, FWFT config, PMU snapshot) to the
allocating process's memory cgroup via GFP_KERNEL_ACCOUNT / __GFP_ACCOUNT.
Per-CPU module-init allocations and transient scratch buffers are left
unaccounted.
Measured results (KVM guest run in a memory cgroup; VM cgroup
memory.current after guest boot):
VM cgroup memory.current 1044480 bytes
Assisted-by: YuanSheng:deepseek-v4-pro
Co-developed-by: Quan Zhou <zhouquan@iscas.ac.cn>
Signed-off-by: Quan Zhou <zhouquan@iscas.ac.cn>
Signed-off-by: Yuhang.chen <yhchen312@gmail.com>
---
arch/riscv/kvm/aia_aplic.c | 3 ++-
arch/riscv/kvm/aia_imsic.c | 4 ++--
arch/riscv/kvm/mmu.c | 4 ++--
arch/riscv/kvm/vcpu_pmu.c | 2 +-
arch/riscv/kvm/vcpu_sbi_fwft.c | 2 +-
arch/riscv/kvm/vcpu_vector.c | 4 ++--
6 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/arch/riscv/kvm/aia_aplic.c b/arch/riscv/kvm/aia_aplic.c
index 748107c347d9..be902ea6480b 100644
--- a/arch/riscv/kvm/aia_aplic.c
+++ b/arch/riscv/kvm/aia_aplic.c
@@ -581,7 +581,8 @@ int kvm_riscv_aia_aplic_init(struct kvm *kvm)
return 0;
/* Allocate APLIC global state */
- aplic = kzalloc_flex(*aplic, irqs, kvm->arch.aia.nr_sources + 1);
+ aplic = kzalloc_flex(*aplic, irqs, kvm->arch.aia.nr_sources + 1,
+ GFP_KERNEL_ACCOUNT);
if (!aplic)
return -ENOMEM;
kvm->arch.aia.aplic_state = aplic;
diff --git a/arch/riscv/kvm/aia_imsic.c b/arch/riscv/kvm/aia_imsic.c
index d38f5de0834c..507d82e5bc88 100644
--- a/arch/riscv/kvm/aia_imsic.c
+++ b/arch/riscv/kvm/aia_imsic.c
@@ -1108,7 +1108,7 @@ int kvm_riscv_vcpu_aia_imsic_init(struct kvm_vcpu *vcpu)
return -EINVAL;
/* Allocate IMSIC context */
- imsic = kzalloc_obj(*imsic);
+ imsic = kzalloc_obj(*imsic, GFP_KERNEL_ACCOUNT);
if (!imsic)
return -ENOMEM;
vcpu->arch.aia_context.imsic_state = imsic;
@@ -1121,7 +1121,7 @@ int kvm_riscv_vcpu_aia_imsic_init(struct kvm_vcpu *vcpu)
imsic->vsfile_hgei = imsic->vsfile_cpu = -1;
/* Setup IMSIC SW-file */
- swfile_page = alloc_pages(GFP_KERNEL | __GFP_ZERO,
+ swfile_page = alloc_pages(GFP_KERNEL_ACCOUNT | __GFP_ZERO,
get_order(sizeof(*imsic->swfile)));
if (!swfile_page) {
ret = -ENOMEM;
diff --git a/arch/riscv/kvm/mmu.c b/arch/riscv/kvm/mmu.c
index 082f9b261733..9b1d809daf2c 100644
--- a/arch/riscv/kvm/mmu.c
+++ b/arch/riscv/kvm/mmu.c
@@ -669,8 +669,8 @@ int kvm_riscv_mmu_alloc_pgd(struct kvm *kvm)
return -EINVAL;
}
- pgd_page = alloc_pages(GFP_KERNEL | __GFP_ZERO,
- get_order(kvm_riscv_gstage_pgd_size));
+ pgd_page = alloc_pages(GFP_KERNEL_ACCOUNT | __GFP_ZERO,
+ get_order(kvm_riscv_gstage_pgd_size));
if (!pgd_page)
return -ENOMEM;
kvm->arch.pgd = page_to_virt(pgd_page);
diff --git a/arch/riscv/kvm/vcpu_pmu.c b/arch/riscv/kvm/vcpu_pmu.c
index bb46dcbfb24d..e5018784779d 100644
--- a/arch/riscv/kvm/vcpu_pmu.c
+++ b/arch/riscv/kvm/vcpu_pmu.c
@@ -452,7 +452,7 @@ int kvm_riscv_vcpu_pmu_snapshot_set_shmem(struct kvm_vcpu *vcpu, unsigned long s
}
}
- kvpmu->sdata = kzalloc(snapshot_area_size, GFP_ATOMIC);
+ kvpmu->sdata = kzalloc(snapshot_area_size, GFP_ATOMIC | __GFP_ACCOUNT);
if (!kvpmu->sdata) {
sbiret = SBI_ERR_FAILURE;
goto out;
diff --git a/arch/riscv/kvm/vcpu_sbi_fwft.c b/arch/riscv/kvm/vcpu_sbi_fwft.c
index ab39ac464ffd..4984d3e54e23 100644
--- a/arch/riscv/kvm/vcpu_sbi_fwft.c
+++ b/arch/riscv/kvm/vcpu_sbi_fwft.c
@@ -377,7 +377,7 @@ static int kvm_sbi_ext_fwft_init(struct kvm_vcpu *vcpu)
int i;
fwft->configs = kzalloc_objs(struct kvm_sbi_fwft_config,
- ARRAY_SIZE(features));
+ ARRAY_SIZE(features), GFP_KERNEL_ACCOUNT);
if (!fwft->configs)
return -ENOMEM;
diff --git a/arch/riscv/kvm/vcpu_vector.c b/arch/riscv/kvm/vcpu_vector.c
index 62d2fb77bb9b..d748e7d825e1 100644
--- a/arch/riscv/kvm/vcpu_vector.c
+++ b/arch/riscv/kvm/vcpu_vector.c
@@ -76,11 +76,11 @@ void kvm_riscv_vcpu_host_vector_restore(struct kvm_cpu_context *cntx)
int kvm_riscv_vcpu_alloc_vector_context(struct kvm_vcpu *vcpu)
{
- vcpu->arch.guest_context.vector.datap = kzalloc(riscv_v_vsize, GFP_KERNEL);
+ vcpu->arch.guest_context.vector.datap = kzalloc(riscv_v_vsize, GFP_KERNEL_ACCOUNT);
if (!vcpu->arch.guest_context.vector.datap)
return -ENOMEM;
- vcpu->arch.host_context.vector.datap = kzalloc(riscv_v_vsize, GFP_KERNEL);
+ vcpu->arch.host_context.vector.datap = kzalloc(riscv_v_vsize, GFP_KERNEL_ACCOUNT);
if (!vcpu->arch.host_context.vector.datap) {
kfree(vcpu->arch.guest_context.vector.datap);
vcpu->arch.guest_context.vector.datap = NULL;
--
2.34.1
--
kvm-riscv mailing list
kvm-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kvm-riscv
WARNING: multiple messages have this Message-ID (diff)
From: yhchen312@gmail.com
To: anup@brainfault.org
Cc: atish.patra@linux.dev, pjw@kernel.org, palmer@dabbelt.com,
aou@eecs.berkeley.edu, alex@ghiti.fr, kvm@vger.kernel.org,
kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org,
linux-kernel@vger.kernel.org, "Yuhang.chen" <yhchen312@gmail.com>,
Quan Zhou <zhouquan@iscas.ac.cn>
Subject: [PATCH] RISC-V: KVM: Account VM-scoped allocations to the VM cgroup
Date: Thu, 16 Jul 2026 14:41:12 +0800 [thread overview]
Message-ID: <20260716064112.2387938-1-yhchen312@gmail.com> (raw)
From: "Yuhang.chen" <yhchen312@gmail.com>
Charge the per-VM and per-vCPU allocations (stage-2 PGD, APLIC state,
IMSIC context, vector context, FWFT config, PMU snapshot) to the
allocating process's memory cgroup via GFP_KERNEL_ACCOUNT / __GFP_ACCOUNT.
Per-CPU module-init allocations and transient scratch buffers are left
unaccounted.
Measured results (KVM guest run in a memory cgroup; VM cgroup
memory.current after guest boot):
VM cgroup memory.current 1044480 bytes
Assisted-by: YuanSheng:deepseek-v4-pro
Co-developed-by: Quan Zhou <zhouquan@iscas.ac.cn>
Signed-off-by: Quan Zhou <zhouquan@iscas.ac.cn>
Signed-off-by: Yuhang.chen <yhchen312@gmail.com>
---
arch/riscv/kvm/aia_aplic.c | 3 ++-
arch/riscv/kvm/aia_imsic.c | 4 ++--
arch/riscv/kvm/mmu.c | 4 ++--
arch/riscv/kvm/vcpu_pmu.c | 2 +-
arch/riscv/kvm/vcpu_sbi_fwft.c | 2 +-
arch/riscv/kvm/vcpu_vector.c | 4 ++--
6 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/arch/riscv/kvm/aia_aplic.c b/arch/riscv/kvm/aia_aplic.c
index 748107c347d9..be902ea6480b 100644
--- a/arch/riscv/kvm/aia_aplic.c
+++ b/arch/riscv/kvm/aia_aplic.c
@@ -581,7 +581,8 @@ int kvm_riscv_aia_aplic_init(struct kvm *kvm)
return 0;
/* Allocate APLIC global state */
- aplic = kzalloc_flex(*aplic, irqs, kvm->arch.aia.nr_sources + 1);
+ aplic = kzalloc_flex(*aplic, irqs, kvm->arch.aia.nr_sources + 1,
+ GFP_KERNEL_ACCOUNT);
if (!aplic)
return -ENOMEM;
kvm->arch.aia.aplic_state = aplic;
diff --git a/arch/riscv/kvm/aia_imsic.c b/arch/riscv/kvm/aia_imsic.c
index d38f5de0834c..507d82e5bc88 100644
--- a/arch/riscv/kvm/aia_imsic.c
+++ b/arch/riscv/kvm/aia_imsic.c
@@ -1108,7 +1108,7 @@ int kvm_riscv_vcpu_aia_imsic_init(struct kvm_vcpu *vcpu)
return -EINVAL;
/* Allocate IMSIC context */
- imsic = kzalloc_obj(*imsic);
+ imsic = kzalloc_obj(*imsic, GFP_KERNEL_ACCOUNT);
if (!imsic)
return -ENOMEM;
vcpu->arch.aia_context.imsic_state = imsic;
@@ -1121,7 +1121,7 @@ int kvm_riscv_vcpu_aia_imsic_init(struct kvm_vcpu *vcpu)
imsic->vsfile_hgei = imsic->vsfile_cpu = -1;
/* Setup IMSIC SW-file */
- swfile_page = alloc_pages(GFP_KERNEL | __GFP_ZERO,
+ swfile_page = alloc_pages(GFP_KERNEL_ACCOUNT | __GFP_ZERO,
get_order(sizeof(*imsic->swfile)));
if (!swfile_page) {
ret = -ENOMEM;
diff --git a/arch/riscv/kvm/mmu.c b/arch/riscv/kvm/mmu.c
index 082f9b261733..9b1d809daf2c 100644
--- a/arch/riscv/kvm/mmu.c
+++ b/arch/riscv/kvm/mmu.c
@@ -669,8 +669,8 @@ int kvm_riscv_mmu_alloc_pgd(struct kvm *kvm)
return -EINVAL;
}
- pgd_page = alloc_pages(GFP_KERNEL | __GFP_ZERO,
- get_order(kvm_riscv_gstage_pgd_size));
+ pgd_page = alloc_pages(GFP_KERNEL_ACCOUNT | __GFP_ZERO,
+ get_order(kvm_riscv_gstage_pgd_size));
if (!pgd_page)
return -ENOMEM;
kvm->arch.pgd = page_to_virt(pgd_page);
diff --git a/arch/riscv/kvm/vcpu_pmu.c b/arch/riscv/kvm/vcpu_pmu.c
index bb46dcbfb24d..e5018784779d 100644
--- a/arch/riscv/kvm/vcpu_pmu.c
+++ b/arch/riscv/kvm/vcpu_pmu.c
@@ -452,7 +452,7 @@ int kvm_riscv_vcpu_pmu_snapshot_set_shmem(struct kvm_vcpu *vcpu, unsigned long s
}
}
- kvpmu->sdata = kzalloc(snapshot_area_size, GFP_ATOMIC);
+ kvpmu->sdata = kzalloc(snapshot_area_size, GFP_ATOMIC | __GFP_ACCOUNT);
if (!kvpmu->sdata) {
sbiret = SBI_ERR_FAILURE;
goto out;
diff --git a/arch/riscv/kvm/vcpu_sbi_fwft.c b/arch/riscv/kvm/vcpu_sbi_fwft.c
index ab39ac464ffd..4984d3e54e23 100644
--- a/arch/riscv/kvm/vcpu_sbi_fwft.c
+++ b/arch/riscv/kvm/vcpu_sbi_fwft.c
@@ -377,7 +377,7 @@ static int kvm_sbi_ext_fwft_init(struct kvm_vcpu *vcpu)
int i;
fwft->configs = kzalloc_objs(struct kvm_sbi_fwft_config,
- ARRAY_SIZE(features));
+ ARRAY_SIZE(features), GFP_KERNEL_ACCOUNT);
if (!fwft->configs)
return -ENOMEM;
diff --git a/arch/riscv/kvm/vcpu_vector.c b/arch/riscv/kvm/vcpu_vector.c
index 62d2fb77bb9b..d748e7d825e1 100644
--- a/arch/riscv/kvm/vcpu_vector.c
+++ b/arch/riscv/kvm/vcpu_vector.c
@@ -76,11 +76,11 @@ void kvm_riscv_vcpu_host_vector_restore(struct kvm_cpu_context *cntx)
int kvm_riscv_vcpu_alloc_vector_context(struct kvm_vcpu *vcpu)
{
- vcpu->arch.guest_context.vector.datap = kzalloc(riscv_v_vsize, GFP_KERNEL);
+ vcpu->arch.guest_context.vector.datap = kzalloc(riscv_v_vsize, GFP_KERNEL_ACCOUNT);
if (!vcpu->arch.guest_context.vector.datap)
return -ENOMEM;
- vcpu->arch.host_context.vector.datap = kzalloc(riscv_v_vsize, GFP_KERNEL);
+ vcpu->arch.host_context.vector.datap = kzalloc(riscv_v_vsize, GFP_KERNEL_ACCOUNT);
if (!vcpu->arch.host_context.vector.datap) {
kfree(vcpu->arch.guest_context.vector.datap);
vcpu->arch.guest_context.vector.datap = NULL;
--
2.34.1
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
next reply other threads:[~2026-07-16 6:41 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-16 6:41 yhchen312 [this message]
2026-07-16 6:41 ` [PATCH] RISC-V: KVM: Account VM-scoped allocations to the VM cgroup yhchen312
2026-07-16 6:41 ` yhchen312
2026-07-16 6:54 ` sashiko-bot
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=20260716064112.2387938-1-yhchen312@gmail.com \
--to=yhchen312@gmail.com \
--cc=alex@ghiti.fr \
--cc=anup@brainfault.org \
--cc=aou@eecs.berkeley.edu \
--cc=atish.patra@linux.dev \
--cc=kvm-riscv@lists.infradead.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=palmer@dabbelt.com \
--cc=pjw@kernel.org \
--cc=zhouquan@iscas.ac.cn \
/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.