external_code/nvme: enable PCIe bus master and disable INTx irqs
It allows the controller to issue memory read/writes (the bus master enable bit) and disables the ability to generate INTx interrupts which won't be serviced. Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com> Change-Id: I3b041f1ea7c2bc275b609afcc3d1e4f655aee4c5 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6669 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Mellanox Build Bot Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
ad9ccbbf52
commit
7da17fb378
@ -173,6 +173,7 @@ pcie_enum_cb(void *ctx, struct spdk_pci_device *pci_dev)
|
||||
TAILQ_HEAD(, nvme_ctrlr) *ctrlrs = ctx;
|
||||
char addr[32] = {};
|
||||
uint64_t phys_addr, size;
|
||||
uint16_t cmd_reg;
|
||||
void *reg_addr;
|
||||
|
||||
spdk_pci_addr_fmt(addr, sizeof(addr), &pci_dev->addr);
|
||||
@ -198,6 +199,12 @@ pcie_enum_cb(void *ctx, struct spdk_pci_device *pci_dev)
|
||||
|
||||
ctrlr->pci_device = pci_dev;
|
||||
ctrlr->regs = (volatile struct spdk_nvme_registers *)reg_addr;
|
||||
|
||||
/* Enable PCI busmaster and disable INTx */
|
||||
spdk_pci_device_cfg_read16(pci_dev, &cmd_reg, 4);
|
||||
cmd_reg |= 0x404;
|
||||
spdk_pci_device_cfg_write16(pci_dev, cmd_reg, 4);
|
||||
|
||||
TAILQ_INSERT_TAIL(ctrlrs, ctrlr, tailq);
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user