Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'pci-v7.1-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci

Pull PCI fixes from Bjorn Helgaas:

- Don't fallback to bus reset after failed slot reset; a bus reset
isn't safe if the .reset_slot() callback is implemented (Keith Busch)

- Update saved_config_space upon resource assignment to fix passthrough
regressions when x86 pcibios_assign_resources() updates BARs (Lukas
Wunner)

- Initialize a temporary pci_dev->dev in sysfs 'new_id' attribute to
fix a lockdep regression after driver_override was moved from PCI to
device core (Samiullah Khawaja)

- Update MAINTAINERS email addresses (Marek Vasut, Hans Zhang)

- Add MAINTAINERS reviewer for PCIe Cadence IP (Aksh Garg)

* tag 'pci-v7.1-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci:
MAINTAINERS: Add Aksh Garg as PCIe CADENCE reviewer
MAINTAINERS: Update Hans Zhang email for PCIe CIX Sky1
MAINTAINERS: Update Marek Vasut email for PCIe R-Car
PCI: Initialize temporary device in new_id_store()
PCI: Update saved_config_space upon resource assignment
PCI: Don't fallback to bus reset after failed slot reset

+18 -9
+4 -3
MAINTAINERS
··· 20352 20352 F: drivers/pci/controller/dwc/pcie-armada8k.c 20353 20353 20354 20354 PCI DRIVER FOR CADENCE PCIE IP 20355 + R: Aksh Garg <a-garg7@ti.com> 20355 20356 L: linux-pci@vger.kernel.org 20356 20357 S: Orphan 20357 20358 F: Documentation/devicetree/bindings/pci/cdns,* 20358 - F: drivers/pci/controller/cadence/*cadence* 20359 + F: drivers/pci/controller/cadence/ 20359 20360 20360 20361 PCI DRIVER FOR CIX Sky1 20361 - M: Hans Zhang <hans.zhang@cixtech.com> 20362 + M: Hans Zhang <18255117159@163.com> 20362 20363 L: linux-pci@vger.kernel.org 20363 20364 S: Maintained 20364 20365 F: Documentation/devicetree/bindings/pci/cix,sky1-pcie-*.yaml ··· 20471 20470 F: drivers/pci/controller/plda/pcie-plda.h 20472 20471 20473 20472 PCI DRIVER FOR RENESAS R-CAR 20474 - M: Marek Vasut <marek.vasut+renesas@gmail.com> 20473 + M: Marek Vasut <marek.vasut+renesas@mailbox.org> 20475 20474 M: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> 20476 20475 L: linux-pci@vger.kernel.org 20477 20476 L: linux-renesas-soc@vger.kernel.org
+8 -1
drivers/pci/pci-driver.c
··· 179 179 return NULL; 180 180 } 181 181 182 + static void _pci_free_device(struct device *dev) 183 + { 184 + kfree(to_pci_dev(dev)); 185 + } 186 + 182 187 /** 183 188 * new_id_store - sysfs frontend to pci_add_dynid() 184 189 * @driver: target device driver ··· 219 214 pdev->subsystem_vendor = subvendor; 220 215 pdev->subsystem_device = subdevice; 221 216 pdev->class = class; 217 + pdev->dev.release = _pci_free_device; 222 218 219 + device_initialize(&pdev->dev); 223 220 if (pci_match_device(pdrv, pdev)) 224 221 retval = -EEXIST; 225 222 226 - kfree(pdev); 223 + put_device(&pdev->dev); 227 224 228 225 if (retval) 229 226 return retval;
+4 -5
drivers/pci/pci.c
··· 5607 5607 * reset for affected devices 5608 5608 * 5609 5609 * This function will first try to reset the slots on this bus if the method is 5610 - * available. If slot reset fails or is not available, this will fall back to a 5610 + * available. If slot reset is not available, this will fall back to a 5611 5611 * secondary bus reset. 5612 5612 */ 5613 5613 static int pci_reset_bridge(struct pci_dev *bridge, bool restore) 5614 5614 { 5615 5615 struct pci_bus *bus = bridge->subordinate; 5616 5616 struct pci_slot *slot; 5617 + int ret = 0; 5617 5618 5618 5619 if (!bus) 5619 5620 return -ENOTTY; ··· 5628 5627 goto bus_reset; 5629 5628 5630 5629 list_for_each_entry(slot, &bus->slots, list) { 5631 - int ret; 5632 - 5633 5630 if (restore) 5634 5631 ret = pci_try_reset_slot(slot); 5635 5632 else 5636 5633 ret = pci_slot_reset(slot, PCI_RESET_DO_RESET); 5637 5634 5638 5635 if (ret) 5639 - goto bus_reset; 5636 + break; 5640 5637 } 5641 5638 5642 5639 mutex_unlock(&pci_slot_mutex); 5643 - return 0; 5640 + return ret; 5644 5641 bus_reset: 5645 5642 mutex_unlock(&pci_slot_mutex); 5646 5643
+2
drivers/pci/setup-res.c
··· 102 102 } 103 103 104 104 pci_write_config_dword(dev, reg, new); 105 + dev->saved_config_space[reg / 4] = new; 105 106 pci_read_config_dword(dev, reg, &check); 106 107 107 108 if ((new ^ check) & mask) { ··· 113 112 if (res->flags & IORESOURCE_MEM_64) { 114 113 new = region.start >> 16 >> 16; 115 114 pci_write_config_dword(dev, reg + 4, new); 115 + dev->saved_config_space[(reg + 4) / 4] = new; 116 116 pci_read_config_dword(dev, reg + 4, &check); 117 117 if (check != new) { 118 118 pci_err(dev, "%s: error updating (high %#010x != %#010x)\n",