From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [IPv6:2a0f:8001:1:32::40]) by lore.proxmox.com (Postfix) with ESMTPS id 05FC51FF0E1 for ; Thu, 27 Aug 2026 12:36:03 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 7F87A21586; Thu, 27 Aug 2026 12:35:54 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787826942; x=1788431742; darn=lists.proxmox.com; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=8F3TCIYWPYdBptyTvEK+tRYyLq/ftfSVK9B1W2/hCBk=; b=LQB7x3IQRMaqlLCPJu2rpZ/DXIyuYVLbc4Va/7Q5r3lnA0wGBJo+ypTIdRVka4MIPD 3A4ZmxarzJJ1OZysEuTdwd9hqDFB1fYu1emWxcuYyt+LsVAN3FtjLM+QtrPuJbKSRO/K lrxlmAhrHgHFKe8wrp3cOpRoNsXalDysG3CW8tE62zbYD0SiLr514sc7AEWMjrfmxMQ3 4W/juGL/IalIMfAbXvEJHEq2pGLfCGCas+eiSEl5ZaVfhDWKyq8DQZsQ5XmuAg8/Z4Dc n6aZotHKx2y3mYHf00B6UH0w05t7KlQyXU/lwXKTmDTULgpPYS1OEoZiry/bbwYh8VA5 RjLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787826942; x=1788431742; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=8F3TCIYWPYdBptyTvEK+tRYyLq/ftfSVK9B1W2/hCBk=; b=Vxg2IeGwH8pXxLCwZd9vASG88H/6BI/FUqA3Yd0MTJMzTf0X0HOWfgsYDXIjg5LBXd m5UM85Pi4747TfvlOP1f/52xSGUcvtJxfjQ3KltwVfwWLijb1I4wJvpY+VWgW8EpanlF noz+E3Hybca1BeZW5qDVDkwu5/4UECk82C/uzfbzyVsnaohYX6VYs0TJk1oJ/DxI50CP TPbjGakSuRjkfOffYg9JmXsAuizRoA9ZgZdsNgNQ33hYAQClPYIK86lBhoVZMAjWCdsh W38/9HQRE3HKAZtT/2Y3ORZlCctg35f3c1W4JBxVKjdiv/mp/QYxmP6sFftBgq5nK5lB T17Q== X-Gm-Message-State: AFuF++mE9xz2XDo1b2//aPIUcWUEFrKV88HfLfTfosGkaae6Pe+DB4/g 2cTYjUQDEEASsCHxXgI2TG17adClcLEg5CEoBoIAN4NXW1GPZPDcdE+8Tw9w7990nZw= X-Gm-Gg: AR+sD12yo6a/Ehk1wrL3RpdRcwhV7dHLfTBsrHTty3dd2JrQ/lX4iNnKl5MOIqN0qjh v9ESXeW3Hn2MYF84xiQ8omb6UlLN9hXyXHMQWh/J3QCWf14ydG8b4BF9W4si3UlqhQnWMmm82Ff e8wKTbrItfhzj8ChzFbrjfW5LCI+Vmb20c+DBWvHQwCbPsjDLAKHZ62SkROwbJgCii1ezinjiNa 1yc0Q58XxQSJsowGhdtVO204EQR3MVIcr0RQ7OfmixTwwpYm8r7n5YKNfse17jqOuMdgcq8LUGx N+VuvecOdj7gSkDhMJgtrV4Fm2FQqej1K13VztjQQgNZUr4SMVaCJ9R/J1fUlyE2rG6re7MB3T8 x9GjJL9cTG4ZeEVRKD0jynCxMH0VPMWCZ/1S7hicyLlIwXQb5hX9Kw/dgtwxhQwhtZ2AfRjc6as uZdAo68RA717iOuzilBx3T63e/fC65cgUFD3ck/Vkfa7F7tU2BEQFY53/2pl5OO9PeJ4AQ2GmAD nrkIg== X-Received: by 2002:a05:6a00:3d89:b0:855:1590:ba2b with SMTP id d2e1a72fcca58-8551590bac6mr7500610b3a.5.1787826941980; Thu, 27 Aug 2026 03:35:41 -0700 (PDT) From: Kaiyang Wu X-Google-Original-From: Kaiyang Wu To: pve-devel@lists.proxmox.com Subject: [PATCH qemu-server 1/3] qemuserver: add pvpanic device Date: Thu, 27 Aug 2026 18:35:27 +0800 Message-ID: <20260827103529.393388-2-wukaiyang@loongfans.cn> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260827103529.393388-1-wukaiyang@loongfans.cn> References: <20260827103529.393388-1-wukaiyang@loongfans.cn> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain DMARC_PASS -0.1 DMARC pass policy FREEMAIL_ENVFROM_END_DIGIT 1 Envelope-from freemail username ends in digit FREEMAIL_FROM 0.001 Sender email is commonly abused enduser mail provider RCVD_IN_DNSWL_NONE -0.0001 Sender listed at https://www.dnswl.org/, no trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: 5FMKRBS4CKMG6ZXTPDGXT77QF3OWCOOR X-Message-ID-Hash: 5FMKRBS4CKMG6ZXTPDGXT77QF3OWCOOR X-MailFrom: wukaiyang2003@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Kaiyang Wu X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Add pvpanic device to monitor virtual machine system panics. Add pvpanic field in virtual machine configuration files, allowing to choose the ISA or the PCI variant of the pvpanic device. Signed-off-by: Kaiyang Wu --- src/PVE/API2/Qemu.pm | 1 + src/PVE/QemuServer.pm | 19 +++++++++++++++++++ src/PVE/QemuServer/PCI.pm | 1 + 3 files changed, 21 insertions(+) diff --git a/src/PVE/API2/Qemu.pm b/src/PVE/API2/Qemu.pm index 71247eec..933f6221 100644 --- a/src/PVE/API2/Qemu.pm +++ b/src/PVE/API2/Qemu.pm @@ -818,6 +818,7 @@ my $hwtypeoptions = { 'watchdog' => 1, 'audio0' => 1, 'rng0' => 1, + 'pvpanic0' => 1, }; my $generaloptions = { diff --git a/src/PVE/QemuServer.pm b/src/PVE/QemuServer.pm index 63d8c135..f476af94 100644 --- a/src/PVE/QemuServer.pm +++ b/src/PVE/QemuServer.pm @@ -739,6 +739,13 @@ EODESCR optional => 1, default => 1, }, + pvpanic0 => { + optional => 1, + type => 'string', + description => "Configure a pvpanic device to monitor guest panics", + enum => [qw(pvpanic pvpanic-pci)], + default => undef, + }, }; my $cicustom_fmt = { @@ -3415,6 +3422,18 @@ sub config_to_command { push @$cmd, '-nographic'; } + my $pvpanic = $conf->{pvpanic0}; + if (defined($pvpanic)) { + if ($pvpanic eq 'pvpanic') { + push @$devices, '-device', $pvpanic; + } elsif ($pvpanic eq 'pvpanic-pci') { + my $pvpanicpciaddr = print_pci_addr("pvpanic0", $bridges, $arch); + push @$devices, '-device', "$pvpanic,id=pvpanic$pvpanicpciaddr"; + } else { + die "unknown pvpanic device type $pvpanic"; + } + } + # For now, handles only specific parts, but the final goal is to cover everything. my $cfg2cmd_opts = { forcemachine => $forcemachine }; my $cfg2cmd = PVE::QemuServer::Cfg2Cmd->new($conf, $defaults, $version_guard, $cfg2cmd_opts); diff --git a/src/PVE/QemuServer/PCI.pm b/src/PVE/QemuServer/PCI.pm index 0b67943c..56770091 100644 --- a/src/PVE/QemuServer/PCI.pm +++ b/src/PVE/QemuServer/PCI.pm @@ -220,6 +220,7 @@ sub get_pci_addr_map { 'pci.4' => { bus => 1, addr => 28 }, 'rng0' => { bus => 1, addr => 29 }, 'pci.2-igd' => { bus => 1, addr => 30 }, # replaces pci.2 in case a legacy IGD device is passed through + 'pvpanic0' => { bus => 1, addr => 31 }, 'virtio6' => { bus => 2, addr => 1 }, 'virtio7' => { bus => 2, addr => 2 }, 'virtio8' => { bus => 2, addr => 3 }, -- 2.55.0