Changeset View
Changeset View
Standalone View
Standalone View
sys/x86/iommu/intel_drv.c
Show First 20 Lines • Show All 587 Lines • ▼ Show 20 Lines | static driver_t dmar_driver = { | ||||
dmar_methods, | dmar_methods, | ||||
sizeof(struct dmar_unit), | sizeof(struct dmar_unit), | ||||
}; | }; | ||||
DRIVER_MODULE(dmar, acpi, dmar_driver, dmar_devclass, 0, 0); | DRIVER_MODULE(dmar, acpi, dmar_driver, dmar_devclass, 0, 0); | ||||
MODULE_DEPEND(dmar, acpi, 1, 1, 1); | MODULE_DEPEND(dmar, acpi, 1, 1, 1); | ||||
void | void | ||||
dmar_set_buswide_ctx(struct iommu_unit *unit, u_int busno) | iommu_set_buswide_ctx(struct iommu_unit *unit, u_int busno) | ||||
{ | { | ||||
struct dmar_unit *dmar; | |||||
dmar = (struct dmar_unit *)unit; | |||||
MPASS(busno <= PCI_BUSMAX); | MPASS(busno <= PCI_BUSMAX); | ||||
DMAR_LOCK(dmar); | IOMMU_LOCK(unit); | ||||
dmar->buswide_ctxs[busno / NBBY / sizeof(uint32_t)] |= | unit->buswide_ctxs[busno / NBBY / sizeof(uint32_t)] |= | ||||
1 << (busno % (NBBY * sizeof(uint32_t))); | 1 << (busno % (NBBY * sizeof(uint32_t))); | ||||
DMAR_UNLOCK(dmar); | IOMMU_UNLOCK(unit); | ||||
} | } | ||||
bool | bool | ||||
dmar_is_buswide_ctx(struct dmar_unit *unit, u_int busno) | iommu_is_buswide_ctx(struct iommu_unit *unit, u_int busno) | ||||
{ | { | ||||
MPASS(busno <= PCI_BUSMAX); | MPASS(busno <= PCI_BUSMAX); | ||||
return ((unit->buswide_ctxs[busno / NBBY / sizeof(uint32_t)] & | return ((unit->buswide_ctxs[busno / NBBY / sizeof(uint32_t)] & | ||||
(1U << (busno % (NBBY * sizeof(uint32_t))))) != 0); | (1U << (busno % (NBBY * sizeof(uint32_t))))) != 0); | ||||
} | } | ||||
static void | static void | ||||
▲ Show 20 Lines • Show All 745 Lines • Show Last 20 Lines |