Merge tag 'kvm-x86-mmu-6.4-2' of https://github.com/kvm-x86/linux into HEAD
[linux-block.git] / include / linux / psi_types.h
index 1e0a0d7ace3af248db249cef16707f01dcf49742..040c089581c6c035197f98ae183ae4c138b38552 100644 (file)
@@ -151,6 +151,9 @@ struct psi_trigger {
 
        /* Deferred event(s) from previous ratelimit window */
        bool pending_event;
+
+       /* Trigger type - PSI_AVGS for unprivileged, PSI_POLL for RT */
+       enum psi_aggregators aggregator;
 };
 
 struct psi_group {
@@ -171,30 +174,34 @@ struct psi_group {
        /* Aggregator work control */
        struct delayed_work avgs_work;
 
+       /* Unprivileged triggers against N*PSI_FREQ windows */
+       struct list_head avg_triggers;
+       u32 avg_nr_triggers[NR_PSI_STATES - 1];
+
        /* Total stall times and sampled pressure averages */
        u64 total[NR_PSI_AGGREGATORS][NR_PSI_STATES - 1];
        unsigned long avg[NR_PSI_STATES - 1][3];
 
-       /* Monitor work control */
-       struct task_struct __rcu *poll_task;
-       struct timer_list poll_timer;
-       wait_queue_head_t poll_wait;
-       atomic_t poll_wakeup;
-       atomic_t poll_scheduled;
+       /* Monitor RT polling work control */
+       struct task_struct __rcu *rtpoll_task;
+       struct timer_list rtpoll_timer;
+       wait_queue_head_t rtpoll_wait;
+       atomic_t rtpoll_wakeup;
+       atomic_t rtpoll_scheduled;
 
        /* Protects data used by the monitor */
-       struct mutex trigger_lock;
-
-       /* Configured polling triggers */
-       struct list_head triggers;
-       u32 nr_triggers[NR_PSI_STATES - 1];
-       u32 poll_states;
-       u64 poll_min_period;
-
-       /* Total stall times at the start of monitor activation */
-       u64 polling_total[NR_PSI_STATES - 1];
-       u64 polling_next_update;
-       u64 polling_until;
+       struct mutex rtpoll_trigger_lock;
+
+       /* Configured RT polling triggers */
+       struct list_head rtpoll_triggers;
+       u32 rtpoll_nr_triggers[NR_PSI_STATES - 1];
+       u32 rtpoll_states;
+       u64 rtpoll_min_period;
+
+       /* Total stall times at the start of RT polling monitor activation */
+       u64 rtpoll_total[NR_PSI_STATES - 1];
+       u64 rtpoll_next_update;
+       u64 rtpoll_until;
 };
 
 #else /* CONFIG_PSI */