On 12/28/22 12:55, Woodhouse, David wrote:
IIRC the send_port and type aren't used from hcall_send so we could stick those in a union with a 'next' pointer and use it to build a list instead of having to allocate the array (pathological worst case 32KiB).
Yeah I thought about using a list. The union is doable as you say, but I wasn't sure if things were going to change in kvm_xen_evtchn_send later.
And the worst case is order 3, which is within PAGE_ALLOC_COSTLY_ORDER, so I decided to go with the array which only consumes memory on reset rather than always; it's much more likely that the array will be smaller than a page.
Paolo
Or if the union is a bit icky, we could just add the 'next' pointer unconditionally.