[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 03/32] lsi: use qdev_reset_all
From: |
Jan Kiszka |
Subject: |
Re: [Qemu-devel] [PATCH 03/32] lsi: use qdev_reset_all |
Date: |
Tue, 23 Apr 2013 10:47:24 +0200 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666 |
On 2012-07-27 17:02, Paolo Bonzini wrote:
> By first resetting the devices, lsi_soft_reset will find the queue
> already cleared so there is no need to do that forcibly (which may also
> leak SCSIRequests, and/or worse due to dangling references to the
> lsi_request in the hba_private field).
>
> Signed-off-by: Paolo Bonzini <address@hidden>
> ---
> hw/lsi53c895a.c | 15 +++------------
> 1 file changed, 3 insertions(+), 12 deletions(-)
>
> diff --git a/hw/lsi53c895a.c b/hw/lsi53c895a.c
> index 2fe141d..f04cc68 100644
> --- a/hw/lsi53c895a.c
> +++ b/hw/lsi53c895a.c
> @@ -282,8 +282,6 @@ static inline int lsi_irq_on_rsl(LSIState *s)
>
> static void lsi_soft_reset(LSIState *s)
> {
> - lsi_request *p;
> -
> DPRINTF("Reset\n");
> s->carry = 0;
>
> @@ -350,15 +348,8 @@ static void lsi_soft_reset(LSIState *s)
> s->sbc = 0;
> s->csbc = 0;
> s->sbr = 0;
> - while (!QTAILQ_EMPTY(&s->queue)) {
> - p = QTAILQ_FIRST(&s->queue);
> - QTAILQ_REMOVE(&s->queue, p, next);
> - g_free(p);
> - }
> - if (s->current) {
> - g_free(s->current);
> - s->current = NULL;
> - }
> + assert(QTAILQ_EMPTY(&s->queue));
> + assert(!s->current);
> }
>
> static int lsi_dma_40bit(LSIState *s)
> @@ -1738,7 +1729,7 @@ static void lsi_reg_writeb(LSIState *s, int offset,
> uint8_t val)
> lsi_execute_script(s);
> }
> if (val & LSI_ISTAT0_SRST) {
> - lsi_soft_reset(s);
> + qdev_reset_all(&s->dev.qdev);
What should ensure that all device resets are performed before the host
reset? I'm asking as we just ran into the assert(!s->current) over
1.3.1. Or is there some patch from a later version missing (not seeing
anything suspicious for lsi at least)?
Thanks,
Jan
--
Siemens AG, Corporate Technology, CT RTC ITP SDP-DE
Corporate Competence Center Embedded Linux
- Re: [Qemu-devel] [PATCH 03/32] lsi: use qdev_reset_all,
Jan Kiszka <=