Commit e9283f8b88eb6054ac032f3d9b773e80d842c0cf
Committed by
Anthony Liguori
1 parent
3b88e52b
monitor: Drop pci_addr prefix from hotplug commands
The "pci_addr=" prefix currently required by pci_add/remove and drive_add has no practical use. Drop it, but still silently accept it for backward compatibility. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Showing
4 changed files
with
24 additions
and
23 deletions
hw/pci-hotplug.c
| ... | ... | @@ -56,8 +56,7 @@ void drive_hot_add(Monitor *mon, const char *pci_addr, const char *opts) |
| 56 | 56 | int success = 0; |
| 57 | 57 | PCIDevice *dev; |
| 58 | 58 | |
| 59 | - if (pci_read_devaddr(pci_addr, &dom, &pci_bus, &slot)) { | |
| 60 | - monitor_printf(mon, "Invalid pci address\n"); | |
| 59 | + if (pci_read_devaddr(mon, pci_addr, &dom, &pci_bus, &slot)) { | |
| 61 | 60 | return; |
| 62 | 61 | } |
| 63 | 62 | |
| ... | ... | @@ -148,21 +147,19 @@ void pci_device_hot_add(Monitor *mon, const char *pci_addr, const char *type, |
| 148 | 147 | const char *opts) |
| 149 | 148 | { |
| 150 | 149 | PCIDevice *dev = NULL; |
| 151 | - const char *devaddr = NULL; | |
| 152 | - char buf[32]; | |
| 153 | 150 | |
| 154 | - if (!get_param_value(buf, sizeof(buf), "pci_addr", pci_addr)) { | |
| 155 | - monitor_printf(mon, "Invalid pci address\n"); | |
| 156 | - return; | |
| 151 | + /* strip legacy tag */ | |
| 152 | + if (!strncmp(pci_addr, "pci_addr=", 9)) { | |
| 153 | + pci_addr += 9; | |
| 157 | 154 | } |
| 158 | 155 | |
| 159 | - if (strcmp(buf, "auto")) | |
| 160 | - devaddr = buf; | |
| 156 | + if (!strcmp(pci_addr, "auto")) | |
| 157 | + pci_addr = NULL; | |
| 161 | 158 | |
| 162 | 159 | if (strcmp(type, "nic") == 0) |
| 163 | - dev = qemu_pci_hot_add_nic(mon, devaddr, opts); | |
| 160 | + dev = qemu_pci_hot_add_nic(mon, pci_addr, opts); | |
| 164 | 161 | else if (strcmp(type, "storage") == 0) |
| 165 | - dev = qemu_pci_hot_add_storage(mon, devaddr, opts); | |
| 162 | + dev = qemu_pci_hot_add_storage(mon, pci_addr, opts); | |
| 166 | 163 | else |
| 167 | 164 | monitor_printf(mon, "invalid type: %s\n", type); |
| 168 | 165 | |
| ... | ... | @@ -183,8 +180,7 @@ void pci_device_hot_remove(Monitor *mon, const char *pci_addr) |
| 183 | 180 | int dom, bus; |
| 184 | 181 | unsigned slot; |
| 185 | 182 | |
| 186 | - if (pci_read_devaddr(pci_addr, &dom, &bus, &slot)) { | |
| 187 | - monitor_printf(mon, "Invalid pci address\n"); | |
| 183 | + if (pci_read_devaddr(mon, pci_addr, &dom, &bus, &slot)) { | |
| 188 | 184 | return; |
| 189 | 185 | } |
| 190 | 186 | ... | ... |
hw/pci.c
| ... | ... | @@ -232,14 +232,18 @@ static int pci_parse_devaddr(const char *addr, int *domp, int *busp, unsigned *s |
| 232 | 232 | return 0; |
| 233 | 233 | } |
| 234 | 234 | |
| 235 | -int pci_read_devaddr(const char *addr, int *domp, int *busp, unsigned *slotp) | |
| 235 | +int pci_read_devaddr(Monitor *mon, const char *addr, int *domp, int *busp, | |
| 236 | + unsigned *slotp) | |
| 236 | 237 | { |
| 237 | - char devaddr[32]; | |
| 238 | - | |
| 239 | - if (!get_param_value(devaddr, sizeof(devaddr), "pci_addr", addr)) | |
| 238 | + /* strip legacy tag */ | |
| 239 | + if (!strncmp(addr, "pci_addr=", 9)) { | |
| 240 | + addr += 9; | |
| 241 | + } | |
| 242 | + if (pci_parse_devaddr(addr, domp, busp, slotp)) { | |
| 243 | + monitor_printf(mon, "Invalid pci address\n"); | |
| 240 | 244 | return -1; |
| 241 | - | |
| 242 | - return pci_parse_devaddr(devaddr, domp, busp, slotp); | |
| 245 | + } | |
| 246 | + return 0; | |
| 243 | 247 | } |
| 244 | 248 | |
| 245 | 249 | static PCIBus *pci_get_bus_devfn(int *devfnp, const char *devaddr) | ... | ... |
hw/pci.h
| ... | ... | @@ -252,7 +252,8 @@ void pci_for_each_device(int bus_num, void (*fn)(PCIDevice *d)); |
| 252 | 252 | PCIBus *pci_find_bus(int bus_num); |
| 253 | 253 | PCIDevice *pci_find_device(int bus_num, int slot, int function); |
| 254 | 254 | |
| 255 | -int pci_read_devaddr(const char *addr, int *domp, int *busp, unsigned *slotp); | |
| 255 | +int pci_read_devaddr(Monitor *mon, const char *addr, int *domp, int *busp, | |
| 256 | + unsigned *slotp); | |
| 256 | 257 | |
| 257 | 258 | void pci_info(Monitor *mon); |
| 258 | 259 | PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint16_t vid, uint16_t did, | ... | ... |
qemu-monitor.hx
| ... | ... | @@ -493,7 +493,7 @@ Set maximum tolerated downtime (in seconds) for migration. |
| 493 | 493 | ETEXI |
| 494 | 494 | |
| 495 | 495 | #if defined(TARGET_I386) |
| 496 | - { "drive_add", "ss", drive_hot_add, "pci_addr=[[<domain>:]<bus>:]<slot>\n" | |
| 496 | + { "drive_add", "ss", drive_hot_add, "[[<domain>:]<bus>:]<slot>\n" | |
| 497 | 497 | "[file=file][,if=type][,bus=n]\n" |
| 498 | 498 | "[,unit=m][,media=d][index=i]\n" |
| 499 | 499 | "[,cyls=c,heads=h,secs=s[,trans=t]]\n" |
| ... | ... | @@ -506,7 +506,7 @@ Add drive to PCI storage controller. |
| 506 | 506 | ETEXI |
| 507 | 507 | |
| 508 | 508 | #if defined(TARGET_I386) |
| 509 | - { "pci_add", "sss", pci_device_hot_add, "pci_addr=auto|[[<domain>:]<bus>:]<slot> nic|storage [[vlan=n][,macaddr=addr][,model=type]] [file=file][,if=type][,bus=nr]...", "hot-add PCI device" }, | |
| 509 | + { "pci_add", "sss", pci_device_hot_add, "auto|[[<domain>:]<bus>:]<slot> nic|storage [[vlan=n][,macaddr=addr][,model=type]] [file=file][,if=type][,bus=nr]...", "hot-add PCI device" }, | |
| 510 | 510 | #endif |
| 511 | 511 | STEXI |
| 512 | 512 | @item pci_add |
| ... | ... | @@ -514,7 +514,7 @@ Hot-add PCI device. |
| 514 | 514 | ETEXI |
| 515 | 515 | |
| 516 | 516 | #if defined(TARGET_I386) |
| 517 | - { "pci_del", "s", pci_device_hot_remove, "pci_addr=[[<domain>:]<bus>:]<slot>", "hot remove PCI device" }, | |
| 517 | + { "pci_del", "s", pci_device_hot_remove, "[[<domain>:]<bus>:]<slot>", "hot remove PCI device" }, | |
| 518 | 518 | #endif |
| 519 | 519 | STEXI |
| 520 | 520 | @item pci_del | ... | ... |