From patchwork Mon Jan 22 12:03:45 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 864235 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="lS6uB7vO"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zQ9950dYzz9sNc for ; Mon, 22 Jan 2018 23:04:57 +1100 (AEDT) Received: from localhost ([::1]:38041 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edaqN-0003w3-4M for incoming@patchwork.ozlabs.org; Mon, 22 Jan 2018 07:04:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52543) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edapX-0003tH-4m for qemu-devel@nongnu.org; Mon, 22 Jan 2018 07:04:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1edapW-0000Cj-2D for qemu-devel@nongnu.org; Mon, 22 Jan 2018 07:04:03 -0500 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:35486) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1edapV-0000CW-Uu for qemu-devel@nongnu.org; Mon, 22 Jan 2018 07:04:02 -0500 Received: by mail-qt0-x242.google.com with SMTP id g14so10832639qti.2 for ; Mon, 22 Jan 2018 04:04:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+4K3gwG1Nyq+oAa5oSOabGvI8GF8/zoxQTXnvJHy5+0=; b=lS6uB7vOOukuCRyI0TqPDl+/CxkkeFhXSDqFeZvwRjM3/lPyZ74jjAwJG4YkXbrq7Q c+IazhCI6WKxYqXYAaYogw9JASocnvNNQ3MlIL25frqOW77gLCVJVcRBCrryWMW/rliV 2TsRUv2QFZ4Pg17cOgj65W5Ma0mcgcBT5T8xg8vUfMH7pl+Ot4kXJz+IHQm2j76LTYR0 Qt2dgULfirff+cuvTEyI0qmRw/VcPj2cf8+kJ9YNqRMdpJAAKxxonbeSUdQe0uX4fTmk g+lCwc+MYD8HWUvntsdHqKsui10l15mpliZNkQCgqsjRFm2EmZIoKKKXPoxlVqFowrqz r1Zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=+4K3gwG1Nyq+oAa5oSOabGvI8GF8/zoxQTXnvJHy5+0=; b=PolO2cwM8GJ/7VKw72D8+fWhQ8JZUnqMCHt5Ohh+rcRAmtNc08O37EhB0VEkIGwh22 jTqsngxc/0QV/GsoaN8yr+qA3FwLc05ETOWlLIW1Sa6bZg4AdOIF+quY4TILm+h0Mag5 2ZutcRdZjt4gWiBjZF0A70//zWcyOOeiuci/LUhtIyuEncijL1gEYR6EhI1o9JHLo1jZ sAQNmL85woOg8nphoPhx79nCXxEbJQeLQtyaYQTEJDXrUkmLNwieQxeC69Qxri03KPwC yZxVECmRbnnvj08g0FHeKoOyGafOGwlTmOLdEqFdA596/OfWnTT0Nep5FdVIRqTOD8NW IIRg== X-Gm-Message-State: AKwxytd/40AABuLidEOEtGHAYJnHn1hjfzzZpokmbcLmlyGAU37wbF98 oQJPdjQJOydh4i9vtPAg3X4= X-Google-Smtp-Source: AH8x22488wmDepQv9ITabNdfw/ozP4FSoSfx9n/fBIY4jmsIi5i4NKuYfgnbYipB/v/MtqGnsMtYlw== X-Received: by 10.200.81.193 with SMTP id d1mr11157726qtn.109.1516622641428; Mon, 22 Jan 2018 04:04:01 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id 92sm11295356qky.72.2018.01.22.04.03.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 22 Jan 2018 04:04:00 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Eduardo Habkost , Paolo Bonzini Date: Mon, 22 Jan 2018 09:03:45 -0300 Message-Id: <20180122120351.22369-2-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180122120351.22369-1-f4bug@amsat.org> References: <20180122120351.22369-1-f4bug@amsat.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::242 Subject: [Qemu-devel] [PATCH v2 1/7] hw/i2c/smbus: use DeviceClass::realize instead of SMBusDeviceClass::init X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Markus Armbruster , Thomas Huth , =?utf-8?q?Philip?= =?utf-8?q?pe_Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" and remove SMBusDeviceClass::init, there are no more users. Signed-off-by: Philippe Mathieu-Daudé --- 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; From patchwork Mon Jan 22 12:03:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 864240 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="WAfbueRq"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zQ9Hz6C88z9s0g for ; Mon, 22 Jan 2018 23:10:55 +1100 (AEDT) Received: from localhost ([::1]:38136 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edaw9-0000bj-SZ for incoming@patchwork.ozlabs.org; Mon, 22 Jan 2018 07:10:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52599) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edapb-0003wx-7q for qemu-devel@nongnu.org; Mon, 22 Jan 2018 07:04:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1edapZ-0000Ex-Kx for qemu-devel@nongnu.org; Mon, 22 Jan 2018 07:04:07 -0500 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:32931) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1edapZ-0000El-Gv for qemu-devel@nongnu.org; Mon, 22 Jan 2018 07:04:05 -0500 Received: by mail-qt0-x241.google.com with SMTP id d8so11428444qtm.0 for ; Mon, 22 Jan 2018 04:04:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=OBXNh7jFdB+soHbcz2TwyuyWNqPZ1PwMALuIbSzt/S0=; b=WAfbueRqxI8vbhV5McA3iH9U82Jjyv1uSfe4yRWUaip7j8qjehcm+soZg1el0Nfnc1 eR89NH307/w/QqIM0BsGYh2f9aPG/qWMlBhdYjb37C3R0Y/jYYZfmDpz9yT3DRww7bV3 uIPSgjqcuFkUGmrxIYJmW4qcKeDU9xhtfFGuPVEwvoxikYEsYRu5BMUAJ/m8q2aA4MMr cfvFIYqa69VjCg4hsnDOCglUeR/HCQu40sBk/HQhk9dqpz6zJ5Ya8wltqzemZlldDBd8 0DxWDTSfQpd5ZjvwEFkH2LiXxXODJNEBXg1FX7Cppst+3yfpZFzIL+SyLXTXzyLmrhWU LDmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=OBXNh7jFdB+soHbcz2TwyuyWNqPZ1PwMALuIbSzt/S0=; b=REe8MKghvt0g+HUVLCV2hTfACkzCzU3qMj5WrqRoZrCdzkTP6NP/7DNe82Ab14H5Lg 2bytmu6qbxWtnaS+MIvuVM9GcfNPtRvVmk9Hxw5QkNyzFCLmvl+kMVhiqtFqUaqNa/N6 xVGPzkxAyz872PeBJmcocLO/6TyTz94mAzEBQGf3LX2kBuHhPirF5NMxjbpuYcfMSPbe JBfsPnuf6qeGvqzgjh/WHxPoaeS5p0btOqJeFkJlUSSCRGMpFuhiK0mjzxTYDvsTdKYb Y7VO1KkMez91SXlp2kbGd1NP3W0MPjAOuPm4IXvAOW5hHf/Ydjxih5ZaXKCr8ufjf1tH SkoA== X-Gm-Message-State: AKwxytfO8DWavm433tc8a0lTt73RQJTjyTFc9Tr8B/rqk1JsZ7VtGt2e fZBK6gPKsl1adIGXFrB0wIw= X-Google-Smtp-Source: AH8x226CMhuAPtA4HZz41raF1Rvo5Ldzn1HnR+ElUBEkygB1jeXS+T3Wa8CfEgiAcLNaNteAr1ID8A== X-Received: by 10.200.81.154 with SMTP id c26mr10602391qtn.129.1516622644897; Mon, 22 Jan 2018 04:04:04 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id 92sm11295356qky.72.2018.01.22.04.04.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 22 Jan 2018 04:04:04 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Eduardo Habkost , Paolo Bonzini Date: Mon, 22 Jan 2018 09:03:46 -0300 Message-Id: <20180122120351.22369-3-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180122120351.22369-1-f4bug@amsat.org> References: <20180122120351.22369-1-f4bug@amsat.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::241 Subject: [Qemu-devel] [PATCH v2 2/7] hw/i2c: use DeviceClass::realize instead of I2CSlaveClass::init X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Thomas Huth , qemu-devel@nongnu.org, Markus Armbruster , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Gerd Hoffmann Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" and remove I2CSlaveClass::init, there are no more users. Signed-off-by: Philippe Mathieu-Daudé --- 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 2ce611d4c8..605cf84e96 100644 --- a/include/hw/i2c/i2c.h +++ b/include/hw/i2c/i2c.h @@ -29,9 +29,6 @@ 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 8bb44a7cc1..1bbae592cb 100644 --- a/hw/audio/wm8750.c +++ b/hw/audio/wm8750.c @@ -618,14 +618,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 @@ -709,7 +707,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 f82e3e6555..8ace416c8f 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 59068f157e..a9802cb5a8 100644 --- a/hw/i2c/core.c +++ b/hw/i2c/core.c @@ -276,18 +276,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; @@ -301,7 +289,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 2340523da0..b3e4099872 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 04e83787d4..3f5e3ca5d0 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 efa3621ac6..dece04a503 100644 --- a/hw/nvram/eeprom_at24c.c +++ b/hw/nvram/eeprom_at24c.c @@ -117,31 +117,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 @@ -179,7 +177,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 eb58c378e0..9cbf0adba8 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; From patchwork Mon Jan 22 12:03:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 864238 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="HRHIq35c"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zQ9Fb5NWwz9s0g for ; Mon, 22 Jan 2018 23:08:51 +1100 (AEDT) Received: from localhost ([::1]:38121 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edau9-0007EZ-QZ for incoming@patchwork.ozlabs.org; Mon, 22 Jan 2018 07:08:49 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52649) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edapg-00041V-3g for qemu-devel@nongnu.org; Mon, 22 Jan 2018 07:04:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1edapc-0000Ge-U2 for qemu-devel@nongnu.org; Mon, 22 Jan 2018 07:04:12 -0500 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:46863) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1edapc-0000GV-Pd for qemu-devel@nongnu.org; Mon, 22 Jan 2018 07:04:08 -0500 Received: by mail-qt0-x242.google.com with SMTP id o35so20000274qtj.13 for ; Mon, 22 Jan 2018 04:04:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=R4Y0EEwYfv73OmkJnXoyQruq5uuVnwczWMuvokw0CaY=; b=HRHIq35ctxb5kKtM08AeLaVWuUBn8G8q2vJNo0dxr2Qu+A/271yhqUb2Vj0tZwhA6m LFMtJZxc3FTBKpH10DFU+8D55ZvxmP9XsuiNK+trPfIuP3cRYE1e4GbDKgXfnIzf0nab /fBG+w2o+M1oJOvvjKZtxyphGhBsdyBW3JXG7LKC1F3hQatWCA8LSKkSowUeSo1aWKXq IknBKbDnZCSTGuHJMA1hxKGI0H7PyyE2s9y7jt1JSw0Nf7tyHZwoxyVWuVw2gJ5iFvfo aSfonBO7R2R3aECVakbxgxoLnSrr99GqMoLOMRYI1xMLdFiJ5bguvdKZcav6lRrdYy95 4+9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=R4Y0EEwYfv73OmkJnXoyQruq5uuVnwczWMuvokw0CaY=; b=Uw95jJXiQ2fLNerrTJ9SW+TCSJDACs8/2wECgWkhlZlXMyl0fs1us61Z0dzD/l8VK+ mLZIdJTTwXbabxK4qD+j6/MeVs0iWiiiibwr3GkypO5ImMk+Da6bbXlpfPgiZRBtXn0+ NBgRx2FEkrKSZ2c7YZEj7i2i6j7+p3xFJbrbsZOhgXmwxaxmQTPzCyx0OTwI2co2XyyV 8/GaDW8Pt0ftwbn8eMlGMyxOj+DWDOHkCr4vBcVCpz1QSuin+96AeeoJGAGMLBuXn2y/ szJGVu/j0jXYwHfwGtxeWDpWIGL3xfTgv9QYolPx+P7qnJDAxIBmAP81kN/WoNn2Xh4j G8gw== X-Gm-Message-State: AKwxyteayUSafweRVG04VS7ke6fWGX3qAZ7g8j4EiYFJHDQts4i87tMd XZ6hAZK5611z83CzduY89bQ= X-Google-Smtp-Source: AH8x226wapn10awef/gQAME5/I4f/S2CBWGQRe4iPAZVjtS4CAm3Q+EKAb2OirwPrEuVrznpJMQq1A== X-Received: by 10.200.47.108 with SMTP id k41mr10435195qta.151.1516622648218; Mon, 22 Jan 2018 04:04:08 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id 92sm11295356qky.72.2018.01.22.04.04.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 22 Jan 2018 04:04:07 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Eduardo Habkost , Paolo Bonzini Date: Mon, 22 Jan 2018 09:03:47 -0300 Message-Id: <20180122120351.22369-4-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180122120351.22369-1-f4bug@amsat.org> References: <20180122120351.22369-1-f4bug@amsat.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::242 Subject: [Qemu-devel] [PATCH v2 3/7] usb-ccid: convert CCIDCardClass::init -> realize X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Thomas Huth , qemu-devel@nongnu.org, Markus Armbruster , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Gerd Hoffmann Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé --- hw/usb/ccid.h | 9 +++++-- hw/usb/ccid-card-emulated.c | 45 ++++++++++++++++++---------------- hw/usb/ccid-card-passthru.c | 10 ++++---- hw/usb/dev-smartcard-reader.c | 57 +++++++++++++++---------------------------- 4 files changed, 56 insertions(+), 65 deletions(-) diff --git a/hw/usb/ccid.h b/hw/usb/ccid.h index 1f070116d6..11056b91ee 100644 --- a/hw/usb/ccid.h +++ b/hw/usb/ccid.h @@ -28,20 +28,25 @@ typedef struct CCIDCardInfo CCIDCardInfo; * into the smartcard device (hw/ccid-card-*.c) */ typedef struct CCIDCardClass { + /*< private >*/ DeviceClass parent_class; + /*< public >*/ + + void (*realize)(CCIDCardState *card, Error **errp); + void (*unrealize)(CCIDCardState *card, Error **errp); const uint8_t *(*get_atr)(CCIDCardState *card, uint32_t *len); void (*apdu_from_guest)(CCIDCardState *card, const uint8_t *apdu, uint32_t len); - void (*exitfn)(CCIDCardState *card); - int (*initfn)(CCIDCardState *card); } CCIDCardClass; /* * state of the CCID Card device (i.e. hw/ccid-card-*.c) */ struct CCIDCardState { + /*< private >*/ DeviceState qdev; + /*< public >*/ uint32_t slot; /* For future use with multiple slot reader. */ }; diff --git a/hw/usb/ccid-card-emulated.c b/hw/usb/ccid-card-emulated.c index e646eb243b..a2b608a953 100644 --- a/hw/usb/ccid-card-emulated.c +++ b/hw/usb/ccid-card-emulated.c @@ -27,6 +27,7 @@ */ #include "qemu/osdep.h" +#include "qapi/error.h" #include #include #include @@ -480,7 +481,7 @@ static uint32_t parse_enumeration(char *str, return ret; } -static int emulated_initfn(CCIDCardState *base) +static void emulated_realize(CCIDCardState *base, Error **errp) { EmulatedState *card = EMULATED_CCID_CARD(base); VCardEmulError ret; @@ -495,7 +496,8 @@ static int emulated_initfn(CCIDCardState *base) card->reader = NULL; card->quit_apdu_thread = 0; if (init_event_notifier(card) < 0) { - return -1; + error_setg(errp, TYPE_EMULATED_CCID ": event notifier creation failed"); + return; } card->backend = 0; @@ -505,11 +507,12 @@ static int emulated_initfn(CCIDCardState *base) } if (card->backend == 0) { - printf("backend must be one of:\n"); + error_setg(errp, TYPE_EMULATED_CCID ": no backend specified."); + error_append_hint(errp, "backend must be one of:\n"); for (ptable = backend_enum_table; ptable->name != NULL; ++ptable) { - printf("%s\n", ptable->name); + error_append_hint(errp, "%s\n", ptable->name); } - return -1; + return; } /* TODO: a passthru backened that works on local machine. third card type?*/ @@ -517,37 +520,37 @@ static int emulated_initfn(CCIDCardState *base) if (card->cert1 != NULL && card->cert2 != NULL && card->cert3 != NULL) { ret = emulated_initialize_vcard_from_certificates(card); } else { - printf("%s: you must provide all three certs for" - " certificates backend\n", TYPE_EMULATED_CCID); - return -1; + error_setg(errp, TYPE_EMULATED_CCID ": you must provide all three " + "certs for certificates backend"); + return; } } else { if (card->backend != BACKEND_NSS_EMULATED) { - printf("%s: bad backend specified. The options are:\n%s (default)," - " %s.\n", TYPE_EMULATED_CCID, BACKEND_NSS_EMULATED_NAME, - BACKEND_CERTIFICATES_NAME); - return -1; + error_setg(errp, TYPE_EMULATED_CCID ": no backend specified."); + error_append_hint(errp, "The options are: %s (default), %s.", + BACKEND_NSS_EMULATED_NAME, + BACKEND_CERTIFICATES_NAME); + return; } if (card->cert1 != NULL || card->cert2 != NULL || card->cert3 != NULL) { - printf("%s: unexpected cert parameters to nss emulated backend\n", - TYPE_EMULATED_CCID); - return -1; + error_setg(errp, TYPE_EMULATED_CCID ": unexpected cert parameters " + "to nss emulated backend"); + return; } /* default to mirroring the local hardware readers */ ret = wrap_vcard_emul_init(NULL); } if (ret != VCARD_EMUL_OK) { - printf("%s: failed to initialize vcard\n", TYPE_EMULATED_CCID); - return -1; + error_setg(errp, TYPE_EMULATED_CCID ": failed to initialize vcard"); + return; } qemu_thread_create(&card->event_thread_id, "ccid/event", event_thread, card, QEMU_THREAD_JOINABLE); qemu_thread_create(&card->apdu_thread_id, "ccid/apdu", handle_apdu_thread, card, QEMU_THREAD_JOINABLE); - return 0; } -static void emulated_exitfn(CCIDCardState *base) +static void emulated_unrealize(CCIDCardState *base, Error **errp) { EmulatedState *card = EMULATED_CCID_CARD(base); VEvent *vevent = vevent_new(VEVENT_LAST, NULL, NULL); @@ -581,8 +584,8 @@ static void emulated_class_initfn(ObjectClass *klass, void *data) DeviceClass *dc = DEVICE_CLASS(klass); CCIDCardClass *cc = CCID_CARD_CLASS(klass); - cc->initfn = emulated_initfn; - cc->exitfn = emulated_exitfn; + cc->realize = emulated_realize; + cc->unrealize = emulated_unrealize; cc->get_atr = emulated_get_atr; cc->apdu_from_guest = emulated_apdu_from_guest; set_bit(DEVICE_CATEGORY_INPUT, dc->categories); diff --git a/hw/usb/ccid-card-passthru.c b/hw/usb/ccid-card-passthru.c index 117711862e..844ad2f878 100644 --- a/hw/usb/ccid-card-passthru.c +++ b/hw/usb/ccid-card-passthru.c @@ -9,6 +9,7 @@ */ #include "qemu/osdep.h" +#include "qapi/error.h" #include #include "chardev/char-fe.h" #include "qemu/error-report.h" @@ -337,7 +338,7 @@ static const uint8_t *passthru_get_atr(CCIDCardState *base, uint32_t *len) return card->atr; } -static int passthru_initfn(CCIDCardState *base) +static void passthru_realize(CCIDCardState *base, Error **errp) { PassthruState *card = PASSTHRU_CCID_CARD(base); @@ -351,15 +352,14 @@ static int passthru_initfn(CCIDCardState *base) ccid_card_vscard_event, NULL, card, NULL, true); ccid_card_vscard_send_init(card); } else { - error_report("missing chardev"); - return -1; + error_setg(errp, "missing chardev"); + return; } card->debug = parse_debug_env("QEMU_CCID_PASSTHRU_DEBUG", D_VERBOSE, card->debug); assert(sizeof(DEFAULT_ATR) <= MAX_ATR_SIZE); memcpy(card->atr, DEFAULT_ATR, sizeof(DEFAULT_ATR)); card->atr_length = sizeof(DEFAULT_ATR); - return 0; } static VMStateDescription passthru_vmstate = { @@ -387,7 +387,7 @@ static void passthru_class_initfn(ObjectClass *klass, void *data) DeviceClass *dc = DEVICE_CLASS(klass); CCIDCardClass *cc = CCID_CARD_CLASS(klass); - cc->initfn = passthru_initfn; + cc->realize = passthru_realize; cc->get_atr = passthru_get_atr; cc->apdu_from_guest = passthru_apdu_from_guest; set_bit(DEVICE_CATEGORY_INPUT, dc->categories); diff --git a/hw/usb/dev-smartcard-reader.c b/hw/usb/dev-smartcard-reader.c index e334d3be11..e36b190118 100644 --- a/hw/usb/dev-smartcard-reader.c +++ b/hw/usb/dev-smartcard-reader.c @@ -37,7 +37,6 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu-common.h" -#include "qemu/error-report.h" #include "hw/usb.h" #include "hw/usb/desc.h" @@ -500,26 +499,6 @@ static void ccid_card_apdu_from_guest(CCIDCardState *card, } } -static void ccid_card_exitfn(CCIDCardState *card) -{ - CCIDCardClass *cc = CCID_CARD_GET_CLASS(card); - - if (cc->exitfn) { - cc->exitfn(card); - } - -} - -static int ccid_card_initfn(CCIDCardState *card) -{ - CCIDCardClass *cc = CCID_CARD_GET_CLASS(card); - - if (cc->initfn) { - return cc->initfn(card); - } - return 0; -} - static bool ccid_has_pending_answers(USBCCIDState *s) { return s->pending_answers_num > 0; @@ -1281,41 +1260,45 @@ void ccid_card_card_inserted(CCIDCardState *card) ccid_on_slot_change(s, true); } -static int ccid_card_exit(DeviceState *qdev) +static void ccid_card_unrealize(DeviceState *qdev, Error **errp) { CCIDCardState *card = CCID_CARD(qdev); + CCIDCardClass *cc = CCID_CARD_GET_CLASS(card); USBDevice *dev = USB_DEVICE(qdev->parent_bus->parent); USBCCIDState *s = USB_CCID_DEV(dev); if (ccid_card_inserted(s)) { ccid_card_card_removed(card); } - ccid_card_exitfn(card); + if (cc->unrealize) { + cc->unrealize(card, errp); + } s->card = NULL; - return 0; } -static int ccid_card_init(DeviceState *qdev) +static void ccid_card_realize(DeviceState *qdev, Error **errp) { CCIDCardState *card = CCID_CARD(qdev); + CCIDCardClass *cc = CCID_CARD_GET_CLASS(card); USBDevice *dev = USB_DEVICE(qdev->parent_bus->parent); USBCCIDState *s = USB_CCID_DEV(dev); - int ret = 0; if (card->slot != 0) { - warn_report("usb-ccid supports one slot, can't add %d", - card->slot); - return -1; + error_setg(errp, "usb-ccid supports one slot, can't add %d", + card->slot); + return; } if (s->card != NULL) { - warn_report("usb-ccid card already full, not adding"); - return -1; + error_setg(errp, "usb-ccid card already full, not adding"); + return; } - ret = ccid_card_initfn(card); - if (ret == 0) { - s->card = card; + if (cc->realize) { + cc->realize(card, errp); + if (errp && *errp) { + return; + } } - return ret; + s->card = card; } static void ccid_realize(USBDevice *dev, Error **errp) @@ -1477,8 +1460,8 @@ static void ccid_card_class_init(ObjectClass *klass, void *data) { DeviceClass *k = DEVICE_CLASS(klass); k->bus_type = TYPE_CCID_BUS; - k->init = ccid_card_init; - k->exit = ccid_card_exit; + k->realize = ccid_card_realize; + k->unrealize = ccid_card_unrealize; k->props = ccid_props; } From patchwork Mon Jan 22 12:03:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 864241 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="YDCBzOMG"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zQ9J20Yd7z9s0g for ; Mon, 22 Jan 2018 23:10:58 +1100 (AEDT) Received: from localhost ([::1]:38139 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edawC-0000cm-3Q for incoming@patchwork.ozlabs.org; Mon, 22 Jan 2018 07:10:56 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52669) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edapi-00043U-Be for qemu-devel@nongnu.org; Mon, 22 Jan 2018 07:04:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1edapg-0000In-UK for qemu-devel@nongnu.org; Mon, 22 Jan 2018 07:04:14 -0500 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:42919) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1edapg-0000Ie-PX; Mon, 22 Jan 2018 07:04:12 -0500 Received: by mail-qt0-x243.google.com with SMTP id c2so20028104qtn.9; Mon, 22 Jan 2018 04:04:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=S3MMw5fH4yl6Egj/s6A64Zt2BXJ/wZRfvP76ZSvx6QQ=; b=YDCBzOMGGUsm0v2zlFttbURZ7wH/i2Ni7pn9d9DTiKebOE8rszr6juWd/J6us0iXEf BSj4Yu1WjH1mzXppUbwwtXScydqk/CCcxNtmEm1tJXkP/yZs7WYn5S6IDgFdKL2/wVFi Sef3dm30OE1eDxXN+SC0SnVXOLvRhTGxWjn4+tOJ6TNCpTS/Vl5mJQXrgmK1sM41NV64 KakncbzNSGLu+8Wh0qq3n58X3Vahg7F5rBbxf0DUcdAgVvnMGVGsxo7xa+Em6WiRIBs3 f9SqeSOQU3abrqD/5zfJQbXWpmS0nYnC0ctpFKKyStMnlOE/ew/37rC4/dNjnG8NGAX5 8BBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=S3MMw5fH4yl6Egj/s6A64Zt2BXJ/wZRfvP76ZSvx6QQ=; b=mBJkLzj0M5pA4vrvRhQx3hlHwYaPcLNO3I9IbxQiIgShUaNoXp6aKcGr6YYQd4ifl7 WyBM/A2NyG1YYJP4NfEXGf26kws68dI1d8rTIxeYEta2L2ecUgryz8chD97AgwjBOuwG 8wqxfJssswagm8YUrWaOMz06qlx8vQkkL6ppIhTm/X0eQmUUiRA/krAaWLMLoBACF0/i KzOwGboTSLAyyaNzWxPU7Aip4BSfHmose9pVvBsUYyOFk7xFPGWRziBc+Dllmhol7Qw7 bxaj4lHRvD/tgsuR9vNGp4Nvf8yjkPFpG2yz8jH6xHvYWTF/+dfwdzBQRrRB8hHU3e7d wbqg== X-Gm-Message-State: AKwxytdVLLRIi0338t4aW6d+8bCVrQVNK6ZnYtRmgbTWfYdAxOzEYopd 3qMTx6Objoa55imolb58viw= X-Google-Smtp-Source: AH8x2250TqAknbxZYG2JXqvrPWSWPMFMSBS2z5BixaAQ810axCAVceKcdpBoZN3wziGGx3aZ4OnXRw== X-Received: by 10.55.76.17 with SMTP id z17mr10102470qka.145.1516622652296; Mon, 22 Jan 2018 04:04:12 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id 92sm11295356qky.72.2018.01.22.04.04.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 22 Jan 2018 04:04:11 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Eduardo Habkost , Paolo Bonzini Date: Mon, 22 Jan 2018 09:03:48 -0300 Message-Id: <20180122120351.22369-5-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180122120351.22369-1-f4bug@amsat.org> References: <20180122120351.22369-1-f4bug@amsat.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PATCH v2 4/7] virtio-ccw: convert VirtIOCCWDeviceClass::exit -> unrealize X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Thomas Huth , "Michael S. Tsirkin" , qemu-devel@nongnu.org, Cornelia Huck , Markus Armbruster , =?utf-8?q?Philippe_Mathieu-Dau?= =?utf-8?b?ZMOp?= , Christian Borntraeger , Alexander Graf , "open list:virtio-ccw" , Richard Henderson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Farhan Ali Reviewed-by: Cornelia Huck --- hw/s390x/virtio-ccw.h | 2 +- hw/s390x/virtio-ccw.c | 35 +++++++++++++++++------------------ 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/hw/s390x/virtio-ccw.h b/hw/s390x/virtio-ccw.h index 3905f3a3d6..2fc513001e 100644 --- a/hw/s390x/virtio-ccw.h +++ b/hw/s390x/virtio-ccw.h @@ -76,7 +76,7 @@ typedef struct VirtioCcwDevice VirtioCcwDevice; typedef struct VirtIOCCWDeviceClass { CCWDeviceClass parent_class; void (*realize)(VirtioCcwDevice *dev, Error **errp); - int (*exit)(VirtioCcwDevice *dev); + void (*unrealize)(VirtioCcwDevice *dev, Error **errp); } VirtIOCCWDeviceClass; /* Performance improves when virtqueue kick processing is decoupled from the diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c index 38f6a8afc9..a71c3feeb5 100644 --- a/hw/s390x/virtio-ccw.c +++ b/hw/s390x/virtio-ccw.c @@ -751,7 +751,7 @@ out_err: g_free(sch); } -static int virtio_ccw_exit(VirtioCcwDevice *dev) +static void virtio_ccw_unrealize(VirtioCcwDevice *dev, Error **errp) { CcwDevice *ccw_dev = CCW_DEVICE(dev); SubchDev *sch = ccw_dev->sch; @@ -764,7 +764,6 @@ static int virtio_ccw_exit(VirtioCcwDevice *dev) release_indicator(&dev->routes.adapter, dev->indicators); dev->indicators = NULL; } - return 0; } static void virtio_ccw_net_realize(VirtioCcwDevice *ccw_dev, Error **errp) @@ -1343,7 +1342,7 @@ static void virtio_ccw_net_class_init(ObjectClass *klass, void *data) VirtIOCCWDeviceClass *k = VIRTIO_CCW_DEVICE_CLASS(klass); k->realize = virtio_ccw_net_realize; - k->exit = virtio_ccw_exit; + k->unrealize = virtio_ccw_unrealize; dc->reset = virtio_ccw_reset; dc->props = virtio_ccw_net_properties; set_bit(DEVICE_CATEGORY_NETWORK, dc->categories); @@ -1371,7 +1370,7 @@ static void virtio_ccw_blk_class_init(ObjectClass *klass, void *data) VirtIOCCWDeviceClass *k = VIRTIO_CCW_DEVICE_CLASS(klass); k->realize = virtio_ccw_blk_realize; - k->exit = virtio_ccw_exit; + k->unrealize = virtio_ccw_unrealize; dc->reset = virtio_ccw_reset; dc->props = virtio_ccw_blk_properties; set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); @@ -1399,7 +1398,7 @@ static void virtio_ccw_serial_class_init(ObjectClass *klass, void *data) VirtIOCCWDeviceClass *k = VIRTIO_CCW_DEVICE_CLASS(klass); k->realize = virtio_ccw_serial_realize; - k->exit = virtio_ccw_exit; + k->unrealize = virtio_ccw_unrealize; dc->reset = virtio_ccw_reset; dc->props = virtio_ccw_serial_properties; set_bit(DEVICE_CATEGORY_INPUT, dc->categories); @@ -1427,7 +1426,7 @@ static void virtio_ccw_balloon_class_init(ObjectClass *klass, void *data) VirtIOCCWDeviceClass *k = VIRTIO_CCW_DEVICE_CLASS(klass); k->realize = virtio_ccw_balloon_realize; - k->exit = virtio_ccw_exit; + k->unrealize = virtio_ccw_unrealize; dc->reset = virtio_ccw_reset; dc->props = virtio_ccw_balloon_properties; set_bit(DEVICE_CATEGORY_MISC, dc->categories); @@ -1455,7 +1454,7 @@ static void virtio_ccw_scsi_class_init(ObjectClass *klass, void *data) VirtIOCCWDeviceClass *k = VIRTIO_CCW_DEVICE_CLASS(klass); k->realize = virtio_ccw_scsi_realize; - k->exit = virtio_ccw_exit; + k->unrealize = virtio_ccw_unrealize; dc->reset = virtio_ccw_reset; dc->props = virtio_ccw_scsi_properties; set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); @@ -1482,7 +1481,7 @@ static void vhost_ccw_scsi_class_init(ObjectClass *klass, void *data) VirtIOCCWDeviceClass *k = VIRTIO_CCW_DEVICE_CLASS(klass); k->realize = vhost_ccw_scsi_realize; - k->exit = virtio_ccw_exit; + k->unrealize = virtio_ccw_unrealize; dc->reset = virtio_ccw_reset; dc->props = vhost_ccw_scsi_properties; set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); @@ -1519,7 +1518,7 @@ static void virtio_ccw_rng_class_init(ObjectClass *klass, void *data) VirtIOCCWDeviceClass *k = VIRTIO_CCW_DEVICE_CLASS(klass); k->realize = virtio_ccw_rng_realize; - k->exit = virtio_ccw_exit; + k->unrealize = virtio_ccw_unrealize; dc->reset = virtio_ccw_reset; dc->props = virtio_ccw_rng_properties; set_bit(DEVICE_CATEGORY_MISC, dc->categories); @@ -1557,7 +1556,7 @@ static void virtio_ccw_crypto_class_init(ObjectClass *klass, void *data) VirtIOCCWDeviceClass *k = VIRTIO_CCW_DEVICE_CLASS(klass); k->realize = virtio_ccw_crypto_realize; - k->exit = virtio_ccw_exit; + k->unrealize = virtio_ccw_unrealize; dc->reset = virtio_ccw_reset; dc->props = virtio_ccw_crypto_properties; set_bit(DEVICE_CATEGORY_MISC, dc->categories); @@ -1595,7 +1594,7 @@ static void virtio_ccw_gpu_class_init(ObjectClass *klass, void *data) VirtIOCCWDeviceClass *k = VIRTIO_CCW_DEVICE_CLASS(klass); k->realize = virtio_ccw_gpu_realize; - k->exit = virtio_ccw_exit; + k->unrealize = virtio_ccw_unrealize; dc->reset = virtio_ccw_reset; dc->props = virtio_ccw_gpu_properties; dc->hotpluggable = false; @@ -1624,7 +1623,7 @@ static void virtio_ccw_input_class_init(ObjectClass *klass, void *data) VirtIOCCWDeviceClass *k = VIRTIO_CCW_DEVICE_CLASS(klass); k->realize = virtio_ccw_input_realize; - k->exit = virtio_ccw_exit; + k->unrealize = virtio_ccw_unrealize; dc->reset = virtio_ccw_reset; dc->props = virtio_ccw_input_properties; set_bit(DEVICE_CATEGORY_INPUT, dc->categories); @@ -1704,12 +1703,12 @@ static void virtio_ccw_busdev_realize(DeviceState *dev, Error **errp) virtio_ccw_device_realize(_dev, errp); } -static int virtio_ccw_busdev_exit(DeviceState *dev) +static void virtio_ccw_busdev_unrealize(DeviceState *dev, Error **errp) { VirtioCcwDevice *_dev = (VirtioCcwDevice *)dev; - VirtIOCCWDeviceClass *_info = VIRTIO_CCW_DEVICE_GET_CLASS(dev); + VirtIOCCWDeviceClass *k = VIRTIO_CCW_DEVICE_GET_CLASS(dev); - return _info->exit(_dev); + k->unrealize(_dev, errp); } static void virtio_ccw_busdev_unplug(HotplugHandler *hotplug_dev, @@ -1727,7 +1726,7 @@ static void virtio_ccw_device_class_init(ObjectClass *klass, void *data) k->unplug = virtio_ccw_busdev_unplug; dc->realize = virtio_ccw_busdev_realize; - dc->exit = virtio_ccw_busdev_exit; + dc->unrealize = virtio_ccw_busdev_unrealize; dc->bus_type = TYPE_VIRTUAL_CSS_BUS; } @@ -1803,7 +1802,7 @@ static void virtio_ccw_9p_class_init(ObjectClass *klass, void *data) DeviceClass *dc = DEVICE_CLASS(klass); VirtIOCCWDeviceClass *k = VIRTIO_CCW_DEVICE_CLASS(klass); - k->exit = virtio_ccw_exit; + k->unrealize = virtio_ccw_unrealize; k->realize = virtio_ccw_9p_realize; dc->reset = virtio_ccw_reset; dc->props = virtio_ccw_9p_properties; @@ -1852,7 +1851,7 @@ static void vhost_vsock_ccw_class_init(ObjectClass *klass, void *data) VirtIOCCWDeviceClass *k = VIRTIO_CCW_DEVICE_CLASS(klass); k->realize = vhost_vsock_ccw_realize; - k->exit = virtio_ccw_exit; + k->unrealize = virtio_ccw_unrealize; set_bit(DEVICE_CATEGORY_MISC, dc->categories); dc->props = vhost_vsock_ccw_properties; dc->reset = virtio_ccw_reset; From patchwork Mon Jan 22 12:03:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 864237 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="hHVd0roN"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zQ9DY1n7Kz9s0g for ; Mon, 22 Jan 2018 23:07:57 +1100 (AEDT) Received: from localhost ([::1]:38089 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edatH-0006Uf-19 for incoming@patchwork.ozlabs.org; Mon, 22 Jan 2018 07:07:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52684) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edapk-00044x-QH for qemu-devel@nongnu.org; Mon, 22 Jan 2018 07:04:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1edapj-0000Jw-LU for qemu-devel@nongnu.org; Mon, 22 Jan 2018 07:04:16 -0500 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:40210) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1edapj-0000Jn-Go for qemu-devel@nongnu.org; Mon, 22 Jan 2018 07:04:15 -0500 Received: by mail-qt0-x241.google.com with SMTP id s39so20044789qth.7 for ; Mon, 22 Jan 2018 04:04:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=YVY+KRXx/zqkeeY62jHtBGTo4R5Ilz7voW1TvxymbpI=; b=hHVd0roN5cOQMULVQkrzTw9pDUkjraCCQ+zzxE3w6ArpWxKPfHuyLHhBGhXaov6fHN ScXJFK5y1pN9QkibHkPO/2as8LThiENuprOFyBA81Gpse9wJXzg3BhObramA/6pXjYw3 Q5H02SiKRPlZeLGgMqnCgZDkFf1XSN8kckoX5np8/oM3CM/B0QXUXW1bHTSLsZsz4PNz PYBvihOwoctNnjBKm9qQ0bzya8DA/jMjeLgT+KBfmWaeB1E+w3qLN4ns/2jLFHpjYGZd R1sX/vyF8yn6M3qzB7PnF7OnnCP0Sy7U18wSd8maTcUJezZo+V/a2ggegmbMGc20T03q CtFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=YVY+KRXx/zqkeeY62jHtBGTo4R5Ilz7voW1TvxymbpI=; b=SMUXWrcwc+a4fhXccEq70SaJ6Obw/Ic4RemMqcUPzVN8H08fMIB88165D4n3au5X+8 WxmiFocwZbl7A+PwQComxd7z54iE+usRFIKp5/q7iOoGORsaqwNb2VoQPmMKnwAmLZtR MVvDvAUU1n3I7VZkSx6Q00WmMdM96Nsz1IGnqgKOJg4SVmcTWntZjohwqTUm/lvOamSp VxVNmAZpSnq6rBt2lkW+E1MYgmOADoxNKN99GhtHgfTuQXAx0aTCC0Q1kfFlzRtPFgGf h+e7NS2ZLkkUO3lw4+Aopn0a274VQPIrxR6vqteStWFjpq24UiIMlbvEziZEMX5Ir0hf +P2g== X-Gm-Message-State: AKwxyteS8FOki/uizvgtiKlcWt3RG6H9sx1EIyftm+9t07wQwxex/xOR fjtVA91HqM+zPUQSQMxb44YgwjUJ X-Google-Smtp-Source: AH8x226/R5ZMrfkxhDGvgddaaTy7WV8wioQ7vlp3yqn5eCASYsxWVTlhZvRVB+erML0QT7cFwL/uYA== X-Received: by 10.200.62.129 with SMTP id y1mr9614202qtf.21.1516622655005; Mon, 22 Jan 2018 04:04:15 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id 92sm11295356qky.72.2018.01.22.04.04.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 22 Jan 2018 04:04:14 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Eduardo Habkost , Paolo Bonzini Date: Mon, 22 Jan 2018 09:03:49 -0300 Message-Id: <20180122120351.22369-6-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180122120351.22369-1-f4bug@amsat.org> References: <20180122120351.22369-1-f4bug@amsat.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::241 Subject: [Qemu-devel] [PATCH v2 5/7] qdev: simplify the SysBusDeviceClass::init path X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Markus Armbruster , Thomas Huth , =?utf-8?q?Philip?= =?utf-8?q?pe_Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" 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é --- 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 51473eee7b..fd386b5d49 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -30,7 +30,6 @@ typedef enum DeviceCategory { DEVICE_CATEGORY_MAX } DeviceCategory; -typedef int (*qdev_initfn)(DeviceState *dev); typedef int (*qdev_event)(DeviceState *dev); typedef void (*qdev_resetfn)(DeviceState *dev); typedef void (*DeviceRealize)(DeviceState *dev, Error **errp); @@ -125,7 +124,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 f739753e3a..1a985a511e 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -219,19 +219,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); @@ -1139,7 +1126,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, From patchwork Mon Jan 22 12:03:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 864242 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="fK3i1JaU"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zQ9MK53WGz9s7F for ; Mon, 22 Jan 2018 23:13:49 +1100 (AEDT) Received: from localhost ([::1]:38228 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edayx-000399-Ms for incoming@patchwork.ozlabs.org; Mon, 22 Jan 2018 07:13:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52747) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edapp-0004AA-Nz for qemu-devel@nongnu.org; Mon, 22 Jan 2018 07:04:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1edapm-0000LZ-Kp for qemu-devel@nongnu.org; Mon, 22 Jan 2018 07:04:21 -0500 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:46043) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1edapm-0000LD-HL for qemu-devel@nongnu.org; Mon, 22 Jan 2018 07:04:18 -0500 Received: by mail-qt0-x241.google.com with SMTP id x27so20016035qtm.12 for ; Mon, 22 Jan 2018 04:04:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=O+EXAjdJgGNa3BlbqkjZZnF4RzU+A9UTz9rk21yiCDE=; b=fK3i1JaUWfqQJ7tQt/b3hmlwkZ5T7itA8+TdvTZtlKDtTRi+EB/9BzCZrY45onlxVu o3cdj/+mZebRbHl1+HBppLHdnbplT6QkNDpIuuj+gZ5jBy56PQU9pXdHVTcoDtYk4EPS rYKQbflq/Z2tzK6Hgnwa8YQUpyHnuzdkSyXamcCfNCcwRhhHP06DPrby0bCEa7p8fTMu 9uCzX16dkKU5PUi4owTbl4A5GzdztCSpuCPLumj7gED9vDtAohWZwLFBe0t3WBhA5gKC uovaEqemTLnveRzeVq+x0bc2TxfcN0ygDkAk3BPc1ScB0ZgOXo7H275z07+SR2EOfllB 0akA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=O+EXAjdJgGNa3BlbqkjZZnF4RzU+A9UTz9rk21yiCDE=; b=PdhkZY/DdBwMNucXTkj/ldKvCARDSLD/SwyXBEnhMD/gXYT40++K8E7gqwnNgAhtj3 AHLbfWgJzVuKN8xNUzhqNkcaneBJ4R4/kp6Y6PdLAFv5Ad8A3m7tUmSNBd0VuDsagiV6 ZVj/Qxnh1pe/Gp2xlKFxo/lLieFMh17BRIRA3TXLUq5APIUsZAtah8KRQFLly86XAbGi ZlKcE9m2kGYZ5b1EkmnbP905xI3J7eqfkR76/unBX8Ya0cPnx/cRj361r6DJYmHdhSCw h6QP5je+J3e0sMpNUYRmIXO//SAVbYKN2w0TLXgPQDOruhMtANhT2dRUP05880QzfwWF BDsg== X-Gm-Message-State: AKwxytc2pcjiCipft0rdfLjagxFhCge6Fr2BxO0JxaRA5ZBYYA9PALwC 9GYqiY+lck3mOn4CwATb+gNLQd0B X-Google-Smtp-Source: AH8x225Ng8PzVIU75auV+toDwL9Tg3S9p6sYb42Zd2Vf7g+eXPYjDCRoKF40SO5P30Kkwt62TxSqQQ== X-Received: by 10.200.81.154 with SMTP id c26mr10603469qtn.129.1516622657814; Mon, 22 Jan 2018 04:04:17 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id 92sm11295356qky.72.2018.01.22.04.04.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 22 Jan 2018 04:04:17 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Eduardo Habkost , Paolo Bonzini Date: Mon, 22 Jan 2018 09:03:50 -0300 Message-Id: <20180122120351.22369-7-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180122120351.22369-1-f4bug@amsat.org> References: <20180122120351.22369-1-f4bug@amsat.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::241 Subject: [Qemu-devel] [PATCH v2 6/7] qdev: remove DeviceClass::exit X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Markus Armbruster , Thomas Huth , =?utf-8?q?Philip?= =?utf-8?q?pe_Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" it has no users. Signed-off-by: Philippe Mathieu-Daudé --- 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 fd386b5d49..0bcba3b785 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -30,7 +30,6 @@ typedef enum DeviceCategory { DEVICE_CATEGORY_MAX } DeviceCategory; -typedef int (*qdev_event)(DeviceState *dev); typedef void (*qdev_resetfn)(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_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 1a985a511e..0ee86d2db8 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -219,19 +219,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) { @@ -1126,7 +1113,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() / From patchwork Mon Jan 22 12:03:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 864243 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="mmrnW2fK"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zQ9Nh0XhNz9s7F for ; Mon, 22 Jan 2018 23:15:00 +1100 (AEDT) Received: from localhost ([::1]:38271 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edb05-0004Af-Ux for incoming@patchwork.ozlabs.org; Mon, 22 Jan 2018 07:14:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52763) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1edapq-0004AZ-7G for qemu-devel@nongnu.org; Mon, 22 Jan 2018 07:04:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1edapp-0000Ml-Dw for qemu-devel@nongnu.org; Mon, 22 Jan 2018 07:04:22 -0500 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:42921) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1edapp-0000Me-Ac for qemu-devel@nongnu.org; Mon, 22 Jan 2018 07:04:21 -0500 Received: by mail-qt0-x243.google.com with SMTP id c2so20029069qtn.9 for ; Mon, 22 Jan 2018 04:04:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Ozmps/O4WVQDYNDd5sO5z1LnUPOppPOtMx2ZPuH3LmY=; b=mmrnW2fKMyudQ+0Ds0BHZ0BEkvVQLizr4fUYFLOqHW87e1rBMv1uPEmvgQOl+inivO X2vEO/j5sOq4NVmW6YBlfMQIW3MccgGH2FJ1l0M3He2LqO1thT39Fm/Hkg1O602m+vxu Fq6Y+GBx9v8oSnottjMCtk1gXpzITbZW9kj3ehGGJXQLo7Mze8JEfrNWXgfv7CR1qs79 qwLfZUOKOG5s4LLOdcQx264z/dfixNQzOBXLbvZUDgTobF5zUyBPtD9kBtJ26drf5u0P 3vEy+VxrKeAaMiaHe+61ot3CUc+ja1q30l6y05PyJmb36rtNiIhQMj/2sLKgW19nCCaL 4hFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=Ozmps/O4WVQDYNDd5sO5z1LnUPOppPOtMx2ZPuH3LmY=; b=l7LA7EvabTien5Xh7BPGTc9KOku/iK6Itle8TNpOTzrZask5q1nVkyau9MVV2SIHSM VxjqhDv5B36SfWIjLsz/m9Vet/2gxXyLbgBRGv4mxI5zIKZBYcRtDTTrcgE6zd3qj6Iu fCjzq/SAy6BhKwpcyNkG+P39yYL46mxb/HBarQVRuC/KviRMnoA80TZR+VKWvavD2QRO BRfs1KQBFOpz0n66j78rJuumWhNAlqKRfnFs2cN6FmD6MqCW1j5IJ24gK5xy+oANy3Rb XT+DzvyFPOnjnIOMWsBtNrWuQoJEPMukdHLfm4bwPC1IPSTYx1AuVpIIpXb03QpMMO4X WWaw== X-Gm-Message-State: AKwxytdSbJxKm2PU+NRZB7QGnjMiQ4z06T1G1fKXU+nbydbUB8zDFJGl 4uAnCEVK/Uu5tBaAFn44ASY= X-Google-Smtp-Source: AH8x224UhYkzALRV/X+8oS6got7vbLE3WYxWbf9paXZEkHfaQymR/CF17lrMo+N0j9LY1s5HIhDfcQ== X-Received: by 10.55.161.193 with SMTP id k184mr9603530qke.116.1516622660891; Mon, 22 Jan 2018 04:04:20 -0800 (PST) Received: from x1.local ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id 92sm11295356qky.72.2018.01.22.04.04.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 22 Jan 2018 04:04:20 -0800 (PST) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Eduardo Habkost , Paolo Bonzini Date: Mon, 22 Jan 2018 09:03:51 -0300 Message-Id: <20180122120351.22369-8-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180122120351.22369-1-f4bug@amsat.org> References: <20180122120351.22369-1-f4bug@amsat.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PATCH v2 7/7] qdev: rename typedef qdev_resetfn() -> DeviceReset() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Markus Armbruster , Thomas Huth , =?utf-8?q?Philip?= =?utf-8?q?pe_Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" following the DeviceRealize and DeviceUnrealize typedefs, this unify a bit the QOM API. Signed-off-by: Philippe Mathieu-Daudé --- include/hw/qdev-core.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index 0bcba3b785..ae86cdd9ed 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -30,9 +30,9 @@ typedef enum DeviceCategory { DEVICE_CATEGORY_MAX } DeviceCategory; -typedef void (*qdev_resetfn)(DeviceState *dev); typedef void (*DeviceRealize)(DeviceState *dev, Error **errp); typedef void (*DeviceUnrealize)(DeviceState *dev, Error **errp); +typedef void (*DeviceReset)(DeviceState *dev); typedef void (*BusRealize)(BusState *bus, Error **errp); typedef void (*BusUnrealize)(BusState *bus, Error **errp); @@ -115,7 +115,7 @@ typedef struct DeviceClass { bool hotpluggable; /* callbacks */ - void (*reset)(DeviceState *dev); + DeviceReset reset; DeviceRealize realize; DeviceUnrealize unrealize;