From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 394331FF16F for ; Tue, 22 Jul 2025 11:55:53 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 9B20534F3B; Tue, 22 Jul 2025 11:57:03 +0200 (CEST) From: Dominik Csapak To: pve-devel@lists.proxmox.com Date: Tue, 22 Jul 2025 11:56:58 +0200 Message-Id: <20250722095659.79468-1-d.csapak@proxmox.com> X-Mailer: git-send-email 2.39.5 MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.022 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH pve-kernel bookworm-6.14 1/1] backport fix for passthrough for devices without PCI power management X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" fixes broken start for virtual functions: kvm: -device vfio-pci,host=0000:07:10.0,id=hostpci0,bus=pci.0,addr=0x10: vfio 0000:07:10.0: error getting device from group 23: Permission denied Verify all devices in group 23 are bound to vfio- or pci-stub and not already in use and for nvidia vgpu: kvm: -device vfio-pci,host=0000:21:00.4,id=hostpci0,bus=pci.0,addr=0x10: vfio 0000:21:00.4: error getting device info: Input/output error Signed-off-by: Dominik Csapak --- this can probably be cherry picked for trixie ...me-PM-on-devices-that-don-t-support-.patch | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 patches/kernel/0014-PCI-Set-up-runtime-PM-on-devices-that-don-t-support-.patch diff --git a/patches/kernel/0014-PCI-Set-up-runtime-PM-on-devices-that-don-t-support-.patch b/patches/kernel/0014-PCI-Set-up-runtime-PM-on-devices-that-don-t-support-.patch new file mode 100644 index 0000000..3f271ef --- /dev/null +++ b/patches/kernel/0014-PCI-Set-up-runtime-PM-on-devices-that-don-t-support-.patch @@ -0,0 +1,57 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Mario Limonciello +Date: Wed, 11 Jun 2025 18:31:16 -0500 +Subject: [PATCH] PCI: Set up runtime PM on devices that don't support PCI PM + +commit 4d4c10f763d7 ("PCI: Explicitly put devices into D0 when +initializing") intended to put PCI devices into D0, but in doing so +unintentionally changed runtime PM initialization not to occur on +devices that don't support PCI PM. This caused a regression in vfio-pci +due to an imbalance with it's use. + +Adjust the logic in pci_pm_init() so that even if PCI PM isn't supported +runtime PM is still initialized. + +Cc: Alex Williamson +Reported-by: Giovanni Cabiddu +Closes: https://lore.kernel.org/linux-pci/20250424043232.1848107-1-superm1@kernel.org/T/#m7e8929d6421690dc8bd6dc639d86c2b4db27cbc4 +Reported-by: Nicolas Dichtel +Closes: https://lore.kernel.org/linux-pci/20250424043232.1848107-1-superm1@kernel.org/T/#m40d277dcdb9be64a1609a82412d1aa906263e201 +Tested-by: Giovanni Cabiddu +Fixes: 4d4c10f763d7 ("PCI: Explicitly put devices into D0 when initializing") +Signed-off-by: Mario Limonciello +(backported from https://lore.kernel.org/all/20250611233117.61810-1-superm1@kernel.org/) +Signed-off-by: Dominik Csapak +--- + drivers/pci/pci.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c +index 1358f4c17209..5d9208977665 100644 +--- a/drivers/pci/pci.c ++++ b/drivers/pci/pci.c +@@ -3217,14 +3217,14 @@ void pci_pm_init(struct pci_dev *dev) + /* find PCI PM capability in list */ + pm = pci_find_capability(dev, PCI_CAP_ID_PM); + if (!pm) +- return; ++ goto poweron; + /* Check device's ability to generate PME# */ + pci_read_config_word(dev, pm + PCI_PM_PMC, &pmc); + + if ((pmc & PCI_PM_CAP_VER_MASK) > 3) { + pci_err(dev, "unsupported PM cap regs version (%u)\n", + pmc & PCI_PM_CAP_VER_MASK); +- return; ++ goto poweron; + } + + dev->pm_cap = pm; +@@ -3269,6 +3269,7 @@ void pci_pm_init(struct pci_dev *dev) + pci_read_config_word(dev, PCI_STATUS, &status); + if (status & PCI_STATUS_IMM_READY) + dev->imm_ready = 1; ++poweron: + pci_pm_power_up_and_verify_state(dev); + pm_runtime_forbid(&dev->dev); + pm_runtime_set_active(&dev->dev); -- 2.39.5 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel