pc,pci,virtio fixes and cleanups
This includes pc and pci cleanups and enhancements, and a virtio bugfix for level interrupts. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.14 (GNU/Linux) iQEcBAABAgAGBQJSIveoAAoJECgfDbjSjVRp2C8IAL7DE0oM0jfEB5DAd8jlULHx hA8RP21rFzyU8PwtHB+72+C1ImldBge4hvhI+qbsm6PoW3RCeV/lbESIRTiv8dCO pGUOFmv8MfJAH+WWFsle5mRisoTksYQWWBMHCOqvmaY4JL9pBQOhCLHVhV1XfjtL hO7uGrWmlijeILv5CxYyPMYuOEdVvRSZKzE+Fp2YKfNstiQrS5fJIlqmwCHrlneW l2atnt2d9ZV1K8QYiGg4GRVbSAMJvA1wum+0F4gnXIz9yAeOt+Ht1s8cNKQDMouJ r2OyVgPM9aS/XaO6ejct1Sjo7Vgh/Ublrpw3lFqV/qHix6rEHwy2I3JHFEJPjvk= =SytJ -----END PGP SIGNATURE----- Merge remote-tracking branch 'mst/tags/for_anthony' into staging pc,pci,virtio fixes and cleanups This includes pc and pci cleanups and enhancements, and a virtio bugfix for level interrupts. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> # gpg: Signature made Sun 01 Sep 2013 03:15:36 AM CDT using RSA key ID D28D5469 # gpg: Can't check signature: public key not found # By Michael S. Tsirkin (3) and others # Via Michael S. Tsirkin * mst/tags/for_anthony: virtio_pci: fix level interrupts with irqfd pc: reduce duplication, fix PIIX descriptions hw: Clean up bogus default boot order pci: add config space access traces pc: fix regression for 64 bit PCI memory pci: Introduce helper to retrieve a PCI device's DMA address space Message-id: 1378023590-11109-1-git-send-email-mst@redhat.com Signed-off-by: Anthony Liguori <anthony@codemonkey.ws>
This commit is contained in:
commit
9889e04ac1
@ -173,7 +173,6 @@ static QEMUMachine clipper_machine = {
|
||||
.init = clipper_init,
|
||||
.max_cpus = 4,
|
||||
.is_default = 1,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void clipper_machine_init(void)
|
||||
|
@ -62,7 +62,6 @@ static QEMUMachine collie_machine = {
|
||||
.name = "collie",
|
||||
.desc = "Collie PDA (SA-1110)",
|
||||
.init = collie_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void collie_machine_init(void)
|
||||
|
@ -150,14 +150,12 @@ static QEMUMachine exynos4_machines[EXYNOS4_NUM_OF_BOARDS] = {
|
||||
.desc = "Samsung NURI board (Exynos4210)",
|
||||
.init = nuri_init,
|
||||
.max_cpus = EXYNOS4210_NCPUS,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
},
|
||||
[EXYNOS4_BOARD_SMDKC210] = {
|
||||
.name = "smdkc210",
|
||||
.desc = "Samsung SMDKC210 board (Exynos4210)",
|
||||
.init = smdkc210_init,
|
||||
.max_cpus = EXYNOS4210_NCPUS,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -122,14 +122,12 @@ static QEMUMachine connex_machine = {
|
||||
.name = "connex",
|
||||
.desc = "Gumstix Connex (PXA255)",
|
||||
.init = connex_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static QEMUMachine verdex_machine = {
|
||||
.name = "verdex",
|
||||
.desc = "Gumstix Verdex (PXA270)",
|
||||
.init = verdex_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void gumstix_machine_init(void)
|
||||
|
@ -363,7 +363,6 @@ static QEMUMachine highbank_machine = {
|
||||
.init = highbank_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.max_cpus = 4,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static QEMUMachine midway_machine = {
|
||||
@ -372,7 +371,6 @@ static QEMUMachine midway_machine = {
|
||||
.init = midway_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.max_cpus = 4,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void calxeda_machines_init(void)
|
||||
|
@ -526,7 +526,6 @@ static QEMUMachine integratorcp_machine = {
|
||||
.desc = "ARM Integrator/CP (ARM926EJ-S)",
|
||||
.init = integratorcp_init,
|
||||
.is_default = 1,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void integratorcp_machine_init(void)
|
||||
|
@ -144,7 +144,6 @@ static QEMUMachine kzm_machine = {
|
||||
.name = "kzm",
|
||||
.desc = "ARM KZM Emulation Baseboard (ARM1136)",
|
||||
.init = kzm_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void kzm_machine_init(void)
|
||||
|
@ -179,7 +179,6 @@ static QEMUMachine mainstone2_machine = {
|
||||
.name = "mainstone",
|
||||
.desc = "Mainstone II (PXA27x)",
|
||||
.init = mainstone_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void mainstone_machine_init(void)
|
||||
|
@ -1729,7 +1729,6 @@ static QEMUMachine musicpal_machine = {
|
||||
.name = "musicpal",
|
||||
.desc = "Marvell 88w8618 / MusicPal (ARM926EJ-S)",
|
||||
.init = musicpal_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void musicpal_machine_init(void)
|
||||
|
@ -1340,7 +1340,7 @@ static void n8x0_init(QEMUMachineInitArgs *args,
|
||||
}
|
||||
|
||||
if (option_rom[0].name &&
|
||||
(args->boot_device[0] == 'n' || !args->kernel_filename)) {
|
||||
(args->boot_order[0] == 'n' || !args->kernel_filename)) {
|
||||
uint8_t nolo_tags[0x10000];
|
||||
/* No, wait, better start at the ROM. */
|
||||
s->mpu->cpu->env.regs[15] = OMAP2_Q2_BASE + 0x400000;
|
||||
@ -1396,14 +1396,14 @@ static QEMUMachine n800_machine = {
|
||||
.name = "n800",
|
||||
.desc = "Nokia N800 tablet aka. RX-34 (OMAP2420)",
|
||||
.init = n800_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
.default_boot_order = "",
|
||||
};
|
||||
|
||||
static QEMUMachine n810_machine = {
|
||||
.name = "n810",
|
||||
.desc = "Nokia N810 tablet aka. RX-44 (OMAP2420)",
|
||||
.init = n810_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
.default_boot_order = "",
|
||||
};
|
||||
|
||||
static void nseries_machine_init(void)
|
||||
|
@ -219,14 +219,12 @@ static QEMUMachine sx1_machine_v2 = {
|
||||
.name = "sx1",
|
||||
.desc = "Siemens SX1 (OMAP310) V2",
|
||||
.init = sx1_init_v2,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static QEMUMachine sx1_machine_v1 = {
|
||||
.name = "sx1-v1",
|
||||
.desc = "Siemens SX1 (OMAP310) V1",
|
||||
.init = sx1_init_v1,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void sx1_machine_init(void)
|
||||
|
@ -273,7 +273,6 @@ static QEMUMachine palmte_machine = {
|
||||
.name = "cheetah",
|
||||
.desc = "Palm Tungsten|E aka. Cheetah PDA (OMAP310)",
|
||||
.init = palmte_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void palmte_machine_init(void)
|
||||
|
@ -369,7 +369,6 @@ static QEMUMachine realview_eb_machine = {
|
||||
.desc = "ARM RealView Emulation Baseboard (ARM926EJ-S)",
|
||||
.init = realview_eb_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static QEMUMachine realview_eb_mpcore_machine = {
|
||||
@ -378,14 +377,12 @@ static QEMUMachine realview_eb_mpcore_machine = {
|
||||
.init = realview_eb_mpcore_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.max_cpus = 4,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static QEMUMachine realview_pb_a8_machine = {
|
||||
.name = "realview-pb-a8",
|
||||
.desc = "ARM RealView Platform Baseboard for Cortex-A8",
|
||||
.init = realview_pb_a8_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static QEMUMachine realview_pbx_a9_machine = {
|
||||
@ -394,7 +391,6 @@ static QEMUMachine realview_pbx_a9_machine = {
|
||||
.init = realview_pbx_a9_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.max_cpus = 4,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void realview_machine_init(void)
|
||||
|
@ -966,28 +966,24 @@ static QEMUMachine akitapda_machine = {
|
||||
.name = "akita",
|
||||
.desc = "Akita PDA (PXA270)",
|
||||
.init = akita_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static QEMUMachine spitzpda_machine = {
|
||||
.name = "spitz",
|
||||
.desc = "Spitz PDA (PXA270)",
|
||||
.init = spitz_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static QEMUMachine borzoipda_machine = {
|
||||
.name = "borzoi",
|
||||
.desc = "Borzoi PDA (PXA270)",
|
||||
.init = borzoi_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static QEMUMachine terrierpda_machine = {
|
||||
.name = "terrier",
|
||||
.desc = "Terrier PDA (PXA270)",
|
||||
.init = terrier_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void spitz_machine_init(void)
|
||||
|
@ -1348,14 +1348,12 @@ static QEMUMachine lm3s811evb_machine = {
|
||||
.name = "lm3s811evb",
|
||||
.desc = "Stellaris LM3S811EVB",
|
||||
.init = lm3s811evb_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static QEMUMachine lm3s6965evb_machine = {
|
||||
.name = "lm3s6965evb",
|
||||
.desc = "Stellaris LM3S6965EVB",
|
||||
.init = lm3s6965evb_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void stellaris_machine_init(void)
|
||||
|
@ -251,7 +251,6 @@ static QEMUMachine tosapda_machine = {
|
||||
.name = "tosa",
|
||||
.desc = "Tosa PDA (PXA255)",
|
||||
.init = tosa_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void tosapda_machine_init(void)
|
||||
|
@ -367,7 +367,6 @@ static QEMUMachine versatilepb_machine = {
|
||||
.desc = "ARM Versatile/PB (ARM926EJ-S)",
|
||||
.init = vpb_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static QEMUMachine versatileab_machine = {
|
||||
@ -375,7 +374,6 @@ static QEMUMachine versatileab_machine = {
|
||||
.desc = "ARM Versatile/AB (ARM926EJ-S)",
|
||||
.init = vab_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void versatile_machine_init(void)
|
||||
|
@ -647,7 +647,6 @@ static QEMUMachine vexpress_a9_machine = {
|
||||
.init = vexpress_a9_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.max_cpus = 4,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static QEMUMachine vexpress_a15_machine = {
|
||||
@ -656,7 +655,6 @@ static QEMUMachine vexpress_a15_machine = {
|
||||
.init = vexpress_a15_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.max_cpus = 4,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void vexpress_machine_init(void)
|
||||
|
@ -233,7 +233,6 @@ static QEMUMachine zynq_machine = {
|
||||
.block_default_type = IF_SCSI,
|
||||
.max_cpus = 1,
|
||||
.no_sdcard = 1,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void zynq_machine_init(void)
|
||||
|
@ -373,7 +373,6 @@ static QEMUMachine z2_machine = {
|
||||
.name = "z2",
|
||||
.desc = "Zipit Z2 (PXA27x)",
|
||||
.init = z2_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void z2_machine_init(void)
|
||||
|
@ -24,7 +24,6 @@ static QEMUMachine machine_none = {
|
||||
.desc = "empty machine",
|
||||
.init = machine_none_init,
|
||||
.max_cpus = 0,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void register_machines(void)
|
||||
|
@ -355,7 +355,6 @@ static QEMUMachine axisdev88_machine = {
|
||||
.desc = "AXIS devboard 88",
|
||||
.init = axisdev88_init,
|
||||
.is_default = 1,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void axisdev88_machine_init(void)
|
||||
|
@ -204,7 +204,7 @@ static void pc_init1(QEMUMachineInitArgs *args,
|
||||
}
|
||||
}
|
||||
|
||||
pc_cmos_init(below_4g_mem_size, above_4g_mem_size, args->boot_device,
|
||||
pc_cmos_init(below_4g_mem_size, above_4g_mem_size, args->boot_order,
|
||||
floppy, idebus[0], idebus[1], rtc_state);
|
||||
|
||||
if (pci_enabled && usb_enabled(false)) {
|
||||
@ -334,40 +334,43 @@ static void pc_xen_hvm_init(QEMUMachineInitArgs *args)
|
||||
}
|
||||
#endif
|
||||
|
||||
#define PC_I440FX_MACHINE_OPTIONS \
|
||||
PC_DEFAULT_MACHINE_OPTIONS, \
|
||||
.desc = "Standard PC (i440FX + PIIX, 1996)", \
|
||||
.hot_add_cpu = pc_hot_add_cpu
|
||||
|
||||
#define PC_I440FX_1_6_MACHINE_OPTIONS PC_I440FX_MACHINE_OPTIONS
|
||||
|
||||
static QEMUMachine pc_i440fx_machine_v1_6 = {
|
||||
PC_I440FX_1_6_MACHINE_OPTIONS,
|
||||
.name = "pc-i440fx-1.6",
|
||||
.alias = "pc",
|
||||
.desc = "Standard PC (i440FX + PIIX, 1996)",
|
||||
.init = pc_init_pci_1_6,
|
||||
.hot_add_cpu = pc_hot_add_cpu,
|
||||
.max_cpus = 255,
|
||||
.is_default = 1,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static QEMUMachine pc_i440fx_machine_v1_5 = {
|
||||
PC_I440FX_1_6_MACHINE_OPTIONS,
|
||||
.name = "pc-i440fx-1.5",
|
||||
.desc = "Standard PC (i440FX + PIIX, 1996)",
|
||||
.init = pc_init_pci_1_5,
|
||||
.hot_add_cpu = pc_hot_add_cpu,
|
||||
.max_cpus = 255,
|
||||
.compat_props = (GlobalProperty[]) {
|
||||
PC_COMPAT_1_5,
|
||||
{ /* end of list */ }
|
||||
},
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
#define PC_I440FX_1_4_MACHINE_OPTIONS \
|
||||
PC_I440FX_1_6_MACHINE_OPTIONS, \
|
||||
.hot_add_cpu = NULL
|
||||
|
||||
static QEMUMachine pc_i440fx_machine_v1_4 = {
|
||||
PC_I440FX_1_4_MACHINE_OPTIONS,
|
||||
.name = "pc-i440fx-1.4",
|
||||
.desc = "Standard PC (i440FX + PIIX, 1996)",
|
||||
.init = pc_init_pci_1_4,
|
||||
.max_cpus = 255,
|
||||
.compat_props = (GlobalProperty[]) {
|
||||
PC_COMPAT_1_4,
|
||||
{ /* end of list */ }
|
||||
},
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
#define PC_COMPAT_1_3 \
|
||||
@ -391,15 +394,13 @@ static QEMUMachine pc_i440fx_machine_v1_4 = {
|
||||
}
|
||||
|
||||
static QEMUMachine pc_machine_v1_3 = {
|
||||
PC_I440FX_1_4_MACHINE_OPTIONS,
|
||||
.name = "pc-1.3",
|
||||
.desc = "Standard PC",
|
||||
.init = pc_init_pci_1_3,
|
||||
.max_cpus = 255,
|
||||
.compat_props = (GlobalProperty[]) {
|
||||
PC_COMPAT_1_3,
|
||||
{ /* end of list */ }
|
||||
},
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
#define PC_COMPAT_1_2 \
|
||||
@ -430,16 +431,17 @@ static QEMUMachine pc_machine_v1_3 = {
|
||||
.value = "off",\
|
||||
}
|
||||
|
||||
#define PC_I440FX_1_2_MACHINE_OPTIONS \
|
||||
PC_I440FX_1_4_MACHINE_OPTIONS, \
|
||||
.init = pc_init_pci_1_2
|
||||
|
||||
static QEMUMachine pc_machine_v1_2 = {
|
||||
PC_I440FX_1_2_MACHINE_OPTIONS,
|
||||
.name = "pc-1.2",
|
||||
.desc = "Standard PC",
|
||||
.init = pc_init_pci_1_2,
|
||||
.max_cpus = 255,
|
||||
.compat_props = (GlobalProperty[]) {
|
||||
PC_COMPAT_1_2,
|
||||
{ /* end of list */ }
|
||||
},
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
#define PC_COMPAT_1_1 \
|
||||
@ -475,15 +477,12 @@ static QEMUMachine pc_machine_v1_2 = {
|
||||
}
|
||||
|
||||
static QEMUMachine pc_machine_v1_1 = {
|
||||
PC_I440FX_1_2_MACHINE_OPTIONS,
|
||||
.name = "pc-1.1",
|
||||
.desc = "Standard PC",
|
||||
.init = pc_init_pci_1_2,
|
||||
.max_cpus = 255,
|
||||
.compat_props = (GlobalProperty[]) {
|
||||
PC_COMPAT_1_1,
|
||||
{ /* end of list */ }
|
||||
},
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
#define PC_COMPAT_1_0 \
|
||||
@ -507,32 +506,26 @@ static QEMUMachine pc_machine_v1_1 = {
|
||||
}
|
||||
|
||||
static QEMUMachine pc_machine_v1_0 = {
|
||||
PC_I440FX_1_2_MACHINE_OPTIONS,
|
||||
.name = "pc-1.0",
|
||||
.desc = "Standard PC",
|
||||
.init = pc_init_pci_1_2,
|
||||
.max_cpus = 255,
|
||||
.compat_props = (GlobalProperty[]) {
|
||||
PC_COMPAT_1_0,
|
||||
{ /* end of list */ }
|
||||
},
|
||||
.hw_version = "1.0",
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
#define PC_COMPAT_0_15 \
|
||||
PC_COMPAT_1_0
|
||||
|
||||
static QEMUMachine pc_machine_v0_15 = {
|
||||
PC_I440FX_1_2_MACHINE_OPTIONS,
|
||||
.name = "pc-0.15",
|
||||
.desc = "Standard PC",
|
||||
.init = pc_init_pci_1_2,
|
||||
.max_cpus = 255,
|
||||
.compat_props = (GlobalProperty[]) {
|
||||
PC_COMPAT_0_15,
|
||||
{ /* end of list */ }
|
||||
},
|
||||
.hw_version = "0.15",
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
#define PC_COMPAT_0_14 \
|
||||
@ -556,10 +549,8 @@ static QEMUMachine pc_machine_v0_15 = {
|
||||
}
|
||||
|
||||
static QEMUMachine pc_machine_v0_14 = {
|
||||
PC_I440FX_1_2_MACHINE_OPTIONS,
|
||||
.name = "pc-0.14",
|
||||
.desc = "Standard PC",
|
||||
.init = pc_init_pci_1_2,
|
||||
.max_cpus = 255,
|
||||
.compat_props = (GlobalProperty[]) {
|
||||
PC_COMPAT_0_14,
|
||||
{
|
||||
@ -574,7 +565,6 @@ static QEMUMachine pc_machine_v0_14 = {
|
||||
{ /* end of list */ }
|
||||
},
|
||||
.hw_version = "0.14",
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
#define PC_COMPAT_0_13 \
|
||||
@ -589,11 +579,13 @@ static QEMUMachine pc_machine_v0_14 = {
|
||||
.value = stringify(1),\
|
||||
}
|
||||
|
||||
#define PC_I440FX_0_13_MACHINE_OPTIONS \
|
||||
PC_I440FX_1_2_MACHINE_OPTIONS, \
|
||||
.init = pc_init_pci_no_kvmclock
|
||||
|
||||
static QEMUMachine pc_machine_v0_13 = {
|
||||
PC_I440FX_0_13_MACHINE_OPTIONS,
|
||||
.name = "pc-0.13",
|
||||
.desc = "Standard PC",
|
||||
.init = pc_init_pci_no_kvmclock,
|
||||
.max_cpus = 255,
|
||||
.compat_props = (GlobalProperty[]) {
|
||||
PC_COMPAT_0_13,
|
||||
{
|
||||
@ -612,7 +604,6 @@ static QEMUMachine pc_machine_v0_13 = {
|
||||
{ /* end of list */ }
|
||||
},
|
||||
.hw_version = "0.13",
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
#define PC_COMPAT_0_12 \
|
||||
@ -640,10 +631,8 @@ static QEMUMachine pc_machine_v0_13 = {
|
||||
}
|
||||
|
||||
static QEMUMachine pc_machine_v0_12 = {
|
||||
PC_I440FX_0_13_MACHINE_OPTIONS,
|
||||
.name = "pc-0.12",
|
||||
.desc = "Standard PC",
|
||||
.init = pc_init_pci_no_kvmclock,
|
||||
.max_cpus = 255,
|
||||
.compat_props = (GlobalProperty[]) {
|
||||
PC_COMPAT_0_12,
|
||||
{
|
||||
@ -658,7 +647,6 @@ static QEMUMachine pc_machine_v0_12 = {
|
||||
{ /* end of list */ }
|
||||
},
|
||||
.hw_version = "0.12",
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
#define PC_COMPAT_0_11 \
|
||||
@ -674,10 +662,8 @@ static QEMUMachine pc_machine_v0_12 = {
|
||||
}
|
||||
|
||||
static QEMUMachine pc_machine_v0_11 = {
|
||||
PC_I440FX_0_13_MACHINE_OPTIONS,
|
||||
.name = "pc-0.11",
|
||||
.desc = "Standard PC, qemu 0.11",
|
||||
.init = pc_init_pci_no_kvmclock,
|
||||
.max_cpus = 255,
|
||||
.compat_props = (GlobalProperty[]) {
|
||||
PC_COMPAT_0_11,
|
||||
{
|
||||
@ -692,14 +678,11 @@ static QEMUMachine pc_machine_v0_11 = {
|
||||
{ /* end of list */ }
|
||||
},
|
||||
.hw_version = "0.11",
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static QEMUMachine pc_machine_v0_10 = {
|
||||
PC_I440FX_0_13_MACHINE_OPTIONS,
|
||||
.name = "pc-0.10",
|
||||
.desc = "Standard PC, qemu 0.10",
|
||||
.init = pc_init_pci_no_kvmclock,
|
||||
.max_cpus = 255,
|
||||
.compat_props = (GlobalProperty[]) {
|
||||
PC_COMPAT_0_11,
|
||||
{
|
||||
@ -726,10 +709,10 @@ static QEMUMachine pc_machine_v0_10 = {
|
||||
{ /* end of list */ }
|
||||
},
|
||||
.hw_version = "0.10",
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static QEMUMachine isapc_machine = {
|
||||
PC_COMMON_MACHINE_OPTIONS,
|
||||
.name = "isapc",
|
||||
.desc = "ISA-only PC",
|
||||
.init = pc_init_isa,
|
||||
@ -737,17 +720,16 @@ static QEMUMachine isapc_machine = {
|
||||
.compat_props = (GlobalProperty[]) {
|
||||
{ /* end of list */ }
|
||||
},
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_XEN
|
||||
static QEMUMachine xenfv_machine = {
|
||||
PC_COMMON_MACHINE_OPTIONS,
|
||||
.name = "xenfv",
|
||||
.desc = "Xen Fully-virtualized PC",
|
||||
.init = pc_xen_hvm_init,
|
||||
.max_cpus = HVM_MAX_VCPUS,
|
||||
.default_machine_opts = "accel=xen",
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -200,7 +200,7 @@ static void pc_q35_init(QEMUMachineInitArgs *args)
|
||||
0xb100),
|
||||
8, NULL, 0);
|
||||
|
||||
pc_cmos_init(below_4g_mem_size, above_4g_mem_size, args->boot_device,
|
||||
pc_cmos_init(below_4g_mem_size, above_4g_mem_size, args->boot_order,
|
||||
floppy, idebus[0], idebus[1], rtc_state);
|
||||
|
||||
/* the rest devices to which pci devfn is automatically assigned */
|
||||
@ -253,39 +253,42 @@ static void pc_q35_init_1_4(QEMUMachineInitArgs *args)
|
||||
pc_q35_init(args);
|
||||
}
|
||||
|
||||
#define PC_Q35_MACHINE_OPTIONS \
|
||||
PC_DEFAULT_MACHINE_OPTIONS, \
|
||||
.desc = "Standard PC (Q35 + ICH9, 2009)", \
|
||||
.hot_add_cpu = pc_hot_add_cpu
|
||||
|
||||
#define PC_Q35_1_6_MACHINE_OPTIONS PC_Q35_MACHINE_OPTIONS
|
||||
|
||||
static QEMUMachine pc_q35_machine_v1_6 = {
|
||||
PC_Q35_1_6_MACHINE_OPTIONS,
|
||||
.name = "pc-q35-1.6",
|
||||
.alias = "q35",
|
||||
.desc = "Standard PC (Q35 + ICH9, 2009)",
|
||||
.init = pc_q35_init_1_6,
|
||||
.hot_add_cpu = pc_hot_add_cpu,
|
||||
.max_cpus = 255,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static QEMUMachine pc_q35_machine_v1_5 = {
|
||||
PC_Q35_1_6_MACHINE_OPTIONS,
|
||||
.name = "pc-q35-1.5",
|
||||
.desc = "Standard PC (Q35 + ICH9, 2009)",
|
||||
.init = pc_q35_init_1_5,
|
||||
.hot_add_cpu = pc_hot_add_cpu,
|
||||
.max_cpus = 255,
|
||||
.compat_props = (GlobalProperty[]) {
|
||||
PC_COMPAT_1_5,
|
||||
{ /* end of list */ }
|
||||
},
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
#define PC_Q35_1_4_MACHINE_OPTIONS \
|
||||
PC_Q35_1_6_MACHINE_OPTIONS, \
|
||||
.hot_add_cpu = NULL
|
||||
|
||||
static QEMUMachine pc_q35_machine_v1_4 = {
|
||||
PC_Q35_1_4_MACHINE_OPTIONS,
|
||||
.name = "pc-q35-1.4",
|
||||
.desc = "Standard PC (Q35 + ICH9, 2009)",
|
||||
.init = pc_q35_init_1_4,
|
||||
.max_cpus = 255,
|
||||
.compat_props = (GlobalProperty[]) {
|
||||
PC_COMPAT_1_4,
|
||||
{ /* end of list */ }
|
||||
},
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void pc_q35_machine_init(void)
|
||||
|
@ -99,7 +99,6 @@ static QEMUMachine xenpv_machine = {
|
||||
.init = xen_init_pv,
|
||||
.max_cpus = 1,
|
||||
.default_machine_opts = "accel=xen",
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void xenpv_machine_init(void)
|
||||
|
@ -289,7 +289,6 @@ static QEMUMachine lm32_evr_machine = {
|
||||
.desc = "LatticeMico32 EVR32 eval system",
|
||||
.init = lm32_evr_init,
|
||||
.is_default = 1,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static QEMUMachine lm32_uclinux_machine = {
|
||||
@ -297,7 +296,6 @@ static QEMUMachine lm32_uclinux_machine = {
|
||||
.desc = "lm32 platform for uClinux and u-boot by Theobroma Systems",
|
||||
.init = lm32_uclinux_init,
|
||||
.is_default = 0,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void lm32_machine_init(void)
|
||||
|
@ -208,7 +208,6 @@ static QEMUMachine milkymist_machine = {
|
||||
.desc = "Milkymist One",
|
||||
.init = milkymist_init,
|
||||
.is_default = 0,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void milkymist_machine_init(void)
|
||||
|
@ -89,7 +89,6 @@ static QEMUMachine an5206_machine = {
|
||||
.name = "an5206",
|
||||
.desc = "Arnewsh 5206",
|
||||
.init = an5206_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void an5206_machine_init(void)
|
||||
|
@ -73,7 +73,6 @@ static QEMUMachine dummy_m68k_machine = {
|
||||
.name = "dummy",
|
||||
.desc = "Dummy board",
|
||||
.init = dummy_m68k_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void dummy_m68k_machine_init(void)
|
||||
|
@ -295,7 +295,6 @@ static QEMUMachine mcf5208evb_machine = {
|
||||
.desc = "MCF5206EVB",
|
||||
.init = mcf5208evb_init,
|
||||
.is_default = 1,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void mcf5208evb_machine_init(void)
|
||||
|
@ -186,7 +186,6 @@ static QEMUMachine petalogix_ml605_machine = {
|
||||
.desc = "PetaLogix linux refdesign for xilinx ml605 little endian",
|
||||
.init = petalogix_ml605_init,
|
||||
.is_default = 0,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void petalogix_ml605_machine_init(void)
|
||||
|
@ -116,7 +116,6 @@ static QEMUMachine petalogix_s3adsp1800_machine = {
|
||||
.desc = "PetaLogix linux refdesign for xilinx Spartan 3ADSP1800",
|
||||
.init = petalogix_s3adsp1800_init,
|
||||
.is_default = 1,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void petalogix_s3adsp1800_machine_init(void)
|
||||
|
@ -403,7 +403,6 @@ static QEMUMachine mips_fulong2e_machine = {
|
||||
.name = "fulong2e",
|
||||
.desc = "Fulong 2e mini pc",
|
||||
.init = mips_fulong2e_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void mips_fulong2e_machine_init(void)
|
||||
|
@ -327,7 +327,6 @@ static QEMUMachine mips_magnum_machine = {
|
||||
.desc = "MIPS Magnum",
|
||||
.init = mips_magnum_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static QEMUMachine mips_pica61_machine = {
|
||||
@ -335,7 +334,6 @@ static QEMUMachine mips_pica61_machine = {
|
||||
.desc = "Acer Pica 61",
|
||||
.init = mips_pica61_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void mips_jazz_machine_init(void)
|
||||
|
@ -1136,7 +1136,6 @@ static QEMUMachine mips_malta_machine = {
|
||||
.init = mips_malta_init,
|
||||
.max_cpus = 16,
|
||||
.is_default = 1,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void mips_malta_register_types(void)
|
||||
|
@ -232,7 +232,6 @@ static QEMUMachine mips_mipssim_machine = {
|
||||
.name = "mipssim",
|
||||
.desc = "MIPS MIPSsim platform",
|
||||
.init = mips_mipssim_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void mips_mipssim_machine_init(void)
|
||||
|
@ -306,7 +306,6 @@ static QEMUMachine mips_machine = {
|
||||
.name = "mips",
|
||||
.desc = "mips r4k platform",
|
||||
.init = mips_r4k_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void mips_machine_init(void)
|
||||
|
@ -138,7 +138,6 @@ static QEMUMachine openrisc_sim_machine = {
|
||||
.init = openrisc_sim_init,
|
||||
.max_cpus = 1,
|
||||
.is_default = 1,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void openrisc_sim_machine_init(void)
|
||||
|
@ -320,6 +320,7 @@ PCIBus *i440fx_init(PCII440FXState **pi440fx_state,
|
||||
PCII440FXState *f;
|
||||
unsigned i;
|
||||
I440FXState *i440fx;
|
||||
uint64_t pci_hole64_size;
|
||||
|
||||
dev = qdev_create(NULL, TYPE_I440FX_PCI_HOST_BRIDGE);
|
||||
s = PCI_HOST_BRIDGE(dev);
|
||||
@ -351,13 +352,15 @@ PCIBus *i440fx_init(PCII440FXState **pi440fx_state,
|
||||
pci_hole_start, pci_hole_size);
|
||||
memory_region_add_subregion(f->system_memory, pci_hole_start, &f->pci_hole);
|
||||
|
||||
pci_hole64_size = pci_host_get_hole64_size(i440fx->pci_hole64_size);
|
||||
|
||||
pc_init_pci64_hole(&i440fx->pci_info, 0x100000000ULL + above_4g_mem_size,
|
||||
i440fx->pci_hole64_size);
|
||||
pci_hole64_size);
|
||||
memory_region_init_alias(&f->pci_hole_64bit, OBJECT(d), "pci-hole64",
|
||||
f->pci_address_space,
|
||||
i440fx->pci_info.w64.begin,
|
||||
i440fx->pci_hole64_size);
|
||||
if (i440fx->pci_hole64_size) {
|
||||
pci_hole64_size);
|
||||
if (pci_hole64_size) {
|
||||
memory_region_add_subregion(f->system_memory,
|
||||
i440fx->pci_info.w64.begin,
|
||||
&f->pci_hole_64bit);
|
||||
|
@ -320,6 +320,7 @@ static int mch_init(PCIDevice *d)
|
||||
{
|
||||
int i;
|
||||
MCHPCIState *mch = MCH_PCI_DEVICE(d);
|
||||
uint64_t pci_hole64_size;
|
||||
|
||||
/* setup pci memory regions */
|
||||
memory_region_init_alias(&mch->pci_hole, OBJECT(mch), "pci-hole",
|
||||
@ -329,13 +330,14 @@ static int mch_init(PCIDevice *d)
|
||||
memory_region_add_subregion(mch->system_memory, mch->below_4g_mem_size,
|
||||
&mch->pci_hole);
|
||||
|
||||
pci_hole64_size = pci_host_get_hole64_size(mch->pci_hole64_size);
|
||||
pc_init_pci64_hole(&mch->pci_info, 0x100000000ULL + mch->above_4g_mem_size,
|
||||
mch->pci_hole64_size);
|
||||
pci_hole64_size);
|
||||
memory_region_init_alias(&mch->pci_hole_64bit, OBJECT(mch), "pci-hole64",
|
||||
mch->pci_address_space,
|
||||
mch->pci_info.w64.begin,
|
||||
mch->pci_hole64_size);
|
||||
if (mch->pci_hole64_size) {
|
||||
pci_hole64_size);
|
||||
if (pci_hole64_size) {
|
||||
memory_region_add_subregion(mch->system_memory,
|
||||
mch->pci_info.w64.begin,
|
||||
&mch->pci_hole_64bit);
|
||||
|
24
hw/pci/pci.c
24
hw/pci/pci.c
@ -812,12 +812,7 @@ static PCIDevice *do_pci_register_device(PCIDevice *pci_dev, PCIBus *bus,
|
||||
}
|
||||
|
||||
pci_dev->bus = bus;
|
||||
if (bus->iommu_fn) {
|
||||
dma_as = bus->iommu_fn(bus, bus->iommu_opaque, devfn);
|
||||
} else {
|
||||
/* FIXME: inherit memory region from bus creator */
|
||||
dma_as = &address_space_memory;
|
||||
}
|
||||
dma_as = pci_device_iommu_address_space(pci_dev);
|
||||
|
||||
memory_region_init_alias(&pci_dev->bus_master_enable_region,
|
||||
OBJECT(pci_dev), "bus master",
|
||||
@ -2239,6 +2234,23 @@ static void pci_device_class_init(ObjectClass *klass, void *data)
|
||||
k->props = pci_props;
|
||||
}
|
||||
|
||||
AddressSpace *pci_device_iommu_address_space(PCIDevice *dev)
|
||||
{
|
||||
PCIBus *bus = PCI_BUS(dev->bus);
|
||||
|
||||
if (bus->iommu_fn) {
|
||||
return bus->iommu_fn(bus, bus->iommu_opaque, dev->devfn);
|
||||
}
|
||||
|
||||
if (bus->parent_dev) {
|
||||
/** We are ignoring the bus master DMA bit of the bridge
|
||||
* as it would complicate things such as VFIO for no good reason */
|
||||
return pci_device_iommu_address_space(bus->parent_dev);
|
||||
}
|
||||
|
||||
return &address_space_memory;
|
||||
}
|
||||
|
||||
void pci_setup_iommu(PCIBus *bus, PCIIOMMUFunc fn, void *opaque)
|
||||
{
|
||||
bus->iommu_fn = fn;
|
||||
|
@ -20,6 +20,7 @@
|
||||
|
||||
#include "hw/pci/pci.h"
|
||||
#include "hw/pci/pci_host.h"
|
||||
#include "trace.h"
|
||||
|
||||
/* debug PCI */
|
||||
//#define DEBUG_PCI
|
||||
@ -51,14 +52,22 @@ void pci_host_config_write_common(PCIDevice *pci_dev, uint32_t addr,
|
||||
uint32_t limit, uint32_t val, uint32_t len)
|
||||
{
|
||||
assert(len <= 4);
|
||||
trace_pci_cfg_write(pci_dev->name, PCI_SLOT(pci_dev->devfn),
|
||||
PCI_FUNC(pci_dev->devfn), addr, val);
|
||||
pci_dev->config_write(pci_dev, addr, val, MIN(len, limit - addr));
|
||||
}
|
||||
|
||||
uint32_t pci_host_config_read_common(PCIDevice *pci_dev, uint32_t addr,
|
||||
uint32_t limit, uint32_t len)
|
||||
{
|
||||
uint32_t ret;
|
||||
|
||||
assert(len <= 4);
|
||||
return pci_dev->config_read(pci_dev, addr, MIN(len, limit - addr));
|
||||
ret = pci_dev->config_read(pci_dev, addr, MIN(len, limit - addr));
|
||||
trace_pci_cfg_read(pci_dev->name, PCI_SLOT(pci_dev->devfn),
|
||||
PCI_FUNC(pci_dev->devfn), addr, ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void pci_data_write(PCIBus *s, uint32_t addr, uint32_t val, int len)
|
||||
|
@ -51,7 +51,6 @@ static QEMUMachine e500plat_machine = {
|
||||
.desc = "generic paravirt e500 platform",
|
||||
.init = e500plat_init,
|
||||
.max_cpus = 32,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void e500plat_machine_init(void)
|
||||
|
@ -147,7 +147,7 @@ static void ppc_core99_init(QEMUMachineInitArgs *args)
|
||||
const char *kernel_filename = args->kernel_filename;
|
||||
const char *kernel_cmdline = args->kernel_cmdline;
|
||||
const char *initrd_filename = args->initrd_filename;
|
||||
const char *boot_device = args->boot_device;
|
||||
const char *boot_device = args->boot_order;
|
||||
PowerPCCPU *cpu = NULL;
|
||||
CPUPPCState *env = NULL;
|
||||
char *filename;
|
||||
@ -477,7 +477,7 @@ static QEMUMachine core99_machine = {
|
||||
.desc = "Mac99 based PowerMAC",
|
||||
.init = ppc_core99_init,
|
||||
.max_cpus = MAX_CPUS,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
.default_boot_order = "cd",
|
||||
};
|
||||
|
||||
static void core99_machine_init(void)
|
||||
|
@ -78,7 +78,7 @@ static void ppc_heathrow_init(QEMUMachineInitArgs *args)
|
||||
const char *kernel_filename = args->kernel_filename;
|
||||
const char *kernel_cmdline = args->kernel_cmdline;
|
||||
const char *initrd_filename = args->initrd_filename;
|
||||
const char *boot_device = args->boot_device;
|
||||
const char *boot_device = args->boot_order;
|
||||
MemoryRegion *sysmem = get_system_memory();
|
||||
PowerPCCPU *cpu = NULL;
|
||||
CPUPPCState *env = NULL;
|
||||
@ -350,7 +350,7 @@ static QEMUMachine heathrow_machine = {
|
||||
#ifndef TARGET_PPC64
|
||||
.is_default = 1,
|
||||
#endif
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
.default_boot_order = "cd", /* TOFIX "cad" when Mac floppy is implemented */
|
||||
};
|
||||
|
||||
static void heathrow_machine_init(void)
|
||||
|
@ -44,7 +44,6 @@ static QEMUMachine ppce500_machine = {
|
||||
.desc = "mpc8544ds",
|
||||
.init = mpc8544ds_init,
|
||||
.max_cpus = 15,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void ppce500_machine_init(void)
|
||||
|
@ -367,7 +367,6 @@ static QEMUMachine ref405ep_machine = {
|
||||
.name = "ref405ep",
|
||||
.desc = "ref405ep",
|
||||
.init = ref405ep_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
@ -655,7 +654,6 @@ static QEMUMachine taihu_machine = {
|
||||
.name = "taihu",
|
||||
.desc = "taihu",
|
||||
.init = taihu_405ep_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void ppc405_machine_init(void)
|
||||
|
@ -296,7 +296,6 @@ static QEMUMachine bamboo_machine = {
|
||||
.name = "bamboo",
|
||||
.desc = "bamboo",
|
||||
.init = bamboo_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void bamboo_machine_init(void)
|
||||
|
@ -452,7 +452,7 @@ static void ppc_prep_init(QEMUMachineInitArgs *args)
|
||||
const char *kernel_filename = args->kernel_filename;
|
||||
const char *kernel_cmdline = args->kernel_cmdline;
|
||||
const char *initrd_filename = args->initrd_filename;
|
||||
const char *boot_device = args->boot_device;
|
||||
const char *boot_device = args->boot_order;
|
||||
MemoryRegion *sysmem = get_system_memory();
|
||||
PowerPCCPU *cpu = NULL;
|
||||
CPUPPCState *env = NULL;
|
||||
@ -691,7 +691,7 @@ static QEMUMachine prep_machine = {
|
||||
.desc = "PowerPC PREP platform",
|
||||
.init = ppc_prep_init,
|
||||
.max_cpus = MAX_CPUS,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
.default_boot_order = "cad",
|
||||
};
|
||||
|
||||
static void prep_machine_init(void)
|
||||
|
@ -1091,7 +1091,7 @@ static void ppc_spapr_init(QEMUMachineInitArgs *args)
|
||||
const char *kernel_filename = args->kernel_filename;
|
||||
const char *kernel_cmdline = args->kernel_cmdline;
|
||||
const char *initrd_filename = args->initrd_filename;
|
||||
const char *boot_device = args->boot_device;
|
||||
const char *boot_device = args->boot_order;
|
||||
PowerPCCPU *cpu;
|
||||
CPUPPCState *env;
|
||||
PCIHostState *phb;
|
||||
@ -1346,7 +1346,7 @@ static QEMUMachine spapr_machine = {
|
||||
.block_default_type = IF_SCSI,
|
||||
.max_cpus = MAX_CPUS,
|
||||
.no_parallel = 1,
|
||||
.boot_order = NULL,
|
||||
.default_boot_order = NULL,
|
||||
};
|
||||
|
||||
static void spapr_machine_init(void)
|
||||
|
@ -254,7 +254,6 @@ static QEMUMachine virtex_machine = {
|
||||
.name = "virtex-ml507",
|
||||
.desc = "Xilinx Virtex ML507 reference design",
|
||||
.init = virtex_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void virtex_machine_init(void)
|
||||
|
@ -141,7 +141,6 @@ static QEMUMachine ccw_machine = {
|
||||
.no_sdcard = 1,
|
||||
.use_sclp = 1,
|
||||
.max_cpus = 255,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void ccw_machine_init(void)
|
||||
|
@ -293,7 +293,6 @@ static QEMUMachine s390_machine = {
|
||||
.use_virtcon = 1,
|
||||
.max_cpus = 255,
|
||||
.is_default = 1,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void s390_machine_init(void)
|
||||
|
@ -356,7 +356,6 @@ static QEMUMachine r2d_machine = {
|
||||
.name = "r2d",
|
||||
.desc = "r2d-plus board",
|
||||
.init = r2d_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void r2d_machine_init(void)
|
||||
|
@ -96,7 +96,6 @@ static QEMUMachine shix_machine = {
|
||||
.desc = "shix card",
|
||||
.init = shix_init,
|
||||
.is_default = 1,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void shix_machine_init(void)
|
||||
|
@ -216,7 +216,6 @@ static QEMUMachine leon3_generic_machine = {
|
||||
.name = "leon3_generic",
|
||||
.desc = "Leon-3 generic",
|
||||
.init = leon3_generic_hw_init,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void leon3_machine_init(void)
|
||||
|
@ -996,7 +996,7 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef,
|
||||
args->ram_size);
|
||||
|
||||
nvram_init(nvram, (uint8_t *)&nd_table[0].macaddr, args->kernel_cmdline,
|
||||
args->boot_device, args->ram_size, kernel_size, graphic_width,
|
||||
args->boot_order, args->ram_size, kernel_size, graphic_width,
|
||||
graphic_height, graphic_depth, hwdef->nvram_machine_id,
|
||||
"Sun4m");
|
||||
|
||||
@ -1027,7 +1027,7 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef,
|
||||
}
|
||||
fw_cfg_add_i32(fw_cfg, FW_CFG_INITRD_ADDR, INITRD_LOAD_ADDR);
|
||||
fw_cfg_add_i32(fw_cfg, FW_CFG_INITRD_SIZE, 0); // not used
|
||||
fw_cfg_add_i16(fw_cfg, FW_CFG_BOOT_DEVICE, args->boot_device[0]);
|
||||
fw_cfg_add_i16(fw_cfg, FW_CFG_BOOT_DEVICE, args->boot_order[0]);
|
||||
qemu_register_boot_set(fw_cfg_boot_set, fw_cfg);
|
||||
}
|
||||
|
||||
@ -1348,7 +1348,7 @@ static QEMUMachine ss5_machine = {
|
||||
.init = ss5_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.is_default = 1,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
.default_boot_order = "c",
|
||||
};
|
||||
|
||||
static QEMUMachine ss10_machine = {
|
||||
@ -1357,7 +1357,7 @@ static QEMUMachine ss10_machine = {
|
||||
.init = ss10_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.max_cpus = 4,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
.default_boot_order = "c",
|
||||
};
|
||||
|
||||
static QEMUMachine ss600mp_machine = {
|
||||
@ -1366,7 +1366,7 @@ static QEMUMachine ss600mp_machine = {
|
||||
.init = ss600mp_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.max_cpus = 4,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
.default_boot_order = "c",
|
||||
};
|
||||
|
||||
static QEMUMachine ss20_machine = {
|
||||
@ -1375,7 +1375,7 @@ static QEMUMachine ss20_machine = {
|
||||
.init = ss20_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
.max_cpus = 4,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
.default_boot_order = "c",
|
||||
};
|
||||
|
||||
static QEMUMachine voyager_machine = {
|
||||
@ -1383,7 +1383,7 @@ static QEMUMachine voyager_machine = {
|
||||
.desc = "Sun4m platform, SPARCstation Voyager",
|
||||
.init = vger_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
.default_boot_order = "c",
|
||||
};
|
||||
|
||||
static QEMUMachine ss_lx_machine = {
|
||||
@ -1391,7 +1391,7 @@ static QEMUMachine ss_lx_machine = {
|
||||
.desc = "Sun4m platform, SPARCstation LX",
|
||||
.init = ss_lx_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
.default_boot_order = "c",
|
||||
};
|
||||
|
||||
static QEMUMachine ss4_machine = {
|
||||
@ -1399,7 +1399,7 @@ static QEMUMachine ss4_machine = {
|
||||
.desc = "Sun4m platform, SPARCstation 4",
|
||||
.init = ss4_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
.default_boot_order = "c",
|
||||
};
|
||||
|
||||
static QEMUMachine scls_machine = {
|
||||
@ -1407,7 +1407,7 @@ static QEMUMachine scls_machine = {
|
||||
.desc = "Sun4m platform, SPARCClassic",
|
||||
.init = scls_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
.default_boot_order = "c",
|
||||
};
|
||||
|
||||
static QEMUMachine sbook_machine = {
|
||||
@ -1415,7 +1415,7 @@ static QEMUMachine sbook_machine = {
|
||||
.desc = "Sun4m platform, SPARCbook",
|
||||
.init = sbook_init,
|
||||
.block_default_type = IF_SCSI,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
.default_boot_order = "c",
|
||||
};
|
||||
|
||||
static void sun4m_register_types(void)
|
||||
|
@ -881,7 +881,7 @@ static void sun4uv_init(MemoryRegion *address_space_mem,
|
||||
&kernel_addr, &kernel_entry);
|
||||
|
||||
sun4u_NVRAM_set_params(nvram, NVRAM_SIZE, "Sun4u", args->ram_size,
|
||||
args->boot_device,
|
||||
args->boot_order,
|
||||
kernel_addr, kernel_size,
|
||||
args->kernel_cmdline,
|
||||
initrd_addr, initrd_size,
|
||||
@ -906,7 +906,7 @@ static void sun4uv_init(MemoryRegion *address_space_mem,
|
||||
}
|
||||
fw_cfg_add_i64(fw_cfg, FW_CFG_INITRD_ADDR, initrd_addr);
|
||||
fw_cfg_add_i64(fw_cfg, FW_CFG_INITRD_SIZE, initrd_size);
|
||||
fw_cfg_add_i16(fw_cfg, FW_CFG_BOOT_DEVICE, args->boot_device[0]);
|
||||
fw_cfg_add_i16(fw_cfg, FW_CFG_BOOT_DEVICE, args->boot_order[0]);
|
||||
|
||||
fw_cfg_add_i16(fw_cfg, FW_CFG_SPARC64_WIDTH, graphic_width);
|
||||
fw_cfg_add_i16(fw_cfg, FW_CFG_SPARC64_HEIGHT, graphic_height);
|
||||
@ -969,7 +969,7 @@ static QEMUMachine sun4u_machine = {
|
||||
.init = sun4u_init,
|
||||
.max_cpus = 1, // XXX for now
|
||||
.is_default = 1,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
.default_boot_order = "c",
|
||||
};
|
||||
|
||||
static QEMUMachine sun4v_machine = {
|
||||
@ -977,7 +977,7 @@ static QEMUMachine sun4v_machine = {
|
||||
.desc = "Sun4v platform",
|
||||
.init = sun4v_init,
|
||||
.max_cpus = 1, // XXX for now
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
.default_boot_order = "c",
|
||||
};
|
||||
|
||||
static QEMUMachine niagara_machine = {
|
||||
@ -985,7 +985,7 @@ static QEMUMachine niagara_machine = {
|
||||
.desc = "Sun4v platform, Niagara",
|
||||
.init = niagara_init,
|
||||
.max_cpus = 1, // XXX for now
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
.default_boot_order = "c",
|
||||
};
|
||||
|
||||
static void sun4u_register_types(void)
|
||||
|
@ -128,7 +128,6 @@ static QEMUMachine puv3_machine = {
|
||||
.desc = "PKUnity Version-3 based on UniCore32",
|
||||
.init = puv3_init,
|
||||
.is_default = 1,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void puv3_machine_init(void)
|
||||
|
@ -800,8 +800,7 @@ static int virtio_pci_set_guest_notifiers(DeviceState *d, int nvqs, bool assign)
|
||||
break;
|
||||
}
|
||||
|
||||
r = virtio_pci_set_guest_notifier(d, n, assign,
|
||||
kvm_msi_via_irqfd_enabled());
|
||||
r = virtio_pci_set_guest_notifier(d, n, assign, with_irqfd);
|
||||
if (r < 0) {
|
||||
goto assign_error;
|
||||
}
|
||||
|
@ -297,7 +297,6 @@ static QEMUMachine xtensa_lx60_machine = {
|
||||
.desc = "lx60 EVB (" XTENSA_DEFAULT_CPU_MODEL ")",
|
||||
.init = xtensa_lx60_init,
|
||||
.max_cpus = 4,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static QEMUMachine xtensa_lx200_machine = {
|
||||
@ -305,7 +304,6 @@ static QEMUMachine xtensa_lx200_machine = {
|
||||
.desc = "lx200 EVB (" XTENSA_DEFAULT_CPU_MODEL ")",
|
||||
.init = xtensa_lx200_init,
|
||||
.max_cpus = 4,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void xtensa_lx_machines_init(void)
|
||||
|
@ -108,7 +108,6 @@ static QEMUMachine xtensa_sim_machine = {
|
||||
.is_default = true,
|
||||
.init = xtensa_sim_init,
|
||||
.max_cpus = 4,
|
||||
DEFAULT_MACHINE_OPTIONS,
|
||||
};
|
||||
|
||||
static void xtensa_sim_machine_init(void)
|
||||
|
@ -6,12 +6,9 @@
|
||||
#include "sysemu/blockdev.h"
|
||||
#include "hw/qdev.h"
|
||||
|
||||
#define DEFAULT_MACHINE_OPTIONS \
|
||||
.boot_order = "cad"
|
||||
|
||||
typedef struct QEMUMachineInitArgs {
|
||||
ram_addr_t ram_size;
|
||||
const char *boot_device;
|
||||
const char *boot_order;
|
||||
const char *kernel_filename;
|
||||
const char *kernel_cmdline;
|
||||
const char *initrd_filename;
|
||||
@ -42,7 +39,7 @@ typedef struct QEMUMachine {
|
||||
no_sdcard:1;
|
||||
int is_default;
|
||||
const char *default_machine_opts;
|
||||
const char *boot_order;
|
||||
const char *default_boot_order;
|
||||
GlobalProperty *compat_props;
|
||||
struct QEMUMachine *next;
|
||||
const char *hw_version;
|
||||
|
@ -106,7 +106,16 @@ PcGuestInfo *pc_guest_info_init(ram_addr_t below_4g_mem_size,
|
||||
#define PCI_HOST_PROP_PCI_HOLE64_START "pci-hole64-start"
|
||||
#define PCI_HOST_PROP_PCI_HOLE64_END "pci-hole64-end"
|
||||
#define PCI_HOST_PROP_PCI_HOLE64_SIZE "pci-hole64-size"
|
||||
#define DEFAULT_PCI_HOLE64_SIZE (1ULL << 31)
|
||||
#define DEFAULT_PCI_HOLE64_SIZE (~0x0ULL)
|
||||
|
||||
static inline uint64_t pci_host_get_hole64_size(uint64_t pci_hole64_size)
|
||||
{
|
||||
if (pci_hole64_size == DEFAULT_PCI_HOLE64_SIZE) {
|
||||
return 1ULL << 62;
|
||||
} else {
|
||||
return pci_hole64_size;
|
||||
}
|
||||
}
|
||||
|
||||
void pc_init_pci64_hole(PcPciInfo *pci_info, uint64_t pci_hole64_start,
|
||||
uint64_t pci_hole64_size);
|
||||
@ -316,4 +325,12 @@ int e820_add_entry(uint64_t, uint64_t, uint32_t);
|
||||
.value = stringify(0),\
|
||||
}
|
||||
|
||||
#define PC_COMMON_MACHINE_OPTIONS \
|
||||
.default_boot_order = "cad"
|
||||
|
||||
#define PC_DEFAULT_MACHINE_OPTIONS \
|
||||
PC_COMMON_MACHINE_OPTIONS, \
|
||||
.hot_add_cpu = pc_hot_add_cpu, \
|
||||
.max_cpus = 255
|
||||
|
||||
#endif
|
||||
|
@ -405,6 +405,7 @@ void pci_device_deassert_intx(PCIDevice *dev);
|
||||
|
||||
typedef AddressSpace *(*PCIIOMMUFunc)(PCIBus *, void *, int);
|
||||
|
||||
AddressSpace *pci_device_iommu_address_space(PCIDevice *dev);
|
||||
void pci_setup_iommu(PCIBus *bus, PCIIOMMUFunc fn, void *opaque);
|
||||
|
||||
static inline void
|
||||
|
@ -1181,3 +1181,7 @@ object_class_dynamic_cast_assert(const char *type, const char *target, const cha
|
||||
# hw/xen/xen_pvdevice.c
|
||||
xen_pv_mmio_read(uint64_t addr) "WARNING: read from Xen PV Device MMIO space (address %"PRIx64")"
|
||||
xen_pv_mmio_write(uint64_t addr) "WARNING: write to Xen PV Device MMIO space (address %"PRIx64")"
|
||||
|
||||
# hw/pci/pci_host.c
|
||||
pci_cfg_read(const char *dev, unsigned devid, unsigned fnid, unsigned offs, unsigned val) "%s %02u:%u @0x%x -> 0x%x"
|
||||
pci_cfg_write(const char *dev, unsigned devid, unsigned fnid, unsigned offs, unsigned val) "%s %02u:%u @0x%x <- 0x%x"
|
||||
|
4
vl.c
4
vl.c
@ -4123,7 +4123,7 @@ int main(int argc, char **argv, char **envp)
|
||||
kernel_cmdline = qemu_opt_get(machine_opts, "append");
|
||||
|
||||
if (!boot_order) {
|
||||
boot_order = machine->boot_order;
|
||||
boot_order = machine->default_boot_order;
|
||||
}
|
||||
opts = qemu_opts_find(qemu_find_opts("boot-opts"), NULL);
|
||||
if (opts) {
|
||||
@ -4311,7 +4311,7 @@ int main(int argc, char **argv, char **envp)
|
||||
qdev_machine_init();
|
||||
|
||||
QEMUMachineInitArgs args = { .ram_size = ram_size,
|
||||
.boot_device = boot_order,
|
||||
.boot_order = boot_order,
|
||||
.kernel_filename = kernel_filename,
|
||||
.kernel_cmdline = kernel_cmdline,
|
||||
.initrd_filename = initrd_filename,
|
||||
|
Loading…
Reference in New Issue
Block a user