Patch "PCI: acpiphp: Reassign resources on bridge if necessary" has been added to the 5.15-stable tree

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

 



This is a note to let you know that I've just added the patch titled

    PCI: acpiphp: Reassign resources on bridge if necessary

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     pci-acpiphp-reassign-resources-on-bridge-if-necessar.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 921dd1a08b58b8b02460ee2c9e019432972de2c6
Author: Igor Mammedov <imammedo@xxxxxxxxxx>
Date:   Mon Apr 24 21:15:57 2023 +0200

    PCI: acpiphp: Reassign resources on bridge if necessary
    
    [ Upstream commit 40613da52b13fb21c5566f10b287e0ca8c12c4e9 ]
    
    When using ACPI PCI hotplug, hotplugging a device with large BARs may fail
    if bridge windows programmed by firmware are not large enough.
    
    Reproducer:
      $ qemu-kvm -monitor stdio -M q35  -m 4G \
          -global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=on \
          -device id=rp1,pcie-root-port,bus=pcie.0,chassis=4 \
          disk_image
    
     wait till linux guest boots, then hotplug device:
       (qemu) device_add qxl,bus=rp1
    
     hotplug on guest side fails with:
       pci 0000:01:00.0: [1b36:0100] type 00 class 0x038000
       pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x03ffffff]
       pci 0000:01:00.0: reg 0x14: [mem 0x00000000-0x03ffffff]
       pci 0000:01:00.0: reg 0x18: [mem 0x00000000-0x00001fff]
       pci 0000:01:00.0: reg 0x1c: [io  0x0000-0x001f]
       pci 0000:01:00.0: BAR 0: no space for [mem size 0x04000000]
       pci 0000:01:00.0: BAR 0: failed to assign [mem size 0x04000000]
       pci 0000:01:00.0: BAR 1: no space for [mem size 0x04000000]
       pci 0000:01:00.0: BAR 1: failed to assign [mem size 0x04000000]
       pci 0000:01:00.0: BAR 2: assigned [mem 0xfe800000-0xfe801fff]
       pci 0000:01:00.0: BAR 3: assigned [io  0x1000-0x101f]
       qxl 0000:01:00.0: enabling device (0000 -> 0003)
       Unable to create vram_mapping
       qxl: probe of 0000:01:00.0 failed with error -12
    
    However when using native PCIe hotplug
      '-global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off'
    it works fine, since kernel attempts to reassign unused resources.
    
    Use the same machinery as native PCIe hotplug to (re)assign resources.
    
    Link: https://lore.kernel.org/r/20230424191557.2464760-1-imammedo@xxxxxxxxxx
    Signed-off-by: Igor Mammedov <imammedo@xxxxxxxxxx>
    Signed-off-by: Bjorn Helgaas <bhelgaas@xxxxxxxxxx>
    Acked-by: Michael S. Tsirkin <mst@xxxxxxxxxx>
    Acked-by: Rafael J. Wysocki <rafael@xxxxxxxxxx>
    Cc: stable@xxxxxxxxxxxxxxx
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
index f031302ad4019..44c0b025f09e1 100644
--- a/drivers/pci/hotplug/acpiphp_glue.c
+++ b/drivers/pci/hotplug/acpiphp_glue.c
@@ -489,7 +489,6 @@ static void enable_slot(struct acpiphp_slot *slot, bool bridge)
 				acpiphp_native_scan_bridge(dev);
 		}
 	} else {
-		LIST_HEAD(add_list);
 		int max, pass;
 
 		acpiphp_rescan_slot(slot);
@@ -503,12 +502,10 @@ static void enable_slot(struct acpiphp_slot *slot, bool bridge)
 				if (pass && dev->subordinate) {
 					check_hotplug_bridge(slot, dev);
 					pcibios_resource_survey_bus(dev->subordinate);
-					__pci_bus_size_bridges(dev->subordinate,
-							       &add_list);
 				}
 			}
 		}
-		__pci_bus_assign_resources(bus, &add_list, NULL);
+		pci_assign_unassigned_bridge_resources(bus->self);
 	}
 
 	acpiphp_sanitize_bus(bus);



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux