[coreboot-gerrit] New patch to review for coreboot: Revert "northbridge/intel/peg: Disable unused ports"

Nico Huber (nico.h@gmx.de) gerrit at coreboot.org
Fri Feb 5 12:23:30 CET 2016


Nico Huber (nico.h at gmx.de) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/13609

-gerrit

commit e91283204d2eeeeae1630b010ea79145784a1b3e
Author: Nico Huber <nico.huber at secunet.com>
Date:   Thu Feb 4 18:59:48 2016 +0100

    Revert "northbridge/intel/peg: Disable unused ports"
    
    This reverts commit 0e06f5bd70b45fd330d8dfb1dc77cce043caf841.
    
    It breaks gm45 and also does some magic without being asked too. It
    disables bridge devices permanently if no device was found on the se-
    condary bus. In a simple notebook world this might be ok, but it breaks
    hot-plugging and late detection (if a secondary bus device comes up too
    slow for the firmware to detect and the OS has to enumerate it).
    
    Change-Id: Ia2010640d7c55b0bdd44164b81c75dd4be50410b
    Signed-off-by: Nico Huber <nico.huber at secunet.com>
---
 src/northbridge/intel/gm45/northbridge.c        | 14 +------------
 src/northbridge/intel/sandybridge/northbridge.c | 26 +++++--------------------
 2 files changed, 6 insertions(+), 34 deletions(-)

diff --git a/src/northbridge/intel/gm45/northbridge.c b/src/northbridge/intel/gm45/northbridge.c
index 84df62d..ce75aea 100644
--- a/src/northbridge/intel/gm45/northbridge.c
+++ b/src/northbridge/intel/gm45/northbridge.c
@@ -243,17 +243,6 @@ static void enable_dev(device_t dev)
 	}
 }
 
-static u8 scan_bus_unused(struct bus *link)
-{
-	struct device *dev;
-
-	for (dev = link->children; dev; dev = dev->sibling) {
-		if (dev->enabled)
-			return 0;
-	}
-	return 1;
-}
-
 static void gm45_init(void *const chip_info)
 {
 	int dev, fn, bit_base;
@@ -279,8 +268,7 @@ static void gm45_init(void *const chip_info)
 		for (; fn >= 0; --fn) {
 			const struct device *const d =
 				dev_find_slot(0, PCI_DEVFN(dev, fn));
-			if (d && d->enabled && d->link_list && !scan_bus_unused(d->link_list))
-				continue;
+			if (!d || d->enabled) continue;
 			const u32 deven = pci_read_config32(d0f0, D0F0_DEVEN);
 			pci_write_config32(d0f0, D0F0_DEVEN,
 					   deven & ~(1 << (bit_base + fn)));
diff --git a/src/northbridge/intel/sandybridge/northbridge.c b/src/northbridge/intel/sandybridge/northbridge.c
index 3974fe89..53d93a2 100644
--- a/src/northbridge/intel/sandybridge/northbridge.c
+++ b/src/northbridge/intel/sandybridge/northbridge.c
@@ -368,17 +368,6 @@ static void northbridge_dmi_init(struct device *dev)
 	DMIBAR32(0x88) = reg32;
 }
 
-static u8 scan_bus_unused(struct bus *link)
-{
-	struct device *dev;
-
-	for (dev = link->children; dev; dev = dev->sibling) {
-		if (dev->enabled)
-			return 0;
-	}
-	return 1;
-}
-
 /* Disable unused PEG devices based on devicetree */
 static void disable_peg(void)
 {
@@ -389,32 +378,27 @@ static void disable_peg(void)
 	reg = pci_read_config32(dev, DEVEN);
 
 	dev = dev_find_slot(0, PCI_DEVFN(1, 2));
-	if (!dev || !dev->enabled ||
-			(dev->link_list && scan_bus_unused(dev->link_list))) {
+	if (!dev || !dev->enabled) {
 		printk(BIOS_DEBUG, "Disabling PEG12.\n");
 		reg &= ~DEVEN_PEG12;
 	}
 	dev = dev_find_slot(0, PCI_DEVFN(1, 1));
-	if (!dev || !dev->enabled ||
-			(dev->link_list && scan_bus_unused(dev->link_list))) {
+	if (!dev || !dev->enabled) {
 		printk(BIOS_DEBUG, "Disabling PEG11.\n");
 		reg &= ~DEVEN_PEG11;
 	}
 	dev = dev_find_slot(0, PCI_DEVFN(1, 0));
-	if (!dev || !dev->enabled ||
-			(dev->link_list && scan_bus_unused(dev->link_list))) {
+	if (!dev || !dev->enabled) {
 		printk(BIOS_DEBUG, "Disabling PEG10.\n");
 		reg &= ~DEVEN_PEG10;
 	}
 	dev = dev_find_slot(0, PCI_DEVFN(2, 0));
-	if (!dev || !dev->enabled ||
-			(dev->link_list && scan_bus_unused(dev->link_list))) {
+	if (!dev || !dev->enabled) {
 		printk(BIOS_DEBUG, "Disabling IGD.\n");
 		reg &= ~DEVEN_IGD;
 	}
 	dev = dev_find_slot(0, PCI_DEVFN(6, 0));
-	if (!dev || !dev->enabled ||
-			(dev->link_list && scan_bus_unused(dev->link_list))) {
+	if (!dev || !dev->enabled) {
 		printk(BIOS_DEBUG, "Disabling PEG60.\n");
 		reg &= ~DEVEN_PEG60;
 	}



More information about the coreboot-gerrit mailing list