mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-03-16 04:04:06 +00:00
KVM: Add gfp_custom flag in struct kvm_mmu_memory_cache
The kvm_mmu_topup_memory_cache() always uses GFP_KERNEL_ACCOUNT for memory allocation which prevents it's use in atomic context. To address this limitation of kvm_mmu_topup_memory_cache(), we add gfp_custom flag in struct kvm_mmu_memory_cache. When the gfp_custom flag is set to some GFP_xyz flags, the kvm_mmu_topup_memory_cache() will use that instead of GFP_KERNEL_ACCOUNT. Signed-off-by: Anup Patel <apatel@ventanamicro.com> Reviewed-by: Atish Patra <atishp@rivosinc.com> Signed-off-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
parent
8a061562e2
commit
4ab0e470c0
2 changed files with 4 additions and 1 deletions
|
@ -87,6 +87,7 @@ struct gfn_to_pfn_cache {
|
|||
struct kvm_mmu_memory_cache {
|
||||
int nobjs;
|
||||
gfp_t gfp_zero;
|
||||
gfp_t gfp_custom;
|
||||
struct kmem_cache *kmem_cache;
|
||||
void *objects[KVM_ARCH_NR_OBJS_PER_MEMORY_CACHE];
|
||||
};
|
||||
|
|
|
@ -386,7 +386,9 @@ int kvm_mmu_topup_memory_cache(struct kvm_mmu_memory_cache *mc, int min)
|
|||
if (mc->nobjs >= min)
|
||||
return 0;
|
||||
while (mc->nobjs < ARRAY_SIZE(mc->objects)) {
|
||||
obj = mmu_memory_cache_alloc_obj(mc, GFP_KERNEL_ACCOUNT);
|
||||
obj = mmu_memory_cache_alloc_obj(mc, (mc->gfp_custom) ?
|
||||
mc->gfp_custom :
|
||||
GFP_KERNEL_ACCOUNT);
|
||||
if (!obj)
|
||||
return mc->nobjs >= min ? 0 : -ENOMEM;
|
||||
mc->objects[mc->nobjs++] = obj;
|
||||
|
|
Loading…
Add table
Reference in a new issue