dev_dbg(&GET_DEV(accel_dev), "pf2vf notify restarting\n"); for (i = 0, vf = accel_dev->pf.vf_info; i < num_vfs; i++, vf++) { if (vf->init && vf->vf_compat_ver >= ADF_PFVF_COMPAT_FALLBACK)
vf->restarting = true; else
vf->restarting = false;
if (!vf->init) continue;
if (adf_send_pf2vf_msg(accel_dev, i, msg))
dev_err(&GET_DEV(accel_dev), "Failed to send restarting msg to VF%d\n", i);
}
}
void adf_pf2vf_wait_for_restarting_complete(struct adf_accel_dev *accel_dev)
{ int num_vfs = pci_num_vf(accel_to_pci_dev(accel_dev)); int i, retries = ADF_VF_SHUTDOWN_RETRY; struct adf_accel_vf_info *vf; bool vf_running;
dev_dbg(&GET_DEV(accel_dev), "pf2vf wait for restarting complete\n"); do {
vf_running = false; for (i = 0, vf = accel_dev->pf.vf_info; i < num_vfs; i++, vf++) if (vf->restarting)
vf_running = true; if (!vf_running) break;
msleep(ADF_PF_WAIT_RESTARTING_COMPLETE_DELAY);
} while (--retries);
if (vf_running)
dev_warn(&GET_DEV(accel_dev), "Some VFs are still running\n");
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.