From: Easwar Hariharan <eahariha@linux.microsoft.com>
To: Roman Kisel <romank@linux.microsoft.com>,
nunodasneves@linux.microsoft.com
Cc: hpa@zytor.com, kys@microsoft.com, bp@alien8.de,
dave.hansen@linux.intel.com, decui@microsoft.com,
haiyangz@microsoft.com, mingo@redhat.com, mhklinux@outlook.com,
tglx@linutronix.de, tiala@microsoft.com, wei.liu@kernel.org,
linux-hyperv@vger.kernel.org, linux-kernel@vger.kernel.org,
x86@kernel.org, eahariha@linux.microsoft.com,
apais@microsoft.com, benhill@microsoft.com,
ssengar@microsoft.com, sunilmut@microsoft.com, vdso@hexbites.dev
Subject: Re: [PATCH v3 1/5] hyperv: Define struct hv_output_get_vp_registers
Date: Thu, 26 Dec 2024 14:11:00 -0800 [thread overview]
Message-ID: <1bf0ce72-a377-4c3f-b68a-0f890f8b5d09@linux.microsoft.com> (raw)
In-Reply-To: <20241226213110.899497-2-romank@linux.microsoft.com>
On 12/26/2024 1:31 PM, Roman Kisel wrote:
> There is no definition of the output structure for the
> GetVpRegisters hypercall. Hence, using the hypercall
> is not possible when the output value has some structure
> to it. Even getting a datum of a primitive type reads
> as ad-hoc without that definition.
>
> Define struct hv_output_get_vp_registers to enable using
> the GetVpRegisters hypercall. Make provisions for all
> supported architectures. No functional changes.
>
> Signed-off-by: Roman Kisel <romank@linux.microsoft.com>
> ---
> include/hyperv/hvgdk_mini.h | 58 +++++++++++++++++++++++++++++++++++--
> 1 file changed, 56 insertions(+), 2 deletions(-)
>
> struct {
> @@ -1091,6 +1130,8 @@ union hv_x64_pending_interruption_register {
> } __packed;
> };
>
> +#endif
> +
> union hv_register_value {
> struct hv_u128 reg128;
> u64 reg64;
> @@ -1098,13 +1139,26 @@ union hv_register_value {
> u16 reg16;
> u8 reg8;
>
> - struct hv_x64_segment_register segment;
> - struct hv_x64_table_register table;
> union hv_explicit_suspend_register explicit_suspend;
> union hv_intercept_suspend_register intercept_suspend;
> union hv_dispatch_suspend_register dispatch_suspend;
> +#if defined(CONFIG_X86)
> + struct hv_x64_segment_register segment;
> + struct hv_x64_table_register table;
> union hv_x64_interrupt_state_register interrupt_state;
> union hv_x64_pending_interruption_register pending_interruption;
> +#elif defined(CONFIG_ARM64)
> + union hv_arm64_pending_interruption_register pending_interruption;
> + union hv_arm64_interrupt_state_register interrupt_state;
> + union hv_arm64_pending_synthetic_exception_event pending_synthetic_exception_event;
> +#else
> + #error "This architecture is not supported"
> +#endif
> +};
I don't love the #error for unsupported architectures when Kconfig takes
care of that for us, but I suppose it's for completeness since the arm64
members have to be conditioned on CONFIG_ARM64?
> +
> +/* NOTE: Linux helper struct - NOT from Hyper-V code */
> +struct hv_output_get_vp_registers {
> + DECLARE_FLEX_ARRAY(union hv_register_value, values);
> };
I'm not super familiar with DECLARE_FLEX_ARRAY() but it appears this
needs to be wrapped in an anonymous struct at the least per this comment
for the definition of DECLARE_FLEX_ARRAY()
> * In order to have a flexible array member [...] alone in a
> * struct, it needs to be wrapped in an anonymous struct with at least 1
> * named member, but that member can be empty.
Nuno, since you seem to be more familiar, can you provide some guidance?
Thanks,
Easwar
next prev parent reply other threads:[~2024-12-26 22:10 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-26 21:31 [PATCH v3 0/5] hyperv: Fixes for get_vtl(), hv_vtl_apicid_to_vp_id() Roman Kisel
2024-12-26 21:31 ` [PATCH v3 1/5] hyperv: Define struct hv_output_get_vp_registers Roman Kisel
2024-12-26 22:11 ` Easwar Hariharan [this message]
2024-12-27 17:25 ` Roman Kisel
2024-12-26 21:31 ` [PATCH v3 2/5] hyperv: Fix pointer type for the output of the hypercall in get_vtl(void) Roman Kisel
2024-12-26 21:41 ` Easwar Hariharan
2024-12-26 21:31 ` [PATCH v3 3/5] hyperv: Enable the hypercall output page for the VTL mode Roman Kisel
2024-12-26 21:42 ` Easwar Hariharan
2024-12-26 21:31 ` [PATCH v3 4/5] hyperv: Do not overlap the hvcall IO areas in get_vtl() Roman Kisel
2024-12-26 21:44 ` Easwar Hariharan
2024-12-26 21:31 ` [PATCH v3 5/5] hyperv: Do not overlap the hvcall IO areas in hv_vtl_apicid_to_vp_id() Roman Kisel
2024-12-26 22:01 ` Easwar Hariharan
2024-12-27 17:32 ` Roman Kisel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1bf0ce72-a377-4c3f-b68a-0f890f8b5d09@linux.microsoft.com \
--to=eahariha@linux.microsoft.com \
--cc=apais@microsoft.com \
--cc=benhill@microsoft.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=decui@microsoft.com \
--cc=haiyangz@microsoft.com \
--cc=hpa@zytor.com \
--cc=kys@microsoft.com \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mhklinux@outlook.com \
--cc=mingo@redhat.com \
--cc=nunodasneves@linux.microsoft.com \
--cc=romank@linux.microsoft.com \
--cc=ssengar@microsoft.com \
--cc=sunilmut@microsoft.com \
--cc=tglx@linutronix.de \
--cc=tiala@microsoft.com \
--cc=vdso@hexbites.dev \
--cc=wei.liu@kernel.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.