Skip to content

Commit

Permalink
lguest: add a dummy PCI host bridge.
Browse files Browse the repository at this point in the history
Otherwise Linux fails to find the bus.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
  • Loading branch information
rustyrussell committed Feb 11, 2015
1 parent 3e0e5f2 commit 8e70946
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions tools/lguest/lguest.c
Original file line number Diff line number Diff line change
Expand Up @@ -1238,6 +1238,17 @@ static void handle_output(unsigned long addr)
* 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. */
#define PCI_CONFIG_ADDR 0xCF8
#define PCI_CONFIG_DATA 0xCFC
Expand Down Expand Up @@ -3007,6 +3018,9 @@ int main(int argc, char *argv[])
/* We always have a console device */
setup_console();

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

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

Expand Down

0 comments on commit 8e70946

Please sign in to comment.