ioc
Regular
4.4
: Absent ⚠️
4.8
: Absent ⚠️
4.10
: Absent ⚠️
4.13
: Absent ⚠️
4.15
: Absent ⚠️
4.18
: Absent ⚠️
5.0
: Absent ⚠️
5.3
: Absent ⚠️
5.4
: ✅struct ioc {
struct rq_qos rqos;
bool enabled;
struct ioc_params params;
u32 period_us;
u32 margin_us;
u64 vrate_min;
u64 vrate_max;
spinlock_t lock;
struct timer_list timer;
struct list_head active_iocgs;
struct ioc_pcpu_stat *pcpu_stat;
enum ioc_running running;
atomic64_t vtime_rate;
seqcount_t period_seqcount;
u32 period_at;
u64 period_at_vtime;
atomic64_t cur_period;
int busy_level;
u64 inuse_margin_vtime;
bool weights_updated;
atomic_t hweight_gen;
u64 autop_too_fast_at;
u64 autop_too_slow_at;
int autop_idx;
bool user_qos_params;
bool user_cost_model;
};
5.8
: ✅struct ioc {
struct rq_qos rqos;
bool enabled;
struct ioc_params params;
u32 period_us;
u32 margin_us;
u64 vrate_min;
u64 vrate_max;
spinlock_t lock;
struct timer_list timer;
struct list_head active_iocgs;
struct ioc_pcpu_stat *pcpu_stat;
enum ioc_running running;
atomic64_t vtime_rate;
seqcount_t period_seqcount;
u32 period_at;
u64 period_at_vtime;
atomic64_t cur_period;
int busy_level;
u64 inuse_margin_vtime;
bool weights_updated;
atomic_t hweight_gen;
u64 autop_too_fast_at;
u64 autop_too_slow_at;
int autop_idx;
bool user_qos_params;
bool user_cost_model;
};
5.11
: ✅struct ioc {
struct rq_qos rqos;
bool enabled;
struct ioc_params params;
struct ioc_margins margins;
u32 period_us;
u32 timer_slack_ns;
u64 vrate_min;
u64 vrate_max;
spinlock_t lock;
struct timer_list timer;
struct list_head active_iocgs;
struct ioc_pcpu_stat *pcpu_stat;
enum ioc_running running;
atomic64_t vtime_rate;
u64 vtime_base_rate;
s64 vtime_err;
seqcount_spinlock_t period_seqcount;
u64 period_at;
u64 period_at_vtime;
atomic64_t cur_period;
int busy_level;
bool weights_updated;
atomic_t hweight_gen;
u64 dfgv_period_at;
u64 dfgv_period_rem;
u64 dfgv_usage_us_sum;
u64 autop_too_fast_at;
u64 autop_too_slow_at;
int autop_idx;
bool user_qos_params;
bool user_cost_model;
};
5.13
: ✅struct ioc {
struct rq_qos rqos;
bool enabled;
struct ioc_params params;
struct ioc_margins margins;
u32 period_us;
u32 timer_slack_ns;
u64 vrate_min;
u64 vrate_max;
spinlock_t lock;
struct timer_list timer;
struct list_head active_iocgs;
struct ioc_pcpu_stat *pcpu_stat;
enum ioc_running running;
atomic64_t vtime_rate;
u64 vtime_base_rate;
s64 vtime_err;
seqcount_spinlock_t period_seqcount;
u64 period_at;
u64 period_at_vtime;
atomic64_t cur_period;
int busy_level;
bool weights_updated;
atomic_t hweight_gen;
u64 dfgv_period_at;
u64 dfgv_period_rem;
u64 dfgv_usage_us_sum;
u64 autop_too_fast_at;
u64 autop_too_slow_at;
int autop_idx;
bool user_qos_params;
bool user_cost_model;
};
5.15
: ✅struct ioc {
struct rq_qos rqos;
bool enabled;
struct ioc_params params;
struct ioc_margins margins;
u32 period_us;
u32 timer_slack_ns;
u64 vrate_min;
u64 vrate_max;
spinlock_t lock;
struct timer_list timer;
struct list_head active_iocgs;
struct ioc_pcpu_stat *pcpu_stat;
enum ioc_running running;
atomic64_t vtime_rate;
u64 vtime_base_rate;
s64 vtime_err;
seqcount_spinlock_t period_seqcount;
u64 period_at;
u64 period_at_vtime;
atomic64_t cur_period;
int busy_level;
bool weights_updated;
atomic_t hweight_gen;
u64 dfgv_period_at;
u64 dfgv_period_rem;
u64 dfgv_usage_us_sum;
u64 autop_too_fast_at;
u64 autop_too_slow_at;
int autop_idx;
bool user_qos_params;
bool user_cost_model;
};
5.19
: ✅struct ioc {
struct rq_qos rqos;
bool enabled;
struct ioc_params params;
struct ioc_margins margins;
u32 period_us;
u32 timer_slack_ns;
u64 vrate_min;
u64 vrate_max;
spinlock_t lock;
struct timer_list timer;
struct list_head active_iocgs;
struct ioc_pcpu_stat *pcpu_stat;
enum ioc_running running;
atomic64_t vtime_rate;
u64 vtime_base_rate;
s64 vtime_err;
seqcount_spinlock_t period_seqcount;
u64 period_at;
u64 period_at_vtime;
atomic64_t cur_period;
int busy_level;
bool weights_updated;
atomic_t hweight_gen;
u64 dfgv_period_at;
u64 dfgv_period_rem;
u64 dfgv_usage_us_sum;
u64 autop_too_fast_at;
u64 autop_too_slow_at;
int autop_idx;
bool user_qos_params;
bool user_cost_model;
};
6.2
: ✅struct ioc {
struct rq_qos rqos;
bool enabled;
struct ioc_params params;
struct ioc_margins margins;
u32 period_us;
u32 timer_slack_ns;
u64 vrate_min;
u64 vrate_max;
spinlock_t lock;
struct timer_list timer;
struct list_head active_iocgs;
struct ioc_pcpu_stat *pcpu_stat;
enum ioc_running running;
atomic64_t vtime_rate;
u64 vtime_base_rate;
s64 vtime_err;
seqcount_spinlock_t period_seqcount;
u64 period_at;
u64 period_at_vtime;
atomic64_t cur_period;
int busy_level;
bool weights_updated;
atomic_t hweight_gen;
u64 dfgv_period_at;
u64 dfgv_period_rem;
u64 dfgv_usage_us_sum;
u64 autop_too_fast_at;
u64 autop_too_slow_at;
int autop_idx;
bool user_qos_params;
bool user_cost_model;
};
6.5
: ✅struct ioc {
struct rq_qos rqos;
bool enabled;
struct ioc_params params;
struct ioc_margins margins;
u32 period_us;
u32 timer_slack_ns;
u64 vrate_min;
u64 vrate_max;
spinlock_t lock;
struct timer_list timer;
struct list_head active_iocgs;
struct ioc_pcpu_stat *pcpu_stat;
enum ioc_running running;
atomic64_t vtime_rate;
u64 vtime_base_rate;
s64 vtime_err;
seqcount_spinlock_t period_seqcount;
u64 period_at;
u64 period_at_vtime;
atomic64_t cur_period;
int busy_level;
bool weights_updated;
atomic_t hweight_gen;
u64 dfgv_period_at;
u64 dfgv_period_rem;
u64 dfgv_usage_us_sum;
u64 autop_too_fast_at;
u64 autop_too_slow_at;
int autop_idx;
bool user_qos_params;
bool user_cost_model;
};
6.8
: ✅struct ioc {
struct rq_qos rqos;
bool enabled;
struct ioc_params params;
struct ioc_margins margins;
u32 period_us;
u32 timer_slack_ns;
u64 vrate_min;
u64 vrate_max;
spinlock_t lock;
struct timer_list timer;
struct list_head active_iocgs;
struct ioc_pcpu_stat *pcpu_stat;
enum ioc_running running;
atomic64_t vtime_rate;
u64 vtime_base_rate;
s64 vtime_err;
seqcount_spinlock_t period_seqcount;
u64 period_at;
u64 period_at_vtime;
atomic64_t cur_period;
int busy_level;
bool weights_updated;
atomic_t hweight_gen;
u64 dfgv_period_at;
u64 dfgv_period_rem;
u64 dfgv_usage_us_sum;
u64 autop_too_fast_at;
u64 autop_too_slow_at;
int autop_idx;
bool user_qos_params;
bool user_cost_model;
};
arm64
: ✅struct ioc {
struct rq_qos rqos;
bool enabled;
struct ioc_params params;
u32 period_us;
u32 margin_us;
u64 vrate_min;
u64 vrate_max;
spinlock_t lock;
struct timer_list timer;
struct list_head active_iocgs;
struct ioc_pcpu_stat *pcpu_stat;
enum ioc_running running;
atomic64_t vtime_rate;
seqcount_t period_seqcount;
u32 period_at;
u64 period_at_vtime;
atomic64_t cur_period;
int busy_level;
u64 inuse_margin_vtime;
bool weights_updated;
atomic_t hweight_gen;
u64 autop_too_fast_at;
u64 autop_too_slow_at;
int autop_idx;
bool user_qos_params;
bool user_cost_model;
};
armhf
: ✅struct ioc {
struct rq_qos rqos;
bool enabled;
struct ioc_params params;
u32 period_us;
u32 margin_us;
u64 vrate_min;
u64 vrate_max;
spinlock_t lock;
struct timer_list timer;
struct list_head active_iocgs;
struct ioc_pcpu_stat *pcpu_stat;
enum ioc_running running;
atomic64_t vtime_rate;
seqcount_t period_seqcount;
u32 period_at;
u64 period_at_vtime;
atomic64_t cur_period;
int busy_level;
u64 inuse_margin_vtime;
bool weights_updated;
atomic_t hweight_gen;
u64 autop_too_fast_at;
u64 autop_too_slow_at;
int autop_idx;
bool user_qos_params;
bool user_cost_model;
};
ppc64el
: ✅struct ioc {
struct rq_qos rqos;
bool enabled;
struct ioc_params params;
u32 period_us;
u32 margin_us;
u64 vrate_min;
u64 vrate_max;
spinlock_t lock;
struct timer_list timer;
struct list_head active_iocgs;
struct ioc_pcpu_stat *pcpu_stat;
enum ioc_running running;
atomic64_t vtime_rate;
seqcount_t period_seqcount;
u32 period_at;
u64 period_at_vtime;
atomic64_t cur_period;
int busy_level;
u64 inuse_margin_vtime;
bool weights_updated;
atomic_t hweight_gen;
u64 autop_too_fast_at;
u64 autop_too_slow_at;
int autop_idx;
bool user_qos_params;
bool user_cost_model;
};
riscv64
: ✅struct ioc {
struct rq_qos rqos;
bool enabled;
struct ioc_params params;
u32 period_us;
u32 margin_us;
u64 vrate_min;
u64 vrate_max;
spinlock_t lock;
struct timer_list timer;
struct list_head active_iocgs;
struct ioc_pcpu_stat *pcpu_stat;
enum ioc_running running;
atomic64_t vtime_rate;
seqcount_t period_seqcount;
u32 period_at;
u64 period_at_vtime;
atomic64_t cur_period;
int busy_level;
u64 inuse_margin_vtime;
bool weights_updated;
atomic_t hweight_gen;
u64 autop_too_fast_at;
u64 autop_too_slow_at;
int autop_idx;
bool user_qos_params;
bool user_cost_model;
};
aws
: ✅struct ioc {
struct rq_qos rqos;
bool enabled;
struct ioc_params params;
u32 period_us;
u32 margin_us;
u64 vrate_min;
u64 vrate_max;
spinlock_t lock;
struct timer_list timer;
struct list_head active_iocgs;
struct ioc_pcpu_stat *pcpu_stat;
enum ioc_running running;
atomic64_t vtime_rate;
seqcount_t period_seqcount;
u32 period_at;
u64 period_at_vtime;
atomic64_t cur_period;
int busy_level;
u64 inuse_margin_vtime;
bool weights_updated;
atomic_t hweight_gen;
u64 autop_too_fast_at;
u64 autop_too_slow_at;
int autop_idx;
bool user_qos_params;
bool user_cost_model;
};
azure
: ✅struct ioc {
struct rq_qos rqos;
bool enabled;
struct ioc_params params;
u32 period_us;
u32 margin_us;
u64 vrate_min;
u64 vrate_max;
spinlock_t lock;
struct timer_list timer;
struct list_head active_iocgs;
struct ioc_pcpu_stat *pcpu_stat;
enum ioc_running running;
atomic64_t vtime_rate;
seqcount_t period_seqcount;
u32 period_at;
u64 period_at_vtime;
atomic64_t cur_period;
int busy_level;
u64 inuse_margin_vtime;
bool weights_updated;
atomic_t hweight_gen;
u64 autop_too_fast_at;
u64 autop_too_slow_at;
int autop_idx;
bool user_qos_params;
bool user_cost_model;
};
gcp
: ✅struct ioc {
struct rq_qos rqos;
bool enabled;
struct ioc_params params;
u32 period_us;
u32 margin_us;
u64 vrate_min;
u64 vrate_max;
spinlock_t lock;
struct timer_list timer;
struct list_head active_iocgs;
struct ioc_pcpu_stat *pcpu_stat;
enum ioc_running running;
atomic64_t vtime_rate;
seqcount_t period_seqcount;
u32 period_at;
u64 period_at_vtime;
atomic64_t cur_period;
int busy_level;
u64 inuse_margin_vtime;
bool weights_updated;
atomic_t hweight_gen;
u64 autop_too_fast_at;
u64 autop_too_slow_at;
int autop_idx;
bool user_qos_params;
bool user_cost_model;
};
lowlatency
: ✅struct ioc {
struct rq_qos rqos;
bool enabled;
struct ioc_params params;
u32 period_us;
u32 margin_us;
u64 vrate_min;
u64 vrate_max;
spinlock_t lock;
struct timer_list timer;
struct list_head active_iocgs;
struct ioc_pcpu_stat *pcpu_stat;
enum ioc_running running;
atomic64_t vtime_rate;
seqcount_t period_seqcount;
u32 period_at;
u64 period_at_vtime;
atomic64_t cur_period;
int busy_level;
u64 inuse_margin_vtime;
bool weights_updated;
atomic_t hweight_gen;
u64 autop_too_fast_at;
u64 autop_too_slow_at;
int autop_idx;
bool user_qos_params;
bool user_cost_model;
};
Regular
5.4
and 5.8
✅
5.8
and 5.11
⚠️struct ioc_margins margins
u32 timer_slack_ns
u64 vtime_base_rate
s64 vtime_err
u64 dfgv_period_at
u64 dfgv_period_rem
u64 dfgv_usage_us_sum
u32 margin_us
u64 inuse_margin_vtime
seqcount_t period_seqcount
➡️ seqcount_spinlock_t period_seqcount
u32 period_at
➡️ u64 period_at
5.11
and 5.13
✅
5.13
and 5.15
✅
5.15
and 5.19
✅
5.19
and 6.2
✅
6.2
and 6.5
✅
6.5
and 6.8
✅
amd64
and arm64
✅
amd64
and armhf
✅
amd64
and ppc64el
✅
amd64
and riscv64
✅
generic
and aws
✅
generic
and azure
✅
generic
and gcp
✅
generic
and lowlatency
✅