get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.0/patches/2198169/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2198169,
    "url": "http://patchwork.ozlabs.org/api/1.0/patches/2198169/?format=api",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/1.0/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": ""
    },
    "msgid": "<20260219054207.471303-7-manali.shukla@amd.com>",
    "date": "2026-02-19T05:42:05",
    "name": "[v1,6/8] i386/kvm: Add KVM_GET/SET_LAPIC2 support for extended APIC state",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "ca0326908857311b190e101b785a6431943ebee9",
    "submitter": {
        "id": 90099,
        "url": "http://patchwork.ozlabs.org/api/1.0/people/90099/?format=api",
        "name": "Manali Shukla",
        "email": "manali.shukla@amd.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260219054207.471303-7-manali.shukla@amd.com/mbox/",
    "series": [
        {
            "id": 492683,
            "url": "http://patchwork.ozlabs.org/api/1.0/series/492683/?format=api",
            "date": "2026-02-19T05:42:03",
            "name": "i386/kvm: Add support for extended APIC register space",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/492683/mbox/"
        }
    ],
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2198169/checks/",
    "tags": {},
    "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=amd.com header.i=@amd.com header.a=rsa-sha256\n header.s=selector1 header.b=Y2X8kkl2;\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 4fGvzq3MW6z1xxd\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 20 Feb 2026 00:56:07 +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 1vt4VS-0007Si-2Q; Thu, 19 Feb 2026 08:55:50 -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 <Manali.Shukla@amd.com>)\n id 1vswpJ-0006NB-Ey\n for qemu-devel@nongnu.org; Thu, 19 Feb 2026 00:43:49 -0500",
            "from mail-eastusazlp17011000f.outbound.protection.outlook.com\n ([2a01:111:f403:c100::f] helo=BL2PR02CU003.outbound.protection.outlook.com)\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <Manali.Shukla@amd.com>)\n id 1vswpG-0007n1-KS\n for qemu-devel@nongnu.org; Thu, 19 Feb 2026 00:43:49 -0500",
            "from BY5PR03CA0005.namprd03.prod.outlook.com (2603:10b6:a03:1e0::15)\n by LV2PR12MB5919.namprd12.prod.outlook.com (2603:10b6:408:173::17)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9632.13; Thu, 19 Feb\n 2026 05:43:41 +0000",
            "from SJ1PEPF00001CDE.namprd05.prod.outlook.com\n (2603:10b6:a03:1e0:cafe::81) by BY5PR03CA0005.outlook.office365.com\n (2603:10b6:a03:1e0::15) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9632.14 via Frontend Transport; Thu,\n 19 Feb 2026 05:43:40 +0000",
            "from satlexmb07.amd.com (165.204.84.17) by\n SJ1PEPF00001CDE.mail.protection.outlook.com (10.167.242.6) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9632.12 via Frontend Transport; Thu, 19 Feb 2026 05:43:40 +0000",
            "from brahmaputra.amd.com (10.180.168.240) by satlexmb07.amd.com\n (10.181.42.216) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.17; Wed, 18 Feb\n 2026 23:43:37 -0600"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=lsqh6jDo8HbpV1qpnElYxuQYDvkhmg0JZhC63T54fEXvof4SdZNr+dpUAJudYKrDy3M6VZ5dN5DEarwephK4QLumv1ot6/eVLxxuvf6x3FVUeJUkT/dlgvjx+iA/W8ydXiv2m0rkc2HQuFBNIRjZLQdb/9qzf/hygH/kDsRNt1DFkS5qDdbR6PR+TPELzR06WdPBIjKObnlANwcN9zeY77JzfItNaZVAfXYhNo7PdIhWHVVh5VjBe2sY7fTAyxDyrXi0RiuFyI8vfmeC43W0aVg2QhlTzQns+LZEPlBxrjX6nBjLOIsiWBVJQs0gv0pV+QJTxslcJbCeRbuOG1VXMw==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=Col43SzJeNwKuNZ6EMFerTnHD5qjf0AvUpZrXsGDfmk=;\n b=C+sTw3A6KbW+7+14EEMxMyHTZablvWmC6gFSM5AJEO79igZ3XCtOHfHxm7v0fs1ieW9Gn0XaenJVs8bOx5wZ7E3Ydf4mziyImBRk8/ON/uZ+nYrrHU49Vh+BnwLHXy157mXlrkfWk9zUzk8iQrt1SG2fONlyHOUGfqj7TU2Xu/el3hoDDN/6u4uD2fpzGL9BAHUnxdHV8Swi4YGT3OiRCGUAaoqGkzMuVls7AUFuxG75A/MLjeFThR5UKs+5v+7H1iSaYY+TyPJ9B/oJ+NHB3S07qIyanHIH9dZtwfeQwCBS952MaEQTvrcv/1CkMz+QUfz3qOVrF27nrGYHCkwoog==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 165.204.84.17) smtp.rcpttodomain=nongnu.org smtp.mailfrom=amd.com; dmarc=pass\n (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com;\n dkim=none (message not signed); arc=none (0)",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=Col43SzJeNwKuNZ6EMFerTnHD5qjf0AvUpZrXsGDfmk=;\n b=Y2X8kkl2oGKOsRRyw7SbX1gwYqYWNdtbu1pVkfAyZEjf9EI3Ke8kFyCNfWIc/N2ugmVQ6jah9nbMIm+6OHatnq64+aXzFm1d806w6u3J62f2afmMSbJlNCoweFuJaOEJBo4L7CFzogpSER7cDkJsnaKwSv9vrBPDQKqI5TlHObc=",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 165.204.84.17)\n smtp.mailfrom=amd.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=amd.com;",
        "Received-SPF": [
            "Pass (protection.outlook.com: domain of amd.com designates\n 165.204.84.17 as permitted sender) receiver=protection.outlook.com;\n client-ip=165.204.84.17; helo=satlexmb07.amd.com; pr=C",
            "permerror client-ip=2a01:111:f403:c100::f;\n envelope-from=Manali.Shukla@amd.com;\n helo=BL2PR02CU003.outbound.protection.outlook.com"
        ],
        "From": "Manali Shukla <manali.shukla@amd.com>",
        "To": "<qemu-devel@nongnu.org>",
        "CC": "Cornelia Huck <cohuck@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,\n <kvm@vger.kernel.org>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,\n \"Marcelo Tosatti\" <mtosatti@redhat.com>, \"Michael S . Tsirkin\"\n <mst@redhat.com>, \"Paolo Bonzini\" <pbonzini@redhat.com>, Sean Christopherson\n <seanjc@google.com>, Richard Henderson <richard.henderson@linaro.org>, Naveen\n N Rao <naveen@kernel.org>, Nikunj Dadhaniya <nikunj@amd.com>,\n <manali.shukla@amd.com>",
        "Subject": "[PATCH v1 6/8] i386/kvm: Add KVM_GET/SET_LAPIC2 support for extended\n APIC state",
        "Date": "Thu, 19 Feb 2026 05:42:05 +0000",
        "Message-ID": "<20260219054207.471303-7-manali.shukla@amd.com>",
        "X-Mailer": "git-send-email 2.43.0",
        "In-Reply-To": "<20260219054207.471303-1-manali.shukla@amd.com>",
        "References": "<20260219054207.471303-1-manali.shukla@amd.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[10.180.168.240]",
        "X-ClientProxiedBy": "satlexmb08.amd.com (10.181.42.217) To satlexmb07.amd.com\n (10.181.42.216)",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "SJ1PEPF00001CDE:EE_|LV2PR12MB5919:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "9c3e571d-c970-4073-7456-08de6f79d63b",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;\n ARA:13230040|376014|82310400026|36860700013|7416014|1800799024;",
        "X-Microsoft-Antispam-Message-Info": "\n cmhgCUAEQ+PC8dRl9AhloeFmjPegeGYFWjljE6d/+saNCQ/bLzTf9MrV143cm6Gz8/gMx6dAfFL1gAw6It7S3/1g16S4ia5xoxmOq+lWCu0C2fwqZwTodnb5Ip6xHDyyoSyMO5CnrrR2R3Av1tI4g1PGNwEb416d6qLzc1A2xkqJmUO+6gTOE22xEjWKbQTVvXJOoyl6M0nwX2IPqVu+7QIJwW8s2jLwaT34oee7BS4KPwij7i2wLHmebMei6AZs4cVioGMEY4XyfGPex7Fv80Z+M7MOQrGXXMZdFX+hK/RRAXGsfOSAnYpBndTkZOwF465PzTogIA5LSaoplHwQiRbrjMen0d8HsezWYK9FwW96oTAfBNvYSkliWYcEJ3NW3/W0wLGQqpW1RAbAXAxWWo/B6Q+fXskAgQXwPMdLrxPREI81S+htYJZPXtRgIq5L07Fc/jTS9Rh7khFb3KC72i70MTe3US+OvaHqEZkknedzzujuWDezfnLPBw+MUEK9D7kCiy30bov3nddLxESbRU5qMH0JB6ZcNdMS01gyjRRjjFTh+aqpnYwfekNUPiIZhaZRhLhpJB/5N6Lj6gw3VyoXaO4zX6MW9XcratB4i2Vub+e84lg2d0Xr3jcJ623inrY9YSYl/c+EeE3YAIPkzy/OvPXrNOPPviqUeanWJHeZju0+mY/DNhutDFKMolvreWEbtsXl8GVCg2567O+w+ZRuvuNn9lBTytwIsR0429ixzminlumBk9D9ZZXTHUsIhQElEfAV5TF7cZQamsxpzHsTqbsquEAfmQflziR1oSRq9eMupA0CYB3/YhFLQ7XM0vhJOAKZNXXbbi0QJOSPjzEJ/JVq1+ZP4XzapPQQCKNZTGW0AIEvQRBccYSZI4iYKTMEfPBVfNb2JVtlfCMRXPnlWW2yhSxeWcitM4Il6pB/u2lhSoCC009eRoAHpLVPuPt2r20fdGHJJb432OthNPw4CS0pKgj11OuanrFFEGxtOBfwwpK7cVaj4Gxbk6drJtUQYbr9ZijiRJi99UEb9NY/qBFciS9pXSXf9jrYiUA3rAcpMbQxUZfW7X3IkNCm8Qg5mpphGYQHphSJy9GfoqoPtQr5vHZ4JLyOsQc/eO9cXFqwweG4pzsfpvAzHx3+5SeQWHd6/ENwmVzsv0fYRHlGIlOVuDL8qvW1g4zqigRMIZ+nRHeKVhezGCKkVYB8khT1bC/sg3hMa6L3frLO3NJhLdeBsCF//jXrLCS0IqzUIKP1wDAt58B8W+YIh8gZigJlTH3q23sc1vp0HWIGO2F91wxLF2ltL4kzezgLqlYN3hX04A1YaezC4ExeC5lx3ozVALuSIAGOlwnyDRH1oKnCkrF9sntLtag0k0c4QeSnGQYJ3wtiRN7W7rNVxpgRvtNHqVWzeHNbHpwBa+5QVvNdsItyxC3Ynt/wOIb49oEZotpBUtvzfE5VCVQJurWG97wJdDNGte9DuLbK8a0Rla70YhE+3kQ90QaJQSBykfuhzCOTv7VkHU///XFdwD+HB7GLY3nCCjN+uKS/YQ7SP9/mYuJTtNPAs4RbtDE2Rfa06d23z9IKSDbZZ68WYoJwlOBC3TjKXrC9IsZ0SCDndJ/Uqhkia9e8anAfhfMkt+6CY1u5EUmTFg14JL7Cu+3f6A26FCFT/GMHN0YL6hn0Ig==",
        "X-Forefront-Antispam-Report": "CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:satlexmb07.amd.com; PTR:InfoDomainNonexistent; CAT:NONE;\n SFS:(13230040)(376014)(82310400026)(36860700013)(7416014)(1800799024);\n DIR:OUT;\n SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n oi7nEDHQF4eDvrtz6FUzZLWhhI1aDEonPtbzoPNHizUU+RCq+r6HYITRxeQiqeQWAGNf5nMZ5qwiLqeIXoixWZ8Bx8CfJeHTDqIQEf7MSO7A79iNIlj40SvMlzubwcB97hMr7LyHKJip/nIi4KyV0FJDoLd/iC7CfI0rVZauRp7IjSXEmiQUHTLObVbbEZ8Yhg3NluBYJKTMkOONsl5s4Ac6zXurLT1dwCXggXioqqWpe0yIJdGIRXcj7EeBRuybxNNAemuGe05ABU5n7uTAZd1sydz0U3sdtFQlQDw04RYc5vC2SeYSk5EuvvWIawCcmrXyykP4p5Ac4jexu1Vt4GloRB32Kakyb+jWStUSz97CxTuABPEBWPlXQUriQBDqK14BdHzB824A/c5bNZIJvJysXZwit1c2je5z1bH+HOd/7u5hEHMtbFkK/J1H63iE",
        "X-OriginatorOrg": "amd.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "19 Feb 2026 05:43:40.8115 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 9c3e571d-c970-4073-7456-08de6f79d63b",
        "X-MS-Exchange-CrossTenant-Id": "3dd8961f-e488-4e60-8e11-a82d994e183d",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17];\n Helo=[satlexmb07.amd.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n SJ1PEPF00001CDE.namprd05.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "LV2PR12MB5919",
        "X-Spam_score_int": "-20",
        "X-Spam_score": "-2.1",
        "X-Spam_bar": "--",
        "X-Spam_report": "(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.043,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no",
        "X-Spam_action": "no action",
        "X-Mailman-Approved-At": "Thu, 19 Feb 2026 08:55:35 -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": "Add support for KVM_GET_LAPIC2 and KVM_SET_LAPIC2 ioctls to synchronize\nextended APIC register state between QEMU and KVM.  The extended ioctls\noperate on a 4KB APIC page (struct kvm_lapic_state2) instead of the\nlegacy 1KB. (struct kvm_lapic_state).\n\nUse the extended ioctls when KVM_CAP_LAPIC2 is enabled (has_lapic2),\notherwise fall back to the legacy KVM_GET/SET_LAPIC ioctls to maintain\ncompatibility with older KVM versions or when extended APIC is not\nnegotiated.\n\nWhen extended APIC is enabled (has_extapic) for AMD processors,\nsynchronize the extended registers:\n  - APIC_EFEAT (offset 0x400): Extended Features register\n  - APIC_ECTRL (offset 0x410): Extended Control register\n  - APIC_EILVTn (offset 0x500+): Extended interrupt LVT entries\nCurrently on 4 extended interrupt LVT entries are supported but future\nprocessors may support more.\n\nAdd kvm_apic_put2() and kvm_get_apic2() is added to mirror kvm_apic_put()\nand kvm_get_apic() for the extended ioctl path. Route kvm_apic_post_load()\n, kvm_apic_reset(), kvm_arch_get_registers() through the appropriate\nput/get function based on has_lapic2.\n\nSigned-off-by: Manali Shukla <manali.shukla@amd.com>\n---\n hw/i386/kvm/apic.c    | 55 ++++++++++++++++++++++++++++++++++++++++---\n target/i386/kvm/kvm.c | 24 ++++++++++++++++++-\n 2 files changed, 75 insertions(+), 4 deletions(-)",
    "diff": "diff --git a/hw/i386/kvm/apic.c b/hw/i386/kvm/apic.c\nindex 7bec7909e9..f91af66116 100644\n--- a/hw/i386/kvm/apic.c\n+++ b/hw/i386/kvm/apic.c\n@@ -33,7 +33,11 @@ static void kvm_put_apic_state(APICCommonState *s, void *regs)\n {\n     int i;\n \n-    memset(regs, 0, KVM_APIC_REG_SIZE);\n+    if (kvm_has_lapic2()) {\n+        memset(regs, 0, KVM_APIC_EXT_REG_SIZE);\n+    } else {\n+        memset(regs, 0, KVM_APIC_REG_SIZE);\n+    }\n \n     if (kvm_has_x2apic_api() && s->apicbase & MSR_IA32_APICBASE_EXTD) {\n         kvm_apic_set_reg(regs, 0x2, s->initial_apic_id);\n@@ -58,6 +62,13 @@ static void kvm_put_apic_state(APICCommonState *s, void *regs)\n     kvm_apic_set_reg(regs, 0x38, s->initial_count);\n     kvm_apic_set_reg(regs, 0x3e, s->divide_conf);\n \n+    if (kvm_has_extapic()) {\n+        kvm_apic_set_reg(regs, 0x40, s->efeat);\n+        kvm_apic_set_reg(regs, 0x41, s->ectrl);\n+        for (i = 0; i < s->nr_extlvt; i++) {\n+            kvm_apic_set_reg(regs, 0x50 + i, s->extlvt[i]);\n+        }\n+    }\n }\n \n void kvm_get_apic_state(APICCommonState *s, void *kapic)\n@@ -91,6 +102,15 @@ void kvm_get_apic_state(APICCommonState *s, void *kapic)\n     v = (s->divide_conf & 3) | ((s->divide_conf >> 1) & 4);\n     s->count_shift = (v + 1) & 7;\n \n+    if (kvm_has_extapic()) {\n+        s->efeat = kvm_apic_get_reg(kapic, 0x40);\n+        s->ectrl = kvm_apic_get_reg(kapic, 0x41);\n+\n+       for (i = 0; i < s->nr_extlvt; i++) {\n+            s->extlvt[i] = kvm_apic_get_reg(kapic, 0x50 + i);\n+        }\n+    }\n+\n     s->initial_count_load_time = qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL);\n     apic_next_timer(s, s->initial_count_load_time);\n }\n@@ -156,6 +176,27 @@ void kvm_uninitialize_extlvt(X86CPU *cpu)\n     }\n }\n \n+static void kvm_apic_put2(CPUState *cs, run_on_cpu_data data)\n+{\n+    APICCommonState *s = data.host_ptr;\n+    struct kvm_lapic_state2 kapic2;\n+    int ret;\n+\n+    if (is_tdx_vm()) {\n+        return;\n+    }\n+\n+    kvm_put_apicbase(s->cpu, s->apicbase);\n+    kvm_put_apic_state(s, &kapic2);\n+\n+    ret = kvm_vcpu_ioctl(CPU(s->cpu), KVM_SET_LAPIC2, &kapic2);\n+    if (ret < 0) {\n+        fprintf(stderr, \"KVM_SET_LAPIC2 failed EXT: %s\\n\",\n+               strerror(-ret));\n+        abort();\n+    }\n+}\n+\n static void kvm_apic_put(CPUState *cs, run_on_cpu_data data)\n {\n     APICCommonState *s = data.host_ptr;\n@@ -178,7 +219,11 @@ static void kvm_apic_put(CPUState *cs, run_on_cpu_data data)\n \n static void kvm_apic_post_load(APICCommonState *s)\n {\n-    run_on_cpu(CPU(s->cpu), kvm_apic_put, RUN_ON_CPU_HOST_PTR(s));\n+    if (kvm_has_lapic2()) {\n+        run_on_cpu(CPU(s->cpu), kvm_apic_put2, RUN_ON_CPU_HOST_PTR(s));\n+    } else {\n+        run_on_cpu(CPU(s->cpu), kvm_apic_put, RUN_ON_CPU_HOST_PTR(s));\n+    }\n }\n \n static void do_inject_external_nmi(CPUState *cpu, run_on_cpu_data data)\n@@ -247,7 +292,11 @@ static void kvm_apic_reset(APICCommonState *s)\n     /* Not used by KVM, which uses the CPU mp_state instead.  */\n     s->wait_for_sipi = 0;\n \n-    run_on_cpu(CPU(s->cpu), kvm_apic_put, RUN_ON_CPU_HOST_PTR(s));\n+    if (kvm_has_lapic2()) {\n+        run_on_cpu(CPU(s->cpu), kvm_apic_put2, RUN_ON_CPU_HOST_PTR(s));\n+    } else {\n+        run_on_cpu(CPU(s->cpu), kvm_apic_put, RUN_ON_CPU_HOST_PTR(s));\n+    }\n }\n \n static void kvm_apic_realize(DeviceState *dev, Error **errp)\ndiff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c\nindex c9f4cb6430..ad7a4c3c5c 100644\n--- a/target/i386/kvm/kvm.c\n+++ b/target/i386/kvm/kvm.c\n@@ -5069,6 +5069,28 @@ static int kvm_get_mp_state(X86CPU *cpu)\n     return 0;\n }\n \n+static int kvm_get_apic2(X86CPU *cpu)\n+{\n+    APICCommonState *apic;\n+    struct kvm_lapic_state2 kapic2;\n+    int ret;\n+\n+    apic = APIC_COMMON(cpu->apic_state);\n+\n+    if (!apic || !kvm_irqchip_in_kernel()) {\n+        return 0;\n+    }\n+\n+    ret = kvm_vcpu_ioctl(CPU(cpu), KVM_GET_LAPIC2, &kapic2);\n+\n+    if (ret < 0) {\n+        return ret;\n+    }\n+\n+    kvm_get_apic_state(apic, &kapic2);\n+    return 0;\n+}\n+\n static int kvm_get_apic(X86CPU *cpu)\n {\n     APICCommonState *apic;\n@@ -5476,7 +5498,7 @@ int kvm_arch_get_registers(CPUState *cs, Error **errp)\n         error_setg_errno(errp, -ret, \"Failed to get MSRs\");\n         goto out;\n     }\n-    ret = kvm_get_apic(cpu);\n+    ret = has_lapic2 ? kvm_get_apic2(cpu) : kvm_get_apic(cpu);\n     if (ret < 0) {\n         error_setg_errno(errp, -ret, \"Failed to get APIC\");\n         goto out;\n",
    "prefixes": [
        "v1",
        "6/8"
    ]
}