Mesa (main): intel/dev: add a fallback when memory regions are not available
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jun 22 01:14:11 UTC 2022
Module: Mesa
Branch: main
Commit: 4289c9ec13c9dfdbcda8217c7fb4a87baec4868f
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4289c9ec13c9dfdbcda8217c7fb4a87baec4868f
Author: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Date: Wed Jun 15 11:03:29 2022 +0300
intel/dev: add a fallback when memory regions are not available
We have this in Anv and it could be reused in Iris for integrated
memory system.
Rework:
* Jordan: Drop regions.valid (Lionel implemented a fallback)
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17075>
---
src/intel/dev/intel_device_info.c | 29 +++++++++++++++++++++++++++--
1 file changed, 27 insertions(+), 2 deletions(-)
diff --git a/src/intel/dev/intel_device_info.c b/src/intel/dev/intel_device_info.c
index 287be41e96c..d807139b189 100644
--- a/src/intel/dev/intel_device_info.c
+++ b/src/intel/dev/intel_device_info.c
@@ -37,6 +37,7 @@
#include "util/debug.h"
#include "util/log.h"
#include "util/macros.h"
+#include "util/os_misc.h"
#include "drm-uapi/i915_drm.h"
@@ -1638,6 +1639,26 @@ query_regions(struct intel_device_info *devinfo, int fd, bool update)
return true;
}
+static bool
+compute_system_memory(struct intel_device_info *devinfo, bool update)
+{
+ uint64_t total_phys;
+ if (!os_get_total_physical_memory(&total_phys))
+ return false;
+
+ uint64_t available = 0;
+ os_get_available_system_memory(&available);
+
+ if (!update)
+ devinfo->mem.sram.mappable.size = total_phys;
+ else
+ assert(devinfo->mem.sram.mappable.size == total_phys);
+
+ devinfo->mem.sram.mappable.free = available;
+
+ return true;
+}
+
static int
intel_get_aperture_size(int fd, uint64_t *size)
{
@@ -1982,7 +2003,11 @@ intel_get_device_info_from_fd(int fd, struct intel_device_info *devinfo)
getparam_topology(devinfo, fd);
}
- query_regions(devinfo, fd, false);
+ /* If the memory region uAPI query is not available, try to generate some
+ * numbers out of os_* utils for sram only.
+ */
+ if (!query_regions(devinfo, fd, false))
+ compute_system_memory(devinfo, false);
/* region info is required for lmem support */
if (devinfo->has_local_mem && !devinfo->mem.use_class_instance) {
@@ -2021,5 +2046,5 @@ intel_get_device_info_from_fd(int fd, struct intel_device_info *devinfo)
bool intel_device_info_update_memory_info(struct intel_device_info *devinfo, int fd)
{
- return query_regions(devinfo, fd, true);
+ return query_regions(devinfo, fd, true) || compute_system_memory(devinfo, true);
}
More information about the mesa-commit
mailing list