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

Re: [PATCH] x86/viridian: use hv_timer_message_payload struct


  • To: Roger Pau Monne <roger.pau@xxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
  • Date: Thu, 13 Nov 2025 17:52:47 +0000
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=kMasDfIjg8bN3ujfx/TxuwJZUVWjx8Bj0EkDnMZ/Btg=; b=hzci9K4QnfgIDoImGtSl97fYLidQK9GcR281qXX+NMi7gtxB3YjnkOEuDUqdBVAGiBbqJA9hnX0JEcwvRdPigc3zfotB6WkRulw1+Z6ep8w4sgp9ksN8P50TwDXPuFu6ZiCYU3RxN63zwGZaZh67/PH1dBMyfEIaHCHYzx3z7pV8uQz8uVC5TTF2AcoFd7zpbI1oMPhlLyeIDZke3KoPatQRRlRymd1APbBv9YyfVdkq1xZNVAmPbP+pewx4Y2bKl6YOpHn5qdQJHmvYG6f0WibMi1yLv8weqvzNQCufvAeuMP3Hspy30ypZCdw/SincGoYK5ihAa8srQz0bX37wCg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tmKaHfgjX0sXZs7ISmevSlPAnlUrDyI0s0D1f7LQbQErnZ0ZcYXAZfDCNyAof5X9uSOX6KmxWaX1SopI1Cx8BWeNUlH8uO4hhlK2dYZPipE+CdI3AKqrEOFG6V8ExeXCpu+Ltl6zJ0Iw3OVmWyuQHPtbvdPktd/yMPHTi3XUEYf2J2eoCK1J6wXaykJ82z5w32oYNpNrMqhtwhsuXgVOZyrTIjlyP1CwFXDAYdwIwUu80kU9Of6sxdFLCujwkVvqTyTMMX+WIi6o+nvulcobmAl2RjxFcY+IFL143V6/nNvdmLBpBlJhs5/Eo21Nd0xic4Z7DM8gTosEV1dehPcJ6Q==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
  • Cc: Paul Durrant <paul@xxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>
  • Delivery-date: Thu, 13 Nov 2025 17:53:03 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 13/11/2025 5:24 pm, Roger Pau Monne wrote:
> diff --git a/xen/arch/x86/hvm/viridian/synic.c 
> b/xen/arch/x86/hvm/viridian/synic.c
> index e6cba7548f1b..6d7b6bd0eda2 100644
> --- a/xen/arch/x86/hvm/viridian/synic.c
> +++ b/xen/arch/x86/hvm/viridian/synic.c
> @@ -327,15 +327,10 @@ bool viridian_synic_deliver_timer_msg(struct vcpu *v, 
> unsigned int sintx,
>      struct viridian_vcpu *vv = v->arch.hvm.viridian;
>      const union hv_synic_sint *vs = &vv->sint[sintx];
>      struct hv_message *msg = vv->simp.ptr;
> -    struct {
> -        uint32_t TimerIndex;
> -        uint32_t Reserved;
> -        uint64_t ExpirationTime;
> -        uint64_t DeliveryTime;
> -    } payload = {
> -        .TimerIndex = index,
> -        .ExpirationTime = expiration,
> -        .DeliveryTime = delivery,
> +    const struct hv_timer_message_payload payload = {
> +        .timer_index = index,
> +        .expiration_time = expiration,
> +        .delivery_time = delivery,

Align these = for readability?

>      };
>  
>      /* Don't assume SIM page to be mapped. */
> @@ -359,8 +354,8 @@ bool viridian_synic_deliver_timer_msg(struct vcpu *v, 
> unsigned int sintx,
>      msg->header.message_flags.msg_pending = 0;
>      msg->header.payload_size = sizeof(payload);
>  
> -    BUILD_BUG_ON(sizeof(payload) > sizeof(msg->u.payload));
> -    memcpy(msg->u.payload, &payload, sizeof(payload));
> +    BUILD_BUG_ON(sizeof(msg->payload.timer) > sizeof(msg->payload.raw));

This BUILD_BUG_ON() was only needed because of the memcpy() between
different types.  With structure assignment, the compiler will tell you
if the type mismatches.

Therefore, it's safe to drop.

Otherwise, Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.