Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2195679/?format=api
{ "id": 2195679, "url": "http://patchwork.ozlabs.org/api/patches/2195679/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260211155410.203883-3-magnuskulke@linux.microsoft.com/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api", "name": "QEMU Development", "link_name": "qemu-devel", "list_id": "qemu-devel.nongnu.org", "list_email": "qemu-devel@nongnu.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260211155410.203883-3-magnuskulke@linux.microsoft.com>", "list_archive_url": null, "date": "2026-02-11T15:54:02", "name": "[02/10] include/hw/hyperv: add QEMU_PACKED to uapi structs", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "0ccc4d59826a41c25ee8d016901cb07ff45c0448", "submitter": { "id": 90753, "url": "http://patchwork.ozlabs.org/api/people/90753/?format=api", "name": "Magnus Kulke", "email": "magnuskulke@linux.microsoft.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260211155410.203883-3-magnuskulke@linux.microsoft.com/mbox/", "series": [ { "id": 491871, "url": "http://patchwork.ozlabs.org/api/series/491871/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=491871", "date": "2026-02-11T15:54:00", "name": "Support QEMU cpu models in MSHV accelerator", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/491871/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2195679/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2195679/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=linux.microsoft.com header.i=@linux.microsoft.com\n header.a=rsa-sha256 header.s=default header.b=Kr/QmNAq;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)" ], "Received": [ "from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fB3Jc6vKdz1xx7\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 12 Feb 2026 03:08:48 +1100 (AEDT)", "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1vqCke-0002pe-L5; Wed, 11 Feb 2026 11:07:40 -0500", "from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <magnuskulke@linux.microsoft.com>)\n id 1vqCXn-0007De-RH\n for qemu-devel@nongnu.org; Wed, 11 Feb 2026 10:54:23 -0500", "from linux.microsoft.com ([13.77.154.182])\n by eggs.gnu.org with esmtp (Exim 4.90_1)\n (envelope-from <magnuskulke@linux.microsoft.com>) id 1vqCXl-0003Q4-KI\n for qemu-devel@nongnu.org; Wed, 11 Feb 2026 10:54:23 -0500", "from DESKTOP-TUU1E5L.localdomain (unknown [167.220.208.59])\n by linux.microsoft.com (Postfix) with ESMTPSA id 463AA20B7169;\n Wed, 11 Feb 2026 07:54:18 -0800 (PST)" ], "DKIM-Filter": "OpenDKIM Filter v2.11.0 linux.microsoft.com 463AA20B7169", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com;\n s=default; t=1770825259;\n bh=j0zx57orCfjH/b4yZSBp1d3VPOTnjKE85cp35cyPnmg=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=Kr/QmNAqqmzKf44BjHqTEMvNMp72u28Lf58pQLMiZtGhsrqEb+hNg2TP4QJ2fzraG\n yz7kPEj/v/bMjCo7CqZ8EJpMDSWuwlo7sk+j0vmiQuwUAlNbkWZLc2wQKx3nhhxVmf\n WAr1UjSfUhxsHwluxVjz3yrfkS3NzD6hiOY75gMs=", "From": "Magnus Kulke <magnuskulke@linux.microsoft.com>", "To": "qemu-devel@nongnu.org", "Cc": "Magnus Kulke <magnuskulke@linux.microsoft.com>,\n Wei Liu <liuwe@microsoft.com>, Wei Liu <wei.liu@kernel.org>,\n Zhao Liu <zhao1.liu@intel.com>, Paolo Bonzini <pbonzini@redhat.com>,\n Magnus Kulke <magnuskulke@microsoft.com>", "Subject": "[PATCH 02/10] include/hw/hyperv: add QEMU_PACKED to uapi structs", "Date": "Wed, 11 Feb 2026 16:54:02 +0100", "Message-Id": "<20260211155410.203883-3-magnuskulke@linux.microsoft.com>", "X-Mailer": "git-send-email 2.34.1", "In-Reply-To": "<20260211155410.203883-1-magnuskulke@linux.microsoft.com>", "References": "<20260211155410.203883-1-magnuskulke@linux.microsoft.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Received-SPF": "pass client-ip=13.77.154.182;\n envelope-from=magnuskulke@linux.microsoft.com; helo=linux.microsoft.com", "X-Spam_score_int": "-19", "X-Spam_score": "-2.0", "X-Spam_bar": "--", "X-Spam_report": "(-2.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001,\n RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,\n SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no", "X-Spam_action": "no action", "X-Mailman-Approved-At": "Wed, 11 Feb 2026 11:07:29 -0500", "X-BeenThere": "qemu-devel@nongnu.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "qemu development <qemu-devel.nongnu.org>", "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>", "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>", "List-Post": "<mailto:qemu-devel@nongnu.org>", "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>", "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>", "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org", "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org" }, "content": "The uapi definitions are marked with __packed hints in the kernel\nheaders, since we want to keep the contract of the Microsoft Hypervisor\nABI explicit, we should also added them in our vendored files, with a\nfew notable exceptions where the attribute is a noop.\n\nSigned-off-by: Magnus Kulke <magnuskulke@linux.microsoft.com>\n---\n include/hw/hyperv/hvgdk_mini.h | 37 ++++++++++++++++++++++------------\n include/hw/hyperv/hvhdk.h | 14 +++++++------\n 2 files changed, 32 insertions(+), 19 deletions(-)", "diff": "diff --git a/include/hw/hyperv/hvgdk_mini.h b/include/hw/hyperv/hvgdk_mini.h\nindex cb52cc9de2..7d7b2e9b36 100644\n--- a/include/hw/hyperv/hvgdk_mini.h\n+++ b/include/hw/hyperv/hvgdk_mini.h\n@@ -7,6 +7,8 @@\n #ifndef HW_HYPERV_HVGDK_MINI_H\n #define HW_HYPERV_HVGDK_MINI_H\n \n+#include \"qemu/compiler.h\"\n+\n #define MSHV_IOCTL 0xB8\n \n typedef enum hv_register_name {\n@@ -211,7 +213,7 @@ enum hv_intercept_type {\n struct hv_u128 {\n uint64_t low_part;\n uint64_t high_part;\n-};\n+} QEMU_PACKED;\n \n union hv_x64_xmm_control_status_register {\n struct hv_u128 as_uint128;\n@@ -326,13 +328,13 @@ typedef struct hv_x64_segment_register {\n };\n uint16_t attributes;\n };\n-} hv_x64_segment_register;\n+} QEMU_PACKED hv_x64_segment_register;\n \n typedef struct hv_x64_table_register {\n uint16_t pad[3];\n uint16_t limit;\n uint64_t base;\n-} hv_x64_table_register;\n+} QEMU_PACKED hv_x64_table_register;\n \n union hv_x64_fp_control_status_register {\n struct hv_u128 as_uint128;\n@@ -416,6 +418,10 @@ typedef union hv_register_value {\n union hv_x64_register_sev_control sev_control;\n } hv_register_value;\n \n+/*\n+ * This struct is __packed in the kernel. Since all members are naturally\n+ * aligned, we can omit QEMU_PACKED to avoid address-of-packed-member warnings.\n+ */\n typedef struct hv_register_assoc {\n uint32_t name; /* enum hv_register_name */\n uint32_t reserved1;\n@@ -439,7 +445,7 @@ typedef struct hv_input_get_vp_registers {\n uint8_t rsvd_z8;\n uint16_t rsvd_z16;\n uint32_t names[];\n-} hv_input_get_vp_registers;\n+} QEMU_PACKED hv_input_get_vp_registers;\n \n typedef struct hv_input_set_vp_registers {\n uint64_t partition_id;\n@@ -448,7 +454,7 @@ typedef struct hv_input_set_vp_registers {\n uint8_t rsvd_z8;\n uint16_t rsvd_z16;\n struct hv_register_assoc elements[];\n-} hv_input_set_vp_registers;\n+} QEMU_PACKED hv_input_set_vp_registers;\n \n union hv_interrupt_control {\n uint64_t as_uint64;\n@@ -468,7 +474,7 @@ struct hv_input_assert_virtual_interrupt {\n uint8_t target_vtl;\n uint8_t rsvd_z0;\n uint16_t rsvd_z1;\n-};\n+} QEMU_PACKED;\n \n /* /dev/mshv */\n #define MSHV_CREATE_PARTITION _IOW(MSHV_IOCTL, 0x00, struct mshv_create_partition)\n@@ -487,6 +493,11 @@ struct hv_input_assert_virtual_interrupt {\n ********************************\n */\n \n+/*\n+ * This struct is __packed in the kernel, but since all members are naturally\n+ * aligned, so we can omit QEMU_PACKED to avoid address-of-packed-member\n+ * warnings.\n+ */\n struct hv_local_interrupt_controller_state {\n /* HV_X64_INTERRUPT_CONTROLLER_STATE */\n uint32_t apic_id;\n@@ -644,7 +655,7 @@ struct hv_x64_intercept_message_header {\n struct hv_x64_segment_register cs_segment;\n uint64_t rip;\n uint64_t rflags;\n-};\n+} QEMU_PACKED;\n \n union hv_x64_io_port_access_info {\n uint8_t as_uint8;\n@@ -669,7 +680,7 @@ typedef struct hv_x64_io_port_intercept_message {\n uint64_t rcx;\n uint64_t rsi;\n uint64_t rdi;\n-} hv_x64_io_port_intercept_message;\n+} QEMU_PACKED hv_x64_io_port_intercept_message;\n \n union hv_x64_memory_access_info {\n uint8_t as_uint8;\n@@ -692,7 +703,7 @@ struct hv_x64_memory_intercept_message {\n uint64_t guest_virtual_address;\n uint64_t guest_physical_address;\n uint8_t instruction_bytes[16];\n-};\n+} QEMU_PACKED;\n \n union hv_message_flags {\n uint8_t asu8;\n@@ -711,14 +722,14 @@ struct hv_message_header {\n uint64_t sender;\n union hv_port_id port;\n };\n-};\n+} QEMU_PACKED;\n \n struct hv_message {\n struct hv_message_header header;\n union {\n uint64_t payload[HV_MESSAGE_PAYLOAD_QWORD_COUNT];\n } u;\n-};\n+} QEMU_PACKED;\n \n /* From github.com/rust-vmm/mshv-bindings/src/x86_64/regs.rs */\n \n@@ -731,13 +742,13 @@ struct hv_cpuid_entry {\n uint32_t ecx;\n uint32_t edx;\n uint32_t padding[3];\n-};\n+} QEMU_PACKED;\n \n struct hv_cpuid {\n uint32_t nent;\n uint32_t padding;\n struct hv_cpuid_entry entries[0];\n-};\n+} QEMU_PACKED;\n \n #define IA32_MSR_TSC 0x00000010\n #define IA32_MSR_EFER 0xC0000080\ndiff --git a/include/hw/hyperv/hvhdk.h b/include/hw/hyperv/hvhdk.h\nindex 866c8211bf..bf2f8cbc27 100644\n--- a/include/hw/hyperv/hvhdk.h\n+++ b/include/hw/hyperv/hvhdk.h\n@@ -9,6 +9,8 @@\n #ifndef HW_HYPERV_HVHDK_H\n #define HW_HYPERV_HVHDK_H\n \n+#include \"qemu/compiler.h\"\n+\n #define HV_PARTITION_SYNTHETIC_PROCESSOR_FEATURES_BANKS 1\n \n struct hv_input_set_partition_property {\n@@ -16,7 +18,7 @@ struct hv_input_set_partition_property {\n uint32_t property_code; /* enum hv_partition_property_code */\n uint32_t padding;\n uint64_t property_value;\n-};\n+} QEMU_PACKED;\n \n union hv_partition_synthetic_processor_features {\n uint64_t as_uint64[HV_PARTITION_SYNTHETIC_PROCESSOR_FEATURES_BANKS];\n@@ -201,12 +203,12 @@ typedef struct hv_input_translate_virtual_address {\n uint32_t padding;\n uint64_t control_flags;\n uint64_t gva_page;\n-} hv_input_translate_virtual_address;\n+} QEMU_PACKED hv_input_translate_virtual_address;\n \n typedef struct hv_output_translate_virtual_address {\n union hv_translate_gva_result translation_result;\n uint64_t gpa_page;\n-} hv_output_translate_virtual_address;\n+} QEMU_PACKED hv_output_translate_virtual_address;\n \n typedef struct hv_register_x64_cpuid_result_parameters {\n struct {\n@@ -226,13 +228,13 @@ typedef struct hv_register_x64_cpuid_result_parameters {\n uint32_t edx;\n uint32_t edx_mask;\n } result;\n-} hv_register_x64_cpuid_result_parameters;\n+} QEMU_PACKED hv_register_x64_cpuid_result_parameters;\n \n typedef struct hv_register_x64_msr_result_parameters {\n uint32_t msr_index;\n uint32_t access_type;\n uint32_t action; /* enum hv_unimplemented_msr_action */\n-} hv_register_x64_msr_result_parameters;\n+} QEMU_PACKED hv_register_x64_msr_result_parameters;\n \n union hv_register_intercept_result_parameters {\n struct hv_register_x64_cpuid_result_parameters cpuid;\n@@ -244,6 +246,6 @@ typedef struct hv_input_register_intercept_result {\n uint32_t vp_index;\n uint32_t intercept_type; /* enum hv_intercept_type */\n union hv_register_intercept_result_parameters parameters;\n-} hv_input_register_intercept_result;\n+} QEMU_PACKED hv_input_register_intercept_result;\n \n #endif /* HW_HYPERV_HVHDK_H */\n", "prefixes": [ "02/10" ] }