@@ -2189,6 +2189,10 @@ MEM controller. All memory amounts are in bytes.
DRM device memory. If memory usage reaches this limit,
subsequent device memory allocations will fail.
+ memory.total
+ Read-only value, displays total memory for a device, shown only in
+ root cgroup.
+
While some DRM devices may be capable to present multiple memory segments
to the user, the intent with above controls is to aggregate all user
allocatable backing store. Any support for multiple memory segments is
@@ -15,11 +15,13 @@ struct drmcg;
* of storing per device defaults
*/
struct drmcg_props {
+ u64 memory_total;
};
enum drmcg_res_type {
DRMCG_TYPE_MEM_CURRENT,
DRMCG_TYPE_MEM_MAX,
+ DRMCG_TYPE_MEM_TOTAL,
__DRMCG_TYPE_LAST,
};
@@ -283,6 +283,10 @@ static int drmcg_seq_show_fn(int id, void *ptr, void *data)
else
seq_printf(sf, "%ld\n", ddr->memory.max * PAGE_SIZE);
break;
+ case DRMCG_TYPE_MEM_TOTAL:
+ seq_printf(sf, "%d:%d %llu\n", DRM_MAJOR, minor->index,
+ minor->dev->drmcg_props.memory_total);
+ break;
default:
seq_printf(sf, "%d:%d\n", DRM_MAJOR, minor->index);
break;
@@ -374,6 +378,12 @@ struct cftype files[] = {
.private = DRMCG_TYPE_MEM_MAX,
.flags = CFTYPE_NOT_ON_ROOT
},
+ {
+ .name = "memory.total",
+ .seq_show = drmcg_seq_show,
+ .private = DRMCG_TYPE_MEM_TOTAL,
+ .flags = CFTYPE_ONLY_ON_ROOT,
+ },
{ } /* terminate */
};
Following control is introduced in order to display total memory that exists for the DRM device. DRM drivers can advertise this value by writing to drm_device.drmcg_props. This is needed in order to effectively use the other memory controls. Normally for system memory this is available to the user using procfs. memory.total Read-only value, displays total memory for a device, shown only in root cgroup. Signed-off-by: Brian Welty <brian.welty@intel.com> --- Documentation/admin-guide/cgroup-v2.rst | 4 ++++ include/drm/drm_cgroup.h | 2 ++ kernel/cgroup/drm.c | 10 ++++++++++ 3 files changed, 16 insertions(+)