[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] xen-hvm: Avoid livelock while handling buffered ioreqs
On Tue, Apr 9, 2024 at 11:20 AM Anthony PERARD <anthony.perard@xxxxxxxxx> wrote: > > On Thu, Apr 04, 2024 at 03:08:33PM +0100, Ross Lagerwall wrote: > > diff --git a/hw/xen/xen-hvm-common.c b/hw/xen/xen-hvm-common.c > > index 1627da739822..1116b3978938 100644 > > --- a/hw/xen/xen-hvm-common.c > > +++ b/hw/xen/xen-hvm-common.c > > @@ -521,22 +521,30 @@ static bool handle_buffered_iopage(XenIOState *state) > [...] > > > > static void handle_buffered_io(void *opaque) > > { > > + unsigned int handled; > > XenIOState *state = opaque; > > > > - if (handle_buffered_iopage(state)) { > > + handled = handle_buffered_iopage(state); > > + if (handled >= IOREQ_BUFFER_SLOT_NUM) { > > + /* We handled a full page of ioreqs. Schedule a timer to continue > > + * processing while giving other stuff a chance to run. > > + */ > > ./scripts/checkpatch.pl report a style issue here: > WARNING: Block comments use a leading /* on a separate line > > I can try to remember to fix that on commit. I copied the comment style from a few lines above but I guess it was wrong. > > > timer_mod(state->buffered_io_timer, > > - BUFFER_IO_MAX_DELAY + > > qemu_clock_get_ms(QEMU_CLOCK_REALTIME)); > > - } else { > > + qemu_clock_get_ms(QEMU_CLOCK_REALTIME)); > > + } else if (handled == 0) { > > Just curious, why did you check for `handled == 0` here instead of > `handled != 0`? That would have avoided to invert the last 2 cases, and > the patch would just have introduce a new case without changing the > order of the existing ones. But not that important I guess. > In general I try to use conditionals with the least amount of negation since I think it is easier to read. I can change it if you would prefer? Ross
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |