From nobody Mon Feb 9 19:07:33 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1710779785; cv=none; d=zohomail.com; s=zohoarc; b=NTYNszNE0ArfCZrmca9nj9UPttDaVXxS67tFz5SzwBsRTT5r7XZEhkkp/2d/shEg9QmqQD1OcLsHVvGCBmtLxPDGZUZZR3eHn1J6GbtAoW9PHDxPiCQYHadTNYidHEZ6lnKJTHSfnrA9ucjwAXyFVH2iE1mx5KjoL0eI3q2vD54= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710779785; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=o1+TIJTTe6vbKVkQQzyzQLjvyWxN7MN/m4K6cIC1Be8=; b=Juw307CDDAw9nMu2z0L/7nPLnpu2+EuSL0GcDzB5Zz6rxYcE+xFjJ0RUPeT2GwwpLscHXzmzYMH7ykgR1xNwScm01gKKiZLCt/jndGTO1lvSQk0EOK0Dfifrf6S6eW1i2CVifmV0gDnYBnezeMYJgj8GacGxXsnu0pGt7EfAPBY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1710779785878942.3471704814556; Mon, 18 Mar 2024 09:36:25 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.694894.1084144 (Exim 4.92) (envelope-from ) id 1rmFy0-0006Iv-4z; Mon, 18 Mar 2024 16:36:04 +0000 Received: by outflank-mailman (output) from mailman id 694894.1084144; Mon, 18 Mar 2024 16:36:04 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rmFy0-0006Ii-1s; Mon, 18 Mar 2024 16:36:04 +0000 Received: by outflank-mailman (input) for mailman id 694894; Mon, 18 Mar 2024 16:36:02 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rmFxy-0005JO-GX for xen-devel@lists.xenproject.org; Mon, 18 Mar 2024 16:36:02 +0000 Received: from mail-ej1-x635.google.com (mail-ej1-x635.google.com [2a00:1450:4864:20::635]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 9b45409c-e545-11ee-afdd-a90da7624cb6; Mon, 18 Mar 2024 17:36:01 +0100 (CET) Received: by mail-ej1-x635.google.com with SMTP id a640c23a62f3a-a466e53f8c0so596821666b.1 for ; Mon, 18 Mar 2024 09:36:01 -0700 (PDT) Received: from andrewcoop.citrite.net (default-46-102-197-194.interdsl.co.uk. [46.102.197.194]) by smtp.gmail.com with ESMTPSA id j22-20020a170906051600b00a441a7a75b5sm4988894eja.209.2024.03.18.09.35.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Mar 2024 09:35:59 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 9b45409c-e545-11ee-afdd-a90da7624cb6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1710779760; x=1711384560; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=o1+TIJTTe6vbKVkQQzyzQLjvyWxN7MN/m4K6cIC1Be8=; b=BEx6t+/fYEi0z4xNzfjvmCcvyoMB5WwnxfquByAEHBE/Oc0nIC8tXT6H7kO0VpanAP FLBVxlNhkcp9DSGFteZP1NmtyDqP16F/QUJsoHYuww9/OdAVQT3h5P/zmsVq9z2vbabB hpk4IujbC8neqLhYqEoybc4uKgWIdfKExNE3w= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710779760; x=1711384560; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=o1+TIJTTe6vbKVkQQzyzQLjvyWxN7MN/m4K6cIC1Be8=; b=Rtwolck9/w7cevKYGRWazWW9vXWaPKoyPfush12/njQglg8v6vaesiOktJ2J7DpI15 1TecVEHZAZzhCI3R7ir64aaLphn0RKGQXRqqtbEYMJ9VL3zD3lSKH+IpD8n9JpbURMZs x0PMbL59KI9dI5FIPQ60CN2+aM58y9ti86s72NG/ZWhS6P1gNlHT4FiZyZ2OHUK7JD8S WwFK6hvkEh1wZDz37haA+f6mMq0MUhkqra5nogQtRLm3kkZTJPU6Hf/pND9/pCVsTjaM pMhyKs2GeIo4rpGIDGRZegn8CmkqmP2CdijbESrgeQaD7/K9a2KzPUwI84EhJZmUYT88 UEew== X-Gm-Message-State: AOJu0YxOT+BT9oXOSgWa8/Cis5imkHrV26CcnX/suF3Yk86T82K7XeR7 DvmjZJt01RECaVUQCFTTJsrMIufB49flgx/FA5LXRIcwDuseDjbGn6aUyTx31SqtfgxAqGwf7Zq x X-Google-Smtp-Source: AGHT+IHztVPDUb2EwfK3dSyLyDrjgOO2EjrU9wAG3xcUThSleC6DVoqlKx6XIX8tPFsUp+jSg2NgPA== X-Received: by 2002:a17:907:807:b0:a46:c06f:669e with SMTP id wv7-20020a170907080700b00a46c06f669emr2914527ejb.7.1710779760447; Mon, 18 Mar 2024 09:36:00 -0700 (PDT) From: Andrew Cooper To: Xen-devel Cc: Andrew Cooper , Dario Faggioli , George Dunlap , Jan Beulich , Stefano Stabellini , Julien Grall , Nicola Vetrini , "consulting @ bugseng . com" Subject: [PATCH 4/7] xen/sched: Clean up trace handling Date: Mon, 18 Mar 2024 16:35:49 +0000 Message-Id: <20240318163552.3808695-5-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20240318163552.3808695-1-andrew.cooper3@citrix.com> References: <20240318163552.3808695-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1710779788045100002 Content-Type: text/plain; charset="utf-8" There is no need for bitfields anywhere - use more sensible types. There is also no need to cast 'd' to (unsigned char *) before passing it to a functi= on taking void *. Switch to new trace_time() API. No functional change. Signed-off-by: Andrew Cooper Reviewed-by: Dario Faggioli Reviewed-by: George Dunlap --- CC: George Dunlap CC: Jan Beulich CC: Stefano Stabellini CC: Julien Grall CC: Dario Faggioli CC: Nicola Vetrini CC: consulting@bugseng.com v2: * New. v3: * Rebase over core API changes. --- xen/common/sched/core.c | 56 +++++++++++++++---------------- xen/common/sched/credit.c | 70 ++++++++++++++++++--------------------- xen/common/sched/null.c | 63 ++++++++++++++++++++--------------- 3 files changed, 97 insertions(+), 92 deletions(-) diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c index 3e48da1cdd4e..cd662280bbad 100644 --- a/xen/common/sched/core.c +++ b/xen/common/sched/core.c @@ -205,7 +205,7 @@ static inline struct scheduler *vcpu_scheduler(const st= ruct vcpu *v) =20 static inline void trace_runstate_change(const struct vcpu *v, int new_sta= te) { - struct { uint32_t vcpu:16, domain:16; } d; + struct { uint16_t vcpu, domain; } d; uint32_t event; =20 if ( likely(!tb_init_done) ) @@ -218,12 +218,12 @@ static inline void trace_runstate_change(const struct= vcpu *v, int new_state) event |=3D ( v->runstate.state & 0x3 ) << 8; event |=3D ( new_state & 0x3 ) << 4; =20 - __trace_var(event, 1/*tsc*/, sizeof(d), &d); + trace_time(event, sizeof(d), &d); } =20 static inline void trace_continue_running(const struct vcpu *v) { - struct { uint32_t vcpu:16, domain:16; } d; + struct { uint16_t vcpu, domain; } d; =20 if ( likely(!tb_init_done) ) return; @@ -231,7 +231,7 @@ static inline void trace_continue_running(const struct = vcpu *v) d.vcpu =3D v->vcpu_id; d.domain =3D v->domain->domain_id; =20 - __trace_var(TRC_SCHED_CONTINUE_RUNNING, 1/*tsc*/, sizeof(d), &d); + trace_time(TRC_SCHED_CONTINUE_RUNNING, sizeof(d), &d); } =20 static inline void vcpu_urgent_count_update(struct vcpu *v) @@ -872,7 +872,7 @@ int sched_init_domain(struct domain *d, unsigned int po= olid) return ret; =20 SCHED_STAT_CRANK(dom_init); - TRACE_1D(TRC_SCHED_DOM_ADD, d->domain_id); + TRACE_TIME(TRC_SCHED_DOM_ADD, d->domain_id); =20 rcu_read_lock(&sched_res_rculock); =20 @@ -895,7 +895,7 @@ void sched_destroy_domain(struct domain *d) if ( d->cpupool ) { SCHED_STAT_CRANK(dom_destroy); - TRACE_1D(TRC_SCHED_DOM_REM, d->domain_id); + TRACE_TIME(TRC_SCHED_DOM_REM, d->domain_id); =20 rcu_read_lock(&sched_res_rculock); =20 @@ -936,7 +936,7 @@ void vcpu_sleep_nosync(struct vcpu *v) unsigned long flags; spinlock_t *lock; =20 - TRACE_2D(TRC_SCHED_SLEEP, v->domain->domain_id, v->vcpu_id); + TRACE_TIME(TRC_SCHED_SLEEP, v->domain->domain_id, v->vcpu_id); =20 rcu_read_lock(&sched_res_rculock); =20 @@ -965,7 +965,7 @@ void vcpu_wake(struct vcpu *v) spinlock_t *lock; struct sched_unit *unit =3D v->sched_unit; =20 - TRACE_2D(TRC_SCHED_WAKE, v->domain->domain_id, v->vcpu_id); + TRACE_TIME(TRC_SCHED_WAKE, v->domain->domain_id, v->vcpu_id); =20 rcu_read_lock(&sched_res_rculock); =20 @@ -1425,7 +1425,7 @@ void vcpu_block(void) } else { - TRACE_2D(TRC_SCHED_BLOCK, v->domain->domain_id, v->vcpu_id); + TRACE_TIME(TRC_SCHED_BLOCK, v->domain->domain_id, v->vcpu_id); raise_softirq(SCHEDULE_SOFTIRQ); } } @@ -1498,7 +1498,7 @@ static long do_poll(const struct sched_poll *sched_po= ll) if ( sched_poll->timeout !=3D 0 ) set_timer(&v->poll_timer, sched_poll->timeout); =20 - TRACE_2D(TRC_SCHED_BLOCK, d->domain_id, v->vcpu_id); + TRACE_TIME(TRC_SCHED_BLOCK, d->domain_id, v->vcpu_id); raise_softirq(SCHEDULE_SOFTIRQ); =20 return 0; @@ -1526,7 +1526,7 @@ long vcpu_yield(void) =20 SCHED_STAT_CRANK(vcpu_yield); =20 - TRACE_2D(TRC_SCHED_YIELD, current->domain->domain_id, current->vcpu_id= ); + TRACE_TIME(TRC_SCHED_YIELD, current->domain->domain_id, current->vcpu_= id); raise_softirq(SCHEDULE_SOFTIRQ); return 0; } @@ -1904,9 +1904,8 @@ ret_t do_sched_op(int cmd, XEN_GUEST_HANDLE_PARAM(voi= d) arg) if ( copy_from_guest(&sched_shutdown, arg, 1) ) break; =20 - TRACE_3D(TRC_SCHED_SHUTDOWN, - current->domain->domain_id, current->vcpu_id, - sched_shutdown.reason); + TRACE_TIME(TRC_SCHED_SHUTDOWN, current->domain->domain_id, + current->vcpu_id, sched_shutdown.reason); ret =3D domain_shutdown(current->domain, (u8)sched_shutdown.reason= ); =20 break; @@ -1921,8 +1920,8 @@ ret_t do_sched_op(int cmd, XEN_GUEST_HANDLE_PARAM(voi= d) arg) if ( copy_from_guest(&sched_shutdown, arg, 1) ) break; =20 - TRACE_3D(TRC_SCHED_SHUTDOWN_CODE, - d->domain_id, current->vcpu_id, sched_shutdown.reason); + TRACE_TIME(TRC_SCHED_SHUTDOWN_CODE, d->domain_id, current->vcpu_id, + sched_shutdown.reason); =20 spin_lock(&d->shutdown_lock); if ( d->shutdown_code =3D=3D SHUTDOWN_CODE_INVALID ) @@ -2085,7 +2084,7 @@ long sched_adjust(struct domain *d, struct xen_domctl= _scheduler_op *op) rcu_read_lock(&sched_res_rculock); =20 if ( (ret =3D sched_adjust_dom(dom_scheduler(d), d, op)) =3D=3D 0 ) - TRACE_1D(TRC_SCHED_ADJDOM, d->domain_id); + TRACE_TIME(TRC_SCHED_ADJDOM, d->domain_id); =20 rcu_read_unlock(&sched_res_rculock); =20 @@ -2180,14 +2179,13 @@ static void sched_switch_units(struct sched_resourc= e *sr, sr->curr =3D next; sr->prev =3D prev; =20 - TRACE_3D(TRC_SCHED_SWITCH_INFPREV, prev->domain->domain_id, - prev->unit_id, now - prev->state_entry_time); - TRACE_4D(TRC_SCHED_SWITCH_INFNEXT, next->domain->domain_id, - next->unit_id, - (next->vcpu_list->runstate.state =3D=3D RUNSTATE_runnable= ) ? - (now - next->state_entry_time) : 0, prev->next_time); - TRACE_4D(TRC_SCHED_SWITCH, prev->domain->domain_id, prev->unit_id, - next->domain->domain_id, next->unit_id); + TRACE_TIME(TRC_SCHED_SWITCH_INFPREV, prev->domain->domain_id, + prev->unit_id, now - prev->state_entry_time); + TRACE_TIME(TRC_SCHED_SWITCH_INFNEXT, next->domain->domain_id, next= ->unit_id, + (next->vcpu_list->runstate.state =3D=3D RUNSTATE_runnab= le) ? + (now - next->state_entry_time) : 0, prev->next_time); + TRACE_TIME(TRC_SCHED_SWITCH, prev->domain->domain_id, prev->unit_i= d, + next->domain->domain_id, next->unit_id); =20 ASSERT(!unit_running(next)); =20 @@ -2378,10 +2376,10 @@ static void sched_context_switch(struct vcpu *vprev= , struct vcpu *vnext, { if ( unlikely(vprev =3D=3D vnext) ) { - TRACE_4D(TRC_SCHED_SWITCH_INFCONT, - vnext->domain->domain_id, vnext->sched_unit->unit_id, - now - vprev->runstate.state_entry_time, - vprev->sched_unit->next_time); + TRACE_TIME(TRC_SCHED_SWITCH_INFCONT, + vnext->domain->domain_id, vnext->sched_unit->unit_id, + now - vprev->runstate.state_entry_time, + vprev->sched_unit->next_time); sched_context_switched(vprev, vnext); =20 /* diff --git a/xen/common/sched/credit.c b/xen/common/sched/credit.c index a72d0715276a..020f44595ed0 100644 --- a/xen/common/sched/credit.c +++ b/xen/common/sched/credit.c @@ -493,7 +493,7 @@ static inline void __runq_tickle(const struct csched_un= it *new) { /* Avoid TRACE_*: saves checking !tb_init_done each step */ for_each_cpu(cpu, &mask) - __trace_var(TRC_CSCHED_TICKLE, 1, sizeof(cpu), &cpu); + trace_time(TRC_CSCHED_TICKLE, sizeof(cpu), &cpu); } =20 /* @@ -862,8 +862,7 @@ _csched_cpu_pick(const struct scheduler *ops, const str= uct sched_unit *unit, if ( commit && spc ) spc->idle_bias =3D cpu; =20 - TRACE_3D(TRC_CSCHED_PICKED_CPU, unit->domain->domain_id, unit->unit_id, - cpu); + TRACE_TIME(TRC_CSCHED_PICKED_CPU, unit->domain->domain_id, unit->unit_= id, cpu); =20 return cpu; } @@ -907,8 +906,8 @@ __csched_unit_acct_start(struct csched_private *prv, st= ruct csched_unit *svc) } } =20 - TRACE_3D(TRC_CSCHED_ACCOUNT_START, sdom->dom->domain_id, - svc->unit->unit_id, sdom->active_unit_count); + TRACE_TIME(TRC_CSCHED_ACCOUNT_START, sdom->dom->domain_id, + svc->unit->unit_id, sdom->active_unit_count); =20 spin_unlock_irqrestore(&prv->lock, flags); } @@ -933,8 +932,8 @@ __csched_unit_acct_stop_locked(struct csched_private *p= rv, list_del_init(&sdom->active_sdom_elem); } =20 - TRACE_3D(TRC_CSCHED_ACCOUNT_STOP, sdom->dom->domain_id, - svc->unit->unit_id, sdom->active_unit_count); + TRACE_TIME(TRC_CSCHED_ACCOUNT_STOP, sdom->dom->domain_id, + svc->unit->unit_id, sdom->active_unit_count); } =20 static void @@ -957,8 +956,8 @@ csched_unit_acct(struct csched_private *prv, unsigned i= nt cpu) if ( svc->pri =3D=3D CSCHED_PRI_TS_BOOST ) { svc->pri =3D CSCHED_PRI_TS_UNDER; - TRACE_2D(TRC_CSCHED_BOOST_END, svc->sdom->dom->domain_id, - svc->unit->unit_id); + TRACE_TIME(TRC_CSCHED_BOOST_END, svc->sdom->dom->domain_id, + svc->unit->unit_id); } =20 /* @@ -1164,8 +1163,7 @@ csched_unit_wake(const struct scheduler *ops, struct = sched_unit *unit) if ( !migrating && svc->pri =3D=3D CSCHED_PRI_TS_UNDER && !test_bit(CSCHED_FLAG_UNIT_PARKED, &svc->flags) ) { - TRACE_2D(TRC_CSCHED_BOOST_START, unit->domain->domain_id, - unit->unit_id); + TRACE_TIME(TRC_CSCHED_BOOST_START, unit->domain->domain_id, unit->= unit_id); SCHED_STAT_CRANK(unit_boost); svc->pri =3D CSCHED_PRI_TS_BOOST; } @@ -1671,8 +1669,8 @@ csched_runq_steal(int peer_cpu, int cpu, int pri, int= balance_step) if ( __csched_unit_is_migrateable(prv, unit, cpu, cpumask_scratch)= ) { /* We got a candidate. Grab it! */ - TRACE_3D(TRC_CSCHED_STOLEN_UNIT, peer_cpu, - unit->domain->domain_id, unit->unit_id); + TRACE_TIME(TRC_CSCHED_STOLEN_UNIT, peer_cpu, + unit->domain->domain_id, unit->unit_id); SCHED_UNIT_STAT_CRANK(speer, migrate_q); SCHED_STAT_CRANK(migrate_queued); runq_remove(speer); @@ -1783,7 +1781,7 @@ csched_load_balance(struct csched_private *prv, int c= pu, */ if ( CSCHED_PCPU(peer_cpu)->nr_runnable <=3D 1 ) { - TRACE_2D(TRC_CSCHED_STEAL_CHECK, peer_cpu, /* skipp'n = */ 0); + TRACE_TIME(TRC_CSCHED_STEAL_CHECK, peer_cpu, /* skipp'= n */ 0); goto next_cpu; } =20 @@ -1799,11 +1797,11 @@ csched_load_balance(struct csched_private *prv, int= cpu, if ( !lock ) { SCHED_STAT_CRANK(steal_trylock_failed); - TRACE_2D(TRC_CSCHED_STEAL_CHECK, peer_cpu, /* skip */ = 0); + TRACE_TIME(TRC_CSCHED_STEAL_CHECK, peer_cpu, /* skip *= / 0); goto next_cpu; } =20 - TRACE_2D(TRC_CSCHED_STEAL_CHECK, peer_cpu, /* checked */ 1= ); + TRACE_TIME(TRC_CSCHED_STEAL_CHECK, peer_cpu, /* checked */= 1); =20 /* Any work over there to steal? */ speer =3D cpumask_test_cpu(peer_cpu, online) ? @@ -1860,21 +1858,18 @@ static void cf_check csched_schedule( SCHED_STAT_CRANK(schedule); CSCHED_UNIT_CHECK(unit); =20 - /* - * Here in Credit1 code, we usually just call TRACE_nD() helpers, and - * don't care about packing. But scheduling happens very often, so it - * actually is important that the record is as small as possible. - */ if ( unlikely(tb_init_done) ) { struct { - unsigned cpu:16, tasklet:8, idle:8; - } d; - d.cpu =3D cur_cpu; - d.tasklet =3D tasklet_work_scheduled; - d.idle =3D is_idle_unit(unit); - __trace_var(TRC_CSCHED_SCHEDULE, 1, sizeof(d), - (unsigned char *)&d); + uint16_t cpu; + uint8_t tasklet, idle; + } d =3D { + .cpu =3D cur_cpu, + .tasklet =3D tasklet_work_scheduled, + .idle =3D is_idle_unit(unit), + }; + + trace_time(TRC_CSCHED_SCHEDULE, sizeof(d), &d); } =20 runtime =3D now - unit->state_entry_time; @@ -1936,14 +1931,15 @@ static void cf_check csched_schedule( if ( unlikely(tb_init_done) ) { struct { - unsigned unit:16, dom:16; - unsigned runtime; - } d; - d.dom =3D unit->domain->domain_id; - d.unit =3D unit->unit_id; - d.runtime =3D runtime; - __trace_var(TRC_CSCHED_RATELIMIT, 1, sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint32_t runtime; + } d =3D { + .dom =3D unit->domain->domain_id, + .unit =3D unit->unit_id, + .runtime =3D runtime, + }; + + trace_time(TRC_CSCHED_RATELIMIT, sizeof(d), &d); } =20 goto out; @@ -1968,7 +1964,7 @@ static void cf_check csched_schedule( /* Tasklet work (which runs in idle UNIT context) overrides all el= se. */ if ( tasklet_work_scheduled ) { - TRACE_0D(TRC_CSCHED_SCHED_TASKLET); + TRACE_TIME(TRC_CSCHED_SCHED_TASKLET); snext =3D CSCHED_UNIT(sched_idle_unit(sched_cpu)); snext->pri =3D CSCHED_PRI_TS_BOOST; } diff --git a/xen/common/sched/null.c b/xen/common/sched/null.c index 2091337fcd06..7e31440e5b84 100644 --- a/xen/common/sched/null.c +++ b/xen/common/sched/null.c @@ -331,11 +331,13 @@ pick_res(const struct null_private *prv, const struct= sched_unit *unit) struct { uint16_t unit, dom; uint32_t new_cpu; - } d; - d.dom =3D unit->domain->domain_id; - d.unit =3D unit->unit_id; - d.new_cpu =3D new_cpu; - __trace_var(TRC_SNULL_PICKED_CPU, 1, sizeof(d), &d); + } d =3D { + .unit =3D unit->unit_id, + .dom =3D unit->domain->domain_id, + .new_cpu =3D new_cpu, + }; + + trace_time(TRC_SNULL_PICKED_CPU, sizeof(d), &d); } =20 return get_sched_res(new_cpu); @@ -359,11 +361,13 @@ static void unit_assign(struct null_private *prv, str= uct sched_unit *unit, struct { uint16_t unit, dom; uint32_t cpu; - } d; - d.dom =3D unit->domain->domain_id; - d.unit =3D unit->unit_id; - d.cpu =3D cpu; - __trace_var(TRC_SNULL_UNIT_ASSIGN, 1, sizeof(d), &d); + } d =3D { + .unit =3D unit->unit_id, + .dom =3D unit->domain->domain_id, + .cpu =3D cpu, + }; + + trace_time(TRC_SNULL_UNIT_ASSIGN, sizeof(d), &d); } } =20 @@ -390,11 +394,13 @@ static bool unit_deassign(struct null_private *prv, c= onst struct sched_unit *uni struct { uint16_t unit, dom; uint32_t cpu; - } d; - d.dom =3D unit->domain->domain_id; - d.unit =3D unit->unit_id; - d.cpu =3D cpu; - __trace_var(TRC_SNULL_UNIT_DEASSIGN, 1, sizeof(d), &d); + } d =3D { + .unit =3D unit->unit_id, + .dom =3D unit->domain->domain_id, + .cpu =3D cpu, + }; + + trace_time(TRC_SNULL_UNIT_DEASSIGN, sizeof(d), &d); } =20 spin_lock(&prv->waitq_lock); @@ -695,12 +701,14 @@ static void cf_check null_unit_migrate( struct { uint16_t unit, dom; uint16_t cpu, new_cpu; - } d; - d.dom =3D unit->domain->domain_id; - d.unit =3D unit->unit_id; - d.cpu =3D sched_unit_master(unit); - d.new_cpu =3D new_cpu; - __trace_var(TRC_SNULL_MIGRATE, 1, sizeof(d), &d); + } d =3D { + .unit =3D unit->unit_id, + .dom =3D unit->domain->domain_id, + .cpu =3D sched_unit_master(unit), + .new_cpu =3D new_cpu, + }; + + trace_time(TRC_SNULL_MIGRATE, sizeof(d), &d); } =20 /* @@ -824,9 +832,11 @@ static void cf_check null_schedule( struct { uint16_t tasklet, cpu; int16_t unit, dom; - } d; - d.cpu =3D cur_cpu; - d.tasklet =3D tasklet_work_scheduled; + } d =3D { + .tasklet =3D tasklet_work_scheduled, + .cpu =3D cur_cpu, + }; + if ( npc->unit =3D=3D NULL ) { d.unit =3D d.dom =3D -1; @@ -836,12 +846,13 @@ static void cf_check null_schedule( d.unit =3D npc->unit->unit_id; d.dom =3D npc->unit->domain->domain_id; } - __trace_var(TRC_SNULL_SCHEDULE, 1, sizeof(d), &d); + + trace_time(TRC_SNULL_SCHEDULE, sizeof(d), &d); } =20 if ( tasklet_work_scheduled ) { - trace_var(TRC_SNULL_TASKLET, 1, 0, NULL); + TRACE_TIME(TRC_SNULL_TASKLET); prev->next_task =3D sched_idle_unit(sched_cpu); } else --=20 2.30.2