Re: [PATCH 1/3] LoongArch: KVM: Fix typo issue about GCFG feature detection

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, Bibo,

On Fri, Feb 7, 2025 at 11:26 AM Bibo Mao <maobibo@xxxxxxxxxxx> wrote:
>
> This is typo issue about GCFG feature macro, comments is added for
> these macro and typo issue is fixed here.
>
> Signed-off-by: Bibo Mao <maobibo@xxxxxxxxxxx>
> ---
>  arch/loongarch/include/asm/loongarch.h | 26 ++++++++++++++++++++++++++
>  arch/loongarch/kvm/main.c              |  4 ++--
>  2 files changed, 28 insertions(+), 2 deletions(-)
>
> diff --git a/arch/loongarch/include/asm/loongarch.h b/arch/loongarch/include/asm/loongarch.h
> index 52651aa0e583..1a65b5a7d54a 100644
> --- a/arch/loongarch/include/asm/loongarch.h
> +++ b/arch/loongarch/include/asm/loongarch.h
> @@ -502,49 +502,75 @@
>  #define LOONGARCH_CSR_GCFG             0x51    /* Guest config */
>  #define  CSR_GCFG_GPERF_SHIFT          24
>  #define  CSR_GCFG_GPERF_WIDTH          3
> +/* Number PMU register started from PM0 passthrough to VM */
>  #define  CSR_GCFG_GPERF                        (_ULCAST_(0x7) << CSR_GCFG_GPERF_SHIFT)
> +#define  CSR_GCFG_GPERFP_SHIFT         23
> +/* Read-only bit: show PMU passthrough supported or not */
> +#define  CSR_GCFG_GPERFP               (_ULCAST_(0x1) << CSR_GCFG_GPERFP_SHIFT)
>  #define  CSR_GCFG_GCI_SHIFT            20
>  #define  CSR_GCFG_GCI_WIDTH            2
>  #define  CSR_GCFG_GCI                  (_ULCAST_(0x3) << CSR_GCFG_GCI_SHIFT)
> +/* All cacheop instructions will trap to host */
>  #define  CSR_GCFG_GCI_ALL              (_ULCAST_(0x0) << CSR_GCFG_GCI_SHIFT)
> +/* Cacheop instruction except hit invalidate will trap to host */
>  #define  CSR_GCFG_GCI_HIT              (_ULCAST_(0x1) << CSR_GCFG_GCI_SHIFT)
> +/* Cacheop instruction except hit and index invalidate will trap to host */
>  #define  CSR_GCFG_GCI_SECURE           (_ULCAST_(0x2) << CSR_GCFG_GCI_SHIFT)
>  #define  CSR_GCFG_GCIP_SHIFT           16
>  #define  CSR_GCFG_GCIP                 (_ULCAST_(0xf) << CSR_GCFG_GCIP_SHIFT)
> +/* Read-only bit: show feature CSR_GCFG_GCI_ALL supported or not */
>  #define  CSR_GCFG_GCIP_ALL             (_ULCAST_(0x1) << CSR_GCFG_GCIP_SHIFT)
> +/* Read-only bit: show feature CSR_GCFG_GCI_HIT supported or not */
>  #define  CSR_GCFG_GCIP_HIT             (_ULCAST_(0x1) << (CSR_GCFG_GCIP_SHIFT + 1))
> +/* Read-only bit: show feature CSR_GCFG_GCI_SECURE supported or not */
>  #define  CSR_GCFG_GCIP_SECURE          (_ULCAST_(0x1) << (CSR_GCFG_GCIP_SHIFT + 2))
>  #define  CSR_GCFG_TORU_SHIFT           15
> +/* Operation with CSR register unimplemented will trap to host */
>  #define  CSR_GCFG_TORU                 (_ULCAST_(0x1) << CSR_GCFG_TORU_SHIFT)
>  #define  CSR_GCFG_TORUP_SHIFT          14
> +/* Read-only bit: show feature CSR_GCFG_TORU supported or not */
>  #define  CSR_GCFG_TORUP                        (_ULCAST_(0x1) << CSR_GCFG_TORUP_SHIFT)
>  #define  CSR_GCFG_TOP_SHIFT            13
> +/* Modificattion with CRMD.PLV will trap to host */
>  #define  CSR_GCFG_TOP                  (_ULCAST_(0x1) << CSR_GCFG_TOP_SHIFT)
>  #define  CSR_GCFG_TOPP_SHIFT           12
> +/* Read-only bit: show feature CSR_GCFG_TOP supported or not */
>  #define  CSR_GCFG_TOPP                 (_ULCAST_(0x1) << CSR_GCFG_TOPP_SHIFT)
>  #define  CSR_GCFG_TOE_SHIFT            11
> +/* ertn instruction will trap to host */
>  #define  CSR_GCFG_TOE                  (_ULCAST_(0x1) << CSR_GCFG_TOE_SHIFT)
>  #define  CSR_GCFG_TOEP_SHIFT           10
> +/* Read-only bit: show feature CSR_GCFG_TOE supported or not */
>  #define  CSR_GCFG_TOEP                 (_ULCAST_(0x1) << CSR_GCFG_TOEP_SHIFT)
>  #define  CSR_GCFG_TIT_SHIFT            9
> +/* Timer instruction such as rdtime/TCFG/TVAL will trap to host */
>  #define  CSR_GCFG_TIT                  (_ULCAST_(0x1) << CSR_GCFG_TIT_SHIFT)
>  #define  CSR_GCFG_TITP_SHIFT           8
> +/* Read-only bit: show feature CSR_GCFG_TIT supported or not */
>  #define  CSR_GCFG_TITP                 (_ULCAST_(0x1) << CSR_GCFG_TITP_SHIFT)
>  #define  CSR_GCFG_SIT_SHIFT            7
> +/* All privilege instruction will trap to host */
>  #define  CSR_GCFG_SIT                  (_ULCAST_(0x1) << CSR_GCFG_SIT_SHIFT)
>  #define  CSR_GCFG_SITP_SHIFT           6
> +/* Read-only bit: show feature CSR_GCFG_SIT supported or not */
>  #define  CSR_GCFG_SITP                 (_ULCAST_(0x1) << CSR_GCFG_SITP_SHIFT)
>  #define  CSR_GCFG_MATC_SHITF           4
>  #define  CSR_GCFG_MATC_WIDTH           2
>  #define  CSR_GCFG_MATC_MASK            (_ULCAST_(0x3) << CSR_GCFG_MATC_SHITF)
> +/* Cache attribute comes from GVA->GPA mapping */
>  #define  CSR_GCFG_MATC_GUEST           (_ULCAST_(0x0) << CSR_GCFG_MATC_SHITF)
> +/* Cache attribute comes from GPA->HPA mapping */
>  #define  CSR_GCFG_MATC_ROOT            (_ULCAST_(0x1) << CSR_GCFG_MATC_SHITF)
> +/* Cache attribute comes from weaker one of GVA->GPA and GPA->HPA mapping */
>  #define  CSR_GCFG_MATC_NEST            (_ULCAST_(0x2) << CSR_GCFG_MATC_SHITF)
>  #define  CSR_GCFG_MATP_NEST_SHIFT      2
> +/* Read-only bit: show feature CSR_GCFG_MATC_NEST supported or not */
>  #define  CSR_GCFG_MATP_NEST            (_ULCAST_(0x1) << CSR_GCFG_MATP_NEST_SHIFT)
>  #define  CSR_GCFG_MATP_ROOT_SHIFT      1
> +/* Read-only bit: show feature CSR_GCFG_MATC_ROOT supported or not */
>  #define  CSR_GCFG_MATP_ROOT            (_ULCAST_(0x1) << CSR_GCFG_MATP_ROOT_SHIFT)
>  #define  CSR_GCFG_MATP_GUEST_SHIFT     0
> +/* Read-only bit: show feature CSR_GCFG_MATC_GUEST suppoorted or not */
>  #define  CSR_GCFG_MATP_GUEST           (_ULCAST_(0x1) << CSR_GCFG_MATP_GUEST_SHIFT)
Bugfix is the majority here, so it is better to remove the comments,
make this patch easier to be backported to stable branches.

Huacai

>
>  #define LOONGARCH_CSR_GINTC            0x52    /* Guest interrupt control */
> diff --git a/arch/loongarch/kvm/main.c b/arch/loongarch/kvm/main.c
> index bf9268bf26d5..f6d3242b9234 100644
> --- a/arch/loongarch/kvm/main.c
> +++ b/arch/loongarch/kvm/main.c
> @@ -303,9 +303,9 @@ int kvm_arch_enable_virtualization_cpu(void)
>          * TOE=0:       Trap on Exception.
>          * TIT=0:       Trap on Timer.
>          */
> -       if (env & CSR_GCFG_GCIP_ALL)
> +       if (env & CSR_GCFG_GCIP_SECURE)
>                 gcfg |= CSR_GCFG_GCI_SECURE;
> -       if (env & CSR_GCFG_MATC_ROOT)
> +       if (env & CSR_GCFG_MATP_ROOT)
>                 gcfg |= CSR_GCFG_MATC_ROOT;
>
>         write_csr_gcfg(gcfg);
> --
> 2.39.3
>





[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux