On 26/08/2024 07:26, David Gibson wrote:We have in the main loop calling each vu_ function a trace: debug("================ Vhost user message ================"); debug("Request: %s (%d)", vu_request_to_string(msg.hdr.request), msg.hdr.request); debug("Flags: 0x%x", msg.hdr.flags); debug("Size: %u", msg.hdr.size); That will give: 33.1458: passt: epoll event on vhost-user command socket 73 (events: 0x00000001) 33.1458: ================ Vhost user message ================ 33.1458: Request: VHOST_USER_SET_FEATURES (2) 33.1458: Flags: 0x1 33.1458: Size: 8 33.1458: u64: 0x0000000140008000 I think this provides enough context to understand the trace. Thanks, Laurent+/** + * vu_set_features_exec() - Enable features of the back-end + * @vdev: Vhost-user device + * @vmsg: Vhost-user message + * + * Return: false as no reply is requested + */ +static bool vu_set_features_exec(struct vu_dev *vdev, + struct vhost_user_msg *msg) +{ + debug("u64: 0x%016"PRIx64, msg->payload.u64);A number of these debug() messages look like they'd be pretty cryptic, with no indication of which part of passt they're coming from. This one is especially bad.