intel-gtt: sane variable names for intel_gtt_stolen_entries
This somewhat aligns it with the version in drm/i915/i915_dma.c. Changes: - s/gtt_entries/stolen_size - track overhead entries in a seperate var (the effective gtt size calculation will be extracted later on). - subtract the overhead at the end instead of in each clause. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
3e921f980f
commit
d8d9abcd35
@ -534,11 +534,12 @@ static struct aper_size_info_fixed intel_i830_sizes[] =
|
|||||||
static unsigned int intel_gtt_stolen_entries(void)
|
static unsigned int intel_gtt_stolen_entries(void)
|
||||||
{
|
{
|
||||||
u16 gmch_ctrl;
|
u16 gmch_ctrl;
|
||||||
unsigned int gtt_entries = 0;
|
|
||||||
u8 rdct;
|
u8 rdct;
|
||||||
int local = 0;
|
int local = 0;
|
||||||
static const int ddt[4] = { 0, 16, 32, 64 };
|
static const int ddt[4] = { 0, 16, 32, 64 };
|
||||||
int size; /* reserved space (in kb) at the top of stolen memory */
|
int size; /* reserved space (in kb) at the top of stolen memory */
|
||||||
|
unsigned int overhead_entries, stolen_entries;
|
||||||
|
unsigned int stolen_size = 0;
|
||||||
|
|
||||||
pci_read_config_word(intel_private.bridge_dev,
|
pci_read_config_word(intel_private.bridge_dev,
|
||||||
I830_GMCH_CTRL, &gmch_ctrl);
|
I830_GMCH_CTRL, &gmch_ctrl);
|
||||||
@ -605,26 +606,28 @@ static unsigned int intel_gtt_stolen_entries(void)
|
|||||||
size = agp_bridge->driver->fetch_size() + 4;
|
size = agp_bridge->driver->fetch_size() + 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
overhead_entries = size/4;
|
||||||
|
|
||||||
if (intel_private.bridge_dev->device == PCI_DEVICE_ID_INTEL_82830_HB ||
|
if (intel_private.bridge_dev->device == PCI_DEVICE_ID_INTEL_82830_HB ||
|
||||||
intel_private.bridge_dev->device == PCI_DEVICE_ID_INTEL_82845G_HB) {
|
intel_private.bridge_dev->device == PCI_DEVICE_ID_INTEL_82845G_HB) {
|
||||||
switch (gmch_ctrl & I830_GMCH_GMS_MASK) {
|
switch (gmch_ctrl & I830_GMCH_GMS_MASK) {
|
||||||
case I830_GMCH_GMS_STOLEN_512:
|
case I830_GMCH_GMS_STOLEN_512:
|
||||||
gtt_entries = KB(512) - KB(size);
|
stolen_size = KB(512);
|
||||||
break;
|
break;
|
||||||
case I830_GMCH_GMS_STOLEN_1024:
|
case I830_GMCH_GMS_STOLEN_1024:
|
||||||
gtt_entries = MB(1) - KB(size);
|
stolen_size = MB(1);
|
||||||
break;
|
break;
|
||||||
case I830_GMCH_GMS_STOLEN_8192:
|
case I830_GMCH_GMS_STOLEN_8192:
|
||||||
gtt_entries = MB(8) - KB(size);
|
stolen_size = MB(8);
|
||||||
break;
|
break;
|
||||||
case I830_GMCH_GMS_LOCAL:
|
case I830_GMCH_GMS_LOCAL:
|
||||||
rdct = readb(intel_private.registers+I830_RDRAM_CHANNEL_TYPE);
|
rdct = readb(intel_private.registers+I830_RDRAM_CHANNEL_TYPE);
|
||||||
gtt_entries = (I830_RDRAM_ND(rdct) + 1) *
|
stolen_size = (I830_RDRAM_ND(rdct) + 1) *
|
||||||
MB(ddt[I830_RDRAM_DDT(rdct)]);
|
MB(ddt[I830_RDRAM_DDT(rdct)]);
|
||||||
local = 1;
|
local = 1;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
gtt_entries = 0;
|
stolen_size = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else if (IS_SNB) {
|
} else if (IS_SNB) {
|
||||||
@ -635,143 +638,144 @@ static unsigned int intel_gtt_stolen_entries(void)
|
|||||||
pci_read_config_word(intel_private.pcidev, SNB_GMCH_CTRL, &snb_gmch_ctl);
|
pci_read_config_word(intel_private.pcidev, SNB_GMCH_CTRL, &snb_gmch_ctl);
|
||||||
switch (snb_gmch_ctl & SNB_GMCH_GMS_STOLEN_MASK) {
|
switch (snb_gmch_ctl & SNB_GMCH_GMS_STOLEN_MASK) {
|
||||||
case SNB_GMCH_GMS_STOLEN_32M:
|
case SNB_GMCH_GMS_STOLEN_32M:
|
||||||
gtt_entries = MB(32) - KB(size);
|
stolen_size = MB(32);
|
||||||
break;
|
break;
|
||||||
case SNB_GMCH_GMS_STOLEN_64M:
|
case SNB_GMCH_GMS_STOLEN_64M:
|
||||||
gtt_entries = MB(64) - KB(size);
|
stolen_size = MB(64);
|
||||||
break;
|
break;
|
||||||
case SNB_GMCH_GMS_STOLEN_96M:
|
case SNB_GMCH_GMS_STOLEN_96M:
|
||||||
gtt_entries = MB(96) - KB(size);
|
stolen_size = MB(96);
|
||||||
break;
|
break;
|
||||||
case SNB_GMCH_GMS_STOLEN_128M:
|
case SNB_GMCH_GMS_STOLEN_128M:
|
||||||
gtt_entries = MB(128) - KB(size);
|
stolen_size = MB(128);
|
||||||
break;
|
break;
|
||||||
case SNB_GMCH_GMS_STOLEN_160M:
|
case SNB_GMCH_GMS_STOLEN_160M:
|
||||||
gtt_entries = MB(160) - KB(size);
|
stolen_size = MB(160);
|
||||||
break;
|
break;
|
||||||
case SNB_GMCH_GMS_STOLEN_192M:
|
case SNB_GMCH_GMS_STOLEN_192M:
|
||||||
gtt_entries = MB(192) - KB(size);
|
stolen_size = MB(192);
|
||||||
break;
|
break;
|
||||||
case SNB_GMCH_GMS_STOLEN_224M:
|
case SNB_GMCH_GMS_STOLEN_224M:
|
||||||
gtt_entries = MB(224) - KB(size);
|
stolen_size = MB(224);
|
||||||
break;
|
break;
|
||||||
case SNB_GMCH_GMS_STOLEN_256M:
|
case SNB_GMCH_GMS_STOLEN_256M:
|
||||||
gtt_entries = MB(256) - KB(size);
|
stolen_size = MB(256);
|
||||||
break;
|
break;
|
||||||
case SNB_GMCH_GMS_STOLEN_288M:
|
case SNB_GMCH_GMS_STOLEN_288M:
|
||||||
gtt_entries = MB(288) - KB(size);
|
stolen_size = MB(288);
|
||||||
break;
|
break;
|
||||||
case SNB_GMCH_GMS_STOLEN_320M:
|
case SNB_GMCH_GMS_STOLEN_320M:
|
||||||
gtt_entries = MB(320) - KB(size);
|
stolen_size = MB(320);
|
||||||
break;
|
break;
|
||||||
case SNB_GMCH_GMS_STOLEN_352M:
|
case SNB_GMCH_GMS_STOLEN_352M:
|
||||||
gtt_entries = MB(352) - KB(size);
|
stolen_size = MB(352);
|
||||||
break;
|
break;
|
||||||
case SNB_GMCH_GMS_STOLEN_384M:
|
case SNB_GMCH_GMS_STOLEN_384M:
|
||||||
gtt_entries = MB(384) - KB(size);
|
stolen_size = MB(384);
|
||||||
break;
|
break;
|
||||||
case SNB_GMCH_GMS_STOLEN_416M:
|
case SNB_GMCH_GMS_STOLEN_416M:
|
||||||
gtt_entries = MB(416) - KB(size);
|
stolen_size = MB(416);
|
||||||
break;
|
break;
|
||||||
case SNB_GMCH_GMS_STOLEN_448M:
|
case SNB_GMCH_GMS_STOLEN_448M:
|
||||||
gtt_entries = MB(448) - KB(size);
|
stolen_size = MB(448);
|
||||||
break;
|
break;
|
||||||
case SNB_GMCH_GMS_STOLEN_480M:
|
case SNB_GMCH_GMS_STOLEN_480M:
|
||||||
gtt_entries = MB(480) - KB(size);
|
stolen_size = MB(480);
|
||||||
break;
|
break;
|
||||||
case SNB_GMCH_GMS_STOLEN_512M:
|
case SNB_GMCH_GMS_STOLEN_512M:
|
||||||
gtt_entries = MB(512) - KB(size);
|
stolen_size = MB(512);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
switch (gmch_ctrl & I855_GMCH_GMS_MASK) {
|
switch (gmch_ctrl & I855_GMCH_GMS_MASK) {
|
||||||
case I855_GMCH_GMS_STOLEN_1M:
|
case I855_GMCH_GMS_STOLEN_1M:
|
||||||
gtt_entries = MB(1) - KB(size);
|
stolen_size = MB(1);
|
||||||
break;
|
break;
|
||||||
case I855_GMCH_GMS_STOLEN_4M:
|
case I855_GMCH_GMS_STOLEN_4M:
|
||||||
gtt_entries = MB(4) - KB(size);
|
stolen_size = MB(4);
|
||||||
break;
|
break;
|
||||||
case I855_GMCH_GMS_STOLEN_8M:
|
case I855_GMCH_GMS_STOLEN_8M:
|
||||||
gtt_entries = MB(8) - KB(size);
|
stolen_size = MB(8);
|
||||||
break;
|
break;
|
||||||
case I855_GMCH_GMS_STOLEN_16M:
|
case I855_GMCH_GMS_STOLEN_16M:
|
||||||
gtt_entries = MB(16) - KB(size);
|
stolen_size = MB(16);
|
||||||
break;
|
break;
|
||||||
case I855_GMCH_GMS_STOLEN_32M:
|
case I855_GMCH_GMS_STOLEN_32M:
|
||||||
gtt_entries = MB(32) - KB(size);
|
stolen_size = MB(32);
|
||||||
break;
|
break;
|
||||||
case I915_GMCH_GMS_STOLEN_48M:
|
case I915_GMCH_GMS_STOLEN_48M:
|
||||||
/* Check it's really I915G */
|
/* Check it's really I915G */
|
||||||
if (IS_I915 || IS_I965 || IS_G33 || IS_G4X)
|
if (IS_I915 || IS_I965 || IS_G33 || IS_G4X)
|
||||||
gtt_entries = MB(48) - KB(size);
|
stolen_size = MB(48);
|
||||||
else
|
else
|
||||||
gtt_entries = 0;
|
stolen_size = 0;
|
||||||
break;
|
break;
|
||||||
case I915_GMCH_GMS_STOLEN_64M:
|
case I915_GMCH_GMS_STOLEN_64M:
|
||||||
/* Check it's really I915G */
|
/* Check it's really I915G */
|
||||||
if (IS_I915 || IS_I965 || IS_G33 || IS_G4X)
|
if (IS_I915 || IS_I965 || IS_G33 || IS_G4X)
|
||||||
gtt_entries = MB(64) - KB(size);
|
stolen_size = MB(64);
|
||||||
else
|
else
|
||||||
gtt_entries = 0;
|
stolen_size = 0;
|
||||||
break;
|
break;
|
||||||
case G33_GMCH_GMS_STOLEN_128M:
|
case G33_GMCH_GMS_STOLEN_128M:
|
||||||
if (IS_G33 || IS_I965 || IS_G4X)
|
if (IS_G33 || IS_I965 || IS_G4X)
|
||||||
gtt_entries = MB(128) - KB(size);
|
stolen_size = MB(128);
|
||||||
else
|
else
|
||||||
gtt_entries = 0;
|
stolen_size = 0;
|
||||||
break;
|
break;
|
||||||
case G33_GMCH_GMS_STOLEN_256M:
|
case G33_GMCH_GMS_STOLEN_256M:
|
||||||
if (IS_G33 || IS_I965 || IS_G4X)
|
if (IS_G33 || IS_I965 || IS_G4X)
|
||||||
gtt_entries = MB(256) - KB(size);
|
stolen_size = MB(256);
|
||||||
else
|
else
|
||||||
gtt_entries = 0;
|
stolen_size = 0;
|
||||||
break;
|
break;
|
||||||
case INTEL_GMCH_GMS_STOLEN_96M:
|
case INTEL_GMCH_GMS_STOLEN_96M:
|
||||||
if (IS_I965 || IS_G4X)
|
if (IS_I965 || IS_G4X)
|
||||||
gtt_entries = MB(96) - KB(size);
|
stolen_size = MB(96);
|
||||||
else
|
else
|
||||||
gtt_entries = 0;
|
stolen_size = 0;
|
||||||
break;
|
break;
|
||||||
case INTEL_GMCH_GMS_STOLEN_160M:
|
case INTEL_GMCH_GMS_STOLEN_160M:
|
||||||
if (IS_I965 || IS_G4X)
|
if (IS_I965 || IS_G4X)
|
||||||
gtt_entries = MB(160) - KB(size);
|
stolen_size = MB(160);
|
||||||
else
|
else
|
||||||
gtt_entries = 0;
|
stolen_size = 0;
|
||||||
break;
|
break;
|
||||||
case INTEL_GMCH_GMS_STOLEN_224M:
|
case INTEL_GMCH_GMS_STOLEN_224M:
|
||||||
if (IS_I965 || IS_G4X)
|
if (IS_I965 || IS_G4X)
|
||||||
gtt_entries = MB(224) - KB(size);
|
stolen_size = MB(224);
|
||||||
else
|
else
|
||||||
gtt_entries = 0;
|
stolen_size = 0;
|
||||||
break;
|
break;
|
||||||
case INTEL_GMCH_GMS_STOLEN_352M:
|
case INTEL_GMCH_GMS_STOLEN_352M:
|
||||||
if (IS_I965 || IS_G4X)
|
if (IS_I965 || IS_G4X)
|
||||||
gtt_entries = MB(352) - KB(size);
|
stolen_size = MB(352);
|
||||||
else
|
else
|
||||||
gtt_entries = 0;
|
stolen_size = 0;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
gtt_entries = 0;
|
stolen_size = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!local && gtt_entries > intel_max_stolen) {
|
if (!local && stolen_size > intel_max_stolen) {
|
||||||
dev_info(&intel_private.bridge_dev->dev,
|
dev_info(&intel_private.bridge_dev->dev,
|
||||||
"detected %dK stolen memory, trimming to %dK\n",
|
"detected %dK stolen memory, trimming to %dK\n",
|
||||||
gtt_entries / KB(1), intel_max_stolen / KB(1));
|
stolen_size / KB(1), intel_max_stolen / KB(1));
|
||||||
gtt_entries = intel_max_stolen / KB(4);
|
stolen_size = intel_max_stolen;
|
||||||
} else if (gtt_entries > 0) {
|
} else if (stolen_size > 0) {
|
||||||
dev_info(&intel_private.bridge_dev->dev, "detected %dK %s memory\n",
|
dev_info(&intel_private.bridge_dev->dev, "detected %dK %s memory\n",
|
||||||
gtt_entries / KB(1), local ? "local" : "stolen");
|
stolen_size / KB(1), local ? "local" : "stolen");
|
||||||
gtt_entries /= KB(4);
|
|
||||||
} else {
|
} else {
|
||||||
dev_info(&intel_private.bridge_dev->dev,
|
dev_info(&intel_private.bridge_dev->dev,
|
||||||
"no pre-allocated video memory detected\n");
|
"no pre-allocated video memory detected\n");
|
||||||
gtt_entries = 0;
|
stolen_size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return gtt_entries;
|
stolen_entries = stolen_size/KB(4) - overhead_entries;
|
||||||
|
|
||||||
|
return stolen_entries;
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int intel_gtt_mappable_entries(void)
|
static unsigned int intel_gtt_mappable_entries(void)
|
||||||
|
Loading…
Reference in New Issue
Block a user