>>> @@ -592,10 +593,11 @@ static void ics_simple_reset(DeviceState *dev) >>> >>> static int ics_simple_post_load(ICSState *ics, int version_id) >>> { >>> + XICSInterface *xi = XICS_INTERFACE(qdev_get_machine()); >>> int i; >>> >>> for (i = 0; i < ics->xics->nr_servers; i++) { >>> - icp_resend(&ics->xics->ss[i]); >>> + icp_resend(xi, &ics->xics->ss[i]); >>> } >> >> This resend triggering needs to get moved to the xics interface >> implementor - i.e. the machine. It's actually already broken right >> now, since it incorrectly relies on the ordering of the ics and icp >> restore during migration. > > I'm adding a icp_resend() handler in patch 12 and using it patch 14. > Maybe we can move the post_load() handler out of ICS simple now ?
Could you give me a little more info on what should be done ? I lack context on this problem. So should we call : ICPState *ss = opaque; ICPStateClass *info = ICP_GET_CLASS(ss); if (info->post_load) { return info->post_load(ss, version_id); } and then ICSState *ics = opaque; ICSStateClass *info = ICS_BASE_GET_CLASS(ics); if (info->post_load) { return info->post_load(ics, version_id); } from spapr_post_load() ? Thanks, C.