lsi: Purge request queue on soft reset
Avoid keeping zombie requests across controller reset by purging the queue and also dropping the currently active request. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
37905d6ae5
commit
51336214da
@ -283,6 +283,8 @@ 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;
|
||||
|
||||
@ -345,6 +347,15 @@ 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);
|
||||
qemu_free(p);
|
||||
}
|
||||
if (s->current) {
|
||||
qemu_free(s->current);
|
||||
s->current = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static int lsi_dma_40bit(LSIState *s)
|
||||
|
Loading…
Reference in New Issue
Block a user