On 05.03.2026 14:04, Julian Vetter wrote:
> @@ -45,7 +52,8 @@ struct ioreq_server {
> /* Lock to serialize toolstack modifications */
> spinlock_t lock;
>
> - struct ioreq_page ioreq;
> + ioreq_t *ioreq;
> + gfn_t ioreq_gfn;
> struct list_head ioreq_vcpu_list;
> struct ioreq_page bufioreq;
This change in data arrangement should in principle be independent of the
step to supporting multiple pages. Hence it should be possible to separate
out. Problem being that just by looking here and at hvm_{,un}map_ioreq_gfn()
I can't conclude how you get away without the "page" field that struct
ioreq_page had. If you can get away without, it's not quite clear why the
field exists in the first place. If it's not needed, dropping it would be
yet another separate, prereq change. At which point the remaining pair of
fields could continue to be used, i.e. the change above then wouldn't be
needed; va could be renamed if need be, and its type changed.
And if the "page" field is still needed, then even more so you would imo
want to retain the present data layout.
In any event, if at all possible a goal imo ought to be to avoid
duplication of logic, like what is happening in the two named functions.
I.e. preferably the bufio case would continue to be as similar as possible,
just known to be single-page.
Jan