On 3/2/26 02:03, David Gibson wrote:
On Fri, Feb 27, 2026 at 03:03:30PM +0100, Laurent Vivier wrote:
iPXE places the vnet header in one virtqueue descriptor and the payload in another. When passt maps these descriptors, it needs two iovecs per virtqueue element to handle this layout.
Without this, passt crashes with:
ASSERTION FAILED in virtqueue_map_desc (virtio.c:403): num_sg < max_num_sg
Signed-off-by: Laurent Vivier
Reviewed-by: David Gibson
It looks like a reasonable short term fix for the specific iPXE problem.
Longer term, having a fixed 2 iovecs per element still seems fragile, if we encounter some other occasionally-used guest side virtio driver which splits its Tx buffers up in an even weirder way. It would be nicer if we can actually take our cue from what the guest actually gives us. I'm not sure how feasible that is, though.
I agree with that. I'm going to rework this part to allocate a variable number of iovec per element. It will be cleaner and more correct. Thanks, Laurent