mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
Support addr=... in option argument of -drive if=virtio
Make drive_init() accept addr=, put the value into struct DriveInfo. Use it in all the places that create virtio-blk-pci devices: pc_init1(), bamboo_init(), mpc8544ds_init(). Don't support addr= in third argument of monitor command pci_add and second argument of drive_add, because that clashes with their first arguments. Admittedly unelegant. Signed-off-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
1f5f6638c0
commit
c2cc47a449
7 changed files with 35 additions and 4 deletions
5
hw/pc.c
5
hw/pc.c
|
@ -848,6 +848,7 @@ static void pc_init1(ram_addr_t ram_size,
|
|||
ram_addr_t below_4g_mem_size, above_4g_mem_size = 0;
|
||||
int bios_size, isa_bios_size, oprom_area_size;
|
||||
PCIBus *pci_bus;
|
||||
PCIDevice *pci_dev;
|
||||
int piix3_devfn = -1;
|
||||
CPUState *env;
|
||||
qemu_irq *cpu_irq;
|
||||
|
@ -1161,7 +1162,9 @@ static void pc_init1(ram_addr_t ram_size,
|
|||
int unit_id = 0;
|
||||
|
||||
while ((index = drive_get_index(IF_VIRTIO, 0, unit_id)) != -1) {
|
||||
pci_create_simple(pci_bus, -1, "virtio-blk-pci");
|
||||
pci_dev = pci_create("virtio-blk-pci",
|
||||
drives_table[index].devaddr);
|
||||
qdev_init(&pci_dev->qdev);
|
||||
unit_id++;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -70,6 +70,10 @@ void drive_hot_add(Monitor *mon, const char *pci_addr, const char *opts)
|
|||
drive_idx = add_init_drive(opts);
|
||||
if (drive_idx < 0)
|
||||
return;
|
||||
if (drives_table[drive_idx].devaddr) {
|
||||
monitor_printf(mon, "Parameter addr not supported\n");
|
||||
return;
|
||||
}
|
||||
type = drives_table[drive_idx].type;
|
||||
bus = drive_get_max_bus (type);
|
||||
|
||||
|
@ -116,6 +120,10 @@ static PCIDevice *qemu_pci_hot_add_storage(Monitor *mon,
|
|||
drive_idx = add_init_drive(opts);
|
||||
if (drive_idx < 0)
|
||||
return NULL;
|
||||
if (drives_table[drive_idx].devaddr) {
|
||||
monitor_printf(mon, "Parameter addr not supported\n");
|
||||
return NULL;
|
||||
}
|
||||
} else if (type == IF_VIRTIO) {
|
||||
monitor_printf(mon, "virtio requires a backing file/device.\n");
|
||||
return NULL;
|
||||
|
|
|
@ -90,6 +90,7 @@ static void bamboo_init(ram_addr_t ram_size,
|
|||
{
|
||||
unsigned int pci_irq_nrs[4] = { 28, 27, 26, 25 };
|
||||
PCIBus *pcibus;
|
||||
PCIDevice *pci_dev;
|
||||
CPUState *env;
|
||||
uint64_t elf_entry;
|
||||
uint64_t elf_lowaddr;
|
||||
|
@ -110,7 +111,8 @@ static void bamboo_init(ram_addr_t ram_size,
|
|||
|
||||
/* Add virtio block devices. */
|
||||
while ((i = drive_get_index(IF_VIRTIO, 0, unit_id)) != -1) {
|
||||
pci_create_simple(pcibus, -1, "virtio-blk-pci");
|
||||
pci_dev = pci_create("virtio-blk-pci", drives_table[i].devaddr);
|
||||
qdev_init(&pci_dev->qdev);
|
||||
unit_id++;
|
||||
}
|
||||
|
||||
|
|
|
@ -157,6 +157,7 @@ static void mpc8544ds_init(ram_addr_t ram_size,
|
|||
const char *cpu_model)
|
||||
{
|
||||
PCIBus *pci_bus;
|
||||
PCIDevice *pci_dev;
|
||||
CPUState *env;
|
||||
uint64_t elf_entry;
|
||||
uint64_t elf_lowaddr;
|
||||
|
@ -219,7 +220,8 @@ static void mpc8544ds_init(ram_addr_t ram_size,
|
|||
|
||||
/* Add virtio block devices. */
|
||||
while ((i = drive_get_index(IF_VIRTIO, 0, unit_id)) != -1) {
|
||||
pci_create_simple(pci_bus, -1, "virtio-blk-pci");
|
||||
pci_dev = pci_create("virtio-blk-pci", drives_table[i].devaddr);
|
||||
qdev_init(&pci_dev->qdev);
|
||||
unit_id++;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue