qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: hw/s390x: why watchdog device diag288 is resetted twice?


From: David Hildenbrand
Subject: Re: hw/s390x: why watchdog device diag288 is resetted twice?
Date: Thu, 26 Sep 2019 09:17:35 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0

On 26.09.19 08:22, Philippe Mathieu-Daudé wrote:
> Hi,
> 
> hw/watchdog/wdt_diag288.c use 2 different resets:
> 
> 1/ registered handler:
> 
>     qemu_register_reset(diag288_reset, diag288);
> 
> 2/ DeviceClass reset:
> 
>     dc->reset = wdt_diag288_reset;
> 
> diag288_reset() simply calls wdt_diag288_reset():
> 
> static void wdt_diag288_reset(DeviceState *dev)
> {
>     DIAG288State *diag288 = DIAG288(dev);
> 
>     diag288->enabled = false;
>     timer_del(diag288->timer);
> }
> 
> static void diag288_reset(void *opaque)
> {
>     DeviceState *diag288 = opaque;
> 
>     wdt_diag288_reset(diag288);
> }
> 
> Why do we need this distinction?
> Is this some special corner case?
> Isn't this device connected to the QOM bus?
> 

It's not a qdev device, so it won't get reset via the sysbus (I saw
patches changing that but I think they are not upstream yet).

The "dc->reset = wdt_diag288_reset;" is needed to make
hw/s390x/s390-virtio-ccw.c:subsystem_reset() work.

-- 

Thanks,

David / dhildenb



reply via email to

[Prev in Thread] Current Thread [Next in Thread]