Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8e709469 authored by Rusty Russell's avatar Rusty Russell
Browse files

lguest: add a dummy PCI host bridge.



Otherwise Linux fails to find the bus.

Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent 3e0e5f26
Loading
Loading
Loading
Loading
+14 −0
Original line number Original line Diff line number Diff line
@@ -1238,6 +1238,17 @@ static void handle_output(unsigned long addr)
 * code.
 * code.
 */
 */


/* Linux expects a PCI host bridge: ours is a dummy, and first on the bus. */
static struct device pci_host_bridge;

static void init_pci_host_bridge(void)
{
	pci_host_bridge.name = "PCI Host Bridge";
	pci_host_bridge.config.class = 0x06; /* bridge */
	pci_host_bridge.config.subclass = 0; /* host bridge */
	devices.pci[0] = &pci_host_bridge;
}

/* The IO ports used to read the PCI config space. */
/* The IO ports used to read the PCI config space. */
#define PCI_CONFIG_ADDR 0xCF8
#define PCI_CONFIG_ADDR 0xCF8
#define PCI_CONFIG_DATA 0xCFC
#define PCI_CONFIG_DATA 0xCFC
@@ -3007,6 +3018,9 @@ int main(int argc, char *argv[])
	/* We always have a console device */
	/* We always have a console device */
	setup_console();
	setup_console();


	/* Initialize the (fake) PCI host bridge device. */
	init_pci_host_bridge();

	/* Now we load the kernel */
	/* Now we load the kernel */
	start = load_kernel(open_or_die(argv[optind+1], O_RDONLY));
	start = load_kernel(open_or_die(argv[optind+1], O_RDONLY));