> From: Cao, Yahui <yahui.cao@xxxxxxxxx> > Sent: Tuesday, November 21, 2023 10:51 AM > @@ -4037,6 +4045,17 @@ void ice_vc_process_vf_msg(struct ice_pf *pf, > struct ice_rq_event_info *event, > goto finish; > } > > + if (vf->migration_enabled) { > + if (ice_migration_log_vf_msg(vf, event)) { > + u32 status_code = > VIRTCHNL_STATUS_ERR_NO_MEMORY; > + > + err = ice_vc_respond_to_vf(vf, v_opcode, > + status_code, > + NULL, 0); > + goto finish; > + } > + } > + I'm not sure it's a good thing to fail guest just because the message cannot be logged for migration purpose. It's more reasonable to block migration in this case while letting the guest run as normal... > > + /* All of the loggable virtual channel messages are logged by > + * ice_migration_unlog_vf_msg() before they are processed. > + * > + * Two kinds of error may happen, virtual channel message's result > + * is failure after processed by PF or message is not sent to VF > + * successfully. If error happened, fallback here by reverting logged > + * messages. > + */ > + if (vf->migration_enabled && > + (vf->virtchnl_retval != VIRTCHNL_STATUS_SUCCESS || err)) > + ice_migration_unlog_vf_msg(vf, v_opcode); > + ... and here unlog is not required. Just place log at this point.