drm_info(&i915->drm, "Given bar size is not within supported size, setting it to default: %llu\n",
(u64)lmem_size >> 20);
}
} else {
rebar_size = current_size;
if (rebar_size != roundup_pow_of_two(lmem_size))
rebar_size = lmem_size; else return;
}
/* Find out if root bus contains 64bit memory addressing */ while (root->parent)
root = root->parent;
/* pci_resize_resource will fail anyways */ if (!root_res) {
drm_info(&i915->drm, "Can't resize LMEM BAR - platform support is missing\n"); return;
}
/* * Releasing forcewake during BAR resizing results in later forcewake * ack timeouts and former can happen any time - it is asynchronous. * Grabbing all forcewakes prevents it.
*/
with_intel_runtime_pm(i915->uncore.rpm, wakeref) {
intel_uncore_forcewake_get(&i915->uncore, FORCEWAKE_ALL);
if (!get_legacy_lowmem_region(uncore, &reserve_start, &reserve_size)) return 0;
ret = intel_memory_region_reserve(mem, reserve_start, reserve_size); if (ret)
drm_err(&uncore->i915->drm, "LMEM: reserving low memory region failed\n");
if (GEM_WARN_ON(lmem_size < flat_ccs_base)) return ERR_PTR(-EIO);
tile_stolen = lmem_size - flat_ccs_base;
/* If the FLAT_CCS_BASE_ADDR register is not populated, flag an error */ if (tile_stolen == lmem_size)
drm_err(&i915->drm, "CCS_BASE_ADDR register did not have expected value\n");
lmem_size -= tile_stolen;
} else { /* Stolen starts from GSMBASE without CCS */
lmem_size = intel_uncore_read64(&i915->uncore, GEN6_GSMBASE);
}
err = reserve_lowmem_region(uncore, mem); if (err) goto err_region_put;
if (io_size < lmem_size)
drm_info(&i915->drm, "Using a reduced BAR size of %lluMiB. Consider enabling 'Resizable BAR' or similar, if available in the BIOS.\n",
(u64)io_size >> 20);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.