[COMMIT osv master] aarch64: do not probe for pci if opt_pci_disabled

3 views
Skip to first unread message

Commit Bot

unread,
Jun 11, 2021, 3:42:31 PM6/11/21
to osv...@googlegroups.com, Waldemar Kozaczuk
From: Waldemar Kozaczuk <jwkoz...@gmail.com>
Committer: Waldemar Kozaczuk <jwkoz...@gmail.com>
Branch: master

aarch64: do not probe for pci if opt_pci_disabled

Signed-off-by: Waldemar Kozaczuk <jwkoz...@gmail.com>

---
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++) {
Reply all
Reply to author
Forward
0 new messages