Re: [PATCH v7 09/18] virt: acrn: Introduce I/O request management

From: Davidlohr Bueso
Date: Mon Jan 11 2021 - 16:53:09 EST


On Wed, 06 Jan 2021, shuo.a.liu@xxxxxxxxx wrote:
The processing flow of I/O requests are listed as following:

a) The I/O handler of the hypervisor will fill an I/O request with
PENDING state when a trapped I/O access happens in a User VM.
b) The hypervisor makes an upcall, which is a notification interrupt, to
the Service VM.
c) The upcall handler schedules a tasklet to dispatch I/O requests.
d) The tasklet looks for the PENDING I/O requests, assigns them to
different registered clients based on the address of the I/O accesses,
updates their state to PROCESSING, and notifies the corresponding
client to handle.

Hmm so tasklets are deprecated (and have been for a while) and it's sad
to see incoming new users in modern Linux. This wouldn't be the first one,
however. We should be _removing_ users, not adding... In addition, this
expands the whole tasklet_disable/enable() hacks.

Could this not be done in process context instead?

Thanks,
Davidlohr