blob: 7e50557d840a4dd94969efd39509cfba763d4486 [file] [log] [blame]
# SPDX-License-Identifier: GPL-2.0
import collections
class DamonFeature:
name = None
upstream_status = None
upstreamed_version = None
comments = None
def __init__(self, name, upstream_status, upstreamed_version='unknown',
comments=''):
self.name = name
self.upstream_status = upstream_status
self.upstreamed_version = upstreamed_version
self.comments = comments
def to_kvpairs(self, raw=False):
return collections.OrderedDict([
('name', self.name),
('upstream_status', self.upstream_status),
('upstreamed_version', self.upstreamed_version),
('comments', self.comments),
])
@classmethod
def from_kvpairs(cls, kvpairs):
if 'upstreamed_version' in kvpairs:
upstreamed_version = kvpairs['upstreamed_version']
else:
upstreamed_version = 'unknown'
return cls(kvpairs['name'], kvpairs['upstream_status'],
upstreamed_version,
kvpairs['comments'])
def __eq__(self, other):
return self.name == other.name and \
self.upstream_status == other.upstream_status and \
self.upstreamed_version == other.upstreamed_version and \
self.comments == other.comments
# naming convention: <interface>/<feature>
# e.g.,
# - debugfs/vaddr
# - sysfs/vaddr
# - trace/damon_aggregated
# - reclaim/mem_pressure_goal
# - lru_sort/autotune
# - stat/negative_idle_time
#
# old feature names are incrementally being updated.
features_list = [
DamonFeature(
name='debugfs/record', upstream_status='withdrawn',
upstreamed_version='none',
comments='was in DAMON patchset, but not merged in mainline'),
DamonFeature(name='debugfs/vaddr', upstream_status='merged in v5.15',
upstreamed_version='5.15'),
DamonFeature(name='trace/damon_aggregated',
upstream_status='merged in v5.15 (2fcb93629ad8)',
upstreamed_version='5.15'),
DamonFeature(name='module/damon_debugfs',
upstream_status='merged in v5.15-rc1 (4bc05954d007)',
upstreamed_version='5.15'),
DamonFeature(name='debugfs/schemes', upstream_status='merged in v5.16',
upstreamed_version='5.16'),
DamonFeature(name='debugfs/init_regions',
upstream_status='merged in v5.16 (90bebce9fcd6)',
upstreamed_version='5.16'),
DamonFeature(name='debugfs/paddr',
upstream_status='merged in v5.16 (a28397beb55b)',
upstreamed_version='5.16'),
DamonFeature(name='debugfs/schemes_size_quota',
upstream_status='merged in v5.16 (2b8a248d5873)',
upstreamed_version='5.16'),
DamonFeature(name='debugfs/schemes_time_quota',
upstream_status='merged in v5.16 (1cd243030059)',
upstreamed_version='5.16'),
DamonFeature(name='debugfs/schemes_prioritization',
upstream_status='merged in v5.16 (38683e003153)',
upstreamed_version='5.16'),
DamonFeature(name='debugfs/schemes_wmarks',
upstream_status='merged in v5.16 (ee801b7dd782)',
upstreamed_version='5.16'),
DamonFeature(name='module/damon_reclaim',
upstream_status='merged in v5.16-rc1 (43b0536cb471)',
upstreamed_version='5.16'),
DamonFeature(name='debugfs/schemes_stat_succ',
upstream_status='merged in v5.17 (0e92c2ee9f45)',
upstreamed_version='5.17'),
DamonFeature(name='schemes_stat_qt_exceed',
upstream_status='merged in v5.17 (0e92c2ee9f45)',
upstreamed_version='5.17'),
DamonFeature(name='debugfs/init_regions_target_idx',
upstream_status='merged in v5.18 (144760f8e0c3)',
upstreamed_version='5.18'),
DamonFeature(name='module/damon_sysfs',
upstream_status='merged in v5.18-rc1 (c951cd3b8901)',
upstreamed_version='5.18'),
DamonFeature(name='sysfs/vaddr',
upstream_status='merged in v5.18-rc1 (c951cd3b8901)',
upstreamed_version='5.18'),
DamonFeature(name='sysfs/schemes_time_quota',
upstream_status='merged in v5.18-rc1 (c951cd3b8901)',
upstreamed_version='5.18'),
DamonFeature(name='sysfs/paddr',
upstream_status='merged in v5.18-rc1 (c951cd3b8901)',
upstreamed_version='5.18'),
DamonFeature(name='sysfs/init_regions',
upstream_status='merged in v5.18-rc1 (c951cd3b8901)',
upstreamed_version='5.18'),
DamonFeature(name='sysfs/schemes',
upstream_status='merged in v5.18-rc1 (c951cd3b8901)',
upstreamed_version='5.18'),
DamonFeature(name='sysfs/schemes_stat_succ',
upstream_status='merged in v5.18-rc1 (c951cd3b8901)',
upstreamed_version='5.18'),
DamonFeature(name='sysfs/schemes_size_quota',
upstream_status='merged in v5.18-rc1 (c951cd3b8901)',
upstreamed_version='5.18'),
DamonFeature(name='sysfs/schemes_stat_qt_exceed',
upstream_status='merged in v5.18-rc1 (c951cd3b8901)',
upstreamed_version='5.18'),
DamonFeature(name='sysfs/schemes_wmarks',
upstream_status='merged in v5.18-rc1 (c951cd3b8901)',
upstreamed_version='5.18'),
DamonFeature(name='sysfs/schemes_prioritization',
upstream_status='merged in v5.18-rc1 (c951cd3b8901)',
upstreamed_version='5.18'),
DamonFeature(name='sysfs/fvaddr',
upstream_status='merged in v5.19 (b82434471cd2)',
upstreamed_version='5.19'),
DamonFeature(name='module/damon_lru_sort',
upstream_status='merged in v6.0-rc1 (40e983cca927)',
upstreamed_version='6.0'),
DamonFeature(name='sysfs/schemes_tried_regions',
upstream_status='merged in v6.2-rc1',
upstreamed_version='6.2'),
DamonFeature(name='sysfs/schemes_filters',
upstream_status='merged in v6.3-rc1',
upstreamed_version='6.3'),
DamonFeature(name='sysfs/schemes_filters_anon',
upstream_status='merged in v6.3-rc1',
upstreamed_version='6.3'),
DamonFeature(name='sysfs/schemes_filters_memcg',
upstream_status='merged in v6.3-rc1',
upstreamed_version='6.3'),
DamonFeature(name='sysfs/schemes_tried_regions_sz',
upstream_status='merged in v6.6-rc1',
upstreamed_version='6.6'),
DamonFeature(name='sysfs/schemes_filters_addr',
upstream_status='merged in v6.6-rc1',
upstreamed_version='6.6'),
DamonFeature(name='sysfs/schemes_filters_target',
upstream_status='merged in v6.6-rc1',
upstreamed_version='6.6'),
DamonFeature(name='sysfs/schemes_apply_interval',
upstream_status='merged in v6.7-rc1',
upstreamed_version='6.7'),
DamonFeature(name='trace/damos_before_apply',
upstream_status='merged in v6.7-rc1 (c603c630b509)',
upstreamed_version='6.7'),
DamonFeature(name='sysfs/schemes_quota_goals',
upstream_status='merged in v6.8-rc1',
upstreamed_version='6.8'),
DamonFeature(name='sysfs/schemes_quota_effective_bytes',
upstream_status='merged in v6.9-rc1',
upstreamed_version='6.9'),
DamonFeature(name='sysfs/schemes_quota_goal_metric',
upstream_status='merged in v6.9-rc1',
upstreamed_version='6.9'),
DamonFeature(name='sysfs/schemes_quota_goal_some_psi',
upstream_status='merged in v6.9-rc1',
upstreamed_version='6.9'),
DamonFeature(name='sysfs/schemes_filters_young',
upstream_status='merged in v6.10-rc1',
upstreamed_version='6.10'),
DamonFeature(name='sysfs/schemes_migrate',
upstream_status='merged in v6.11-rc1',
upstreamed_version='6.11'),
DamonFeature(name='sysfs/sz_ops_filter_passed',
upstream_status='merged in v6.14-rc1',
upstreamed_version='6.14'),
DamonFeature(name='sysfs/allow_filter',
upstream_status='merged in v6.14-rc1',
upstreamed_version='6.14'),
DamonFeature(name='sysfs/schemes_filters_hugepage_size',
upstream_status='merged in v6.15-rc1',
upstreamed_version='6.15'),
DamonFeature(name='sysfs/schemes_filters_unmapped',
upstream_status='merged in v6.15-rc1',
upstreamed_version='6.15'),
DamonFeature(name='sysfs/intervals_goal',
upstream_status='merged in v6.15-rc1',
upstreamed_version='6.15'),
DamonFeature(name='sysfs/schemes_filters_core_ops_dirs',
upstream_status='merged in v6.15-rc1',
upstreamed_version='6.15'),
DamonFeature(name='sysfs/schemes_filters_active',
upstream_status='merged in v6.15-rc1',
upstreamed_version='6.15'),
DamonFeature(name='sysfs/schemes_quota_goal_node_mem_used_free',
upstream_status='merged in v6.16-rc1',
upstreamed_version='6.16'),
DamonFeature(name='sysfs/schemes_dests',
upstream_status='merged in v6.17-rc1',
upstreamed_version='6.17'),
DamonFeature(name='sysfs/refresh_ms',
upstream_status='merged in v6.17-rc1',
upstreamed_version='6.17'),
DamonFeature(name='trace/damon_monitor_intervals_tune',
upstream_status='merged in v6.17-rc1 (214db7028727)',
upstreamed_version='6.17'),
DamonFeature(name='trace/damos_esz',
upstream_status='merged in v6.17-rc1 (a86d695193bf)',
upstreamed_version='6.17'),
DamonFeature(name='module/damon_stat',
upstream_status='merged in v6.17-rc1 (369c415e6073)',
upstreamed_version='6.17'),
DamonFeature(name='sysfs/addr_unit',
upstream_status='merged in v6.18-rc1',
upstreamed_version='6.18'),
DamonFeature(name='sysfs/schemes_quota_goal_node_memcg_used_free',
upstream_status='merged in v6.19-rc1',
upstreamed_version='none'),
DamonFeature(name='sysfs/obsolete_target',
upstream_status='merged in v6.19-rc1',
upstreamed_version='none'),
DamonFeature(name='sysfs/damos_stat_nr_snapshots',
upstream_status='merged in mm, expected for 6.20/7.0-rc1',
upstreamed_version='none'),
DamonFeature(name='sysfs/damos_max_nr_snapshots',
upstream_status='merged in mm, expected for 6.20/7.0-rc1',
upstreamed_version='none'),
DamonFeature(name='trace/damos_stat_after_apply_interval',
upstream_status='merged in mm, expected for 6.20/7.0-rc1',
upstreamed_version='none'),
DamonFeature(name='sysfs/damon_sample_control',
upstream_status='hacking on damon/next',
upstreamed_version='none',
comments='a replacement of ops_attrs'),
DamonFeature(name='sysfs/ops_attrs',
upstream_status='hacking on damon/next',
upstreamed_version='none'),
]