Revision e8b2a1c6 hw/pc.c

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