From: Alex Deucher <alexdeucher@xxxxxxxxx> Sent: Tuesday, April 12, 2022 7:13 AM > > On Tue, Apr 12, 2022 at 4:01 AM Paul Menzel <pmenzel@xxxxxxxxxxxxx> wrote: > > > > [Cc: +x86 folks] > > > > Dear Alex, dear x86 folks, > > > > > > x86 folks, can you think of alternatives to access `X86_HYPER_MS_HYPERV` > > from `arch/x86/include/asm/hypervisor.h` without any preprocessor ifdef-ery? > > I don't really see what problem that solves. X86_HYPER_MS_HYPERV is > an X86 thing. Why do we need a processor agnostic way to handle it? > Any code related to that is X86 specific. > > Alex Try using hv_is_hyperv_initialized() without any #ifdef'ery. If CONFIG_HYPERV is defined, it will tell you if you are running as a guest on Hyper-V on x86/x64 or on ARM64. If CONFIG_HYPERV is not defined, it will return "false". You'll need to #include <asm/mshyperv.h>. Michael > > > > > > > Am 11.04.22 um 18:28 schrieb Alex Deucher: > > > On Mon, Apr 11, 2022 at 11:28 AM Paul Menzel wrote: > > > > […] > > > > >> Am 11.04.22 um 15:59 schrieb Yongqiang Sun: > > >>> MS_HYPERV with vega10 doesn't have the interface to process > > >>> request init data msg. > > >> > > >> Should some Hyper-V folks be added to the reviewers list too? > > >> > > >>> Check hypervisor type to not send the request for MS_HYPERV. > > >> > > >> Please add a blank line between paragraphs. > > >> > > >>> Signed-off-by: Yongqiang Sun <yongqiang.sun@xxxxxxx> > > >>> --- > > >>> drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | 12 ++++++++++-- > > >>> 1 file changed, 10 insertions(+), 2 deletions(-) > > >>> > > >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c > > >>> index 933c41f77c92..56b130ec44a9 100644 > > >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c > > >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c > > >>> @@ -23,6 +23,10 @@ > > >>> > > >>> #include <linux/module.h> > > >>> > > >>> +#ifdef CONFIG_X86 > > >>> +#include <asm/hypervisor.h> > > >>> +#endif > > >>> + > > >>> #include <drm/drm_drv.h> > > >>> > > >>> #include "amdgpu.h" > > >>> @@ -721,8 +725,12 @@ void amdgpu_detect_virtualization(struct > amdgpu_device *adev) > > >>> break; > > >>> case CHIP_VEGA10: > > >>> soc15_set_virt_ops(adev); > > >>> - /* send a dummy GPU_INIT_DATA request to host on vega10 */ > > >>> - amdgpu_virt_request_init_data(adev); > > >>> +#ifdef CONFIG_X86 > > >>> + /* not send GPU_INIT_DATA with MS_HYPERV*/ > > >>> + if (hypervisor_is_type(X86_HYPER_MS_HYPERV) == false) > > >>> +#endif > > >> > > >> Why guard everything with CONFIG_X86? (If it’s needed, it should be done > > >> in C code.) > > > > > > X86_HYPER_MS_HYPERV only available on x86. > > > > Sorry, I missed the X86 dependency when quickly looking at the Hyper-V > > stub IOMMU driver `drivers/iommu/hyperv-iommu.c`, but missed that > > `HYPERV_IOMMU` has `depends on HYPERV && X86`. > > > > > > Kind regards, > > > > Paul > > > > > > >>> + /* send a dummy GPU_INIT_DATA request to host on vega10 */ > > >>> + amdgpu_virt_request_init_data(adev); > > >>> break; > > >>> case CHIP_VEGA20: > > >>> case CHIP_ARCTURUS: > > >> > > >> > > >> Kind regards, > > >> > > >> Paul