Lines Matching refs:sdom
500 struct list_head sdom; /* List of domains (for debug key) */ member
515 struct csched2_dom *sdom; /* Up-pointer to domain */ member
1747 ASSERT(spin_is_locked(&svc->sdom->budget_lock)); in park_vcpu()
1767 update_load(svc->sdom->dom->cpupool->sched, svc->rqd, svc, -1, NOW()); in park_vcpu()
1769 list_add(&svc->parked_elem, &svc->sdom->parked_vcpus); in park_vcpu()
1774 struct csched2_dom *sdom = svc->sdom; in vcpu_grab_budget() local
1783 spin_lock(&sdom->budget_lock); in vcpu_grab_budget()
1792 sdom->budget += svc->budget; in vcpu_grab_budget()
1794 if ( sdom->budget > 0 ) in vcpu_grab_budget()
1799 if ( likely(sdom->budget >= svc->budget_quota) ) in vcpu_grab_budget()
1802 budget = sdom->budget; in vcpu_grab_budget()
1805 sdom->budget -= budget; in vcpu_grab_budget()
1813 spin_unlock(&sdom->budget_lock); in vcpu_grab_budget()
1821 struct csched2_dom *sdom = svc->sdom; in vcpu_return_budget() local
1828 spin_lock(&sdom->budget_lock); in vcpu_return_budget()
1836 sdom->budget += svc->budget; in vcpu_return_budget()
1853 if ( sdom->budget > 0 ) in vcpu_return_budget()
1854 list_splice_init(&sdom->parked_vcpus, parked); in vcpu_return_budget()
1856 spin_unlock(&sdom->budget_lock); in vcpu_return_budget()
1907 static inline void do_replenish(struct csched2_dom *sdom) in do_replenish() argument
1909 sdom->next_repl += CSCHED2_BDGT_REPL_PERIOD; in do_replenish()
1910 sdom->budget += sdom->tot_budget; in do_replenish()
1915 struct csched2_dom *sdom = data; in replenish_domain_budget() local
1920 spin_lock_irqsave(&sdom->budget_lock, flags); in replenish_domain_budget()
1935 do_replenish(sdom); in replenish_domain_budget()
1945 if ( unlikely(sdom->next_repl <= now) ) in replenish_domain_budget()
1948 do_replenish(sdom); in replenish_domain_budget()
1949 while ( sdom->next_repl <= now ); in replenish_domain_budget()
1956 if ( unlikely(sdom->budget <= 0) ) in replenish_domain_budget()
1958 spin_unlock_irqrestore(&sdom->budget_lock, flags); in replenish_domain_budget()
1963 sdom->budget = min(sdom->budget, sdom->tot_budget); in replenish_domain_budget()
1970 list_splice_init(&sdom->parked_vcpus, &parked); in replenish_domain_budget()
1972 spin_unlock_irqrestore(&sdom->budget_lock, flags); in replenish_domain_budget()
1974 unpark_parked_vcpus(sdom->dom->cpupool->sched, &parked); in replenish_domain_budget()
1977 set_timer(sdom->repl_timer, sdom->next_repl); in replenish_domain_budget()
1985 struct csched2_dom * const sdom = svc->sdom; in csched2_vcpu_check() local
1988 BUG_ON( sdom != csched2_dom(vc->domain) ); in csched2_vcpu_check()
1989 if ( sdom ) in csched2_vcpu_check()
1992 BUG_ON( sdom->dom != vc->domain ); in csched2_vcpu_check()
2018 svc->sdom = dd; in csched2_alloc_vdata()
2024 ASSERT(svc->sdom != NULL); in csched2_alloc_vdata()
2026 svc->weight = svc->sdom->weight; in csched2_alloc_vdata()
2033 ASSERT(svc->sdom == NULL); in csched2_alloc_vdata()
2774 struct csched2_dom * const sdom = csched2_dom(d); in csched2_dom_cntl() local
2795 op->u.credit2.weight = sdom->weight; in csched2_dom_cntl()
2796 op->u.credit2.cap = sdom->cap; in csched2_dom_cntl()
2806 old_weight = sdom->weight; in csched2_dom_cntl()
2808 sdom->weight = op->u.credit2.weight; in csched2_dom_cntl()
2818 svc->weight = sdom->weight; in csched2_dom_cntl()
2831 if ( op->u.credit2.cap > 100 * sdom->nr_vcpus ) in csched2_dom_cntl()
2838 spin_lock(&sdom->budget_lock); in csched2_dom_cntl()
2839 sdom->tot_budget = (CSCHED2_BDGT_REPL_PERIOD * op->u.credit2.cap); in csched2_dom_cntl()
2840 sdom->tot_budget /= 100; in csched2_dom_cntl()
2841 spin_unlock(&sdom->budget_lock); in csched2_dom_cntl()
2858 svc->budget_quota = max(sdom->tot_budget / sdom->nr_vcpus, in csched2_dom_cntl()
2863 if ( sdom->cap == 0 ) in csched2_dom_cntl()
2875 sdom->budget = sdom->tot_budget; in csched2_dom_cntl()
2876 sdom->next_repl = NOW() + CSCHED2_BDGT_REPL_PERIOD; in csched2_dom_cntl()
2877 set_timer(sdom->repl_timer, sdom->next_repl); in csched2_dom_cntl()
2930 sdom->cap = op->u.credit2.cap; in csched2_dom_cntl()
2932 else if ( sdom->cap != 0 ) in csched2_dom_cntl()
2936 stop_timer(sdom->repl_timer); in csched2_dom_cntl()
2949 sdom->cap = 0; in csched2_dom_cntl()
2957 spin_lock(&sdom->budget_lock); in csched2_dom_cntl()
2958 list_splice_init(&sdom->parked_vcpus, &parked); in csched2_dom_cntl()
2959 spin_unlock(&sdom->budget_lock); in csched2_dom_cntl()
3010 struct csched2_dom *sdom; in csched2_alloc_domdata() local
3013 sdom = xzalloc(struct csched2_dom); in csched2_alloc_domdata()
3014 if ( sdom == NULL ) in csched2_alloc_domdata()
3017 sdom->repl_timer = xzalloc(struct timer); in csched2_alloc_domdata()
3018 if ( sdom->repl_timer == NULL ) in csched2_alloc_domdata()
3020 xfree(sdom); in csched2_alloc_domdata()
3025 INIT_LIST_HEAD(&sdom->sdom_elem); in csched2_alloc_domdata()
3026 sdom->dom = dom; in csched2_alloc_domdata()
3027 sdom->weight = CSCHED2_DEFAULT_WEIGHT; in csched2_alloc_domdata()
3028 sdom->cap = 0U; in csched2_alloc_domdata()
3029 sdom->nr_vcpus = 0; in csched2_alloc_domdata()
3031 init_timer(sdom->repl_timer, replenish_domain_budget, sdom, in csched2_alloc_domdata()
3033 spin_lock_init(&sdom->budget_lock); in csched2_alloc_domdata()
3034 INIT_LIST_HEAD(&sdom->parked_vcpus); in csched2_alloc_domdata()
3038 list_add_tail(&sdom->sdom_elem, &csched2_priv(ops)->sdom); in csched2_alloc_domdata()
3042 return (void *)sdom; in csched2_alloc_domdata()
3048 struct csched2_dom *sdom; in csched2_dom_init() local
3053 sdom = csched2_alloc_domdata(ops, dom); in csched2_dom_init()
3054 if ( sdom == NULL ) in csched2_dom_init()
3057 dom->sched_priv = sdom; in csched2_dom_init()
3066 struct csched2_dom *sdom = data; in csched2_free_domdata() local
3069 kill_timer(sdom->repl_timer); in csched2_free_domdata()
3073 list_del_init(&sdom->sdom_elem); in csched2_free_domdata()
3077 xfree(sdom->repl_timer); in csched2_free_domdata()
3093 struct csched2_dom * const sdom = svc->sdom; in csched2_vcpu_insert() local
3113 sdom->nr_vcpus++; in csched2_vcpu_insert()
3146 svc->sdom->nr_vcpus--; in csched2_vcpu_remove()
3713 list_for_each( iter_sdom, &prv->sdom ) in csched2_dump()
3715 struct csched2_dom *sdom; in csched2_dump() local
3718 sdom = list_entry(iter_sdom, struct csched2_dom, sdom_elem); in csched2_dump()
3721 sdom->dom->domain_id, in csched2_dump()
3722 sdom->weight, in csched2_dump()
3723 sdom->cap, in csched2_dump()
3724 sdom->nr_vcpus); in csched2_dump()
3726 for_each_vcpu( sdom->dom, v ) in csched2_dump()
3987 INIT_LIST_HEAD(&prv->sdom); in csched2_init()