Revision e8b2a1c6
b/hw/pc.c | ||
---|---|---|
1081 | 1081 |
return env; |
1082 | 1082 |
} |
1083 | 1083 |
|
1084 |
enum { |
|
1085 |
COMPAT_DEFAULT = 0, |
|
1086 |
COMPAT_0_10, /* compatible with qemu 0.10.x */ |
|
1087 |
}; |
|
1088 |
|
|
1084 | 1089 |
/* PC hardware initialisation */ |
1085 | 1090 |
static void pc_init1(ram_addr_t ram_size, |
1086 | 1091 |
const char *boot_device, |
1087 |
const char *kernel_filename, const char *kernel_cmdline, |
|
1092 |
const char *kernel_filename, |
|
1093 |
const char *kernel_cmdline, |
|
1088 | 1094 |
const char *initrd_filename, |
1089 |
int pci_enabled, const char *cpu_model) |
|
1095 |
const char *cpu_model, |
|
1096 |
int pci_enabled, |
|
1097 |
int compat_level) |
|
1090 | 1098 |
{ |
1091 | 1099 |
char *filename; |
1092 | 1100 |
int ret, linux_boot, i; |
... | ... | |
1104 | 1112 |
BlockDriverState *fd[MAX_FD]; |
1105 | 1113 |
int using_vga = cirrus_vga_enabled || std_vga_enabled || vmsvga_enabled; |
1106 | 1114 |
void *fw_cfg; |
1115 |
const char *virtio_blk_name, *virtio_console_name; |
|
1107 | 1116 |
|
1108 | 1117 |
if (ram_size >= 0xe0000000 ) { |
1109 | 1118 |
above_4g_mem_size = ram_size - 0xe0000000; |
... | ... | |
1394 | 1403 |
} |
1395 | 1404 |
} |
1396 | 1405 |
|
1406 |
switch (compat_level) { |
|
1407 |
case COMPAT_DEFAULT: |
|
1408 |
default: |
|
1409 |
virtio_blk_name = "virtio-blk-pci"; |
|
1410 |
virtio_console_name = "virtio-console-pci"; |
|
1411 |
break; |
|
1412 |
|
|
1413 |
case COMPAT_0_10: |
|
1414 |
virtio_blk_name = "virtio-blk-pci-0-10"; |
|
1415 |
virtio_console_name = "virtio-console-pci-0-10"; |
|
1416 |
break; |
|
1417 |
} |
|
1418 |
|
|
1397 | 1419 |
/* Add virtio block devices */ |
1398 | 1420 |
if (pci_enabled) { |
1399 | 1421 |
int index; |
1400 | 1422 |
int unit_id = 0; |
1401 | 1423 |
|
1402 | 1424 |
while ((index = drive_get_index(IF_VIRTIO, 0, unit_id)) != -1) { |
1403 |
pci_dev = pci_create("virtio-blk-pci",
|
|
1425 |
pci_dev = pci_create(virtio_blk_name,
|
|
1404 | 1426 |
drives_table[index].devaddr); |
1405 | 1427 |
qdev_init(&pci_dev->qdev); |
1406 | 1428 |
unit_id++; |
... | ... | |
1417 | 1439 |
if (pci_enabled) { |
1418 | 1440 |
for(i = 0; i < MAX_VIRTIO_CONSOLES; i++) { |
1419 | 1441 |
if (virtcon_hds[i]) { |
1420 |
pci_create_simple(pci_bus, -1, "virtio-console-pci");
|
|
1442 |
pci_create_simple(pci_bus, -1, virtio_console_name);
|
|
1421 | 1443 |
} |
1422 | 1444 |
} |
1423 | 1445 |
} |
... | ... | |
1432 | 1454 |
{ |
1433 | 1455 |
pc_init1(ram_size, boot_device, |
1434 | 1456 |
kernel_filename, kernel_cmdline, |
1435 |
initrd_filename, 1, cpu_model); |
|
1457 |
initrd_filename, cpu_model, |
|
1458 |
1, COMPAT_DEFAULT); |
|
1436 | 1459 |
} |
1437 | 1460 |
|
1438 | 1461 |
static void pc_init_isa(ram_addr_t ram_size, |
... | ... | |
1444 | 1467 |
{ |
1445 | 1468 |
pc_init1(ram_size, boot_device, |
1446 | 1469 |
kernel_filename, kernel_cmdline, |
1447 |
initrd_filename, 0, cpu_model); |
|
1470 |
initrd_filename, cpu_model, |
|
1471 |
0, COMPAT_DEFAULT); |
|
1472 |
} |
|
1473 |
|
|
1474 |
static void pc_init_pci_0_10(ram_addr_t ram_size, |
|
1475 |
const char *boot_device, |
|
1476 |
const char *kernel_filename, |
|
1477 |
const char *kernel_cmdline, |
|
1478 |
const char *initrd_filename, |
|
1479 |
const char *cpu_model) |
|
1480 |
{ |
|
1481 |
pc_init1(ram_size, boot_device, |
|
1482 |
kernel_filename, kernel_cmdline, |
|
1483 |
initrd_filename, cpu_model, |
|
1484 |
1, COMPAT_0_10); |
|
1448 | 1485 |
} |
1449 | 1486 |
|
1450 | 1487 |
/* set CMOS shutdown status register (index 0xF) as S3_resume(0xFE) |
... | ... | |
1470 | 1507 |
.max_cpus = 1, |
1471 | 1508 |
}; |
1472 | 1509 |
|
1510 |
static QEMUMachine pc_0_10_machine = { |
|
1511 |
.name = "pc-0-10", |
|
1512 |
.desc = "Standard PC compatible with qemu 0.10.x", |
|
1513 |
.init = pc_init_pci_0_10, |
|
1514 |
.max_cpus = 255, |
|
1515 |
}; |
|
1516 |
|
|
1473 | 1517 |
static void pc_machine_init(void) |
1474 | 1518 |
{ |
1475 | 1519 |
qemu_register_machine(&pc_machine); |
1476 | 1520 |
qemu_register_machine(&isapc_machine); |
1521 |
|
|
1522 |
/* For compatibility with 0.10.x */ |
|
1523 |
qemu_register_machine(&pc_0_10_machine); |
|
1477 | 1524 |
} |
1478 | 1525 |
|
1479 | 1526 |
machine_init(pc_machine_init); |
Also available in: Unified diff