const char *boot_device, DisplayState *ds,
const char *kernel_filename, const char *kernel_cmdline,
const char *initrd_filename,
- int pci_enabled, const char *cpu_model)
+ int pci_enabled, const char *cpu_model,
+ const char *direct_pci)
{
char buf[1024];
int ret, linux_boot, i;
int index;
BlockDriverState *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
BlockDriverState *fd[MAX_FD];
+ int rc;
if (ram_size >= 0xe0000000 ) {
above_4g_mem_size = ram_size - 0xe0000000;
}
}
+#ifdef CONFIG_PASSTHROUGH
+ /* Pass-through Initialization */
+ if ( pci_enabled && direct_pci )
+ {
+ rc = pt_init(pci_bus, direct_pci);
+ if ( rc < 0 )
+ {
+ fprintf(logfile, "Error: Initialization failed for pass-through devices\n");
+ exit(1);
+ }
+ }
+#endif
+
rtc_state = rtc_init(0x70, i8259[8]);
register_ioport_read(0x92, 1, 1, ioport92_read, NULL);
const char *kernel_filename,
const char *kernel_cmdline,
const char *initrd_filename,
- const char *cpu_model)
+ const char *cpu_model,
+ const char *direct_pci)
{
pc_init1(ram_size, vga_ram_size, boot_device, ds,
kernel_filename, kernel_cmdline,
- initrd_filename, 1, cpu_model);
+ initrd_filename, 1, cpu_model,
+ direct_pci);
}
static void pc_init_isa(ram_addr_t ram_size, int vga_ram_size,
const char *kernel_filename,
const char *kernel_cmdline,
const char *initrd_filename,
- const char *cpu_model)
+ const char *cpu_model,
+ const char *direct_pci)
{
pc_init1(ram_size, vga_ram_size, boot_device, ds,
kernel_filename, kernel_cmdline,
- initrd_filename, 0, cpu_model);
+ initrd_filename, 0, cpu_model,
+ direct_pci);
}
QEMUMachine pc_machine = {
QEMU_OPTION_smp,
QEMU_OPTION_vnc,
QEMU_OPTION_vncunused,
+ QEMU_OPTION_pci,
QEMU_OPTION_no_acpi,
QEMU_OPTION_curses,
QEMU_OPTION_no_reboot,
{ "smp", HAS_ARG, QEMU_OPTION_smp },
{ "vnc", HAS_ARG, QEMU_OPTION_vnc },
{ "vncunused", 0, QEMU_OPTION_vncunused },
+ { "pci", HAS_ARG, QEMU_OPTION_pci },
#ifdef CONFIG_CURSES
{ "curses", 0, QEMU_OPTION_curses },
#endif
const char *pid_file = NULL;
VLANState *vlan;
+ const char *direct_pci = NULL;
+
#if !defined(__sun__) && !defined(CONFIG_STUBDOM)
/* Maximise rlimits. Needed where default constraints are tight (*BSD). */
if (getrlimit(RLIMIT_STACK, &rl) != 0) {
}
ram_size = value;
break;
+ case QEMU_OPTION_pci:
+ direct_pci = optarg;
+ break;
}
case QEMU_OPTION_d:
{
}
machine->init(ram_size, vga_ram_size, boot_devices, ds,
- kernel_filename, kernel_cmdline, initrd_filename, cpu_model);
+ kernel_filename, kernel_cmdline, initrd_filename, cpu_model,
+ direct_pci);
/* init USB devices */
if (usb_enabled) {