Skip to contentSkip to conversation

only scan PCI busses that exist

PATCH New Jesse Barnes 1 participant 1 message Mar 27, 2004

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 only scan PCI busses that exist

sn_pci_init was unconditionally scanning 255 PCI busses, even though only a few are actually present on most systems. This patch adds a check to make sure a given bus exists before doing the scan, which saves a little memory and also makes /sys/devices reflect reality a bit more closely.

Thanks,
Jesse

===== arch/ia64/sn/io/machvec/pci_bus_cvlink.c 1.36 vs edited =====

arch/ia64/sn/io/machvec/pci_bus_cvlink.c +10 -16
@@ -811,7 +811,6 @@
 	/*
 	 * set pci_raw_ops, etc.
 	 */
-
 	sgi_master_io_infr_init();
 
 	for (cnode = 0; cnode < numnodes; cnode++) {
@@ -826,16 +825,16 @@
 #endif
 
 	controller = kmalloc(sizeof(struct pci_controller), GFP_KERNEL);
-	if (controller) {
-		memset(controller, 0, sizeof(struct pci_controller));
-		/* just allocate some devices and fill in the pci_dev structs */
-		for (i = 0; i < PCI_BUSES_TO_SCAN; i++)
-			pci_scan_bus(i, &sn_pci_ops, controller);
+	if (!controller) {
+		printk(KERN_WARNING "cannot allocate PCI controller\n");
+		return 0;
 	}
 
-	/*
-	 * actually find devices and fill in hwgraph structs
-	 */
+	memset(controller, 0, sizeof(struct pci_controller));
+
+	for (i = 0; i < PCI_BUSES_TO_SCAN; i++)
+		if (pci_bus_to_vertex(i))
+			pci_scan_bus(i, &sn_pci_ops, controller);
 
 	done_probing = 1;
 
@@ -857,13 +856,8 @@
 	 * set the root start and end so that drivers calling check_region()
 	 * won't see a conflict
 	 */
-
-#ifdef CONFIG_IA64_SGI_SN_SIM
-	if (! IS_RUNNING_ON_SIMULATOR()) {
-		ioport_resource.start  = 0xc000000000000000;
-		ioport_resource.end =    0xcfffffffffffffff;
-	}
-#endif
+	ioport_resource.start = 0xc000000000000000;
+	ioport_resource.end = 0xcfffffffffffffff;
 
 	/*
 	 * Set the root start and end for Mem Resource.