err = iova_cache_get(); if (err) goto free_domain;
order = __ffs(vde->domain->pgsize_bitmap);
init_iova_domain(&vde->iova, 1UL << order, 0);
err = iommu_attach_group(vde->domain, vde->group); if (err) goto put_iova;
/* * We're using some static addresses that are not accessible by VDE * to trap invalid memory accesses.
*/
shift = iova_shift(&vde->iova);
iova = reserve_iova(&vde->iova, 0x60000000 >> shift,
0x70000000 >> shift); if (!iova) {
err = -ENOMEM; goto detach_group;
}
vde->iova_resv_static_addresses = iova;
/* * BSEV's end-address wraps around due to integer overflow during * of hardware context preparation if IOVA is allocated at the end * of address space and VDE can't handle that. Hence simply reserve * the last page to avoid the problem.
*/
iova = reserve_iova(&vde->iova, 0xffffffff >> shift,
(0xffffffff >> shift) + 1); if (!iova) {
err = -ENOMEM; goto unreserve_iova;
}
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.