]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging
authorPeter Maydell <peter.maydell@linaro.org>
Fri, 14 Jul 2017 11:16:09 +0000 (12:16 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 14 Jul 2017 11:16:09 +0000 (12:16 +0100)
* gdbstub fixes (Alex)
* IOMMU MemoryRegion subclass (Alexey)
* Chardev hotswap (Anton)
* NBD_OPT_GO support (Eric)
* Misc bugfixes
* DEFINE_PROP_LINK (minus the ARM patches - Fam)
* MAINTAINERS updates (Philippe)

# gpg: Signature made Fri 14 Jul 2017 11:06:27 BST
# gpg:                using RSA key 0xBFFBD25F78C7AE83
# gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>"
# gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>"
# Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
#      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83

* remotes/bonzini/tags/for-upstream: (55 commits)
  spapr_rng: Convert to DEFINE_PROP_LINK
  cpu: Convert to DEFINE_PROP_LINK
  mips_cmgcr: Convert to DEFINE_PROP_LINK
  ivshmem: Convert to DEFINE_PROP_LINK
  dimm: Convert to DEFINE_PROP_LINK
  virtio-crypto: Convert to DEFINE_PROP_LINK
  virtio-rng: Convert to DEFINE_PROP_LINK
  virtio-scsi: Convert to DEFINE_PROP_LINK
  virtio-blk: Convert to DEFINE_PROP_LINK
  qdev: Add const qualifier to PropertyInfo definitions
  qmp: Use ObjectProperty.type if present
  qdev: Introduce DEFINE_PROP_LINK
  qdev: Introduce PropertyInfo.create
  qom: enforce readonly nature of link's check callback
  translate-all: remove redundant !tcg_enabled check in dump_exec_info
  vl: fix breakage of -tb-size
  nbd: Implement NBD_INFO_BLOCK_SIZE on client
  nbd: Implement NBD_INFO_BLOCK_SIZE on server
  nbd: Implement NBD_OPT_GO on client
  nbd: Implement NBD_OPT_GO on server
  ...

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
1  2 
chardev/char-socket.c
hw/core/qdev-properties.c
hw/ppc/spapr_iommu.c
hw/usb/redirect.c
target/i386/cpu.c
vl.c

diff --combined chardev/char-socket.c
index a050a686ea34b81e084869beeaa31aea0670660e,7e6648b03a277e1dc142748ed64c1f8b522be7d1..1ae730a4cb42f48cd486e85ce18ab1da4a722477
@@@ -454,7 -454,9 +454,9 @@@ static int tcp_chr_sync_read(Chardev *c
          return 0;
      }
  
+     qio_channel_set_blocking(s->ioc, true, NULL);
      size = tcp_chr_recv(chr, (void *) buf, len);
+     qio_channel_set_blocking(s->ioc, false, NULL);
      if (size == 0) {
          /* connection closed */
          tcp_chr_disconnect(chr);
@@@ -765,8 -767,8 +767,8 @@@ static int tcp_chr_wait_connected(Chard
       * in TLS and telnet cases, only wait for an accepted socket */
      while (!s->ioc) {
          if (s->is_listen) {
 -            error_report("QEMU waiting for connection on: %s",
 -                         chr->filename);
 +            info_report("QEMU waiting for connection on: %s",
 +                        chr->filename);
              qio_channel_set_blocking(QIO_CHANNEL(s->listen_ioc), true, NULL);
              tcp_chr_accept(QIO_CHANNEL(s->listen_ioc), G_IO_IN, chr);
              qio_channel_set_blocking(QIO_CHANNEL(s->listen_ioc), false, NULL);
index 3d0bba21a25b6ab2a892f5888c7de9b8a1aca764,f22bd71ef47818c82bed1b6426391158f04822c4..dcecdf03e544d6632aa40ef7f8f158357fd85097
@@@ -25,7 -25,8 +25,8 @@@ void qdev_prop_set_after_realize(Device
      }
  }
  
- void qdev_prop_allow_set_link_before_realize(Object *obj, const char *name,
+ void qdev_prop_allow_set_link_before_realize(const Object *obj,
+                                              const char *name,
                                               Object *val, Error **errp)
  {
      DeviceState *dev = DEVICE(obj);
@@@ -131,7 -132,7 +132,7 @@@ static void set_default_value_bool(Obje
      object_property_set_bool(obj, prop->defval.u, prop->name, &error_abort);
  }
  
- PropertyInfo qdev_prop_bit = {
const PropertyInfo qdev_prop_bit = {
      .name  = "bool",
      .description = "on/off",
      .get   = prop_get_bit,
@@@ -190,7 -191,7 +191,7 @@@ static void prop_set_bit64(Object *obj
      bit64_prop_set(dev, prop, value);
  }
  
- PropertyInfo qdev_prop_bit64 = {
const PropertyInfo qdev_prop_bit64 = {
      .name  = "bool",
      .description = "on/off",
      .get   = prop_get_bit64,
@@@ -225,7 -226,7 +226,7 @@@ static void set_bool(Object *obj, Visit
      visit_type_bool(v, name, ptr, errp);
  }
  
- PropertyInfo qdev_prop_bool = {
const PropertyInfo qdev_prop_bool = {
      .name  = "bool",
      .get   = get_bool,
      .set   = set_bool,
@@@ -269,7 -270,7 +270,7 @@@ static void set_default_value_uint(Obje
      object_property_set_uint(obj, prop->defval.u, prop->name, &error_abort);
  }
  
- PropertyInfo qdev_prop_uint8 = {
const PropertyInfo qdev_prop_uint8 = {
      .name  = "uint8",
      .get   = get_uint8,
      .set   = set_uint8,
@@@ -303,7 -304,7 +304,7 @@@ static void set_uint16(Object *obj, Vis
      visit_type_uint16(v, name, ptr, errp);
  }
  
- PropertyInfo qdev_prop_uint16 = {
const PropertyInfo qdev_prop_uint16 = {
      .name  = "uint16",
      .get   = get_uint16,
      .set   = set_uint16,
@@@ -362,14 -363,14 +363,14 @@@ static void set_int32(Object *obj, Visi
      visit_type_int32(v, name, ptr, errp);
  }
  
- PropertyInfo qdev_prop_uint32 = {
const PropertyInfo qdev_prop_uint32 = {
      .name  = "uint32",
      .get   = get_uint32,
      .set   = set_uint32,
      .set_default_value = set_default_value_uint,
  };
  
- PropertyInfo qdev_prop_int32 = {
const PropertyInfo qdev_prop_int32 = {
      .name  = "int32",
      .get   = get_int32,
      .set   = set_int32,
@@@ -403,7 -404,7 +404,7 @@@ static void set_uint64(Object *obj, Vis
      visit_type_uint64(v, name, ptr, errp);
  }
  
- PropertyInfo qdev_prop_uint64 = {
const PropertyInfo qdev_prop_uint64 = {
      .name  = "uint64",
      .get   = get_uint64,
      .set   = set_uint64,
@@@ -456,7 -457,7 +457,7 @@@ static void set_string(Object *obj, Vis
      *ptr = str;
  }
  
- PropertyInfo qdev_prop_string = {
const PropertyInfo qdev_prop_string = {
      .name  = "str",
      .release = release_string,
      .get   = get_string,
  /* --- pointer --- */
  
  /* Not a proper property, just for dirty hacks.  TODO Remove it!  */
- PropertyInfo qdev_prop_ptr = {
const PropertyInfo qdev_prop_ptr = {
      .name  = "ptr",
  };
  
@@@ -540,7 -541,7 +541,7 @@@ inval
      g_free(str);
  }
  
- PropertyInfo qdev_prop_macaddr = {
const PropertyInfo qdev_prop_macaddr = {
      .name  = "str",
      .description = "Ethernet 6-byte MAC Address, example: 52:54:00:12:34:56",
      .get   = get_mac,
  
  /* --- on/off/auto --- */
  
- PropertyInfo qdev_prop_on_off_auto = {
const PropertyInfo qdev_prop_on_off_auto = {
      .name = "OnOffAuto",
      .description = "on/off/auto",
      .enum_table = OnOffAuto_lookup,
  
  QEMU_BUILD_BUG_ON(sizeof(LostTickPolicy) != sizeof(int));
  
- PropertyInfo qdev_prop_losttickpolicy = {
const PropertyInfo qdev_prop_losttickpolicy = {
      .name  = "LostTickPolicy",
      .enum_table  = LostTickPolicy_lookup,
      .get   = get_enum,
  
  QEMU_BUILD_BUG_ON(sizeof(BlockdevOnError) != sizeof(int));
  
- PropertyInfo qdev_prop_blockdev_on_error = {
const PropertyInfo qdev_prop_blockdev_on_error = {
      .name = "BlockdevOnError",
      .description = "Error handling policy, "
                     "report/ignore/enospc/stop/auto",
  
  QEMU_BUILD_BUG_ON(sizeof(BiosAtaTranslation) != sizeof(int));
  
- PropertyInfo qdev_prop_bios_chs_trans = {
const PropertyInfo qdev_prop_bios_chs_trans = {
      .name = "BiosAtaTranslation",
      .description = "Logical CHS translation algorithm, "
                     "auto/none/lba/large/rechs",
  
  /* --- FDC default drive types */
  
- PropertyInfo qdev_prop_fdc_drive_type = {
const PropertyInfo qdev_prop_fdc_drive_type = {
      .name = "FdcDriveType",
      .description = "FDC drive type, "
                     "144/288/120/none/auto",
@@@ -676,7 -677,7 +677,7 @@@ static int print_pci_devfn(DeviceState 
      }
  }
  
- PropertyInfo qdev_prop_pci_devfn = {
const PropertyInfo qdev_prop_pci_devfn = {
      .name  = "int32",
      .description = "Slot and optional function number, example: 06.0 or 06",
      .print = print_pci_devfn,
@@@ -725,7 -726,7 +726,7 @@@ static void set_blocksize(Object *obj, 
      *ptr = value;
  }
  
- PropertyInfo qdev_prop_blocksize = {
const PropertyInfo qdev_prop_blocksize = {
      .name  = "uint16",
      .description = "A power of two between 512 and 32768",
      .get   = get_uint16,
@@@ -840,7 -841,7 +841,7 @@@ inval
      g_free(str);
  }
  
- PropertyInfo qdev_prop_pci_host_devaddr = {
const PropertyInfo qdev_prop_pci_host_devaddr = {
      .name = "str",
      .description = "Address (bus/device/function) of "
                     "the host device, example: 04:10.0",
@@@ -949,7 -950,7 +950,7 @@@ static void set_prop_arraylen(Object *o
      }
  }
  
- PropertyInfo qdev_prop_arraylen = {
const PropertyInfo qdev_prop_arraylen = {
      .name = "uint32",
      .get = get_uint32,
      .set = set_prop_arraylen,
@@@ -1132,15 -1133,15 +1133,15 @@@ int qdev_prop_check_globals(void
          oc = object_class_by_name(prop->driver);
          oc = object_class_dynamic_cast(oc, TYPE_DEVICE);
          if (!oc) {
 -            error_report("Warning: global %s.%s has invalid class name",
 -                       prop->driver, prop->property);
 +            warn_report("global %s.%s has invalid class name",
 +                        prop->driver, prop->property);
              ret = 1;
              continue;
          }
          dc = DEVICE_CLASS(oc);
          if (!dc->hotpluggable && !prop->used) {
 -            error_report("Warning: global %s.%s=%s not used",
 -                       prop->driver, prop->property, prop->value);
 +            warn_report("global %s.%s=%s not used",
 +                        prop->driver, prop->property, prop->value);
              ret = 1;
              continue;
          }
@@@ -1169,7 -1170,7 +1170,7 @@@ static void qdev_prop_set_globals_for_t
                  error_propagate(prop->errp, err);
              } else {
                  assert(prop->user_provided);
 -                error_reportf_err(err, "Warning: ");
 +                warn_report_err(err);
              }
          }
      }
@@@ -1207,9 -1208,27 +1208,27 @@@ static void set_size(Object *obj, Visit
      visit_type_size(v, name, ptr, errp);
  }
  
- PropertyInfo qdev_prop_size = {
const PropertyInfo qdev_prop_size = {
      .name  = "size",
      .get = get_size,
      .set = set_size,
      .set_default_value = set_default_value_uint,
  };
+ /* --- object link property --- */
+ static void create_link_property(Object *obj, Property *prop, Error **errp)
+ {
+     Object **child = qdev_get_prop_ptr(DEVICE(obj), prop);
+     object_property_add_link(obj, prop->name, prop->link_type,
+                              child,
+                              qdev_prop_allow_set_link_before_realize,
+                              OBJ_PROP_LINK_UNREF_ON_RELEASE,
+                              errp);
+ }
+ const PropertyInfo qdev_prop_link = {
+     .name = "link",
+     .create = create_link_property,
+ };
diff --combined hw/ppc/spapr_iommu.c
index 583afc1a4634ae49332a901c7a97ef2d61c1d6b7,d07b4b460d618426cc18c23052d08b0ab69b88d9..e614621a8317f0cc79bbda92ac6c87c6d35d84ed
@@@ -110,7 -110,8 +110,8 @@@ static void spapr_tce_free_table(uint64
  }
  
  /* Called from RCU critical section */
- static IOMMUTLBEntry spapr_tce_translate_iommu(MemoryRegion *iommu, hwaddr addr,
+ static IOMMUTLBEntry spapr_tce_translate_iommu(IOMMUMemoryRegion *iommu,
+                                                hwaddr addr,
                                                 IOMMUAccessFlags flag)
  {
      sPAPRTCETable *tcet = container_of(iommu, sPAPRTCETable, iommu);
@@@ -150,14 -151,14 +151,14 @@@ static void spapr_tce_table_pre_save(vo
                                 tcet->bus_offset, tcet->page_shift);
  }
  
- static uint64_t spapr_tce_get_min_page_size(MemoryRegion *iommu)
+ static uint64_t spapr_tce_get_min_page_size(IOMMUMemoryRegion *iommu)
  {
      sPAPRTCETable *tcet = container_of(iommu, sPAPRTCETable, iommu);
  
      return 1ULL << tcet->page_shift;
  }
  
- static void spapr_tce_notify_flag_changed(MemoryRegion *iommu,
+ static void spapr_tce_notify_flag_changed(IOMMUMemoryRegion *iommu,
                                            IOMMUNotifierFlag old,
                                            IOMMUNotifierFlag new)
  {
@@@ -247,12 -248,6 +248,6 @@@ static const VMStateDescription vmstate
      }
  };
  
- static MemoryRegionIOMMUOps spapr_iommu_ops = {
-     .translate = spapr_tce_translate_iommu,
-     .get_min_page_size = spapr_tce_get_min_page_size,
-     .notify_flag_changed = spapr_tce_notify_flag_changed,
- };
  static int spapr_tce_table_realize(DeviceState *dev)
  {
      sPAPRTCETable *tcet = SPAPR_TCE_TABLE(dev);
      memory_region_init(&tcet->root, tcetobj, tmp, UINT64_MAX);
  
      snprintf(tmp, sizeof(tmp), "tce-iommu-%x", tcet->liobn);
-     memory_region_init_iommu(&tcet->iommu, tcetobj, &spapr_iommu_ops, tmp, 0);
+     memory_region_init_iommu(&tcet->iommu, sizeof(tcet->iommu),
+                              TYPE_SPAPR_IOMMU_MEMORY_REGION,
+                              tcetobj, tmp, 0);
  
      QLIST_INSERT_HEAD(&spapr_tce_tables, tcet, list);
  
@@@ -334,7 -331,7 +331,7 @@@ void spapr_tce_table_enable(sPAPRTCETab
                              uint32_t nb_table)
  {
      if (tcet->nb_table) {
 -        error_report("Warning: trying to enable already enabled TCE table");
 +        warn_report("trying to enable already enabled TCE table");
          return;
      }
  
                                          &tcet->fd,
                                          tcet->need_vfio);
  
-     memory_region_set_size(&tcet->iommu,
+     memory_region_set_size(MEMORY_REGION(&tcet->iommu),
                             (uint64_t)tcet->nb_table << tcet->page_shift);
-     memory_region_add_subregion(&tcet->root, tcet->bus_offset, &tcet->iommu);
+     memory_region_add_subregion(&tcet->root, tcet->bus_offset,
+                                 MEMORY_REGION(&tcet->iommu));
  }
  
  void spapr_tce_table_disable(sPAPRTCETable *tcet)
          return;
      }
  
-     memory_region_del_subregion(&tcet->root, &tcet->iommu);
-     memory_region_set_size(&tcet->iommu, 0);
+     memory_region_del_subregion(&tcet->root, MEMORY_REGION(&tcet->iommu));
+     memory_region_set_size(MEMORY_REGION(&tcet->iommu), 0);
  
      spapr_tce_free_table(tcet->table, tcet->fd, tcet->nb_table);
      tcet->fd = -1;
@@@ -637,9 -635,25 +635,25 @@@ static TypeInfo spapr_tce_table_info = 
      .class_init = spapr_tce_table_class_init,
  };
  
+ static void spapr_iommu_memory_region_class_init(ObjectClass *klass, void *data)
+ {
+     IOMMUMemoryRegionClass *imrc = IOMMU_MEMORY_REGION_CLASS(klass);
+     imrc->translate = spapr_tce_translate_iommu;
+     imrc->get_min_page_size = spapr_tce_get_min_page_size;
+     imrc->notify_flag_changed = spapr_tce_notify_flag_changed;
+ }
+ static const TypeInfo spapr_iommu_memory_region_info = {
+     .parent = TYPE_IOMMU_MEMORY_REGION,
+     .name = TYPE_SPAPR_IOMMU_MEMORY_REGION,
+     .class_init = spapr_iommu_memory_region_class_init,
+ };
  static void register_types(void)
  {
      type_register_static(&spapr_tce_table_info);
+     type_register_static(&spapr_iommu_memory_region_info);
  }
  
  type_init(register_types);
diff --combined hw/usb/redirect.c
index 5b65965cc20dafb2b66b634e3bbbb788c436121f,c5971454716e51119bdb580841dfc797371da0ce..5e427304490e00081519993bb86f24195fd1be0b
@@@ -193,7 -193,7 +193,7 @@@ static void usbredir_handle_status(USBR
  #define WARNING(...) \
      do { \
          if (dev->debug >= usbredirparser_warning) { \
 -            error_report("usb-redir warning: " __VA_ARGS__); \
 +            warn_report("" __VA_ARGS__); \
          } \
      } while (0)
  #define INFO(...) \
@@@ -273,10 -273,9 +273,9 @@@ static gboolean usbredir_write_unblocke
  static int usbredir_write(void *priv, uint8_t *data, int count)
  {
      USBRedirDevice *dev = priv;
-     Chardev *chr = qemu_chr_fe_get_driver(&dev->cs);
      int r;
  
-     if (!chr->be_open) {
+     if (!qemu_chr_fe_backend_open(&dev->cs)) {
          return 0;
      }
  
@@@ -1366,7 -1365,7 +1365,7 @@@ static void usbredir_realize(USBDevice 
      USBRedirDevice *dev = USB_REDIRECT(udev);
      int i;
  
-     if (!qemu_chr_fe_get_driver(&dev->cs)) {
+     if (!qemu_chr_fe_backend_connected(&dev->cs)) {
          error_setg(errp, QERR_MISSING_PARAMETER, "chardev");
          return;
      }
      /* Let the backend know we are ready */
      qemu_chr_fe_set_handlers(&dev->cs, usbredir_chardev_can_read,
                               usbredir_chardev_read, usbredir_chardev_event,
-                              dev, NULL, true);
+                              NULL, dev, NULL, true);
  
      dev->vmstate =
          qemu_add_vm_change_state_handler(usbredir_vm_state_change, dev);
diff --combined target/i386/cpu.c
index da942d91c717acf1aa258e3c252a4b1d18b20d7c,1b089c5cfda1bac637e0a06505f80917ef4ff517..4de91d58018641e44821bb64f8929c5d16b5f283
@@@ -1961,7 -1961,7 +1961,7 @@@ static void x86_set_hv_spinlocks(Objec
      cpu->hyperv_spinlock_attempts = value;
  }
  
- static PropertyInfo qdev_prop_spinlocks = {
+ static const PropertyInfo qdev_prop_spinlocks = {
      .name  = "int",
      .get   = x86_get_hv_spinlocks,
      .set   = x86_set_hv_spinlocks,
@@@ -2060,15 -2060,15 +2060,15 @@@ static void x86_cpu_parse_featurestr(co
          name = featurestr;
  
          if (g_list_find_custom(plus_features, name, compare_string)) {
 -            error_report("warning: Ambiguous CPU model string. "
 -                         "Don't mix both \"+%s\" and \"%s=%s\"",
 -                         name, name, val);
 +            warn_report("Ambiguous CPU model string. "
 +                        "Don't mix both \"+%s\" and \"%s=%s\"",
 +                        name, name, val);
              ambiguous = true;
          }
          if (g_list_find_custom(minus_features, name, compare_string)) {
 -            error_report("warning: Ambiguous CPU model string. "
 -                         "Don't mix both \"-%s\" and \"%s=%s\"",
 -                         name, name, val);
 +            warn_report("Ambiguous CPU model string. "
 +                        "Don't mix both \"-%s\" and \"%s=%s\"",
 +                        name, name, val);
              ambiguous = true;
          }
  
      }
  
      if (ambiguous) {
 -        error_report("warning: Compatibility of ambiguous CPU model "
 -                     "strings won't be kept on future QEMU versions");
 +        warn_report("Compatibility of ambiguous CPU model "
 +                    "strings won't be kept on future QEMU versions");
      }
  }
  
@@@ -3547,9 -3547,9 +3547,9 @@@ static void x86_cpu_realizefn(DeviceSta
               */
              if (cpu->phys_bits != host_phys_bits && cpu->phys_bits != 0 &&
                  !warned) {
 -                error_report("Warning: Host physical bits (%u)"
 -                                 " does not match phys-bits property (%u)",
 -                                 host_phys_bits, cpu->phys_bits);
 +                warn_report("Host physical bits (%u)"
 +                            " does not match phys-bits property (%u)",
 +                            host_phys_bits, cpu->phys_bits);
                  warned = true;
              }
  
diff --combined vl.c
index 8efd48bf9f937becaf353ddf53b367ac6aff4450,85cdbbff15ffecbee8309d039cf494d1a9b84763..fb6b2efafa83b87a7b05166e5433325e57b16e10
--- 1/vl.c
--- 2/vl.c
+++ b/vl.c
@@@ -952,8 -952,8 +952,8 @@@ static void bt_vhci_add(int vlan_id
      struct bt_scatternet_s *vlan = qemu_find_bt_vlan(vlan_id);
  
      if (!vlan->slave)
 -        error_report("warning: adding a VHCI to an empty scatternet %i",
 -                     vlan_id);
 +        warn_report("adding a VHCI to an empty scatternet %i",
 +                    vlan_id);
  
      bt_vhci_init(bt_new_hci(vlan));
  }
@@@ -979,8 -979,8 +979,8 @@@ static struct bt_device_s *bt_device_ad
      vlan = qemu_find_bt_vlan(vlan_id);
  
      if (!vlan->slave)
 -        error_report("warning: adding a slave device to an empty scatternet %i",
 -                     vlan_id);
 +        warn_report("adding a slave device to an empty scatternet %i",
 +                    vlan_id);
  
      if (!strcmp(devname, "keyboard"))
          return bt_keyboard_init(vlan);
@@@ -2302,8 -2302,8 +2302,8 @@@ static int parse_fw_cfg(void *opaque, Q
          return -1;
      }
      if (strncmp(name, "opt/", 4) != 0) {
 -        error_report("warning: externally provided fw_cfg item names "
 -                     "should be prefixed with \"opt/\"");
 +        warn_report("externally provided fw_cfg item names "
 +                    "should be prefixed with \"opt/\"");
      }
      if (nonempty_str(str)) {
          size = strlen(str); /* NUL terminator NOT included in fw_cfg blob */
@@@ -3760,7 -3760,7 +3760,7 @@@ int main(int argc, char **argv, char **
                  qemu_opts_parse_noisily(olist, "accel=tcg", false);
                  break;
              case QEMU_OPTION_no_kvm_pit: {
 -                error_report("warning: ignoring deprecated option");
 +                warn_report("ignoring deprecated option");
                  break;
              }
              case QEMU_OPTION_no_kvm_pit_reinjection: {
                      .value    = "discard",
                  };
  
 -                error_report("warning: deprecated, replaced by "
 -                             "-global kvm-pit.lost_tick_policy=discard");
 +                warn_report("deprecated, replaced by "
 +                            "-global kvm-pit.lost_tick_policy=discard");
                  qdev_prop_register_global(&kvm_pit_lost_tick_policy);
                  break;
              }
                  }
                  break;
              case QEMU_OPTION_tdf:
 -                error_report("warning: ignoring deprecated option");
 +                warn_report("ignoring deprecated option");
                  break;
              case QEMU_OPTION_name:
                  opts = qemu_opts_parse_noisily(qemu_find_opts("name"),
                  configure_rtc(opts);
                  break;
              case QEMU_OPTION_tb_size:
-                 if (!tcg_enabled()) {
-                     error_report("TCG is disabled");
-                     exit(1);
-                 }
+ #ifndef CONFIG_TCG
+                 error_report("TCG is disabled");
+                 exit(1);
+ #endif
                  if (qemu_strtoul(optarg, NULL, 0, &tcg_tb_size) < 0) {
                      error_report("Invalid argument to -tb-size");
                      exit(1);