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

Commit 6d696305 authored by Ben Skeggs's avatar Ben Skeggs Committed by Dave Airlie
Browse files

drm/nouveau: completely fail init if we fail to map the PRAMIN BAR



On cards where there's a specific BAR for PRAMIN, we used to try and fall
back to the "legacy" aperture within the mmio BAR.

This is doomed to cause problems, so lets just fail completely as there's
obviously something else very wrong anyway.

Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 1eb38100
Loading
Loading
Loading
Loading
+7 −12
Original line number Diff line number Diff line
@@ -779,26 +779,21 @@ int nouveau_load(struct drm_device *dev, unsigned long flags)
			return ret;
	}

	/* map larger RAMIN aperture on NV40 cards */
	dev_priv->ramin  = NULL;
	/* Map PRAMIN BAR, or on older cards, the aperture withing BAR0 */
	if (dev_priv->card_type >= NV_40) {
		int ramin_bar = 2;
		if (pci_resource_len(dev->pdev, ramin_bar) == 0)
			ramin_bar = 3;

		dev_priv->ramin_size = pci_resource_len(dev->pdev, ramin_bar);
		dev_priv->ramin = ioremap(
				pci_resource_start(dev->pdev, ramin_bar),
		dev_priv->ramin =
			ioremap(pci_resource_start(dev->pdev, ramin_bar),
				dev_priv->ramin_size);
		if (!dev_priv->ramin) {
			NV_ERROR(dev, "Failed to init RAMIN mapping, "
				      "limited instance memory available\n");
		}
			NV_ERROR(dev, "Failed to PRAMIN BAR");
			return -ENOMEM;
		}

	/* On older cards (or if the above failed), create a map covering
	 * the BAR0 PRAMIN aperture */
	if (!dev_priv->ramin) {
	} else {
		dev_priv->ramin_size = 1 * 1024 * 1024;
		dev_priv->ramin = ioremap(mmio_start_offs + NV_RAMIN,
					  dev_priv->ramin_size);