|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 08/12] x86/hyperv: provide Hyper-V hypercall functions
On Wed, Jan 29, 2020 at 08:20:30PM +0000, Wei Liu wrote:
> These functions will be used later to make hypercalls to Hyper-V.
>
> Signed-off-by: Wei Liu <liuwe@xxxxxxxxxxxxx>
> ---
> v5:
> 1. Switch back to direct call
> 2. Fix some issues pointed out by Jan
>
> I tried using the asm(".equ ..") trick but hit a problem with %c again.
>
> mm.c:5736:5: error: invalid 'asm': operand is not a condition code, invalid
> operand code 'c'
> asm ( ".equ HV_HCALL_PAGE, %c0; .global HV_HCALL_PAGE"
> ---
> MAINTAINERS | 1 +
> xen/arch/x86/guest/hyperv/hyperv.c | 6 ++
> xen/arch/x86/xen.lds.S | 4 +
> xen/include/asm-x86/fixmap.h | 3 +-
> xen/include/asm-x86/guest/hyperv-hcall.h | 96 ++++++++++++++++++++++++
> 5 files changed, 108 insertions(+), 2 deletions(-)
> create mode 100644 xen/include/asm-x86/guest/hyperv-hcall.h
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 04d91482cd..d0a5ed635b 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -519,6 +519,7 @@ S: Supported
> F: xen/arch/x86/guest/hyperv/
> F: xen/arch/x86/hvm/viridian/
> F: xen/include/asm-x86/guest/hyperv.h
> +F: xen/include/asm-x86/guest/hyperv-hcall.h
> F: xen/include/asm-x86/guest/hyperv-tlfs.h
> F: xen/include/asm-x86/hvm/viridian.h
>
> diff --git a/xen/arch/x86/guest/hyperv/hyperv.c
> b/xen/arch/x86/guest/hyperv/hyperv.c
> index 2bedcc438c..932a648ff7 100644
> --- a/xen/arch/x86/guest/hyperv/hyperv.c
> +++ b/xen/arch/x86/guest/hyperv/hyperv.c
> @@ -123,6 +123,12 @@ static const struct hypervisor_ops ops = {
> .setup = setup,
> };
>
> +static void __maybe_unused build_assertions(void)
> +{
> + /* We use 1 in linker script */
> + BUILD_BUG_ON(FIX_X_HYPERV_HCALL != 1);
I wouldn't mind if this was placed together with the hypercall page
setup instead of creating a dummy function for it.
> +}
> +
> /*
> * Local variables:
> * mode: C
> diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S
> index 97f9c07891..8e02b4c648 100644
> --- a/xen/arch/x86/xen.lds.S
> +++ b/xen/arch/x86/xen.lds.S
> @@ -329,6 +329,10 @@ SECTIONS
> efi = .;
> #endif
>
> +#ifdef CONFIG_HYPERV_GUEST
> + hv_hcall_page = ABSOLUTE(__fix_x_to_virt(1));
I assume there's no way to use FIX_X_HYPERV_HCALL because it's an
enum?
> +#endif
> +
> /* Sections to be discarded */
> /DISCARD/ : {
> *(.exit.text)
> diff --git a/xen/include/asm-x86/fixmap.h b/xen/include/asm-x86/fixmap.h
> index 8094546b75..a9bcb068cb 100644
> --- a/xen/include/asm-x86/fixmap.h
> +++ b/xen/include/asm-x86/fixmap.h
> @@ -16,6 +16,7 @@
>
> #define FIXADDR_TOP (VMAP_VIRT_END - PAGE_SIZE)
> #define FIXADDR_X_TOP (XEN_VIRT_END - PAGE_SIZE)
> +#define __fix_x_to_virt(x) (FIXADDR_X_TOP - ((x) << PAGE_SHIFT))
>
> #ifndef __ASSEMBLY__
>
> @@ -110,8 +111,6 @@ extern void __set_fixmap_x(
>
> #define clear_fixmap_x(idx) __set_fixmap_x(idx, 0, 0)
>
> -#define __fix_x_to_virt(x) (FIXADDR_X_TOP - ((x) << PAGE_SHIFT))
> -
> #define fix_x_to_virt(x) ((void *)__fix_x_to_virt(x))
This seems like some unrelated code movement?
Thanks, Roger.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |