* [Qemu-devel] [PATCH v3 0/4] qdev: remove DeviceClass::init/exit() @ 2018-04-19 21:27 Philippe Mathieu-Daudé 2018-04-19 21:27 ` [Qemu-devel] [PATCH v3 1/4] hw/i2c/smbus: Use DeviceClass::realize instead of SMBusDeviceClass::init Philippe Mathieu-Daudé ` (4 more replies) 0 siblings, 5 replies; 13+ messages in thread From: Philippe Mathieu-Daudé @ 2018-04-19 21:27 UTC (permalink / raw) To: Eduardo Habkost, Markus Armbruster Cc: Philippe Mathieu-Daudé, qemu-devel, Paolo Bonzini, Peter Maydell, Thomas Huth Since v2: - rebased for 2.13 (Markus) - dropped 2 patches already merged (Gerd) - start sentences with a capital letter and end with a full stop (Peter) since v1: - fix format string on 32-bit host (patchew) - do not add smbus_eeprom_reset() (Eduardo) - directly use DeviceClass::realize (Eduardo) - squashed 2 patches (Eduardo) Hi, This series finalize the qdev QOMification. We first convert the I2CSlave/SMBusDevice, then the usb-ccid and virtio-ccw, and finally the SysBusDevice. At the end we removed *TWO* TODO :) /* TODO remove, once users are converted to realize */ /* TODO remove, once users are converted to unrealize */ Regards, Phil. Philippe Mathieu-Daudé (4): hw/i2c/smbus: Use DeviceClass::realize instead of SMBusDeviceClass::init hw/i2c: Use DeviceClass::realize instead of I2CSlaveClass::init qdev: Simplify the SysBusDeviceClass::init path qdev: Remove DeviceClass::exit include/hw/i2c/i2c.h | 3 --- include/hw/i2c/smbus.h | 1 - include/hw/qdev-core.h | 4 ---- hw/audio/wm8750.c | 8 +++----- hw/core/qdev.c | 28 ---------------------------- hw/core/sysbus.c | 15 ++++++++++----- hw/display/ssd0303.c | 9 ++++----- hw/gpio/max7310.c | 9 ++++----- hw/i2c/core.c | 13 ------------- hw/i2c/smbus.c | 9 --------- hw/i2c/smbus_eeprom.c | 5 ++--- hw/input/lm832x.c | 9 ++++----- hw/misc/tmp105.c | 7 +++---- hw/misc/tmp421.c | 8 +++----- hw/nvram/eeprom_at24c.c | 24 +++++++++++------------- hw/timer/twl92230.c | 11 ++++------- 16 files changed, 48 insertions(+), 115 deletions(-) -- 2.17.0 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [Qemu-devel] [PATCH v3 1/4] hw/i2c/smbus: Use DeviceClass::realize instead of SMBusDeviceClass::init 2018-04-19 21:27 [Qemu-devel] [PATCH v3 0/4] qdev: remove DeviceClass::init/exit() Philippe Mathieu-Daudé @ 2018-04-19 21:27 ` Philippe Mathieu-Daudé 2018-04-20 7:24 ` Markus Armbruster 2018-04-19 21:27 ` [Qemu-devel] [PATCH v3 2/4] hw/i2c: Use DeviceClass::realize instead of I2CSlaveClass::init Philippe Mathieu-Daudé ` (3 subsequent siblings) 4 siblings, 1 reply; 13+ messages in thread From: Philippe Mathieu-Daudé @ 2018-04-19 21:27 UTC (permalink / raw) To: Eduardo Habkost, Markus Armbruster Cc: Philippe Mathieu-Daudé, qemu-devel, Paolo Bonzini, Peter Maydell, Thomas Huth SMBusDeviceClass::init is no more used, remove it. Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> --- include/hw/i2c/smbus.h | 1 - hw/i2c/smbus.c | 9 --------- hw/i2c/smbus_eeprom.c | 5 ++--- 3 files changed, 2 insertions(+), 13 deletions(-) diff --git a/include/hw/i2c/smbus.h b/include/hw/i2c/smbus.h index 544bbc1957..cfe3fa69f3 100644 --- a/include/hw/i2c/smbus.h +++ b/include/hw/i2c/smbus.h @@ -38,7 +38,6 @@ typedef struct SMBusDeviceClass { I2CSlaveClass parent_class; - int (*init)(SMBusDevice *dev); void (*quick_cmd)(SMBusDevice *dev, uint8_t read); void (*send_byte)(SMBusDevice *dev, uint8_t val); uint8_t (*receive_byte)(SMBusDevice *dev); diff --git a/hw/i2c/smbus.c b/hw/i2c/smbus.c index 2d1b79a689..587ce1ab7f 100644 --- a/hw/i2c/smbus.c +++ b/hw/i2c/smbus.c @@ -202,14 +202,6 @@ static int smbus_i2c_send(I2CSlave *s, uint8_t data) return 0; } -static int smbus_device_init(I2CSlave *i2c) -{ - SMBusDevice *dev = SMBUS_DEVICE(i2c); - SMBusDeviceClass *sc = SMBUS_DEVICE_GET_CLASS(dev); - - return sc->init(dev); -} - /* Master device commands. */ int smbus_quick_command(I2CBus *bus, uint8_t addr, int read) { @@ -350,7 +342,6 @@ static void smbus_device_class_init(ObjectClass *klass, void *data) { I2CSlaveClass *sc = I2C_SLAVE_CLASS(klass); - sc->init = smbus_device_init; sc->event = smbus_i2c_event; sc->recv = smbus_i2c_recv; sc->send = smbus_i2c_send; diff --git a/hw/i2c/smbus_eeprom.c b/hw/i2c/smbus_eeprom.c index b13ec0fe7a..125c887d1f 100644 --- a/hw/i2c/smbus_eeprom.c +++ b/hw/i2c/smbus_eeprom.c @@ -97,12 +97,11 @@ static uint8_t eeprom_read_data(SMBusDevice *dev, uint8_t cmd, int n) return eeprom_receive_byte(dev); } -static int smbus_eeprom_initfn(SMBusDevice *dev) +static void smbus_eeprom_realize(DeviceState *dev, Error **errp) { SMBusEEPROMDevice *eeprom = (SMBusEEPROMDevice *)dev; eeprom->offset = 0; - return 0; } static Property smbus_eeprom_properties[] = { @@ -115,7 +114,7 @@ static void smbus_eeprom_class_initfn(ObjectClass *klass, void *data) DeviceClass *dc = DEVICE_CLASS(klass); SMBusDeviceClass *sc = SMBUS_DEVICE_CLASS(klass); - sc->init = smbus_eeprom_initfn; + dc->realize = smbus_eeprom_realize; sc->quick_cmd = eeprom_quick_cmd; sc->send_byte = eeprom_send_byte; sc->receive_byte = eeprom_receive_byte; -- 2.17.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [Qemu-devel] [PATCH v3 1/4] hw/i2c/smbus: Use DeviceClass::realize instead of SMBusDeviceClass::init 2018-04-19 21:27 ` [Qemu-devel] [PATCH v3 1/4] hw/i2c/smbus: Use DeviceClass::realize instead of SMBusDeviceClass::init Philippe Mathieu-Daudé @ 2018-04-20 7:24 ` Markus Armbruster 0 siblings, 0 replies; 13+ messages in thread From: Markus Armbruster @ 2018-04-20 7:24 UTC (permalink / raw) To: Philippe Mathieu-Daudé Cc: Eduardo Habkost, Peter Maydell, Paolo Bonzini, Thomas Huth, qemu-devel Philippe Mathieu-Daudé <f4bug@amsat.org> writes: > SMBusDeviceClass::init is no more used, remove it. > > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Markus Armbruster <armbru@redhat.com> ^ permalink raw reply [flat|nested] 13+ messages in thread
* [Qemu-devel] [PATCH v3 2/4] hw/i2c: Use DeviceClass::realize instead of I2CSlaveClass::init 2018-04-19 21:27 [Qemu-devel] [PATCH v3 0/4] qdev: remove DeviceClass::init/exit() Philippe Mathieu-Daudé 2018-04-19 21:27 ` [Qemu-devel] [PATCH v3 1/4] hw/i2c/smbus: Use DeviceClass::realize instead of SMBusDeviceClass::init Philippe Mathieu-Daudé @ 2018-04-19 21:27 ` Philippe Mathieu-Daudé 2018-04-20 7:24 ` Markus Armbruster 2018-04-19 21:27 ` [Qemu-devel] [PATCH v3 3/4] qdev: Simplify the SysBusDeviceClass::init path Philippe Mathieu-Daudé ` (2 subsequent siblings) 4 siblings, 1 reply; 13+ messages in thread From: Philippe Mathieu-Daudé @ 2018-04-19 21:27 UTC (permalink / raw) To: Eduardo Habkost, Markus Armbruster Cc: Philippe Mathieu-Daudé, qemu-devel, Paolo Bonzini, Peter Maydell, Thomas Huth, Gerd Hoffmann I2CSlaveClass::init is no more used, remove it. Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> --- include/hw/i2c/i2c.h | 3 --- hw/audio/wm8750.c | 8 +++----- hw/display/ssd0303.c | 9 ++++----- hw/gpio/max7310.c | 9 ++++----- hw/i2c/core.c | 13 ------------- hw/input/lm832x.c | 9 ++++----- hw/misc/tmp105.c | 7 +++---- hw/misc/tmp421.c | 8 +++----- hw/nvram/eeprom_at24c.c | 24 +++++++++++------------- hw/timer/twl92230.c | 11 ++++------- 10 files changed, 36 insertions(+), 65 deletions(-) diff --git a/include/hw/i2c/i2c.h b/include/hw/i2c/i2c.h index d727379b48..5dc166158b 100644 --- a/include/hw/i2c/i2c.h +++ b/include/hw/i2c/i2c.h @@ -28,9 +28,6 @@ typedef struct I2CSlave I2CSlave; typedef struct I2CSlaveClass { DeviceClass parent_class; - /* Callbacks provided by the device. */ - int (*init)(I2CSlave *dev); - /* Master to slave. Returns non-zero for a NAK, 0 for success. */ int (*send)(I2CSlave *s, uint8_t data); diff --git a/hw/audio/wm8750.c b/hw/audio/wm8750.c index 416a78e869..f4aa838f62 100644 --- a/hw/audio/wm8750.c +++ b/hw/audio/wm8750.c @@ -617,14 +617,12 @@ static const VMStateDescription vmstate_wm8750 = { } }; -static int wm8750_init(I2CSlave *i2c) +static void wm8750_realize(DeviceState *dev, Error **errp) { - WM8750State *s = WM8750(i2c); + WM8750State *s = WM8750(dev); AUD_register_card(CODEC, &s->card); wm8750_reset(I2C_SLAVE(s)); - - return 0; } #if 0 @@ -707,7 +705,7 @@ static void wm8750_class_init(ObjectClass *klass, void *data) DeviceClass *dc = DEVICE_CLASS(klass); I2CSlaveClass *sc = I2C_SLAVE_CLASS(klass); - sc->init = wm8750_init; + dc->realize = wm8750_realize; sc->event = wm8750_event; sc->recv = wm8750_rx; sc->send = wm8750_tx; diff --git a/hw/display/ssd0303.c b/hw/display/ssd0303.c index 68a80b9d64..eb90ba26be 100644 --- a/hw/display/ssd0303.c +++ b/hw/display/ssd0303.c @@ -297,13 +297,12 @@ static const GraphicHwOps ssd0303_ops = { .gfx_update = ssd0303_update_display, }; -static int ssd0303_init(I2CSlave *i2c) +static void ssd0303_realize(DeviceState *dev, Error **errp) { - ssd0303_state *s = SSD0303(i2c); + ssd0303_state *s = SSD0303(dev); - s->con = graphic_console_init(DEVICE(i2c), 0, &ssd0303_ops, s); + s->con = graphic_console_init(dev, 0, &ssd0303_ops, s); qemu_console_resize(s->con, 96 * MAGNIFY, 16 * MAGNIFY); - return 0; } static void ssd0303_class_init(ObjectClass *klass, void *data) @@ -311,7 +310,7 @@ static void ssd0303_class_init(ObjectClass *klass, void *data) DeviceClass *dc = DEVICE_CLASS(klass); I2CSlaveClass *k = I2C_SLAVE_CLASS(klass); - k->init = ssd0303_init; + dc->realize = ssd0303_realize; k->event = ssd0303_event; k->recv = ssd0303_recv; k->send = ssd0303_send; diff --git a/hw/gpio/max7310.c b/hw/gpio/max7310.c index 4c203ef5c6..a560e3afd2 100644 --- a/hw/gpio/max7310.c +++ b/hw/gpio/max7310.c @@ -182,14 +182,13 @@ static void max7310_gpio_set(void *opaque, int line, int level) /* MAX7310 is SMBus-compatible (can be used with only SMBus protocols), * but also accepts sequences that are not SMBus so return an I2C device. */ -static int max7310_init(I2CSlave *i2c) +static void max7310_realize(DeviceState *dev, Error **errp) { - MAX7310State *s = MAX7310(i2c); + I2CSlave *i2c = I2C_SLAVE(dev); + MAX7310State *s = MAX7310(dev); qdev_init_gpio_in(&i2c->qdev, max7310_gpio_set, 8); qdev_init_gpio_out(&i2c->qdev, s->handler, 8); - - return 0; } static void max7310_class_init(ObjectClass *klass, void *data) @@ -197,7 +196,7 @@ static void max7310_class_init(ObjectClass *klass, void *data) DeviceClass *dc = DEVICE_CLASS(klass); I2CSlaveClass *k = I2C_SLAVE_CLASS(klass); - k->init = max7310_init; + dc->realize = max7310_realize; k->event = max7310_event; k->recv = max7310_rx; k->send = max7310_tx; diff --git a/hw/i2c/core.c b/hw/i2c/core.c index cfccefca3d..ab72d5bf2b 100644 --- a/hw/i2c/core.c +++ b/hw/i2c/core.c @@ -258,18 +258,6 @@ const VMStateDescription vmstate_i2c_slave = { } }; -static int i2c_slave_qdev_init(DeviceState *dev) -{ - I2CSlave *s = I2C_SLAVE(dev); - I2CSlaveClass *sc = I2C_SLAVE_GET_CLASS(s); - - if (sc->init) { - return sc->init(s); - } - - return 0; -} - DeviceState *i2c_create_slave(I2CBus *bus, const char *name, uint8_t addr) { DeviceState *dev; @@ -283,7 +271,6 @@ DeviceState *i2c_create_slave(I2CBus *bus, const char *name, uint8_t addr) static void i2c_slave_class_init(ObjectClass *klass, void *data) { DeviceClass *k = DEVICE_CLASS(klass); - k->init = i2c_slave_qdev_init; set_bit(DEVICE_CATEGORY_MISC, k->categories); k->bus_type = TYPE_I2C_BUS; k->props = i2c_props; diff --git a/hw/input/lm832x.c b/hw/input/lm832x.c index d39953126b..74da30d9ca 100644 --- a/hw/input/lm832x.c +++ b/hw/input/lm832x.c @@ -464,20 +464,19 @@ static const VMStateDescription vmstate_lm_kbd = { }; -static int lm8323_init(I2CSlave *i2c) +static void lm8323_realize(DeviceState *dev, Error **errp) { - LM823KbdState *s = LM8323(i2c); + LM823KbdState *s = LM8323(dev); s->model = 0x8323; s->pwm.tm[0] = timer_new_ns(QEMU_CLOCK_VIRTUAL, lm_kbd_pwm0_tick, s); s->pwm.tm[1] = timer_new_ns(QEMU_CLOCK_VIRTUAL, lm_kbd_pwm1_tick, s); s->pwm.tm[2] = timer_new_ns(QEMU_CLOCK_VIRTUAL, lm_kbd_pwm2_tick, s); - qdev_init_gpio_out(DEVICE(i2c), &s->nirq, 1); + qdev_init_gpio_out(dev, &s->nirq, 1); lm_kbd_reset(s); qemu_register_reset((void *) lm_kbd_reset, s); - return 0; } void lm832x_key_event(DeviceState *dev, int key, int state) @@ -505,7 +504,7 @@ static void lm8323_class_init(ObjectClass *klass, void *data) DeviceClass *dc = DEVICE_CLASS(klass); I2CSlaveClass *k = I2C_SLAVE_CLASS(klass); - k->init = lm8323_init; + dc->realize = lm8323_realize; k->event = lm_i2c_event; k->recv = lm_i2c_rx; k->send = lm_i2c_tx; diff --git a/hw/misc/tmp105.c b/hw/misc/tmp105.c index 9e22d64e36..0918f3a6ea 100644 --- a/hw/misc/tmp105.c +++ b/hw/misc/tmp105.c @@ -229,15 +229,14 @@ static void tmp105_reset(I2CSlave *i2c) tmp105_interrupt_update(s); } -static int tmp105_init(I2CSlave *i2c) +static void tmp105_realize(DeviceState *dev, Error **errp) { + I2CSlave *i2c = I2C_SLAVE(dev); TMP105State *s = TMP105(i2c); qdev_init_gpio_out(&i2c->qdev, &s->pin, 1); tmp105_reset(&s->i2c); - - return 0; } static void tmp105_initfn(Object *obj) @@ -252,7 +251,7 @@ static void tmp105_class_init(ObjectClass *klass, void *data) DeviceClass *dc = DEVICE_CLASS(klass); I2CSlaveClass *k = I2C_SLAVE_CLASS(klass); - k->init = tmp105_init; + dc->realize = tmp105_realize; k->event = tmp105_event; k->recv = tmp105_rx; k->send = tmp105_tx; diff --git a/hw/misc/tmp421.c b/hw/misc/tmp421.c index 4a505abbce..c234044305 100644 --- a/hw/misc/tmp421.c +++ b/hw/misc/tmp421.c @@ -335,13 +335,11 @@ static void tmp421_reset(I2CSlave *i2c) s->status = 0; } -static int tmp421_init(I2CSlave *i2c) +static void tmp421_realize(DeviceState *dev, Error **errp) { - TMP421State *s = TMP421(i2c); + TMP421State *s = TMP421(dev); tmp421_reset(&s->i2c); - - return 0; } static void tmp421_initfn(Object *obj) @@ -366,7 +364,7 @@ static void tmp421_class_init(ObjectClass *klass, void *data) I2CSlaveClass *k = I2C_SLAVE_CLASS(klass); TMP421Class *sc = TMP421_CLASS(klass); - k->init = tmp421_init; + dc->realize = tmp421_realize; k->event = tmp421_event; k->recv = tmp421_rx; k->send = tmp421_tx; diff --git a/hw/nvram/eeprom_at24c.c b/hw/nvram/eeprom_at24c.c index 22183f5360..27cd01e615 100644 --- a/hw/nvram/eeprom_at24c.c +++ b/hw/nvram/eeprom_at24c.c @@ -116,31 +116,29 @@ int at24c_eeprom_send(I2CSlave *s, uint8_t data) return 0; } -static -int at24c_eeprom_init(I2CSlave *i2c) +static void at24c_eeprom_realize(DeviceState *dev, Error **errp) { - EEPROMState *ee = AT24C_EE(i2c); - - ee->mem = g_malloc0(ee->rsize); + EEPROMState *ee = AT24C_EE(dev); if (ee->blk) { int64_t len = blk_getlength(ee->blk); if (len != ee->rsize) { - ERR(TYPE_AT24C_EE " : Backing file size %lu != %u\n", - (unsigned long)len, (unsigned)ee->rsize); - exit(1); + error_setg(errp, "%s: Backing file size %" PRId64 " != %u", + TYPE_AT24C_EE, len, ee->rsize); + return; } if (blk_set_perm(ee->blk, BLK_PERM_CONSISTENT_READ | BLK_PERM_WRITE, BLK_PERM_ALL, &error_fatal) < 0) { - ERR(TYPE_AT24C_EE - " : Backing file incorrect permission\n"); - exit(1); + error_setg(errp, "%s: Backing file incorrect permission", + TYPE_AT24C_EE); + return; } } - return 0; + + ee->mem = g_malloc0(ee->rsize); } static @@ -178,7 +176,7 @@ void at24c_eeprom_class_init(ObjectClass *klass, void *data) DeviceClass *dc = DEVICE_CLASS(klass); I2CSlaveClass *k = I2C_SLAVE_CLASS(klass); - k->init = &at24c_eeprom_init; + dc->realize = &at24c_eeprom_realize; k->event = &at24c_eeprom_event; k->recv = &at24c_eeprom_recv; k->send = &at24c_eeprom_send; diff --git a/hw/timer/twl92230.c b/hw/timer/twl92230.c index ef116c636c..3b43b46199 100644 --- a/hw/timer/twl92230.c +++ b/hw/timer/twl92230.c @@ -853,10 +853,9 @@ static const VMStateDescription vmstate_menelaus = { } }; -static int twl92230_init(I2CSlave *i2c) +static void twl92230_realize(DeviceState *dev, Error **errp) { - DeviceState *dev = DEVICE(i2c); - MenelausState *s = TWL92230(i2c); + MenelausState *s = TWL92230(dev); s->rtc.hz_tm = timer_new_ms(rtc_clock, menelaus_rtc_hz, s); /* Three output pins plus one interrupt pin. */ @@ -865,9 +864,7 @@ static int twl92230_init(I2CSlave *i2c) /* Three input pins plus one power-button pin. */ qdev_init_gpio_in(dev, menelaus_gpio_set, 4); - menelaus_reset(i2c); - - return 0; + menelaus_reset(I2C_SLAVE(dev)); } static void twl92230_class_init(ObjectClass *klass, void *data) @@ -875,7 +872,7 @@ static void twl92230_class_init(ObjectClass *klass, void *data) DeviceClass *dc = DEVICE_CLASS(klass); I2CSlaveClass *sc = I2C_SLAVE_CLASS(klass); - sc->init = twl92230_init; + dc->realize = twl92230_realize; sc->event = menelaus_event; sc->recv = menelaus_rx; sc->send = menelaus_tx; -- 2.17.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [Qemu-devel] [PATCH v3 2/4] hw/i2c: Use DeviceClass::realize instead of I2CSlaveClass::init 2018-04-19 21:27 ` [Qemu-devel] [PATCH v3 2/4] hw/i2c: Use DeviceClass::realize instead of I2CSlaveClass::init Philippe Mathieu-Daudé @ 2018-04-20 7:24 ` Markus Armbruster 0 siblings, 0 replies; 13+ messages in thread From: Markus Armbruster @ 2018-04-20 7:24 UTC (permalink / raw) To: Philippe Mathieu-Daudé Cc: Eduardo Habkost, Peter Maydell, Thomas Huth, qemu-devel, Gerd Hoffmann, Paolo Bonzini Philippe Mathieu-Daudé <f4bug@amsat.org> writes: > I2CSlaveClass::init is no more used, remove it. > > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Markus Armbruster <armbru@redhat.com> ^ permalink raw reply [flat|nested] 13+ messages in thread
* [Qemu-devel] [PATCH v3 3/4] qdev: Simplify the SysBusDeviceClass::init path 2018-04-19 21:27 [Qemu-devel] [PATCH v3 0/4] qdev: remove DeviceClass::init/exit() Philippe Mathieu-Daudé 2018-04-19 21:27 ` [Qemu-devel] [PATCH v3 1/4] hw/i2c/smbus: Use DeviceClass::realize instead of SMBusDeviceClass::init Philippe Mathieu-Daudé 2018-04-19 21:27 ` [Qemu-devel] [PATCH v3 2/4] hw/i2c: Use DeviceClass::realize instead of I2CSlaveClass::init Philippe Mathieu-Daudé @ 2018-04-19 21:27 ` Philippe Mathieu-Daudé 2018-04-19 21:38 ` Philippe Mathieu-Daudé 2018-04-25 6:45 ` Yoni Bettan 2018-04-19 21:27 ` [Qemu-devel] [PATCH v3 4/4] qdev: Remove DeviceClass::exit Philippe Mathieu-Daudé 2018-04-19 21:31 ` [Qemu-devel] [PATCH v3 0/4] qdev: remove DeviceClass::init/exit() Philippe Mathieu-Daudé 4 siblings, 2 replies; 13+ messages in thread From: Philippe Mathieu-Daudé @ 2018-04-19 21:27 UTC (permalink / raw) To: Eduardo Habkost, Markus Armbruster Cc: Philippe Mathieu-Daudé, qemu-devel, Paolo Bonzini, Peter Maydell, Thomas Huth The SysBusDevice is the last DeviceClass::init user. Instead of using SysBusDeviceClass::realize -> DeviceClass::realize -> DeviceClass::init -> sysbus_device_init -> SysBusDeviceClass::init Simplify the path by directly calling SysBusDeviceClass::init in SysBusDeviceClass::realize: SysBusDeviceClass::realize -> SysBusDeviceClass::init Finally, remove the DeviceClass::init, there are no more users. Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> --- include/hw/qdev-core.h | 2 -- hw/core/qdev.c | 14 -------------- hw/core/sysbus.c | 15 ++++++++++----- 3 files changed, 10 insertions(+), 21 deletions(-) diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index 9453588160..6f60748043 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -29,7 +29,6 @@ typedef enum DeviceCategory { DEVICE_CATEGORY_MAX } DeviceCategory; -typedef int (*qdev_initfn)(DeviceState *dev); typedef int (*qdev_event)(DeviceState *dev); typedef void (*DeviceRealize)(DeviceState *dev, Error **errp); typedef void (*DeviceUnrealize)(DeviceState *dev, Error **errp); @@ -124,7 +123,6 @@ typedef struct DeviceClass { const struct VMStateDescription *vmsd; /* Private to qdev / bus. */ - qdev_initfn init; /* TODO remove, once users are converted to realize */ qdev_event exit; /* TODO remove, once users are converted to unrealize */ const char *bus_type; } DeviceClass; diff --git a/hw/core/qdev.c b/hw/core/qdev.c index f6f92473b8..4153b733c8 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -208,19 +208,6 @@ void device_listener_unregister(DeviceListener *listener) QTAILQ_REMOVE(&device_listeners, listener, link); } -static void device_realize(DeviceState *dev, Error **errp) -{ - DeviceClass *dc = DEVICE_GET_CLASS(dev); - - if (dc->init) { - int rc = dc->init(dev); - if (rc < 0) { - error_setg(errp, "Device initialization failed."); - return; - } - } -} - static void device_unrealize(DeviceState *dev, Error **errp) { DeviceClass *dc = DEVICE_GET_CLASS(dev); @@ -1065,7 +1052,6 @@ static void device_class_init(ObjectClass *class, void *data) DeviceClass *dc = DEVICE_CLASS(class); class->unparent = device_unparent; - dc->realize = device_realize; dc->unrealize = device_unrealize; /* by default all devices were considered as hotpluggable, diff --git a/hw/core/sysbus.c b/hw/core/sysbus.c index 5d0887f499..11f6d14b84 100644 --- a/hw/core/sysbus.c +++ b/hw/core/sysbus.c @@ -18,6 +18,7 @@ */ #include "qemu/osdep.h" +#include "qapi/error.h" #include "hw/sysbus.h" #include "monitor/monitor.h" #include "exec/address-spaces.h" @@ -200,15 +201,19 @@ void sysbus_init_ioports(SysBusDevice *dev, uint32_t ioport, uint32_t size) } } -static int sysbus_device_init(DeviceState *dev) +static void sysbus_realize(DeviceState *dev, Error **errp) { SysBusDevice *sd = SYS_BUS_DEVICE(dev); SysBusDeviceClass *sbc = SYS_BUS_DEVICE_GET_CLASS(sd); - if (!sbc->init) { - return 0; + /* TODO remove, once users are converted to realize */ + if (sbc->init) { + int rc = sbc->init(sd); + if (rc < 0) { + error_setg(errp, "Device initialization failed."); + return; + } } - return sbc->init(sd); } DeviceState *sysbus_create_varargs(const char *name, @@ -324,7 +329,7 @@ MemoryRegion *sysbus_address_space(SysBusDevice *dev) static void sysbus_device_class_init(ObjectClass *klass, void *data) { DeviceClass *k = DEVICE_CLASS(klass); - k->init = sysbus_device_init; + k->realize = sysbus_realize; k->bus_type = TYPE_SYSTEM_BUS; /* * device_add plugs devices into a suitable bus. For "real" buses, -- 2.17.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [Qemu-devel] [PATCH v3 3/4] qdev: Simplify the SysBusDeviceClass::init path 2018-04-19 21:27 ` [Qemu-devel] [PATCH v3 3/4] qdev: Simplify the SysBusDeviceClass::init path Philippe Mathieu-Daudé @ 2018-04-19 21:38 ` Philippe Mathieu-Daudé 2018-04-20 7:22 ` Markus Armbruster 2018-04-25 6:45 ` Yoni Bettan 1 sibling, 1 reply; 13+ messages in thread From: Philippe Mathieu-Daudé @ 2018-04-19 21:38 UTC (permalink / raw) To: Eduardo Habkost, Markus Armbruster, Andreas Färber Cc: qemu-devel, Paolo Bonzini, Peter Maydell, Thomas Huth On 04/19/2018 06:27 PM, Philippe Mathieu-Daudé wrote: > The SysBusDevice is the last DeviceClass::init user. > > Instead of using > SysBusDeviceClass::realize > -> DeviceClass::realize > -> DeviceClass::init > -> sysbus_device_init > -> SysBusDeviceClass::init > > Simplify the path by directly calling SysBusDeviceClass::init > in SysBusDeviceClass::realize: > > SysBusDeviceClass::realize > -> SysBusDeviceClass::init > > Finally, remove the DeviceClass::init, there are no more users. > > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > --- > include/hw/qdev-core.h | 2 -- > hw/core/qdev.c | 14 -------------- > hw/core/sysbus.c | 15 ++++++++++----- > 3 files changed, 10 insertions(+), 21 deletions(-) > > diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h > index 9453588160..6f60748043 100644 > --- a/include/hw/qdev-core.h > +++ b/include/hw/qdev-core.h > @@ -29,7 +29,6 @@ typedef enum DeviceCategory { > DEVICE_CATEGORY_MAX > } DeviceCategory; > > -typedef int (*qdev_initfn)(DeviceState *dev); > typedef int (*qdev_event)(DeviceState *dev); > typedef void (*DeviceRealize)(DeviceState *dev, Error **errp); > typedef void (*DeviceUnrealize)(DeviceState *dev, Error **errp); > @@ -124,7 +123,6 @@ typedef struct DeviceClass { > const struct VMStateDescription *vmsd; > > /* Private to qdev / bus. */ > - qdev_initfn init; /* TODO remove, once users are converted to realize */ The DeviceClass documentation (top of this file) is now out of date :( If the maintainer taking this series prefer a respin, I plan to only remove the 'init' references in the big comment. > qdev_event exit; /* TODO remove, once users are converted to unrealize */ > const char *bus_type; > } DeviceClass; > diff --git a/hw/core/qdev.c b/hw/core/qdev.c > index f6f92473b8..4153b733c8 100644 > --- a/hw/core/qdev.c > +++ b/hw/core/qdev.c > @@ -208,19 +208,6 @@ void device_listener_unregister(DeviceListener *listener) > QTAILQ_REMOVE(&device_listeners, listener, link); > } > > -static void device_realize(DeviceState *dev, Error **errp) > -{ > - DeviceClass *dc = DEVICE_GET_CLASS(dev); > - > - if (dc->init) { > - int rc = dc->init(dev); > - if (rc < 0) { > - error_setg(errp, "Device initialization failed."); > - return; > - } > - } > -} > - > static void device_unrealize(DeviceState *dev, Error **errp) > { > DeviceClass *dc = DEVICE_GET_CLASS(dev); > @@ -1065,7 +1052,6 @@ static void device_class_init(ObjectClass *class, void *data) > DeviceClass *dc = DEVICE_CLASS(class); > > class->unparent = device_unparent; > - dc->realize = device_realize; > dc->unrealize = device_unrealize; > > /* by default all devices were considered as hotpluggable, > diff --git a/hw/core/sysbus.c b/hw/core/sysbus.c > index 5d0887f499..11f6d14b84 100644 > --- a/hw/core/sysbus.c > +++ b/hw/core/sysbus.c > @@ -18,6 +18,7 @@ > */ > > #include "qemu/osdep.h" > +#include "qapi/error.h" > #include "hw/sysbus.h" > #include "monitor/monitor.h" > #include "exec/address-spaces.h" > @@ -200,15 +201,19 @@ void sysbus_init_ioports(SysBusDevice *dev, uint32_t ioport, uint32_t size) > } > } > > -static int sysbus_device_init(DeviceState *dev) > +static void sysbus_realize(DeviceState *dev, Error **errp) > { > SysBusDevice *sd = SYS_BUS_DEVICE(dev); > SysBusDeviceClass *sbc = SYS_BUS_DEVICE_GET_CLASS(sd); > > - if (!sbc->init) { > - return 0; > + /* TODO remove, once users are converted to realize */ > + if (sbc->init) { > + int rc = sbc->init(sd); > + if (rc < 0) { > + error_setg(errp, "Device initialization failed."); > + return; > + } > } > - return sbc->init(sd); > } > > DeviceState *sysbus_create_varargs(const char *name, > @@ -324,7 +329,7 @@ MemoryRegion *sysbus_address_space(SysBusDevice *dev) > static void sysbus_device_class_init(ObjectClass *klass, void *data) > { > DeviceClass *k = DEVICE_CLASS(klass); > - k->init = sysbus_device_init; > + k->realize = sysbus_realize; > k->bus_type = TYPE_SYSTEM_BUS; > /* > * device_add plugs devices into a suitable bus. For "real" buses, > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Qemu-devel] [PATCH v3 3/4] qdev: Simplify the SysBusDeviceClass::init path 2018-04-19 21:38 ` Philippe Mathieu-Daudé @ 2018-04-20 7:22 ` Markus Armbruster 2018-05-07 21:30 ` Eduardo Habkost 0 siblings, 1 reply; 13+ messages in thread From: Markus Armbruster @ 2018-04-20 7:22 UTC (permalink / raw) To: Philippe Mathieu-Daudé Cc: Eduardo Habkost, Andreas Färber, Paolo Bonzini, Thomas Huth, qemu-devel, Peter Maydell Philippe Mathieu-Daudé <f4bug@amsat.org> writes: > On 04/19/2018 06:27 PM, Philippe Mathieu-Daudé wrote: >> The SysBusDevice is the last DeviceClass::init user. >> >> Instead of using >> SysBusDeviceClass::realize >> -> DeviceClass::realize >> -> DeviceClass::init >> -> sysbus_device_init >> -> SysBusDeviceClass::init >> >> Simplify the path by directly calling SysBusDeviceClass::init >> in SysBusDeviceClass::realize: >> >> SysBusDeviceClass::realize >> -> SysBusDeviceClass::init >> >> Finally, remove the DeviceClass::init, there are no more users. >> >> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> >> --- >> include/hw/qdev-core.h | 2 -- >> hw/core/qdev.c | 14 -------------- >> hw/core/sysbus.c | 15 ++++++++++----- >> 3 files changed, 10 insertions(+), 21 deletions(-) >> >> diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h >> index 9453588160..6f60748043 100644 >> --- a/include/hw/qdev-core.h >> +++ b/include/hw/qdev-core.h >> @@ -29,7 +29,6 @@ typedef enum DeviceCategory { >> DEVICE_CATEGORY_MAX >> } DeviceCategory; >> >> -typedef int (*qdev_initfn)(DeviceState *dev); >> typedef int (*qdev_event)(DeviceState *dev); >> typedef void (*DeviceRealize)(DeviceState *dev, Error **errp); >> typedef void (*DeviceUnrealize)(DeviceState *dev, Error **errp); >> @@ -124,7 +123,6 @@ typedef struct DeviceClass { >> const struct VMStateDescription *vmsd; >> >> /* Private to qdev / bus. */ >> - qdev_initfn init; /* TODO remove, once users are converted to realize */ > > The DeviceClass documentation (top of this file) is now out of date :( > > If the maintainer taking this series prefer a respin, I plan to only > remove the 'init' references in the big comment. I'd move the actual removal into the next and final patch. Lets us fix up the comment in one go. >> qdev_event exit; /* TODO remove, once users are converted to unrealize */ >> const char *bus_type; >> } DeviceClass; [...] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Qemu-devel] [PATCH v3 3/4] qdev: Simplify the SysBusDeviceClass::init path 2018-04-20 7:22 ` Markus Armbruster @ 2018-05-07 21:30 ` Eduardo Habkost 0 siblings, 0 replies; 13+ messages in thread From: Eduardo Habkost @ 2018-05-07 21:30 UTC (permalink / raw) To: Markus Armbruster Cc: Philippe Mathieu-Daudé, Peter Maydell, Thomas Huth, qemu-devel, Paolo Bonzini, Andreas Färber On Fri, Apr 20, 2018 at 09:22:55AM +0200, Markus Armbruster wrote: > Philippe Mathieu-Daudé <f4bug@amsat.org> writes: > > > On 04/19/2018 06:27 PM, Philippe Mathieu-Daudé wrote: > >> The SysBusDevice is the last DeviceClass::init user. > >> > >> Instead of using > >> SysBusDeviceClass::realize > >> -> DeviceClass::realize > >> -> DeviceClass::init > >> -> sysbus_device_init > >> -> SysBusDeviceClass::init > >> > >> Simplify the path by directly calling SysBusDeviceClass::init > >> in SysBusDeviceClass::realize: > >> > >> SysBusDeviceClass::realize > >> -> SysBusDeviceClass::init > >> > >> Finally, remove the DeviceClass::init, there are no more users. > >> > >> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > >> --- > >> include/hw/qdev-core.h | 2 -- > >> hw/core/qdev.c | 14 -------------- > >> hw/core/sysbus.c | 15 ++++++++++----- > >> 3 files changed, 10 insertions(+), 21 deletions(-) > >> > >> diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h > >> index 9453588160..6f60748043 100644 > >> --- a/include/hw/qdev-core.h > >> +++ b/include/hw/qdev-core.h > >> @@ -29,7 +29,6 @@ typedef enum DeviceCategory { > >> DEVICE_CATEGORY_MAX > >> } DeviceCategory; > >> > >> -typedef int (*qdev_initfn)(DeviceState *dev); > >> typedef int (*qdev_event)(DeviceState *dev); > >> typedef void (*DeviceRealize)(DeviceState *dev, Error **errp); > >> typedef void (*DeviceUnrealize)(DeviceState *dev, Error **errp); > >> @@ -124,7 +123,6 @@ typedef struct DeviceClass { > >> const struct VMStateDescription *vmsd; > >> > >> /* Private to qdev / bus. */ > >> - qdev_initfn init; /* TODO remove, once users are converted to realize */ > > > > The DeviceClass documentation (top of this file) is now out of date :( > > > > If the maintainer taking this series prefer a respin, I plan to only > > remove the 'init' references in the big comment. > > I'd move the actual removal into the next and final patch. Lets us fix > up the comment in one go. I'd prefer a respin, so we can ensure the documentation is updated and the removal of DeviceClass::init and DeviceClass::exit are done in the same patch. (Sorry for taking so long to reply.) -- Eduardo ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Qemu-devel] [PATCH v3 3/4] qdev: Simplify the SysBusDeviceClass::init path 2018-04-19 21:27 ` [Qemu-devel] [PATCH v3 3/4] qdev: Simplify the SysBusDeviceClass::init path Philippe Mathieu-Daudé 2018-04-19 21:38 ` Philippe Mathieu-Daudé @ 2018-04-25 6:45 ` Yoni Bettan 1 sibling, 0 replies; 13+ messages in thread From: Yoni Bettan @ 2018-04-25 6:45 UTC (permalink / raw) To: qemu-devel On 04/20/2018 12:27 AM, Philippe Mathieu-Daudé wrote: > The SysBusDevice is the last DeviceClass::init user. > > Instead of using > SysBusDeviceClass::realize > -> DeviceClass::realize > -> DeviceClass::init > -> sysbus_device_init > -> SysBusDeviceClass::init > > Simplify the path by directly calling SysBusDeviceClass::init > in SysBusDeviceClass::realize: > > SysBusDeviceClass::realize > -> SysBusDeviceClass::init > > Finally, remove the DeviceClass::init, there are no more users. > > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > --- > include/hw/qdev-core.h | 2 -- > hw/core/qdev.c | 14 -------------- > hw/core/sysbus.c | 15 ++++++++++----- > 3 files changed, 10 insertions(+), 21 deletions(-) > > diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h > index 9453588160..6f60748043 100644 > --- a/include/hw/qdev-core.h > +++ b/include/hw/qdev-core.h > @@ -29,7 +29,6 @@ typedef enum DeviceCategory { > DEVICE_CATEGORY_MAX > } DeviceCategory; > > -typedef int (*qdev_initfn)(DeviceState *dev); > typedef int (*qdev_event)(DeviceState *dev); > typedef void (*DeviceRealize)(DeviceState *dev, Error **errp); > typedef void (*DeviceUnrealize)(DeviceState *dev, Error **errp); > @@ -124,7 +123,6 @@ typedef struct DeviceClass { > const struct VMStateDescription *vmsd; > > /* Private to qdev / bus. */ > - qdev_initfn init; /* TODO remove, once users are converted to realize */ > qdev_event exit; /* TODO remove, once users are converted to unrealize */ > const char *bus_type; > } DeviceClass; > diff --git a/hw/core/qdev.c b/hw/core/qdev.c > index f6f92473b8..4153b733c8 100644 > --- a/hw/core/qdev.c > +++ b/hw/core/qdev.c > @@ -208,19 +208,6 @@ void device_listener_unregister(DeviceListener *listener) > QTAILQ_REMOVE(&device_listeners, listener, link); > } > > -static void device_realize(DeviceState *dev, Error **errp) > -{ > - DeviceClass *dc = DEVICE_GET_CLASS(dev); > - > - if (dc->init) { > - int rc = dc->init(dev); > - if (rc < 0) { > - error_setg(errp, "Device initialization failed."); > - return; > - } > - } > -} > - > static void device_unrealize(DeviceState *dev, Error **errp) > { > DeviceClass *dc = DEVICE_GET_CLASS(dev); > @@ -1065,7 +1052,6 @@ static void device_class_init(ObjectClass *class, void *data) > DeviceClass *dc = DEVICE_CLASS(class); > > class->unparent = device_unparent; > - dc->realize = device_realize; > dc->unrealize = device_unrealize; > > /* by default all devices were considered as hotpluggable, > diff --git a/hw/core/sysbus.c b/hw/core/sysbus.c > index 5d0887f499..11f6d14b84 100644 > --- a/hw/core/sysbus.c > +++ b/hw/core/sysbus.c > @@ -18,6 +18,7 @@ > */ > > #include "qemu/osdep.h" > +#include "qapi/error.h" > #include "hw/sysbus.h" > #include "monitor/monitor.h" > #include "exec/address-spaces.h" > @@ -200,15 +201,19 @@ void sysbus_init_ioports(SysBusDevice *dev, uint32_t ioport, uint32_t size) > } > } > > -static int sysbus_device_init(DeviceState *dev) > +static void sysbus_realize(DeviceState *dev, Error **errp) > { > SysBusDevice *sd = SYS_BUS_DEVICE(dev); > SysBusDeviceClass *sbc = SYS_BUS_DEVICE_GET_CLASS(sd); > > - if (!sbc->init) { > - return 0; Hello Philippe, is the purpose of this part to enable incremental conversion init->realize to SysBusDevices ?! Thanks, Yoni > + /* TODO remove, once users are converted to realize */ > + if (sbc->init) { > + int rc = sbc->init(sd); > + if (rc < 0) { > + error_setg(errp, "Device initialization failed."); > + return; > + } > } > - return sbc->init(sd); > } > > DeviceState *sysbus_create_varargs(const char *name, > @@ -324,7 +329,7 @@ MemoryRegion *sysbus_address_space(SysBusDevice *dev) > static void sysbus_device_class_init(ObjectClass *klass, void *data) > { > DeviceClass *k = DEVICE_CLASS(klass); > - k->init = sysbus_device_init; > + k->realize = sysbus_realize; > k->bus_type = TYPE_SYSTEM_BUS; > /* > * device_add plugs devices into a suitable bus. For "real" buses, ^ permalink raw reply [flat|nested] 13+ messages in thread
* [Qemu-devel] [PATCH v3 4/4] qdev: Remove DeviceClass::exit 2018-04-19 21:27 [Qemu-devel] [PATCH v3 0/4] qdev: remove DeviceClass::init/exit() Philippe Mathieu-Daudé ` (2 preceding siblings ...) 2018-04-19 21:27 ` [Qemu-devel] [PATCH v3 3/4] qdev: Simplify the SysBusDeviceClass::init path Philippe Mathieu-Daudé @ 2018-04-19 21:27 ` Philippe Mathieu-Daudé 2018-04-20 7:25 ` Markus Armbruster 2018-04-19 21:31 ` [Qemu-devel] [PATCH v3 0/4] qdev: remove DeviceClass::init/exit() Philippe Mathieu-Daudé 4 siblings, 1 reply; 13+ messages in thread From: Philippe Mathieu-Daudé @ 2018-04-19 21:27 UTC (permalink / raw) To: Eduardo Habkost, Markus Armbruster Cc: Philippe Mathieu-Daudé, qemu-devel, Paolo Bonzini, Peter Maydell, Thomas Huth Since no devices use it, we can safely remove it. Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> --- include/hw/qdev-core.h | 2 -- hw/core/qdev.c | 14 -------------- 2 files changed, 16 deletions(-) diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index 6f60748043..88b52be8fb 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -29,7 +29,6 @@ typedef enum DeviceCategory { DEVICE_CATEGORY_MAX } DeviceCategory; -typedef int (*qdev_event)(DeviceState *dev); typedef void (*DeviceRealize)(DeviceState *dev, Error **errp); typedef void (*DeviceUnrealize)(DeviceState *dev, Error **errp); typedef void (*DeviceReset)(DeviceState *dev); @@ -123,7 +122,6 @@ typedef struct DeviceClass { const struct VMStateDescription *vmsd; /* Private to qdev / bus. */ - qdev_event exit; /* TODO remove, once users are converted to unrealize */ const char *bus_type; } DeviceClass; diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 4153b733c8..ffec461791 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -208,19 +208,6 @@ void device_listener_unregister(DeviceListener *listener) QTAILQ_REMOVE(&device_listeners, listener, link); } -static void device_unrealize(DeviceState *dev, Error **errp) -{ - DeviceClass *dc = DEVICE_GET_CLASS(dev); - - if (dc->exit) { - int rc = dc->exit(dev); - if (rc < 0) { - error_setg(errp, "Device exit failed."); - return; - } - } -} - void qdev_set_legacy_instance_id(DeviceState *dev, int alias_id, int required_for_version) { @@ -1052,7 +1039,6 @@ static void device_class_init(ObjectClass *class, void *data) DeviceClass *dc = DEVICE_CLASS(class); class->unparent = device_unparent; - dc->unrealize = device_unrealize; /* by default all devices were considered as hotpluggable, * so with intent to check it in generic qdev_unplug() / -- 2.17.0 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [Qemu-devel] [PATCH v3 4/4] qdev: Remove DeviceClass::exit 2018-04-19 21:27 ` [Qemu-devel] [PATCH v3 4/4] qdev: Remove DeviceClass::exit Philippe Mathieu-Daudé @ 2018-04-20 7:25 ` Markus Armbruster 0 siblings, 0 replies; 13+ messages in thread From: Markus Armbruster @ 2018-04-20 7:25 UTC (permalink / raw) To: Philippe Mathieu-Daudé Cc: Eduardo Habkost, Peter Maydell, Paolo Bonzini, Thomas Huth, qemu-devel Philippe Mathieu-Daudé <f4bug@amsat.org> writes: > Since no devices use it, we can safely remove it. > > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Markus Armbruster <armbru@redhat.com> However, I'd reshuffle PATCH 3+4 a bit as explained in my review of PATCH 3. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [Qemu-devel] [PATCH v3 0/4] qdev: remove DeviceClass::init/exit() 2018-04-19 21:27 [Qemu-devel] [PATCH v3 0/4] qdev: remove DeviceClass::init/exit() Philippe Mathieu-Daudé ` (3 preceding siblings ...) 2018-04-19 21:27 ` [Qemu-devel] [PATCH v3 4/4] qdev: Remove DeviceClass::exit Philippe Mathieu-Daudé @ 2018-04-19 21:31 ` Philippe Mathieu-Daudé 4 siblings, 0 replies; 13+ messages in thread From: Philippe Mathieu-Daudé @ 2018-04-19 21:31 UTC (permalink / raw) To: Eduardo Habkost, Markus Armbruster Cc: qemu-devel, Paolo Bonzini, Peter Maydell, Thomas Huth On 04/19/2018 06:27 PM, Philippe Mathieu-Daudé wrote: > Since v2: > - rebased for 2.13 (Markus) > - dropped 2 patches already merged (Gerd) > - start sentences with a capital letter and end with a full stop (Peter) I forgot to put the backport-diff, in case someone already reviewed v2: [----] : patches are identical The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively 001/4:[----] [--] 'hw/i2c/smbus: use DeviceClass::realize instead of SMBusDeviceClass::init' 002/4:[----] [-C] 'hw/i2c: use DeviceClass::realize instead of I2CSlaveClass::init' 003/4:[----] [-C] 'qdev: simplify the SysBusDeviceClass::init path' 004/4:[----] [-C] 'qdev: remove DeviceClass::exit' > since v1: > - fix format string on 32-bit host (patchew) > - do not add smbus_eeprom_reset() (Eduardo) > - directly use DeviceClass::realize (Eduardo) > - squashed 2 patches (Eduardo) ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2018-05-07 21:30 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-04-19 21:27 [Qemu-devel] [PATCH v3 0/4] qdev: remove DeviceClass::init/exit() Philippe Mathieu-Daudé 2018-04-19 21:27 ` [Qemu-devel] [PATCH v3 1/4] hw/i2c/smbus: Use DeviceClass::realize instead of SMBusDeviceClass::init Philippe Mathieu-Daudé 2018-04-20 7:24 ` Markus Armbruster 2018-04-19 21:27 ` [Qemu-devel] [PATCH v3 2/4] hw/i2c: Use DeviceClass::realize instead of I2CSlaveClass::init Philippe Mathieu-Daudé 2018-04-20 7:24 ` Markus Armbruster 2018-04-19 21:27 ` [Qemu-devel] [PATCH v3 3/4] qdev: Simplify the SysBusDeviceClass::init path Philippe Mathieu-Daudé 2018-04-19 21:38 ` Philippe Mathieu-Daudé 2018-04-20 7:22 ` Markus Armbruster 2018-05-07 21:30 ` Eduardo Habkost 2018-04-25 6:45 ` Yoni Bettan 2018-04-19 21:27 ` [Qemu-devel] [PATCH v3 4/4] qdev: Remove DeviceClass::exit Philippe Mathieu-Daudé 2018-04-20 7:25 ` Markus Armbruster 2018-04-19 21:31 ` [Qemu-devel] [PATCH v3 0/4] qdev: remove DeviceClass::init/exit() Philippe Mathieu-Daudé
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).