[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 13/17] hw/scsi: Convert to new bh API
From: |
Nicholas Piggin |
Subject: |
Re: [PATCH 13/17] hw/scsi: Convert to new bh API |
Date: |
Sat, 21 Dec 2024 13:17:39 +1000 |
On Sat Dec 21, 2024 at 9:54 AM AEST, Paolo Bonzini wrote:
> Il ven 20 dic 2024, 11:44 Nicholas Piggin <npiggin@gmail.com> ha scritto:
>
> > Convert aio_bh_schedule_oneshot() to aio_bh_schedule_oneshot_event(),
> > which can specify the clock type, making it compatible with
> > record-replay.
> >
> > Operations on SCSI reqs do affect target machine state, so it should
> > use QEMU_CLOCK_VIRTUAL to recorded and replay the bh.
> >
>
> This does not seem to match the patch below?
Ah, good catch, I missed fixing the changelog.
I think scsi_device_purge_requests() does not affect target because
it is called on machine reset so the state is all going away anyway.
But initially I thought scsi_dma_restart_cb did, like the ide
restart (which was a real bug). But that caused record-replay hangs
because it is a vm_change_state handler, so I took another looks and
it seems like it perhaps just kicks the host DMA running again and
perhaps it is okay to be outside record-replay. I'm completely
confident of this though.
And now you make me look again, the IDE restart is also a vm change
state handler. So my patch for that does not solve all problems
either (it's better than nothing, but still has this bug).
AFAIK, vm state change (stop, continue) should ideally not affect
machine or emulated devices right? Is it possible to split out
the architectural SCSI/IDE restart from the DMA restart that is
reqiured by vm state change?
At least I will redo the patches and leave a comment and a qemu log
message if we hit the case of IDE vmstate change with record
replay active...
Thanks,
Nick
>
> Paolo
>
> + aio_bh_schedule_oneshot_event(blk_get_aio_context(s->conf.blk),
> > + scsi_device_for_each_req_async_bh,
> > + data, QEMU_CLOCK_REALTIME);
> > }
> >
> > static void scsi_device_realize(SCSIDevice *s, Error **errp)
> > --
> > 2.45.2
> >
> >
- [PATCH 05/17] util/thread-pool: Convert to new bh API, (continued)
- [PATCH 05/17] util/thread-pool: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 06/17] util/aio-wait: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 07/17] async/coroutine: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 08/17] migration: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 09/17] monitor: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 10/17] qmp: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 11/17] block: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 12/17] hw/ide: Fix record-replay and convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 13/17] hw/scsi: Convert to new bh API, Nicholas Piggin, 2024/12/20
- [PATCH 14/17] async: add debugging assertions for record/replay in bh APIs, Nicholas Piggin, 2024/12/20
- [PATCH 15/17] tests/avocado/replay_linux: Fix compile error, Nicholas Piggin, 2024/12/20
- [PATCH 16/17] tests/avocado/replay_linux: Fix cdrom device setup, Nicholas Piggin, 2024/12/20
- [PATCH 17/17] tests/avocado/replay_linux: remove the timeout expected guards, Nicholas Piggin, 2024/12/20
- Re: [PATCH 00/17] replay: Fixes and avocado test updates, Pavel Dovgalyuk, 2024/12/20