/** * Enable bus-mastering for the device. See PR #1303185. * * @param [in] PCI Device instance */ static VMK_ReturnStatus PciSetMaster(vmk_PCIDevice dev) { vmk_uint32 pciCmd; VMK_ReturnStatus vmkStatus; vmkStatus = vmk_PCIReadConfig(vmk_ModuleCurrentID, dev, VMK_PCI_CONFIG_ACCESS_16, NVME_PCI_CMDREG_OFFSET, &pciCmd); if (vmkStatus != VMK_OK) { EPRINT("Unable to read PCI Command register (%s)", vmk_StatusToString(vmkStatus)); return vmkStatus; } pciCmd |= NVME_PCI_CMD_BUSMASTER; vmkStatus = vmk_PCIWriteConfig(vmk_ModuleCurrentID, dev, VMK_PCI_CONFIG_ACCESS_16, NVME_PCI_CMDREG_OFFSET, pciCmd); if (vmkStatus != VMK_OK) { EPRINT("Unable to write PCI Command register (%s)", vmk_StatusToString(vmkStatus)); return vmkStatus; } IPRINT("Enabled bus-mastering on device."); return vmkStatus; }
int vmk_early_init_module(void) { VMK_ReturnStatus vmk_status; vmk_status = vmk_ModuleRegister(&vmkshim_module_id, VMKAPI_REVISION); if (vmk_status != VMK_OK) { vmk_WarningMessage("Registration failed (%#x): %s", vmk_status, vmk_StatusToString(vmk_status)); return vmk_status; } return 0; }