From: Waldemar Kozaczuk <[email protected]>
Committer: Waldemar Kozaczuk <[email protected]>
Branch: master

aarch64: do not probe for pci if opt_pci_disabled

Signed-off-by: Waldemar Kozaczuk <[email protected]>

---
diff --git a/arch/aarch64/arch-setup.cc b/arch/aarch64/arch-setup.cc
--- a/arch/aarch64/arch-setup.cc
+++ b/arch/aarch64/arch-setup.cc
@@ -72,6 +72,7 @@ void arch_setup_pci()
                     mmu::page_size, mmu::mattr::dev);
 }
 
+extern bool opt_pci_disabled;
 void arch_setup_free_memory()
 {
     setup_temporary_phys_map();
@@ -119,7 +120,9 @@ void arch_setup_free_memory()
     mmu::linear_map((void *)cpu, (mmu::phys)cpu, cpu_len, mmu::page_size,
                     mmu::mattr::dev);
 
-    arch_setup_pci();
+    if (!opt_pci_disabled) {
+        arch_setup_pci();
+    }
 
     // get rid of the command line, before memory is unmapped
     console::mmio_isa_serial_console::clean_cmdline(cmdline);
@@ -163,26 +166,28 @@ void arch_init_drivers()
 {
     extern boot_time_chart boot_time;
 
-    int irqmap_count = dtb_get_pci_irqmap_count();
-    if (irqmap_count > 0) {
-        u32 mask = dtb_get_pci_irqmask();
-        u32 *bdfs = (u32 *)alloca(sizeof(u32) * irqmap_count);
-        int *irqs  = (int *)alloca(sizeof(int) * irqmap_count);
-        if (!dtb_get_pci_irqmap(bdfs, irqs, irqmap_count)) {
-            abort("arch-setup: failed to get PCI irqmap.\n");
+    if (!opt_pci_disabled) {
+        int irqmap_count = dtb_get_pci_irqmap_count();
+        if (irqmap_count > 0) {
+            u32 mask = dtb_get_pci_irqmask();
+            u32 *bdfs = (u32 *)alloca(sizeof(u32) * irqmap_count);
+            int *irqs  = (int *)alloca(sizeof(int) * irqmap_count);
+            if (!dtb_get_pci_irqmap(bdfs, irqs, irqmap_count)) {
+                abort("arch-setup: failed to get PCI irqmap.\n");
+            }
+            pci::set_pci_irqmap(bdfs, irqs, irqmap_count, mask);
         }
-        pci::set_pci_irqmap(bdfs, irqs, irqmap_count, mask);
-    }
 
 #if CONF_logger_debug
-    pci::dump_pci_irqmap();
+        pci::dump_pci_irqmap();
 #endif
 
-    // Enumerate PCI devices
-    size_t pci_cfg_len;
-    if (pci::get_pci_cfg(&pci_cfg_len)) {
-       pci::pci_device_enumeration();
-       boot_time.event("pci enumerated");
+        // Enumerate PCI devices
+        size_t pci_cfg_len;
+        if (pci::get_pci_cfg(&pci_cfg_len)) {
+            pci::pci_device_enumeration();
+            boot_time.event("pci enumerated");
+        }
     }
 
     // Register any parsed virtio-mmio devices
diff --git a/drivers/pci-generic.cc b/drivers/pci-generic.cc
--- a/drivers/pci-generic.cc
+++ b/drivers/pci-generic.cc
@@ -19,6 +19,8 @@
 #include "drivers/virtio.hh"
 #include "drivers/virtio-pci-device.hh"
 
+extern bool opt_pci_disabled;
+
 namespace pci {
 
 void pci_device_print(u8 bus, u8 slot, u8 func)
@@ -42,6 +44,10 @@ void pci_device_print(u8 bus, u8 slot, u8 func)
 
 void pci_devices_print()
 {
+    if (opt_pci_disabled) {
+        return;
+    }
+
     u16 bus, slot, func;
 
     for (bus = 0; bus < 256; bus++) {

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/osv-dev/00000000000058e31305c482b54f%40google.com.

Reply via email to