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.
This commit is contained in:
riastradh 2014-05-29 22:05:24 +00:00
parent 83eb28cbe4
commit 78c2b3ab22
1 changed files with 10 additions and 3 deletions

View File

@ -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. * Copyright (c) 2013 The NetBSD Foundation, Inc.
@ -30,7 +30,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__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 <sys/types.h> #include <sys/types.h>
#include <sys/param.h> #include <sys/param.h>
@ -405,7 +405,14 @@ agp_gtt_init(struct drm_device *dev)
gtt->gma_bus_addr = agp_i810_sc->as_apaddr; gtt->gma_bus_addr = agp_i810_sc->as_apaddr;
gtt->gtt_mappable_entries = (agp_i810_sc->as_apsize >> AGP_PAGE_SHIFT); gtt->gtt_mappable_entries = (agp_i810_sc->as_apsize >> AGP_PAGE_SHIFT);
gtt->stolen_size = (isc->stolen << 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); product = PCI_PRODUCT(dev->pdev->pd_pa.pa_id);
if (((product == PCI_PRODUCT_INTEL_IRONLAKE_M_HB) || if (((product == PCI_PRODUCT_INTEL_IRONLAKE_M_HB) ||