From 78c2b3ab2297eea109cdb471c2794141506acc74 Mon Sep 17 00:00:00 2001 From: riastradh Date: Thu, 29 May 2014 22:05:24 +0000 Subject: [PATCH] Work around broken GTT size detection in agp_i810 code. This will do until I work out the twisty maze of registers, all different, to reliably determine the size of the GTT (and hence the GPU's virtual address space) separately from the size of the AGP aperture. --- sys/external/bsd/drm2/i915drm/i915_gem_gtt.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/sys/external/bsd/drm2/i915drm/i915_gem_gtt.c b/sys/external/bsd/drm2/i915drm/i915_gem_gtt.c index 38017123b933..6efa59602976 100644 --- a/sys/external/bsd/drm2/i915drm/i915_gem_gtt.c +++ b/sys/external/bsd/drm2/i915drm/i915_gem_gtt.c @@ -1,4 +1,4 @@ -/* $NetBSD: i915_gem_gtt.c,v 1.13 2014/05/28 15:44:02 riastradh Exp $ */ +/* $NetBSD: i915_gem_gtt.c,v 1.14 2014/05/29 22:05:24 riastradh Exp $ */ /*- * Copyright (c) 2013 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: i915_gem_gtt.c,v 1.13 2014/05/28 15:44:02 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i915_gem_gtt.c,v 1.14 2014/05/29 22:05:24 riastradh Exp $"); #include #include @@ -405,7 +405,14 @@ agp_gtt_init(struct drm_device *dev) gtt->gma_bus_addr = agp_i810_sc->as_apaddr; gtt->gtt_mappable_entries = (agp_i810_sc->as_apsize >> AGP_PAGE_SHIFT); gtt->stolen_size = (isc->stolen << AGP_PAGE_SHIFT); - gtt->gtt_total_entries = isc->gtt_size/4; + + /* + * XXX Not quite right -- on some devices (i965), there are + * more entries in the GTT than fit in the aperture. However, + * this is a safe approximation until we work out the fake AGP + * code to detect the correct number of GTT entries. + */ + gtt->gtt_total_entries = gtt->gtt_mappable_entries; product = PCI_PRODUCT(dev->pdev->pd_pa.pa_id); if (((product == PCI_PRODUCT_INTEL_IRONLAKE_M_HB) ||