lkml.org 
[lkml]   [2023]   [Feb]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH v2 02/29] LoongArch: KVM: Implement kvm module related interface
From
Date


在 2023年02月21日 01:46, Paolo Bonzini 写道:
> On 2/20/23 07:57, Tianrui Zhao wrote:
>> + order = get_order(kvm_vector_size + kvm_enter_guest_size);
>> + addr = (void *)__get_free_pages(GFP_KERNEL, order);
>> + if (!addr) {
>> + free_percpu(vmcs);
>> + return -ENOMEM;
>> + }
>> +
>> + memcpy(addr, kvm_vector_entry, kvm_vector_size);
>> + memcpy(addr + kvm_vector_size, kvm_enter_guest,
>> kvm_enter_guest_size);
>> + flush_icache_range((unsigned long)addr, (unsigned long)addr +
>> + kvm_vector_size + kvm_enter_guest_size);
>> +
>> + vpid_mask = read_csr_gstat();
>> + vpid_mask = (vpid_mask & CSR_GSTAT_GIDBIT) >>
>> CSR_GSTAT_GIDBIT_SHIFT;
>> + if (vpid_mask)
>> + vpid_mask = GENMASK(vpid_mask - 1, 0);
>> +
>> + for_each_possible_cpu(cpu) {
>> + context = per_cpu_ptr(vmcs, cpu);
>> + context->vpid_mask = vpid_mask;
>> + context->vpid_cache = context->vpid_mask + 1;
>> + context->last_vcpu = NULL;
>> + context->kvm_eentry = addr;
>> + context->kvm_enter_guest = addr + kvm_vector_size;
>> + context->page_order = order;
>> + }
>
> A lot of these variables are constant across all pCPUs, any reason to
> have them in a per-CPU variable? Likewise, since they are all the
> same as the constant global vmcs variable, why make them part of
> struct kvm_context instead of just making them globals?

Ok thanks, it is more appropriate to use global variables to save those
information.

Thanks
Tianrui Zhao

>
> Also, why does the world switch code need a copy?
>
> Paolo

\
 
 \ /
  Last update: 2023-03-27 00:29    [W:0.228 / U:0.012 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site