On Fri, 16 Jun 2023 at 00:53, Stefano Stabellini <sstabell...@kernel.org> wrote: > > From: Stefano Stabellini <stefano.stabell...@amd.com> > > On ARM it is possible to have a functioning xenpv machine with only the > PV backends and no IOREQ server. If the IOREQ server creation fails continue > to the PV backends initialization. > > Also, moved the IOREQ registration and mapping subroutine to new function > xen_do_ioreq_register().
Hi. This refactoring has prompted Coverity to notice that we're passing around a large structure by value here: MemoryListener is 192 bytes in size, and we pass it by value into xen_register_ioreq() and now through into xen_do_ioreq_register(). Does this really need to be pass by value? Could we pass a pointer instead? (CID 1513106, 1513107). I suspect also that the argument should be a const pointer, and the callsites should mark the structs they're passing as const. > -void xen_register_ioreq(XenIOState *state, unsigned int max_cpus, > - MemoryListener xen_memory_listener) > +static void xen_do_ioreq_register(XenIOState *state, > + unsigned int max_cpus, > + MemoryListener > xen_memory_listener) thanks -- PMM