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