Page MenuHomeFreeBSD

D46382.id142265.diff
No OneTemporary

D46382.id142265.diff

diff --git a/sys/x86/iommu/intel_drv.c b/sys/x86/iommu/intel_drv.c
--- a/sys/x86/iommu/intel_drv.c
+++ b/sys/x86/iommu/intel_drv.c
@@ -423,6 +423,7 @@
&unit->reg_rid, RF_ACTIVE);
if (unit->regs == NULL) {
device_printf(dev, "cannot allocate register window\n");
+ dmar_devs[unit->iommu.unit] = NULL;
return (ENOMEM);
}
unit->hw_ver = dmar_read4(unit, DMAR_VER_REG);
@@ -450,6 +451,7 @@
error = dmar_alloc_irq(dev, unit, DMAR_INTR_FAULT);
if (error != 0) {
dmar_release_resources(dev, unit);
+ dmar_devs[unit->iommu.unit] = NULL;
return (error);
}
if (DMAR_HAS_QI(unit)) {
@@ -464,6 +466,7 @@
error = dmar_alloc_irq(dev, unit, DMAR_INTR_QI);
if (error != 0) {
dmar_release_resources(dev, unit);
+ dmar_devs[unit->iommu.unit] = NULL;
return (error);
}
}
@@ -497,12 +500,14 @@
if (error != 0) {
DMAR_UNLOCK(unit);
dmar_release_resources(dev, unit);
+ dmar_devs[unit->iommu.unit] = NULL;
return (error);
}
error = dmar_inv_ctx_glob(unit);
if (error != 0) {
DMAR_UNLOCK(unit);
dmar_release_resources(dev, unit);
+ dmar_devs[unit->iommu.unit] = NULL;
return (error);
}
if ((unit->hw_ecap & DMAR_ECAP_DI) != 0) {
@@ -510,6 +515,7 @@
if (error != 0) {
DMAR_UNLOCK(unit);
dmar_release_resources(dev, unit);
+ dmar_devs[unit->iommu.unit] = NULL;
return (error);
}
}
@@ -518,16 +524,19 @@
error = dmar_init_fault_log(unit);
if (error != 0) {
dmar_release_resources(dev, unit);
+ dmar_devs[unit->iommu.unit] = NULL;
return (error);
}
error = dmar_init_qi(unit);
if (error != 0) {
dmar_release_resources(dev, unit);
+ dmar_devs[unit->iommu.unit] = NULL;
return (error);
}
error = dmar_init_irt(unit);
if (error != 0) {
dmar_release_resources(dev, unit);
+ dmar_devs[unit->iommu.unit] = NULL;
return (error);
}
@@ -543,6 +552,7 @@
error = iommu_init_busdma(&unit->iommu);
if (error != 0) {
dmar_release_resources(dev, unit);
+ dmar_devs[unit->iommu.unit] = NULL;
return (error);
}
@@ -552,6 +562,7 @@
if (error != 0) {
DMAR_UNLOCK(unit);
dmar_release_resources(dev, unit);
+ dmar_devs[unit->iommu.unit] = NULL;
return (error);
}
DMAR_UNLOCK(unit);

File Metadata

Mime Type
text/plain
Expires
Sun, Feb 8, 8:32 PM (12 h, 40 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28495083
Default Alt Text
D46382.id142265.diff (2 KB)

Event Timeline