On 9/18/2020 3:18 PM, Andrew Jones wrote:
> On Thu, Sep 17, 2020 at 08:00:55PM +0800, Peng Liang wrote:
>> If we want to emulate ID registers, we need to initialize ID registers
>> firstly.  This commit is to add a helper function to traverse
>> arm64_ftr_regs so that we can initialize ID registers from
>> arm64_ftr_regs.
>>
>> Signed-off-by: zhanghailiang <[email protected]>
>> Signed-off-by: Peng Liang <[email protected]>
>> ---
>>  arch/arm64/include/asm/cpufeature.h |  2 ++
>>  arch/arm64/kernel/cpufeature.c      | 13 +++++++++++++
>>  2 files changed, 15 insertions(+)
>>
>> diff --git a/arch/arm64/include/asm/cpufeature.h 
>> b/arch/arm64/include/asm/cpufeature.h
>> index 89b4f0142c28..2ba7c4f11d8a 100644
>> --- a/arch/arm64/include/asm/cpufeature.h
>> +++ b/arch/arm64/include/asm/cpufeature.h
>> @@ -79,6 +79,8 @@ struct arm64_ftr_reg {
>>  
>>  extern struct arm64_ftr_reg arm64_ftr_reg_ctrel0;
>>  
>> +int arm64_cpu_ftr_regs_traverse(int (*op)(u32, u64, void *), void *argp);
>> +
>>  /*
>>   * CPU capabilities:
>>   *
>> diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
>> index 6424584be01e..698b32705544 100644
>> --- a/arch/arm64/kernel/cpufeature.c
>> +++ b/arch/arm64/kernel/cpufeature.c
>> @@ -1112,6 +1112,19 @@ u64 read_sanitised_ftr_reg(u32 id)
>>      return regp->sys_val;
>>  }
>>  
>> +int arm64_cpu_ftr_regs_traverse(int (*op)(u32, u64, void *), void *argp)
>> +{
>> +    int i, ret;
>> +
>> +    for (i = 0; i <  ARRAY_SIZE(arm64_ftr_regs); i++) {
>> +            ret = (*op)(arm64_ftr_regs[i].sys_id,
>> +                        arm64_ftr_regs[i].reg->sys_val, argp);
>> +            if (ret < 0)
>> +                    return ret;
>> +    }
>> +    return 0;
>> +}
>> +
>>  #define read_sysreg_case(r) \
>>      case r:         return read_sysreg_s(r)
>>  
>> -- 
>> 2.26.2
>>
> 
> Skimming the rest of the patches to see how this is used I only saw a
> single callsite. Why wouldn't we just put this simple for-loop right
> there at that callsite? Or, IOW, I think this traverse function should
> be dropped.
> 
> Thanks,
> drew
> 
> .
> 

arm64_ftr_regs is defined as a static array in arch/arm64/kernel/cpufeature.c,
which is not a virtualization-related file.  Putting this simple for-loop
right there will make cpufeature.c depend on kvm_host.h.  Is this a good idea?

Thanks,
Peng
_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

Reply via email to