[PATCH] e1000e: Configure ResettableClass

Akihiko Odaki posted 1 patch 1 year, 4 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20221125140922.56760-1-akihiko.odaki@daynix.com
Maintainers: Dmitry Fleytman <dmitry.fleytman@gmail.com>, Jason Wang <jasowang@redhat.com>
There is a newer version of this series
hw/net/e1000e.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
[PATCH] e1000e: Configure ResettableClass
Posted by Akihiko Odaki 1 year, 4 months ago
This is part of recent efforts of refactoring e1000 and e1000e.

DeviceClass's reset member is deprecated so migrate to ResettableClass.
Thre is no behavioral difference.

Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
---
 hw/net/e1000e.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/hw/net/e1000e.c b/hw/net/e1000e.c
index 7523e9f5d2..4f31a7894a 100644
--- a/hw/net/e1000e.c
+++ b/hw/net/e1000e.c
@@ -512,9 +512,9 @@ static void e1000e_pci_uninit(PCIDevice *pci_dev)
     msi_uninit(pci_dev);
 }
 
-static void e1000e_qdev_reset(DeviceState *dev)
+static void e1000e_qdev_reset(Object *obj)
 {
-    E1000EState *s = E1000E(dev);
+    E1000EState *s = E1000E(obj);
 
     trace_e1000e_cb_qdev_reset();
 
@@ -669,6 +669,7 @@ static Property e1000e_properties[] = {
 static void e1000e_class_init(ObjectClass *class, void *data)
 {
     DeviceClass *dc = DEVICE_CLASS(class);
+    ResettableClass *rc = RESETTABLE_CLASS(class);
     PCIDeviceClass *c = PCI_DEVICE_CLASS(class);
 
     c->realize = e1000e_pci_realize;
@@ -679,8 +680,9 @@ static void e1000e_class_init(ObjectClass *class, void *data)
     c->romfile = "efi-e1000e.rom";
     c->class_id = PCI_CLASS_NETWORK_ETHERNET;
 
+    rc->phases.hold = e1000e_qdev_reset;
+
     dc->desc = "Intel 82574L GbE Controller";
-    dc->reset = e1000e_qdev_reset;
     dc->vmsd = &e1000e_vmstate;
 
     e1000e_prop_disable_vnet = qdev_prop_uint8;
-- 
2.38.1
Re: [PATCH] e1000e: Configure ResettableClass
Posted by Peter Maydell 1 year, 4 months ago
On Fri, 25 Nov 2022 at 14:10, Akihiko Odaki <akihiko.odaki@daynix.com> wrote:
>
> This is part of recent efforts of refactoring e1000 and e1000e.
>
> DeviceClass's reset member is deprecated so migrate to ResettableClass.
> Thre is no behavioral difference.
>
> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> ---
>  hw/net/e1000e.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/hw/net/e1000e.c b/hw/net/e1000e.c
> index 7523e9f5d2..4f31a7894a 100644
> --- a/hw/net/e1000e.c
> +++ b/hw/net/e1000e.c
> @@ -512,9 +512,9 @@ static void e1000e_pci_uninit(PCIDevice *pci_dev)
>      msi_uninit(pci_dev);
>  }
>
> -static void e1000e_qdev_reset(DeviceState *dev)
> +static void e1000e_qdev_reset(Object *obj)

We should name this e1000e_qdev_reset_hold().

>  {
> -    E1000EState *s = E1000E(dev);
> +    E1000EState *s = E1000E(obj);
>
>      trace_e1000e_cb_qdev_reset();
>
> @@ -669,6 +669,7 @@ static Property e1000e_properties[] = {
>  static void e1000e_class_init(ObjectClass *class, void *data)
>  {
>      DeviceClass *dc = DEVICE_CLASS(class);
> +    ResettableClass *rc = RESETTABLE_CLASS(class);
>      PCIDeviceClass *c = PCI_DEVICE_CLASS(class);
>
>      c->realize = e1000e_pci_realize;
> @@ -679,8 +680,9 @@ static void e1000e_class_init(ObjectClass *class, void *data)
>      c->romfile = "efi-e1000e.rom";
>      c->class_id = PCI_CLASS_NETWORK_ETHERNET;
>
> +    rc->phases.hold = e1000e_qdev_reset;
> +
>      dc->desc = "Intel 82574L GbE Controller";
> -    dc->reset = e1000e_qdev_reset;
>      dc->vmsd = &e1000e_vmstate;

Otherwise
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>

thanks
-- PMM