[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <YSkj2kvYoYW8kDiF@kroah.com>
Date: Fri, 27 Aug 2021 19:41:46 +0200
From: Greg KH <gregkh@...uxfoundation.org>
To: Tianyu Lan <ltykernel@...il.com>
Cc: kys@...rosoft.com, haiyangz@...rosoft.com, sthemmin@...rosoft.com,
wei.liu@...nel.org, decui@...rosoft.com, catalin.marinas@....com,
will@...nel.org, tglx@...utronix.de, mingo@...hat.com,
bp@...en8.de, x86@...nel.org, hpa@...or.com,
dave.hansen@...ux.intel.com, luto@...nel.org, peterz@...radead.org,
konrad.wilk@...cle.com, boris.ostrovsky@...cle.com,
jgross@...e.com, sstabellini@...nel.org, joro@...tes.org,
davem@...emloft.net, kuba@...nel.org, jejb@...ux.ibm.com,
martin.petersen@...cle.com, arnd@...db.de, hch@....de,
m.szyprowski@...sung.com, robin.murphy@....com,
brijesh.singh@....com, thomas.lendacky@....com,
Tianyu.Lan@...rosoft.com, pgonda@...gle.com,
martin.b.radev@...il.com, akpm@...ux-foundation.org,
kirill.shutemov@...ux.intel.com, rppt@...nel.org,
hannes@...xchg.org, aneesh.kumar@...ux.ibm.com,
krish.sadhukhan@...cle.com, saravanand@...com,
linux-arm-kernel@...ts.infradead.org,
xen-devel@...ts.xenproject.org, rientjes@...gle.com,
ardb@...nel.org, michael.h.kelley@...rosoft.com,
iommu@...ts.linux-foundation.org, linux-arch@...r.kernel.org,
linux-hyperv@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-scsi@...r.kernel.org, netdev@...r.kernel.org,
vkuznets@...hat.com, parri.andrea@...il.com, dave.hansen@...el.com
Subject: Re: [PATCH V4 05/13] hyperv: Add Write/Read MSR registers via ghcb
page
On Fri, Aug 27, 2021 at 01:21:03PM -0400, Tianyu Lan wrote:
> From: Tianyu Lan <Tianyu.Lan@...rosoft.com>
>
> Hyperv provides GHCB protocol to write Synthetic Interrupt
> Controller MSR registers in Isolation VM with AMD SEV SNP
> and these registers are emulated by hypervisor directly.
> Hyperv requires to write SINTx MSR registers twice. First
> writes MSR via GHCB page to communicate with hypervisor
> and then writes wrmsr instruction to talk with paravisor
> which runs in VMPL0. Guest OS ID MSR also needs to be set
> via GHCB page.
>
> Signed-off-by: Tianyu Lan <Tianyu.Lan@...rosoft.com>
> ---
> Change since v1:
> * Introduce sev_es_ghcb_hv_call_simple() and share code
> between SEV and Hyper-V code.
> Change since v3:
> * Pass old_msg_type to hv_signal_eom() as parameter.
> * Use HV_REGISTER_* marcro instead of HV_X64_MSR_*
> * Add hv_isolation_type_snp() weak function.
> * Add maros to set syinc register in ARM code.
> ---
> arch/arm64/include/asm/mshyperv.h | 23 ++++++
> arch/x86/hyperv/hv_init.c | 36 ++--------
> arch/x86/hyperv/ivm.c | 112 ++++++++++++++++++++++++++++++
> arch/x86/include/asm/mshyperv.h | 80 ++++++++++++++++++++-
> arch/x86/include/asm/sev.h | 3 +
> arch/x86/kernel/sev-shared.c | 63 ++++++++++-------
> drivers/hv/hv.c | 112 ++++++++++++++++++++----------
> drivers/hv/hv_common.c | 6 ++
> include/asm-generic/mshyperv.h | 4 +-
> 9 files changed, 345 insertions(+), 94 deletions(-)
>
> diff --git a/arch/arm64/include/asm/mshyperv.h b/arch/arm64/include/asm/mshyperv.h
> index 20070a847304..ced83297e009 100644
> --- a/arch/arm64/include/asm/mshyperv.h
> +++ b/arch/arm64/include/asm/mshyperv.h
> @@ -41,6 +41,29 @@ static inline u64 hv_get_register(unsigned int reg)
> return hv_get_vpreg(reg);
> }
>
> +#define hv_get_simp(val) { val = hv_get_register(HV_REGISTER_SIMP); }
> +#define hv_set_simp(val) hv_set_register(HV_REGISTER_SIMP, val)
> +
> +#define hv_get_siefp(val) { val = hv_get_register(HV_REGISTER_SIEFP); }
> +#define hv_set_siefp(val) hv_set_register(HV_REGISTER_SIEFP, val)
> +
> +#define hv_get_synint_state(int_num, val) { \
> + val = hv_get_register(HV_REGISTER_SINT0 + int_num); \
> + }
> +
> +#define hv_set_synint_state(int_num, val) \
> + hv_set_register(HV_REGISTER_SINT0 + int_num, val)
> +
> +#define hv_get_synic_state(val) { \
> + val = hv_get_register(HV_REGISTER_SCONTROL); \
> + }
> +
> +#define hv_set_synic_state(val) \
> + hv_set_register(HV_REGISTER_SCONTROL, val)
> +
> +#define hv_signal_eom(old_msg_type) \
> + hv_set_register(HV_REGISTER_EOM, 0)
Please just use real inline functions and not #defines if you really
need it.
thanks,
greg k-h
Powered by blists - more mailing lists