Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8c64b4cc authored by David S. Miller's avatar David S. Miller
Browse files
parents e6937ee6 d88d6b05
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -1054,6 +1054,7 @@ static int efx_init_io(struct efx_nic *efx)
{
	struct pci_dev *pci_dev = efx->pci_dev;
	dma_addr_t dma_mask = efx->type->max_dma_mask;
	bool use_wc;
	int rc;

	netif_dbg(efx, probe, efx->net_dev, "initialising I/O\n");
@@ -1104,8 +1105,21 @@ static int efx_init_io(struct efx_nic *efx)
		rc = -EIO;
		goto fail3;
	}

	/* bug22643: If SR-IOV is enabled then tx push over a write combined
	 * mapping is unsafe. We need to disable write combining in this case.
	 * MSI is unsupported when SR-IOV is enabled, and the firmware will
	 * have removed the MSI capability. So write combining is safe if
	 * there is an MSI capability.
	 */
	use_wc = (!EFX_WORKAROUND_22643(efx) ||
		  pci_find_capability(pci_dev, PCI_CAP_ID_MSI));
	if (use_wc)
		efx->membase = ioremap_wc(efx->membase_phys,
					  efx->type->mem_map_size);
	else
		efx->membase = ioremap_nocache(efx->membase_phys,
					       efx->type->mem_map_size);
	if (!efx->membase) {
		netif_err(efx, probe, efx->net_dev,
			  "could not map memory BAR at %llx+%x\n",
+2 −0
Original line number Diff line number Diff line
@@ -38,6 +38,8 @@
#define EFX_WORKAROUND_15783 EFX_WORKAROUND_ALWAYS
/* Legacy interrupt storm when interrupt fifo fills */
#define EFX_WORKAROUND_17213 EFX_WORKAROUND_SIENA
/* Write combining and sriov=enabled are incompatible */
#define EFX_WORKAROUND_22643 EFX_WORKAROUND_SIENA

/* Spurious parity errors in TSORT buffers */
#define EFX_WORKAROUND_5129 EFX_WORKAROUND_FALCON_A