From nobody Tue May 21 19:54:03 2024 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=1710779779; cv=none; d=zohomail.com; s=zohoarc; b=XIOrxYiPal9UO3pwMUNKKeE/zvFT2Oc9FHuxZQ2POkVX9WoJ8Ve/li1Mv5AVLT1vqdUddyJa+zBmT0s6EdPF/tCQWGzffQ8anvLERzO2AZMQKmjCaoMmZ6X2HiBcZ7A1dryHY398GQrxTvn/+m68yV9j8imL6wwXRZLRwdeN5ds= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710779779; 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=Cpzmmaoi0pJueucz7Za6oBj+S2IXaqOnagU2yAyCJ44=; b=LlfsoTVHnZEIa7IC6YcTc12Y2YwqKIefcDCy5t1YTizAo/WVvPBM8xJ40FEXGCv9weL3Gnxx4GKefJEYBSRJ9ivrxzEoXIg6L9dpVekg3FJc2Q7Jbx4yUAlftBIFUjXp5z5Iy1opHfKhuXN5wQVLVKKirMlvc0oYTzCiY1KSpb8= 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 171077977928572.95705840787593; Mon, 18 Mar 2024 09:36:19 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.694891.1084109 (Exim 4.92) (envelope-from ) id 1rmFxw-0005LR-A4; Mon, 18 Mar 2024 16:36:00 +0000 Received: by outflank-mailman (output) from mailman id 694891.1084109; Mon, 18 Mar 2024 16:36:00 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rmFxw-0005L7-5P; Mon, 18 Mar 2024 16:36:00 +0000 Received: by outflank-mailman (input) for mailman id 694891; Mon, 18 Mar 2024 16:35:59 +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 1rmFxu-0005JO-W2 for xen-devel@lists.xenproject.org; Mon, 18 Mar 2024 16:35:58 +0000 Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com [2a00:1450:4864:20::632]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id 98c415ae-e545-11ee-afdd-a90da7624cb6; Mon, 18 Mar 2024 17:35:57 +0100 (CET) Received: by mail-ej1-x632.google.com with SMTP id a640c23a62f3a-a468004667aso469316066b.2 for ; Mon, 18 Mar 2024 09:35:57 -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.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Mar 2024 09:35:56 -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: 98c415ae-e545-11ee-afdd-a90da7624cb6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1710779756; x=1711384556; 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=Cpzmmaoi0pJueucz7Za6oBj+S2IXaqOnagU2yAyCJ44=; b=JP9orS50tij7AR5qSry6psj3uSxN+dqggrNruuOGAo5lKFRepM6iDtccLLDS4d9j00 VnwGA6p4Td7d7Wv54zs+62zDQWslgbV73ZJ9fLnovz8D5dq7o+cvrrQAC28b+kWRgbOJ bXoHqmAIInr8qAHHC18zjjlx7sw8l978xW9Q0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710779756; x=1711384556; 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=Cpzmmaoi0pJueucz7Za6oBj+S2IXaqOnagU2yAyCJ44=; b=if/w0DYXDIzTg/uEBxgo1+1IBfN40KJ8/Z/LPFHMMMkynANIpJiO7XAVlBn9i4zQRo PMtKLrddf0vcjaE4JXNPczYDpdo/Y2ZoADBv+hL5hCEtduryqgpICM/U+0YVWOa0xJKN wp8uakLmSi2metjuiOQ2rNrdSuswiPQcufLVC+4Dii7VwD4/lmvVEx975QdEbXL+nDi2 LmSCb70opR1dLL23R8E+2/uxIMaVFjX0+P2IFA5oqZyoMs/lEBJqlkPYCFA1dfyA5AhU 0FlXY5h/LLRHutSHGzeab8/WO4a8k0uV7lyuNgQ3FDPXJrG3lP/zTdBoWtS3BdqLW+gs YIPw== X-Gm-Message-State: AOJu0YytK9Pjhfss0KWzSNRlBdbA9nLO7tCn8HH/V89oz8zDfmv+m9e1 slZzXZIPM1zZBsMB37rC/PAOGoNl2jfr+IoSvp4fU8MOqt0IUU6+ZenX2EiRHR6tv7X2OyblJW9 k X-Google-Smtp-Source: AGHT+IFlFP6MCdOoAYd9kZM9daEwNdNvAgjw0dy0gDaSkJUU2uztyqS390yRXY9RR7dsxHNJEWQejw== X-Received: by 2002:a17:906:81d0:b0:a46:d304:fce2 with SMTP id e16-20020a17090681d000b00a46d304fce2mr617114ejx.35.1710779756410; Mon, 18 Mar 2024 09:35:56 -0700 (PDT) From: Andrew Cooper To: Xen-devel Cc: Andrew Cooper , George Dunlap , Jan Beulich , Stefano Stabellini , Julien Grall , Nicola Vetrini , "consulting @ bugseng . com" Subject: [PATCH 1/7] xen/trace: Introduce new API Date: Mon, 18 Mar 2024 16:35:46 +0000 Message-Id: <20240318163552.3808695-2-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: 1710779779980100004 Content-Type: text/plain; charset="utf-8" trace() and trace_time(), in function form for struct arguments, and macro form for simple uint32_t list arguments. This will be used to clean up the mess of macros which exists throughout the codebase, as well as eventually dropping __trace_var(). There is intentionally no macro to split a 64-bit parameter in the new API, for MISRA reasons. Signed-off-by: Andrew Cooper Reviewed-by: George Dunlap --- CC: George Dunlap CC: Jan Beulich CC: Stefano Stabellini CC: Julien Grall CC: Nicola Vetrini CC: consulting@bugseng.com v3: * Extend with trace() and trace_time() * Delete TRACE_PARAM64() for MISRA reasons. --- xen/common/trace.c | 5 +++++ xen/include/xen/trace.h | 30 ++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/xen/common/trace.c b/xen/common/trace.c index 4e7b080e6154..c94ce1f7dc90 100644 --- a/xen/common/trace.c +++ b/xen/common/trace.c @@ -808,6 +808,11 @@ void __trace_var(u32 event, bool cycles, unsigned int = extra, tasklet_schedule(&trace_notify_dom0_tasklet); } =20 +void trace(uint32_t event, unsigned int extra, const void *extra_data) +{ + __trace_var(event, event & TRC_HD_CYCLE_FLAG, extra, extra_data); +} + void __trace_hypercall(uint32_t event, unsigned long op, const xen_ulong_t *args) { diff --git a/xen/include/xen/trace.h b/xen/include/xen/trace.h index 055883287e8c..f184844e1b55 100644 --- a/xen/include/xen/trace.h +++ b/xen/include/xen/trace.h @@ -37,6 +37,9 @@ int tb_control(struct xen_sysctl_tbuf_op *tbc); =20 int trace_will_trace_event(u32 event); =20 +/* Create a trace record, with pre-constructed additional parameters. */ +void trace(uint32_t event, unsigned int extra, const void *extra_data); + void __trace_var(uint32_t event, bool cycles, unsigned int extra, const vo= id *); =20 static inline void trace_var(uint32_t event, bool cycles, unsigned int ext= ra, @@ -66,6 +69,9 @@ static inline int trace_will_trace_event(uint32_t event) return 0; } =20 +static inline void trace( + uint32_t event, unsigned int extra, const void *extra_data) {} + static inline void trace_var(uint32_t event, bool cycles, unsigned int ext= ra, const void *extra_data) {} static inline void __trace_var(uint32_t event, bool cycles, unsigned int e= xtra, @@ -74,6 +80,30 @@ static inline void __trace_hypercall(uint32_t event, uns= igned long op, const xen_ulong_t *args) {} #endif /* CONFIG_TRACEBUFFER */ =20 +/* Create a trace record with time included. */ +static inline void trace_time( + uint32_t event, unsigned int extra, const void *extra_data) +{ + trace(event | TRC_HD_CYCLE_FLAG, extra, extra_data); +} + +/* + * Create a trace record, packaging up to 7 additional parameters into a + * uint32_t array. + */ +#define TRACE(_e, ...) \ + do { \ + if ( unlikely(tb_init_done) ) \ + { \ + uint32_t _d[] =3D { __VA_ARGS__ }; \ + BUILD_BUG_ON(ARRAY_SIZE(_d) > TRACE_EXTRA_MAX); \ + trace(_e, sizeof(_d), sizeof(_d) ? _d : NULL); \ + } \ + } while ( 0 ) + +/* Create a trace record with time included. */ +#define TRACE_TIME(_e, ...) TRACE((_e) | TRC_HD_CYCLE_FLAG, ##__VA_ARGS__) + /* Convenience macros for calling the trace function. */ #define TRACE_0D(_e) \ do { \ --=20 2.30.2 From nobody Tue May 21 19:54:03 2024 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=1710779777; cv=none; d=zohomail.com; s=zohoarc; b=EPBGpI2rH1a8nmEAzl2kte3sju4HBT4ijToQwj3Db1MvqHebOiQpaDCQ5zSi4pRl6KFUN/eCSoF2XZgH80fXib/CL5ceLr2sQwHCtOzxvp3n57vYOE0SXCpsSnAZ8QffLDzNpkcJ5jj0umdd4CVoMj9/N4VXBp04qvQ5Bq/ekPU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710779777; 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=x3WegiCwiNXkkjs6VfwYfT79v4emqYj9IeVAQcTvOi4=; b=Wz6iZtY3lUCHMp5Wj/LxMDTebHQXG2qkPcc0cq+oltH3NMFQ/bH4Mu9l91ZMEQ3jwsBF2U/ZyOt2BYIKKpIFS1UxPluSPg8j/1pt27P5esAsY395v3YaXjDNa4214Dgvd+QK1ky//SLCoSTq/iI2XErkloi7GrtnpZHyIE07fqw= 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 1710779777490508.66592286890284; Mon, 18 Mar 2024 09:36:17 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.694892.1084124 (Exim 4.92) (envelope-from ) id 1rmFxx-0005mS-IC; Mon, 18 Mar 2024 16:36:01 +0000 Received: by outflank-mailman (output) from mailman id 694892.1084124; Mon, 18 Mar 2024 16:36:01 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rmFxx-0005mL-DV; Mon, 18 Mar 2024 16:36:01 +0000 Received: by outflank-mailman (input) for mailman id 694892; Mon, 18 Mar 2024 16:36:00 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rmFxw-0005JN-97 for xen-devel@lists.xenproject.org; Mon, 18 Mar 2024 16:36:00 +0000 Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com [2a00:1450:4864:20::52b]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 996fdeaf-e545-11ee-a1ee-f123f15fe8a2; Mon, 18 Mar 2024 17:35:58 +0100 (CET) Received: by mail-ed1-x52b.google.com with SMTP id 4fb4d7f45d1cf-568aa3096e9so5493096a12.0 for ; Mon, 18 Mar 2024 09:35:58 -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.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Mar 2024 09:35:56 -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: 996fdeaf-e545-11ee-a1ee-f123f15fe8a2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1710779758; x=1711384558; 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=x3WegiCwiNXkkjs6VfwYfT79v4emqYj9IeVAQcTvOi4=; b=cpOoF0uaI4Pa8rubhx2A76gvCLgQDPevnFFRYNeTNO0wU+etRQUt5RuMJDO9s/350u ly/Hw4+GnD+RNILgwFwK+5rSLtYYxFnFHOeA+lkEm+Vo6BaCyy7poaaiE0D8UFx/Vw1R 85VlsI2y5EcTKRJxCXQjvp/1xwHh5S/d0fHoU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710779758; x=1711384558; 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=x3WegiCwiNXkkjs6VfwYfT79v4emqYj9IeVAQcTvOi4=; b=BNgw4RTY+UZY0P6NYbdPCRUwrs46mNNFHWcsMF1MdG9DwqX+ISUyWNRPBRPd0euAXd GEEEAM/V5FKO6AX4rgp+3x4HqHJbDcqhzHCy/tkjIi5pjzQDeaWNL55NgPBF2x6x2gBL gi7W7KktYfhhtxdfIVKmp2YvubWFrpKalXVPv4tsPoYT5r9A+f54FmnU6HSesaNZzNgq lna7sjTl4Qn/gRmkpvCMU8cqg1gJa+1vOFcl5bX/W1qBCSUOF5xmgPc1Mex3TxpKMKlP /z2InVtITQJjMDUnIGacz3lRMfrt+yn0DjzEQ9ZLMjB+igmlLZgmKVWXmJrW7oV8z6wO /tsQ== X-Gm-Message-State: AOJu0Yw+EVEIbMVp3xSOvb9zH4hED+4btHHGFFnOvV3JMzUVj9O/MfU9 HiBcSOHxY9UecOMtiKbZpF+RNSN0vheDnV/nhhJ8Km0Xl/MynQLP8uHK0AKwPLMV+6umAMClWUg J X-Google-Smtp-Source: AGHT+IFwQFT4d2T2VeU4ObTqUFuCgzNbdi9xZPxcaU1yxWCMOe8aG00Scb7/bBqScL2xuuXgVRZpVw== X-Received: by 2002:a17:906:80c4:b0:a46:a8b8:f4cf with SMTP id a4-20020a17090680c400b00a46a8b8f4cfmr79151ejx.35.1710779757835; Mon, 18 Mar 2024 09:35:57 -0700 (PDT) From: Andrew Cooper To: Xen-devel Cc: Andrew Cooper , Jan Beulich , Dario Faggioli , George Dunlap , Jan Beulich , Stefano Stabellini , Julien Grall , Nicola Vetrini , "consulting @ bugseng . com" Subject: [PATCH 2/7] xen/credit2: Clean up trace handling Date: Mon, 18 Mar 2024 16:35:47 +0000 Message-Id: <20240318163552.3808695-3-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: 1710779777992100001 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: Jan Beulich Reviewed-by: Dario Faggioli --- CC: George Dunlap CC: Jan Beulich CC: Stefano Stabellini CC: Julien Grall CC: Dario Faggioli CC: Nicola Vetrini CC: consulting@bugseng.com v2: * Fix whitespace. v3: * Rebase over core API changes. --- xen/common/sched/credit2.c | 301 ++++++++++++++++++------------------- 1 file changed, 146 insertions(+), 155 deletions(-) diff --git a/xen/common/sched/credit2.c b/xen/common/sched/credit2.c index c76330d79d3a..b7df9f2a9111 100644 --- a/xen/common/sched/credit2.c +++ b/xen/common/sched/credit2.c @@ -1085,13 +1085,13 @@ static void update_max_weight(struct csched2_runque= ue_data *rqd, int new_weight, if ( unlikely(tb_init_done) ) { struct { - unsigned rqi:16, max_weight:16; - } d; - d.rqi =3D rqd->id; - d.max_weight =3D rqd->max_weight; - __trace_var(TRC_CSCHED2_RUNQ_MAX_WEIGHT, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t rqi, max_weight; + } d =3D { + .rqi =3D rqd->id, + .max_weight =3D rqd->max_weight, + }; + + trace_time(TRC_CSCHED2_RUNQ_MAX_WEIGHT, sizeof(d), &d); } } =20 @@ -1119,9 +1119,7 @@ _runq_assign(struct csched2_unit *svc, struct csched2= _runqueue_data *rqd) .rqi =3D rqd->id, }; =20 - __trace_var(TRC_CSCHED2_RUNQ_ASSIGN, 1, - sizeof(d), - (unsigned char *)&d); + trace_time(TRC_CSCHED2_RUNQ_ASSIGN, sizeof(d), &d); } =20 } @@ -1354,9 +1352,7 @@ update_runq_load(const struct scheduler *ops, .shift =3D P, }; =20 - __trace_var(TRC_CSCHED2_UPDATE_RUNQ_LOAD, 1, - sizeof(d), - (unsigned char *)&d); + trace_time(TRC_CSCHED2_UPDATE_RUNQ_LOAD, sizeof(d), &d); } } =20 @@ -1406,16 +1402,16 @@ update_svc_load(const struct scheduler *ops, { struct { uint64_t v_avgload; - unsigned unit:16, dom:16; - unsigned shift; - } d; - d.dom =3D svc->unit->domain->domain_id; - d.unit =3D svc->unit->unit_id; - d.v_avgload =3D svc->avgload; - d.shift =3D P; - __trace_var(TRC_CSCHED2_UPDATE_UNIT_LOAD, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint32_t shift; + } d =3D { + .v_avgload =3D svc->avgload, + .unit =3D svc->unit->unit_id, + .dom =3D svc->unit->domain->domain_id, + .shift =3D P, + }; + + trace_time(TRC_CSCHED2_UPDATE_UNIT_LOAD, sizeof(d), &d); } } =20 @@ -1424,7 +1420,7 @@ update_load(const struct scheduler *ops, struct csched2_runqueue_data *rqd, struct csched2_unit *svc, int change, s_time_t now) { - trace_var(TRC_CSCHED2_UPDATE_LOAD, 1, 0, NULL); + TRACE_TIME(TRC_CSCHED2_UPDATE_LOAD); =20 update_runq_load(ops, rqd, change, now); if ( svc ) @@ -1462,15 +1458,15 @@ static void runq_insert(struct csched2_unit *svc) if ( unlikely(tb_init_done) ) { struct { - unsigned unit:16, dom:16; - unsigned pos; - } d; - d.dom =3D svc->unit->domain->domain_id; - d.unit =3D svc->unit->unit_id; - d.pos =3D pos; - __trace_var(TRC_CSCHED2_RUNQ_POS, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint32_t pos; + } d =3D { + .unit =3D svc->unit->unit_id, + .dom =3D svc->unit->domain->domain_id, + .pos =3D pos, + }; + + trace_time(TRC_CSCHED2_RUNQ_POS, sizeof(d), &d); } } =20 @@ -1563,16 +1559,16 @@ static s_time_t tickle_score(const struct scheduler= *ops, s_time_t now, if ( unlikely(tb_init_done) ) { struct { - unsigned unit:16, dom:16; - int credit, score; - } d; - d.dom =3D cur->unit->domain->domain_id; - d.unit =3D cur->unit->unit_id; - d.credit =3D cur->credit; - d.score =3D score; - __trace_var(TRC_CSCHED2_TICKLE_CHECK, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint32_t credit, score; + } d =3D { + .unit =3D cur->unit->unit_id, + .dom =3D cur->unit->domain->domain_id, + .credit =3D cur->credit, + .score =3D score, + }; + + trace_time(TRC_CSCHED2_TICKLE_CHECK, sizeof(d), &d); } =20 return score; @@ -1610,17 +1606,16 @@ runq_tickle(const struct scheduler *ops, struct csc= hed2_unit *new, s_time_t now) if ( unlikely(tb_init_done) ) { struct { - unsigned unit:16, dom:16; - unsigned processor; - int credit; - } d; - d.dom =3D unit->domain->domain_id; - d.unit =3D unit->unit_id; - d.processor =3D cpu; - d.credit =3D new->credit; - __trace_var(TRC_CSCHED2_TICKLE_NEW, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint32_t processor, credit; + } d =3D { + .dom =3D unit->domain->domain_id, + .unit =3D unit->unit_id, + .processor =3D cpu, + .credit =3D new->credit, + }; + + trace_time(TRC_CSCHED2_TICKLE_NEW, sizeof(d), &d); } =20 /* @@ -1759,12 +1754,12 @@ runq_tickle(const struct scheduler *ops, struct csc= hed2_unit *new, s_time_t now) if ( unlikely(tb_init_done) ) { struct { - unsigned cpu:16, pad:16; - } d; - d.cpu =3D ipid; d.pad =3D 0; - __trace_var(TRC_CSCHED2_TICKLE, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t cpu, _pad; + } d =3D { + .cpu =3D ipid, + }; + + trace_time(TRC_CSCHED2_TICKLE, sizeof(d), &d); } =20 tickle_cpu(ipid, rqd); @@ -1840,16 +1835,16 @@ static void reset_credit(int cpu, s_time_t now, str= uct csched2_unit *snext) if ( unlikely(tb_init_done) ) { struct { - unsigned unit:16, dom:16; - int credit_start, credit_end; - } d; - d.dom =3D svc->unit->domain->domain_id; - d.unit =3D svc->unit->unit_id; - d.credit_start =3D start_credit; - d.credit_end =3D svc->credit; - __trace_var(TRC_CSCHED2_CREDIT_RESET, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint32_t credit_start, credit_end; + } d =3D { + .unit =3D svc->unit->unit_id, + .dom =3D svc->unit->domain->domain_id, + .credit_start =3D start_credit, + .credit_end =3D svc->credit, + }; + + trace_time(TRC_CSCHED2_CREDIT_RESET, sizeof(d), &d); } } =20 @@ -1895,18 +1890,17 @@ void burn_credits(struct csched2_runqueue_data *rqd, if ( unlikely(tb_init_done) ) { struct { - unsigned unit:16, dom:16; - int credit, budget; - int delta; - } d; - d.dom =3D svc->unit->domain->domain_id; - d.unit =3D svc->unit->unit_id; - d.credit =3D svc->credit; - d.budget =3D has_cap(svc) ? svc->budget : INT_MIN; - d.delta =3D delta; - __trace_var(TRC_CSCHED2_CREDIT_BURN, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint32_t credit, budget, delta; + } d =3D { + .unit =3D svc->unit->unit_id, + .dom =3D svc->unit->domain->domain_id, + .credit =3D svc->credit, + .budget =3D has_cap(svc) ? svc->budget : INT_MIN, + .delta =3D delta, + }; + + trace_time(TRC_CSCHED2_CREDIT_BURN, sizeof(d), &d); } } =20 @@ -2551,17 +2545,17 @@ csched2_res_pick(const struct scheduler *ops, const= struct sched_unit *unit) { struct { uint64_t b_avgload; - unsigned unit:16, dom:16; - unsigned rq_id:16, new_cpu:16; - } d; - d.dom =3D unit->domain->domain_id; - d.unit =3D unit->unit_id; - d.rq_id =3D min_rqd ? min_rqd->id : -1; - d.b_avgload =3D min_avgload; - d.new_cpu =3D new_cpu; - __trace_var(TRC_CSCHED2_PICKED_CPU, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint16_t rq_id, new_cpu; + } d =3D { + .b_avgload =3D min_avgload, + .unit =3D unit->unit_id, + .dom =3D unit->domain->domain_id, + .rq_id =3D min_rqd ? min_rqd->id : -1, + .new_cpu =3D new_cpu, + }; + + trace_time(TRC_CSCHED2_PICKED_CPU, sizeof(d), &d); } =20 return get_sched_res(new_cpu); @@ -2622,16 +2616,16 @@ static void migrate(const struct scheduler *ops, if ( unlikely(tb_init_done) ) { struct { - unsigned unit:16, dom:16; - unsigned rqi:16, trqi:16; - } d; - d.dom =3D unit->domain->domain_id; - d.unit =3D unit->unit_id; - d.rqi =3D svc->rqd->id; - d.trqi =3D trqd->id; - __trace_var(TRC_CSCHED2_MIGRATE, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint16_t rqi, trqi; + } d =3D { + .unit =3D unit->unit_id, + .dom =3D unit->domain->domain_id, + .rqi =3D svc->rqd->id, + .trqi =3D trqd->id, + }; + + trace_time(TRC_CSCHED2_MIGRATE, sizeof(d), &d); } =20 if ( svc->flags & CSFLAG_scheduled ) @@ -2768,15 +2762,15 @@ static void balance_load(const struct scheduler *op= s, int cpu, s_time_t now) if ( unlikely(tb_init_done) ) { struct { - unsigned lrq_id:16, orq_id:16; - unsigned load_delta; - } d; - d.lrq_id =3D st.lrqd->id; - d.orq_id =3D st.orqd->id; - d.load_delta =3D st.load_delta; - __trace_var(TRC_CSCHED2_LOAD_CHECK, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t lrq_id, orq_id; + uint32_t load_delta; + } d =3D { + .lrq_id =3D st.lrqd->id, + .orq_id =3D st.orqd->id, + .load_delta =3D st.load_delta, + }; + + trace_time(TRC_CSCHED2_LOAD_CHECK, sizeof(d), &d); } =20 /* @@ -2820,9 +2814,7 @@ static void balance_load(const struct scheduler *ops,= int cpu, s_time_t now) .orq_id =3D st.orqd->id, }; =20 - __trace_var(TRC_CSCHED2_LOAD_BALANCE, 1, - sizeof(d), - (unsigned char *)&d); + trace_time(TRC_CSCHED2_LOAD_BALANCE, sizeof(d), &d); } =20 SCHED_STAT_CRANK(acct_load_balance); @@ -3407,15 +3399,15 @@ runq_candidate(struct csched2_runqueue_data *rqd, if ( unlikely(tb_init_done) ) { struct { - unsigned unit:16, dom:16; - unsigned runtime; - } d; - d.dom =3D scurr->unit->domain->domain_id; - d.unit =3D scurr->unit->unit_id; - d.runtime =3D now - scurr->unit->state_entry_time; - __trace_var(TRC_CSCHED2_RATELIMIT, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint32_t runtime; + } d =3D { + .unit =3D scurr->unit->unit_id, + .dom =3D scurr->unit->domain->domain_id, + .runtime =3D now - scurr->unit->state_entry_time, + }; + + trace_time(TRC_CSCHED2_RATELIMIT, sizeof(d), &d); } return scurr; } @@ -3468,13 +3460,13 @@ runq_candidate(struct csched2_runqueue_data *rqd, if ( unlikely(tb_init_done) ) { struct { - unsigned unit:16, dom:16; - } d; - d.dom =3D svc->unit->domain->domain_id; - d.unit =3D svc->unit->unit_id; - __trace_var(TRC_CSCHED2_RUNQ_CAND_CHECK, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + } d =3D { + .unit =3D svc->unit->unit_id, + .dom =3D svc->unit->domain->domain_id, + }; + + trace_time(TRC_CSCHED2_RUNQ_CAND_CHECK, sizeof(d), &d); } =20 /* @@ -3542,17 +3534,16 @@ runq_candidate(struct csched2_runqueue_data *rqd, if ( unlikely(tb_init_done) ) { struct { - unsigned unit:16, dom:16; - unsigned tickled_cpu; - int credit; - } d; - d.dom =3D snext->unit->domain->domain_id; - d.unit =3D snext->unit->unit_id; - d.credit =3D snext->credit; - d.tickled_cpu =3D snext->tickled_cpu; - __trace_var(TRC_CSCHED2_RUNQ_CANDIDATE, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint32_t tickled_cpu, credit; + } d =3D { + .unit =3D snext->unit->unit_id, + .dom =3D snext->unit->domain->domain_id, + .tickled_cpu =3D snext->tickled_cpu, + .credit =3D snext->credit, + }; + + trace_time(TRC_CSCHED2_RUNQ_CANDIDATE, sizeof(d), &d); } =20 if ( unlikely(snext->tickled_cpu !=3D -1 && snext->tickled_cpu !=3D cp= u) ) @@ -3608,18 +3599,18 @@ static void cf_check csched2_schedule( if ( unlikely(tb_init_done) ) { struct { - unsigned cpu:16, rq_id:16; - unsigned tasklet:8, idle:8, smt_idle:8, tickled:8; - } d; - d.cpu =3D cur_cpu; - d.rq_id =3D c2r(sched_cpu); - d.tasklet =3D tasklet_work_scheduled; - d.idle =3D is_idle_unit(currunit); - d.smt_idle =3D cpumask_test_cpu(sched_cpu, &rqd->smt_idle); - d.tickled =3D tickled; - __trace_var(TRC_CSCHED2_SCHEDULE, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t cpu, rq_id; + uint8_t tasklet, idle, smt_idle, tickled; + } d =3D { + .cpu =3D cur_cpu, + .rq_id =3D c2r(sched_cpu), + .tasklet =3D tasklet_work_scheduled, + .idle =3D is_idle_unit(currunit), + .smt_idle =3D cpumask_test_cpu(sched_cpu, &rqd->smt_idle), + .tickled =3D tickled, + }; + + trace_time(TRC_CSCHED2_SCHEDULE, sizeof(d), &d); } =20 /* Update credits (and budget, if necessary). */ @@ -3654,7 +3645,7 @@ static void cf_check csched2_schedule( if ( tasklet_work_scheduled ) { __clear_bit(__CSFLAG_unit_yield, &scurr->flags); - trace_var(TRC_CSCHED2_SCHED_TASKLET, 1, 0, NULL); + TRACE_TIME(TRC_CSCHED2_SCHED_TASKLET); snext =3D csched2_unit(sched_idle_unit(sched_cpu)); } else --=20 2.30.2 From nobody Tue May 21 19:54:03 2024 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=1710779782; cv=none; d=zohomail.com; s=zohoarc; b=BJQARxUjVaf/wD/VHXa27xGzxbrKGv/IxcU4mUEA1f1spAfV3kSF24z1JaxgvGiNPJ904rl0QdXY6uv+RNr4/lMOXW33+jrgaJKX9uyVheWxPSlZy903znmKDUbSwTs09mWdbl7VRek33ddWOy5FqYmTeI354RDfIXrzaQlBIyk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710779782; 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=43RBkv9nNt2AeKgY3ovhftrUIQfOhkhQXVZiRG6YSx0=; b=N7kgFoneRcRI30imvmM2VfK0skOHAekjw5t1TAKV4jm4V4Blho5qYc4G6P/TA9bh+t7/CeCp2QS88a+eytbzr45EnyQFGkG+Rbp/e5BdeYd10p0iqCA38O5dsnhH3hdCsWeKeR5J8SSdZ6DepytpDhqRYYtI3DTYsOQGdUlbh4E= 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 1710779782543112.08949219125486; Mon, 18 Mar 2024 09:36:22 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.694893.1084134 (Exim 4.92) (envelope-from ) id 1rmFxy-00062i-TO; Mon, 18 Mar 2024 16:36:02 +0000 Received: by outflank-mailman (output) from mailman id 694893.1084134; Mon, 18 Mar 2024 16:36:02 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rmFxy-00062Z-PG; Mon, 18 Mar 2024 16:36:02 +0000 Received: by outflank-mailman (input) for mailman id 694893; Mon, 18 Mar 2024 16:36:01 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rmFxx-0005JN-MY for xen-devel@lists.xenproject.org; Mon, 18 Mar 2024 16:36:01 +0000 Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com [2a00:1450:4864:20::62b]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 9a5bf40b-e545-11ee-a1ee-f123f15fe8a2; Mon, 18 Mar 2024 17:36:00 +0100 (CET) Received: by mail-ej1-x62b.google.com with SMTP id a640c23a62f3a-a466f796fc1so587433066b.3 for ; Mon, 18 Mar 2024 09:36:00 -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.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Mar 2024 09:35:58 -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: 9a5bf40b-e545-11ee-a1ee-f123f15fe8a2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1710779759; x=1711384559; 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=43RBkv9nNt2AeKgY3ovhftrUIQfOhkhQXVZiRG6YSx0=; b=ao95LOdoc7zdpUQ4jYJnKqA17h0rGI3dejjuPRtnGGrxignSsS5w4020N8y6RymxdH 4fIg678LMf/VPL2J06Ab3e6Uuv4XJ5tSNfEyn2bsuauy4u0r64KhSes8qUfSEDB8iikW sEA9xjnBmenTnJPeICi3jiEqfqFILnHpTW0Ho= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710779759; x=1711384559; 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=43RBkv9nNt2AeKgY3ovhftrUIQfOhkhQXVZiRG6YSx0=; b=UQDtyIFVXhVHC1Phm9WQMvO7EVG7YubIaBNehvesD9iHAuPXX4JyT0Fgg55Q4i075z 6vOqZ/2VS2VDiqKorYorVbuXdKya3upgDdtvsPClkPlWl9lylx8A++HhaF/JgDqZdZnH d6yyOm2gj7xcoCTBgkCkDq4LMHFsIqou7f2QKhUo03GvbeOhErlAfp8mEcW5Jkk8r7pE Qpen9vOsKve0/7Ugbgu2kslqOvG3mKD3yaLnVEam1GX4Cna9p3rUqM9rdpCIRn3PnvI4 ZEeyPPuh3mpUv15GXxnRUFtgpszGXXm0hX4hFEelQnYkyVCaGb5PY5gyyKSEhOF3XZVO +E/g== X-Gm-Message-State: AOJu0YwOzRNoc3I2QbP5ATdG3HhZVbDaF+7USa9D46pZZmx7lhnxhjV9 wfkgriKsqrYAGylO/CQtscmHsc+gxvPun1+pFITUKTIjvojBZmSHxFzG3URxxs9TPcxcpm56cER / X-Google-Smtp-Source: AGHT+IHE1OrPskT/jI53hC6Cj/B9BDqWSE89qkPT9exCF/Pfak0XZaz2HnBAxNcRRpgi/aJbGFHuLw== X-Received: by 2002:a17:906:190e:b0:a46:24fa:ea9f with SMTP id a14-20020a170906190e00b00a4624faea9fmr7551909eje.37.1710779758953; Mon, 18 Mar 2024 09:35:58 -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 3/7] xen/rt: Clean up trace handling Date: Mon, 18 Mar 2024 16:35:48 +0000 Message-Id: <20240318163552.3808695-4-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: 1710779784016100001 Content-Type: text/plain; charset="utf-8" Most uses of bitfields and __packed are unnecessary. There is also no need= to cast 'd' to (unsigned char *) before passing it to a function 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/rt.c | 99 ++++++++++++++++++++----------------------- 1 file changed, 47 insertions(+), 52 deletions(-) diff --git a/xen/common/sched/rt.c b/xen/common/sched/rt.c index b279f957f622..f368e0fdd5a5 100644 --- a/xen/common/sched/rt.c +++ b/xen/common/sched/rt.c @@ -455,21 +455,21 @@ rt_update_deadline(s_time_t now, struct rt_unit *svc) svc->cur_budget =3D svc->budget; svc->priority_level =3D 0; =20 - /* TRACE */ + if ( unlikely(tb_init_done) ) { - struct __packed { - unsigned unit:16, dom:16; - unsigned priority_level; + struct { + uint16_t unit, dom; + uint32_t priority_level; uint64_t cur_deadline, cur_budget; - } d; - d.dom =3D svc->unit->domain->domain_id; - d.unit =3D svc->unit->unit_id; - d.priority_level =3D svc->priority_level; - d.cur_deadline =3D (uint64_t) svc->cur_deadline; - d.cur_budget =3D (uint64_t) svc->cur_budget; - trace_var(TRC_RTDS_BUDGET_REPLENISH, 1, - sizeof(d), - (unsigned char *) &d); + } d =3D { + .dom =3D svc->unit->domain->domain_id, + .unit =3D svc->unit->unit_id, + .priority_level =3D svc->priority_level, + .cur_deadline =3D svc->cur_deadline, + .cur_budget =3D svc->cur_budget, + }; + + trace_time(TRC_RTDS_BUDGET_REPLENISH, sizeof(d), &d); } =20 return; @@ -986,7 +986,7 @@ burn_budget(const struct scheduler *ops, struct rt_unit= *svc, s_time_t now) } } =20 - /* TRACE */ + if ( unlikely(tb_init_done) ) { struct __packed { uint16_t unit, dom; @@ -1003,9 +1003,7 @@ burn_budget(const struct scheduler *ops, struct rt_un= it *svc, s_time_t now) .has_extratime =3D !!(svc->flags & RTDS_extratime), }; =20 - trace_var(TRC_RTDS_BUDGET_BURN, 1, - sizeof(d), - (unsigned char *) &d); + trace_time(TRC_RTDS_BUDGET_BURN, sizeof(d), &d); } } =20 @@ -1040,22 +1038,19 @@ runq_pick(const struct scheduler *ops, const cpumas= k_t *mask, unsigned int cpu) break; } =20 - /* TRACE */ + if ( unlikely(tb_init_done) && svc ) { - if( svc !=3D NULL ) - { - struct __packed { - unsigned unit:16, dom:16; - uint64_t cur_deadline, cur_budget; - } d; - d.dom =3D svc->unit->domain->domain_id; - d.unit =3D svc->unit->unit_id; - d.cur_deadline =3D (uint64_t) svc->cur_deadline; - d.cur_budget =3D (uint64_t) svc->cur_budget; - trace_var(TRC_RTDS_RUNQ_PICK, 1, - sizeof(d), - (unsigned char *) &d); - } + struct __packed { + uint16_t unit, dom; + uint64_t cur_deadline, cur_budget; + } d =3D { + .unit =3D svc->unit->unit_id, + .dom =3D svc->unit->domain->domain_id, + .cur_deadline =3D svc->cur_deadline, + .cur_budget =3D svc->cur_budget, + }; + + trace_time(TRC_RTDS_RUNQ_PICK, sizeof(d), &d); } =20 return svc; @@ -1076,18 +1071,19 @@ rt_schedule(const struct scheduler *ops, struct sch= ed_unit *currunit, struct rt_unit *snext =3D NULL; bool migrated =3D false; =20 - /* TRACE */ + if ( unlikely(tb_init_done) ) { - struct __packed { - unsigned cpu:16, tasklet:8, tickled:4, idle:4; - } d; - d.cpu =3D cur_cpu; - d.tasklet =3D tasklet_work_scheduled; - d.tickled =3D cpumask_test_cpu(sched_cpu, &prv->tickled); - d.idle =3D is_idle_unit(currunit); - trace_var(TRC_RTDS_SCHEDULE, 1, - sizeof(d), - (unsigned char *)&d); + struct { + uint16_t cpu; + uint8_t tasklet, tickled:4, idle:4; + } d =3D { + .cpu =3D cur_cpu, + .tasklet =3D tasklet_work_scheduled, + .tickled =3D cpumask_test_cpu(sched_cpu, &prv->tickled), + .idle =3D is_idle_unit(currunit), + }; + + trace_time(TRC_RTDS_SCHEDULE, sizeof(d), &d); } =20 /* clear ticked bit now that we've been scheduled */ @@ -1098,7 +1094,7 @@ rt_schedule(const struct scheduler *ops, struct sched= _unit *currunit, =20 if ( tasklet_work_scheduled ) { - trace_var(TRC_RTDS_SCHED_TASKLET, 1, 0, NULL); + TRACE_TIME(TRC_RTDS_SCHED_TASKLET); snext =3D rt_unit(sched_idle_unit(sched_cpu)); } else @@ -1250,16 +1246,15 @@ runq_tickle(const struct scheduler *ops, const stru= ct rt_unit *new) SCHED_STAT_CRANK(tickled_no_cpu); return; out: - /* TRACE */ + if ( unlikely(tb_init_done) ) { struct { - unsigned cpu:16, pad:16; - } d; - d.cpu =3D cpu_to_tickle; - d.pad =3D 0; - trace_var(TRC_RTDS_TICKLE, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t cpu, _pad; + } d =3D { + .cpu =3D cpu_to_tickle, + }; + + trace_time(TRC_RTDS_TICKLE, sizeof(d), &d); } =20 cpumask_set_cpu(cpu_to_tickle, &prv->tickled); --=20 2.30.2 From nobody Tue May 21 19:54:03 2024 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 From nobody Tue May 21 19:54:03 2024 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=1710779786; cv=none; d=zohomail.com; s=zohoarc; b=dRgQwCZ+XdyusgCgs0WcTa/Hgfd7z5b4XDYdmUDo3pxwltIrplHMmXtrRFSWQgSMT7B8X4bWvOrhbPgnpOWZBbjZiFMOOibFEMP84P8Q9VZ1Hy9Csd5kwMSwNJQKKpIgemURFPQY3n6dOehYi/D5nBfcm857lw+d/bdDwjr2CUk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710779786; h=Content-Type: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=+Es/OAet7dNZ7FixRa/pu3b/1ceG+5ckl7uGOXfyyFU=; b=aV32R3RvPvcD61zhAB15d3xupw86qsxnWtriV7GoURz5w7Px/WLSayYYmxyIJsZGcQ5d9YHqRaIZzq08P6RSuDeTDVpglRpyr4xJqDfIV+qsr2+q/h/pEv3iIsx183grN+VLU7YwcTTAYSNEJhcr0j21zWrDoLxWg4YWDB60x4c= 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 1710779786452383.07355581388754; Mon, 18 Mar 2024 09:36:26 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.694895.1084154 (Exim 4.92) (envelope-from ) id 1rmFy2-0006bf-IR; Mon, 18 Mar 2024 16:36:06 +0000 Received: by outflank-mailman (output) from mailman id 694895.1084154; Mon, 18 Mar 2024 16:36:06 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rmFy2-0006bW-El; Mon, 18 Mar 2024 16:36:06 +0000 Received: by outflank-mailman (input) for mailman id 694895; Mon, 18 Mar 2024 16:36:05 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rmFy1-0005JN-Cj for xen-devel@lists.xenproject.org; Mon, 18 Mar 2024 16:36:05 +0000 Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com [2a00:1450:4864:20::52a]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 9c4651e1-e545-11ee-a1ee-f123f15fe8a2; Mon, 18 Mar 2024 17:36:03 +0100 (CET) Received: by mail-ed1-x52a.google.com with SMTP id 4fb4d7f45d1cf-5649c25369aso6221037a12.2 for ; Mon, 18 Mar 2024 09:36:03 -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.36.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Mar 2024 09:36:00 -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: 9c4651e1-e545-11ee-a1ee-f123f15fe8a2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1710779762; x=1711384562; 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=+Es/OAet7dNZ7FixRa/pu3b/1ceG+5ckl7uGOXfyyFU=; b=cpw6tsuEofu9xDWc6cQD/xmfmw3CK0zDnMp87RnAHbSC7LaYSOAEJrrqS99FCbQoLS rOwQDMBGH2HvIeHs8Rz8R7VwDLgXbsPSnmYZ1zqBWhZPDqQalLwMdVJTZEqF7GNK4vkC sUY41omIzhSSj/q91PYkqGsORwfWPoKbu1Brc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710779762; x=1711384562; 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=+Es/OAet7dNZ7FixRa/pu3b/1ceG+5ckl7uGOXfyyFU=; b=A5UghqaPUvaEqYnitYlVU2Y5nCFS97CM8ojlHIBvRMDbJZphiY2x/XoXRGnKW2giRp J7wdTw54o2DuHJU1jXypMBfJJKiDodKX8k13rY4tihMwahNTs0oxug8G2cSGEioVae2K lchmIF2AhYggesxHLt3XgZN9zxTQxPNnCI9Mvpom7Rw4RvDlYL322SD7IGd9lUBzmDtH Wh3lsWtK6bWC6E/TNzz7jyJXzf4DAzczAe1MXU1kR8X+gTphmsCHVWZyiCr3bslsp5nd Fb+oihKW+PkQVejkyg1ef/RInTAm+IQ/NeGnbyCgGjG//jJruGvvRGxUZ0FZR2gfHGf4 cWtg== X-Gm-Message-State: AOJu0Yzw4X9hisdMiI4fCsDJgv8JwkBymLV9t1XKdh3+GqoN5U9Cwj+m FVZuZLd3aCwhQVHVy/b5iuYxgM0qytOEDYOuo0FW+/45YwMyS6bng6Fmj/JE3Dn7iXfMriBdwe1 x X-Google-Smtp-Source: AGHT+IGuGed2OIpdg8mf45PQ90xsx+u1p/YYwxpG5q13Of4+Z8/utQniX7dc+gofmdEtnZVi2HXaug== X-Received: by 2002:a17:906:a18c:b0:a46:a17b:c44e with SMTP id s12-20020a170906a18c00b00a46a17bc44emr4306442ejy.30.1710779762049; Mon, 18 Mar 2024 09:36:02 -0700 (PDT) From: Andrew Cooper To: Xen-devel Cc: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , George Dunlap , Stefano Stabellini , Julien Grall , Nicola Vetrini , "consulting @ bugseng . com" Subject: [PATCH 5/7] xen: Switch to new TRACE() API Date: Mon, 18 Mar 2024 16:35:50 +0000 Message-Id: <20240318163552.3808695-6-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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1710779788073100004 (Almost) no functional change. irq_move_cleanup_interrupt() changes two smp_processor_id() calls to the 'm= e' local variable which manifests as a minor code improvement. All other differences in the compiled binary are to do with line numbers changing. Some conversion notes: * HVMTRACE_LONG_[234]D() and TRACE_2_LONG_[234]D() were latently buggy. T= hey blindly discard extra parameters, but luckily no users are impacted. Th= ey are also obfuscated wrappers, depending on exactly one or two parameters being TRC_PAR_LONG() to compile successfully. * HVMTRACE_LONG_1D() behaves unlike its named companions, and takes exactly one 64bit parameter which it splits manually. It's one user, vmx_cr_access()'s LMSW path, is gets adjusted. * TRACE_?D() and TRACE_2_LONG_*() change to TRACE_TIME() as cycles is alwa= ys enabled. * HVMTRACE_ND() is opencoded for VMENTRY/VMEXIT records to include cycles. These are converted to TRACE_TIME(), with the old modifier parameter expressed as an OR at the callsite. One callsite, svm_vmenter_helper() = had a nested tb_init_done check, which is dropped. (The optimiser also spot= ted this, which is why it doesn't manifest as a binary difference.) * All uses of *LONG() are either opencoded or swapped to using a struct, to avoid MISRA issues. * All HVMTRACE_?D() change to TRACE() as cycles is explicitly skipped. Signed-off-by: Andrew Cooper Reviewed-by: George Dunlap --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: George Dunlap CC: Stefano Stabellini CC: Julien Grall CC: Nicola Vetrini CC: consulting@bugseng.com v2.1: * New v3: * Remove TRACE_PARAM64() for MISRA reasons. --- xen/arch/x86/acpi/cpu_idle.c | 12 ++++---- xen/arch/x86/compat.c | 4 +-- xen/arch/x86/cpu/mwait-idle.c | 6 ++-- xen/arch/x86/emul-i8254.c | 14 ++++----- xen/arch/x86/hvm/emulate.c | 8 +++--- xen/arch/x86/hvm/hpet.c | 6 ++-- xen/arch/x86/hvm/hvm.c | 16 +++++------ xen/arch/x86/hvm/rtc.c | 12 ++++---- xen/arch/x86/hvm/svm/intr.c | 6 ++-- xen/arch/x86/hvm/svm/svm.c | 40 ++++++++++++-------------- xen/arch/x86/hvm/vlapic.c | 51 +++++++++++++++++++++++---------- xen/arch/x86/hvm/vmx/intr.c | 6 ++-- xen/arch/x86/hvm/vmx/vmx.c | 54 +++++++++++++++++------------------ xen/arch/x86/hvm/vpic.c | 13 ++++----- xen/arch/x86/irq.c | 14 ++++----- xen/arch/x86/traps.c | 2 +- xen/common/domain.c | 4 +-- xen/common/grant_table.c | 6 ++-- xen/drivers/cpufreq/utility.c | 2 +- 19 files changed, 144 insertions(+), 132 deletions(-) diff --git a/xen/arch/x86/acpi/cpu_idle.c b/xen/arch/x86/acpi/cpu_idle.c index cfce4cc0408f..30094ff485b4 100644 --- a/xen/arch/x86/acpi/cpu_idle.c +++ b/xen/arch/x86/acpi/cpu_idle.c @@ -767,7 +767,7 @@ static void cf_check acpi_processor_idle(void) /* Get start time (ticks) */ t1 =3D alternative_call(cpuidle_get_tick); /* Trace cpu idle entry */ - TRACE_4D(TRC_PM_IDLE_ENTRY, cx->idx, t1, exp, pred); + TRACE_TIME(TRC_PM_IDLE_ENTRY, cx->idx, t1, exp, pred); =20 update_last_cx_stat(power, cx, t1); =20 @@ -777,8 +777,8 @@ static void cf_check acpi_processor_idle(void) t2 =3D alternative_call(cpuidle_get_tick); trace_exit_reason(irq_traced); /* Trace cpu idle exit */ - TRACE_6D(TRC_PM_IDLE_EXIT, cx->idx, t2, - irq_traced[0], irq_traced[1], irq_traced[2], irq_trac= ed[3]); + TRACE_TIME(TRC_PM_IDLE_EXIT, cx->idx, t2, + irq_traced[0], irq_traced[1], irq_traced[2], irq_tr= aced[3]); /* Update statistics */ update_idle_stats(power, cx, t1, t2); /* Re-enable interrupts */ @@ -798,7 +798,7 @@ static void cf_check acpi_processor_idle(void) /* Get start time (ticks) */ t1 =3D alternative_call(cpuidle_get_tick); /* Trace cpu idle entry */ - TRACE_4D(TRC_PM_IDLE_ENTRY, cx->idx, t1, exp, pred); + TRACE_TIME(TRC_PM_IDLE_ENTRY, cx->idx, t1, exp, pred); =20 update_last_cx_stat(power, cx, t1); =20 @@ -853,8 +853,8 @@ static void cf_check acpi_processor_idle(void) cstate_restore_tsc(); trace_exit_reason(irq_traced); /* Trace cpu idle exit */ - TRACE_6D(TRC_PM_IDLE_EXIT, cx->idx, t2, - irq_traced[0], irq_traced[1], irq_traced[2], irq_traced[3= ]); + TRACE_TIME(TRC_PM_IDLE_EXIT, cx->idx, t2, + irq_traced[0], irq_traced[1], irq_traced[2], irq_traced= [3]); =20 /* Update statistics */ update_idle_stats(power, cx, t1, t2); diff --git a/xen/arch/x86/compat.c b/xen/arch/x86/compat.c index a03106283028..217b5b1fcc41 100644 --- a/xen/arch/x86/compat.c +++ b/xen/arch/x86/compat.c @@ -37,8 +37,8 @@ long do_sched_op_compat(int cmd, unsigned long arg) return do_sched_op(cmd, guest_handle_from_ptr(NULL, void)); =20 case SCHEDOP_shutdown: - TRACE_3D(TRC_SCHED_SHUTDOWN, - current->domain->domain_id, current->vcpu_id, arg); + TRACE_TIME(TRC_SCHED_SHUTDOWN, + current->domain->domain_id, current->vcpu_id, arg); domain_shutdown(current->domain, (u8)arg); break; =20 diff --git a/xen/arch/x86/cpu/mwait-idle.c b/xen/arch/x86/cpu/mwait-idle.c index ff5c808bc952..ae6987117169 100644 --- a/xen/arch/x86/cpu/mwait-idle.c +++ b/xen/arch/x86/cpu/mwait-idle.c @@ -962,7 +962,7 @@ static void cf_check mwait_idle(void) lapic_timer_off(); =20 before =3D alternative_call(cpuidle_get_tick); - TRACE_4D(TRC_PM_IDLE_ENTRY, cx->type, before, exp, pred); + TRACE_TIME(TRC_PM_IDLE_ENTRY, cx->type, before, exp, pred); =20 update_last_cx_stat(power, cx, before); =20 @@ -986,8 +986,8 @@ static void cf_check mwait_idle(void) =20 local_irq_enable(); =20 - TRACE_6D(TRC_PM_IDLE_EXIT, cx->type, after, - irq_traced[0], irq_traced[1], irq_traced[2], irq_traced[3]); + TRACE_TIME(TRC_PM_IDLE_EXIT, cx->type, after, + irq_traced[0], irq_traced[1], irq_traced[2], irq_traced[3]); =20 if (!(lapic_timer_reliable_states & (1 << cx->type))) lapic_timer_on(); diff --git a/xen/arch/x86/emul-i8254.c b/xen/arch/x86/emul-i8254.c index 0191f80ba251..144aa168a3f0 100644 --- a/xen/arch/x86/emul-i8254.c +++ b/xen/arch/x86/emul-i8254.c @@ -94,7 +94,7 @@ static void cf_check pit_time_fired(struct vcpu *v, void = *priv) { uint64_t *count_load_time =3D priv; =20 - TRACE_0D(TRC_HVM_EMUL_PIT_TIMER_CB); + TRACE_TIME(TRC_HVM_EMUL_PIT_TIMER_CB); *count_load_time =3D get_guest_time(v); } =20 @@ -128,19 +128,19 @@ static void pit_load_count(PITState *pit, int channel= , int val) case 2: case 3: /* Periodic timer. */ - TRACE_2D(TRC_HVM_EMUL_PIT_START_TIMER, period, period); + TRACE_TIME(TRC_HVM_EMUL_PIT_START_TIMER, period, period); create_periodic_time(v, &pit->pt0, period, period, 0, pit_time_fir= ed, &pit->count_load_time[channel], false); break; case 1: case 4: /* One-shot timer. */ - TRACE_2D(TRC_HVM_EMUL_PIT_START_TIMER, period, 0); + TRACE_TIME(TRC_HVM_EMUL_PIT_START_TIMER, period, 0); create_periodic_time(v, &pit->pt0, period, 0, 0, pit_time_fired, &pit->count_load_time[channel], false); break; default: - TRACE_0D(TRC_HVM_EMUL_PIT_STOP_TIMER); + TRACE_TIME(TRC_HVM_EMUL_PIT_STOP_TIMER); destroy_periodic_time(&pit->pt0); break; } @@ -404,7 +404,7 @@ void pit_stop_channel0_irq(PITState *pit) if ( !has_vpit(current->domain) ) return; =20 - TRACE_0D(TRC_HVM_EMUL_PIT_STOP_TIMER); + TRACE_TIME(TRC_HVM_EMUL_PIT_STOP_TIMER); spin_lock(&pit->lock); destroy_periodic_time(&pit->pt0); spin_unlock(&pit->lock); @@ -615,7 +615,7 @@ void pit_reset(struct domain *d) =20 if ( is_hvm_domain(d) ) { - TRACE_0D(TRC_HVM_EMUL_PIT_STOP_TIMER); + TRACE_TIME(TRC_HVM_EMUL_PIT_STOP_TIMER); destroy_periodic_time(&pit->pt0); pit->pt0.source =3D PTSRC_isa; } @@ -660,7 +660,7 @@ void pit_deinit(struct domain *d) =20 if ( is_hvm_domain(d) ) { - TRACE_0D(TRC_HVM_EMUL_PIT_STOP_TIMER); + TRACE_TIME(TRC_HVM_EMUL_PIT_STOP_TIMER); destroy_periodic_time(&pit->pt0); } } diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c index ab1bc516839a..d8f36206a712 100644 --- a/xen/arch/x86/hvm/emulate.c +++ b/xen/arch/x86/hvm/emulate.c @@ -2181,7 +2181,7 @@ static int cf_check hvmemul_read_cr( case 3: case 4: *val =3D current->arch.hvm.guest_cr[reg]; - HVMTRACE_LONG_2D(CR_READ, reg, TRC_PAR_LONG(*val)); + TRACE(TRC_HVM_CR_READ64, reg, *val, *val >> 32); return X86EMUL_OKAY; default: break; @@ -2197,7 +2197,7 @@ static int cf_check hvmemul_write_cr( { int rc; =20 - HVMTRACE_LONG_2D(CR_WRITE, reg, TRC_PAR_LONG(val)); + TRACE(TRC_HVM_CR_WRITE64, reg, val, val >> 32); switch ( reg ) { case 0: @@ -2242,7 +2242,7 @@ static int cf_check hvmemul_read_xcr( int rc =3D x86emul_read_xcr(reg, val, ctxt); =20 if ( rc =3D=3D X86EMUL_OKAY ) - HVMTRACE_LONG_2D(XCR_READ, reg, TRC_PAR_LONG(*val)); + TRACE(TRC_HVM_XCR_READ64, reg, *val, *val >> 32); =20 return rc; } @@ -2252,7 +2252,7 @@ static int cf_check hvmemul_write_xcr( uint64_t val, struct x86_emulate_ctxt *ctxt) { - HVMTRACE_LONG_2D(XCR_WRITE, reg, TRC_PAR_LONG(val)); + TRACE(TRC_HVM_XCR_WRITE64, reg, val, val >> 32); =20 return x86emul_write_xcr(reg, val, ctxt); } diff --git a/xen/arch/x86/hvm/hpet.c b/xen/arch/x86/hvm/hpet.c index 1db9c0b60ee0..0356ade5957b 100644 --- a/xen/arch/x86/hvm/hpet.c +++ b/xen/arch/x86/hvm/hpet.c @@ -201,7 +201,7 @@ static void hpet_stop_timer(HPETState *h, unsigned int = tn, { ASSERT(tn < HPET_TIMER_NUM); ASSERT(rw_is_write_locked(&h->lock)); - TRACE_1D(TRC_HVM_EMUL_HPET_STOP_TIMER, tn); + TRACE_TIME(TRC_HVM_EMUL_HPET_STOP_TIMER, tn); destroy_periodic_time(&h->pt[tn]); /* read the comparator to get it updated so a read while stopped will * return the expected value. */ @@ -305,8 +305,8 @@ static void hpet_set_timer(HPETState *h, unsigned int t= n, if ( !oneshot ) period_ns =3D hpet_tick_to_ns(h, h->hpet.period[tn]); =20 - TRACE_2_LONG_4D(TRC_HVM_EMUL_HPET_START_TIMER, tn, irq, - TRC_PAR_LONG(diff_ns), TRC_PAR_LONG(period_ns)); + TRACE_TIME(TRC_HVM_EMUL_HPET_START_TIMER, tn, irq, + diff_ns, diff_ns >> 32, period_ns, period_ns >> 32); =20 create_periodic_time(vhpet_vcpu(h), &h->pt[tn], diff_ns, period_ns, irq, timer_level(h, tn) ? hpet_timer_fired : NULL, diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index c75959588c0e..e8af42eb499d 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -1699,7 +1699,7 @@ void hvm_hlt(unsigned int eflags) =20 do_sched_op(SCHEDOP_block, guest_handle_from_ptr(NULL, void)); =20 - HVMTRACE_1D(HLT, /* pending =3D */ vcpu_runnable(curr)); + TRACE(TRC_HVM_HLT, /* pending =3D */ vcpu_runnable(curr)); } =20 void hvm_triple_fault(void) @@ -2153,7 +2153,7 @@ int hvm_mov_to_cr(unsigned int cr, unsigned int gpr) unsigned long val =3D *decode_gpr(guest_cpu_user_regs(), gpr); int rc; =20 - HVMTRACE_LONG_2D(CR_WRITE, cr, TRC_PAR_LONG(val)); + TRACE(TRC_HVM_CR_WRITE64, cr, val, val >> 32); HVM_DBG_LOG(DBG_LEVEL_1, "CR%u, value =3D %lx", cr, val); =20 switch ( cr ) @@ -2218,7 +2218,7 @@ int hvm_mov_from_cr(unsigned int cr, unsigned int gpr) } =20 *reg =3D val; - HVMTRACE_LONG_2D(CR_READ, cr, TRC_PAR_LONG(val)); + TRACE(TRC_HVM_CR_READ64, cr, val, val >> 32); HVM_DBG_LOG(DBG_LEVEL_VMMU, "CR%u, value =3D %lx", cr, val); =20 return X86EMUL_OKAY; @@ -3508,7 +3508,7 @@ int hvm_vmexit_cpuid(struct cpu_user_regs *regs, unsi= gned int inst_len) } =20 guest_cpuid(curr, leaf, subleaf, &res); - HVMTRACE_6D(CPUID, leaf, subleaf, res.a, res.b, res.c, res.d); + TRACE(TRC_HVM_CPUID, leaf, subleaf, res.a, res.b, res.c, res.d); =20 regs->rax =3D res.a; regs->rbx =3D res.b; @@ -3522,7 +3522,7 @@ void hvm_rdtsc_intercept(struct cpu_user_regs *regs) { msr_split(regs, hvm_get_guest_tsc(current)); =20 - HVMTRACE_2D(RDTSC, regs->eax, regs->edx); + TRACE(TRC_HVM_RDTSC, regs->eax, regs->edx); } =20 int hvm_msr_read_intercept(unsigned int msr, uint64_t *msr_content) @@ -3629,8 +3629,7 @@ int hvm_msr_read_intercept(unsigned int msr, uint64_t= *msr_content) } =20 out: - HVMTRACE_3D(MSR_READ, msr, - (uint32_t)*msr_content, (uint32_t)(*msr_content >> 32)); + TRACE(TRC_HVM_MSR_READ, msr, *msr_content, *msr_content >> 32); return ret; =20 gp_fault: @@ -3646,8 +3645,7 @@ int hvm_msr_write_intercept(unsigned int msr, uint64_= t msr_content, struct domain *d =3D v->domain; int ret; =20 - HVMTRACE_3D(MSR_WRITE, msr, - (uint32_t)msr_content, (uint32_t)(msr_content >> 32)); + TRACE(TRC_HVM_MSR_WRITE, msr, msr_content, msr_content >> 32); =20 if ( may_defer && unlikely(monitored_msr(v->domain, msr)) ) { diff --git a/xen/arch/x86/hvm/rtc.c b/xen/arch/x86/hvm/rtc.c index 4b31382619f4..3ad5e4faba76 100644 --- a/xen/arch/x86/hvm/rtc.c +++ b/xen/arch/x86/hvm/rtc.c @@ -91,7 +91,7 @@ static void cf_check rtc_pf_callback(struct vcpu *v, void= *opaque) && ++(s->pt_dead_ticks) >=3D 10 ) { /* VM is ignoring its RTC; no point in running the timer */ - TRACE_0D(TRC_HVM_EMUL_RTC_STOP_TIMER); + TRACE_TIME(TRC_HVM_EMUL_RTC_STOP_TIMER); destroy_periodic_time(&s->pt); s->period =3D 0; } @@ -154,7 +154,7 @@ static void rtc_timer_update(RTCState *s) delta =3D period - ((now - s->start_time) % period); if ( s->hw.cmos_data[RTC_REG_B] & RTC_PIE ) { - TRACE_2D(TRC_HVM_EMUL_RTC_START_TIMER, delta, period); + TRACE_TIME(TRC_HVM_EMUL_RTC_START_TIMER, delta, period= ); create_periodic_time(v, &s->pt, delta, period, RTC_IRQ, rtc_pf_callback, s, fals= e); } @@ -165,7 +165,7 @@ static void rtc_timer_update(RTCState *s) } /* fall through */ default: - TRACE_0D(TRC_HVM_EMUL_RTC_STOP_TIMER); + TRACE_TIME(TRC_HVM_EMUL_RTC_STOP_TIMER); destroy_periodic_time(&s->pt); s->period =3D 0; break; @@ -552,7 +552,7 @@ static int rtc_ioport_write(void *opaque, uint32_t addr= , uint32_t data) rtc_update_irq(s); if ( (data ^ orig) & RTC_PIE ) { - TRACE_0D(TRC_HVM_EMUL_RTC_STOP_TIMER); + TRACE_TIME(TRC_HVM_EMUL_RTC_STOP_TIMER); destroy_periodic_time(&s->pt); s->period =3D 0; rtc_timer_update(s); @@ -806,7 +806,7 @@ void rtc_reset(struct domain *d) if ( !has_vrtc(d) ) return; =20 - TRACE_0D(TRC_HVM_EMUL_RTC_STOP_TIMER); + TRACE_TIME(TRC_HVM_EMUL_RTC_STOP_TIMER); destroy_periodic_time(&s->pt); s->period =3D 0; s->pt.source =3D PTSRC_isa; @@ -891,7 +891,7 @@ void rtc_deinit(struct domain *d) =20 spin_barrier(&s->lock); =20 - TRACE_0D(TRC_HVM_EMUL_RTC_STOP_TIMER); + TRACE_TIME(TRC_HVM_EMUL_RTC_STOP_TIMER); destroy_periodic_time(&s->pt); kill_timer(&s->update_timer); kill_timer(&s->update_timer2); diff --git a/xen/arch/x86/hvm/svm/intr.c b/xen/arch/x86/hvm/svm/intr.c index 4805c5567213..dc684fdc843e 100644 --- a/xen/arch/x86/hvm/svm/intr.c +++ b/xen/arch/x86/hvm/svm/intr.c @@ -90,8 +90,8 @@ static void svm_enable_intr_window(struct vcpu *v, struct= hvm_intack intack) } } =20 - HVMTRACE_3D(INTR_WINDOW, intack.vector, intack.source, - vmcb->event_inj.v ? vmcb->event_inj.vector : -1); + TRACE(TRC_HVM_INTR_WINDOW, intack.vector, intack.source, + vmcb->event_inj.v ? vmcb->event_inj.vector : -1); =20 /* * Create a dummy virtual interrupt to intercept as soon as the @@ -206,7 +206,7 @@ void asmlinkage svm_intr_assist(void) } else { - HVMTRACE_2D(INJ_VIRQ, intack.vector, /*fake=3D*/ 0); + TRACE(TRC_HVM_INJ_VIRQ, intack.vector, /*fake=3D*/ 0); svm_inject_extint(v, intack.vector); pt_intr_post(v, intack); } diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index b1ab0b568b85..09a79d761163 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -1066,10 +1066,8 @@ void asmlinkage svm_vmenter_helper(void) =20 svm_asid_handle_vmrun(); =20 - if ( unlikely(tb_init_done) ) - HVMTRACE_ND(VMENTRY, - nestedhvm_vcpu_in_guestmode(curr) ? TRC_HVM_NESTEDFLAG= : 0, - 1/*cycles*/); + TRACE_TIME(TRC_HVM_VMENTRY | + (nestedhvm_vcpu_in_guestmode(curr) ? TRC_HVM_NESTEDFLAG : 0= )); =20 svm_sync_vmcb(curr, vmcb_needs_vmsave); =20 @@ -1441,10 +1439,10 @@ static void cf_check svm_inject_event(const struct = x86_event *event) =20 if ( _event.vector =3D=3D X86_EXC_PF && _event.type =3D=3D X86_EVENTTYPE_HW_EXCEPTION ) - HVMTRACE_LONG_2D(PF_INJECT, _event.error_code, - TRC_PAR_LONG(_event.cr2)); + TRACE(TRC_HVM_PF_INJECT64, _event.error_code, + _event.cr2, _event.cr2 >> 32); else - HVMTRACE_2D(INJ_EXC, _event.vector, _event.error_code); + TRACE(TRC_HVM_INJ_EXC, _event.vector, _event.error_code); } =20 static bool cf_check svm_event_pending(const struct vcpu *v) @@ -1751,7 +1749,7 @@ static void svm_dr_access(struct vcpu *v, struct cpu_= user_regs *regs) { struct vmcb_struct *vmcb =3D vcpu_nestedhvm(v).nv_n1vmcx; =20 - HVMTRACE_0D(DR_WRITE); + TRACE(TRC_HVM_DR_WRITE); __restore_debug_registers(vmcb, v); } =20 @@ -2402,7 +2400,7 @@ static void svm_invlpga_intercept( =20 static void svm_invlpg_intercept(unsigned long linear) { - HVMTRACE_LONG_2D(INVLPG, 0, TRC_PAR_LONG(linear)); + TRACE(TRC_HVM_INVLPG64, 0, linear, linear >> 32); paging_invlpg(current, linear); } =20 @@ -2629,11 +2627,11 @@ void asmlinkage svm_vmexit_handler(void) exit_reason =3D vmcb->exitcode; =20 if ( hvm_long_mode_active(v) ) - HVMTRACE_ND(VMEXIT64, vcpu_guestmode ? TRC_HVM_NESTEDFLAG : 0, - 1/*cycles*/, exit_reason, TRC_PAR_LONG(regs->rip)); + TRACE_TIME(TRC_HVM_VMEXIT64 | (vcpu_guestmode ? TRC_HVM_NESTEDFLAG= : 0), + exit_reason, regs->rip, regs->rip >> 32); else - HVMTRACE_ND(VMEXIT, vcpu_guestmode ? TRC_HVM_NESTEDFLAG : 0, - 1/*cycles*/, exit_reason, regs->eip); + TRACE_TIME(TRC_HVM_VMEXIT | (vcpu_guestmode ? TRC_HVM_NESTEDFLAG := 0), + exit_reason, regs->eip); =20 if ( vcpu_guestmode ) { @@ -2728,17 +2726,17 @@ void asmlinkage svm_vmexit_handler(void) { case VMEXIT_INTR: /* Asynchronous event, handled when we STGI'd after the VMEXIT. */ - HVMTRACE_0D(INTR); + TRACE(TRC_HVM_INTR); break; =20 case VMEXIT_NMI: /* Asynchronous event, handled when we STGI'd after the VMEXIT. */ - HVMTRACE_0D(NMI); + TRACE(TRC_HVM_NMI); break; =20 case VMEXIT_SMI: /* Asynchronous event, handled when we STGI'd after the VMEXIT. */ - HVMTRACE_0D(SMI); + TRACE(TRC_HVM_SMI); break; =20 case VMEXIT_ICEBP: @@ -2826,9 +2824,9 @@ void asmlinkage svm_vmexit_handler(void) if ( trace_will_trace_event(TRC_SHADOW) ) break; if ( hvm_long_mode_active(v) ) - HVMTRACE_LONG_2D(PF_XEN, regs->error_code, TRC_PAR_LONG(va= )); + TRACE(TRC_HVM_PF_XEN64, regs->error_code, va, va >> 32); else - HVMTRACE_2D(PF_XEN, regs->error_code, va); + TRACE(TRC_HVM_PF_XEN, regs->error_code, va); break; } =20 @@ -2837,7 +2835,7 @@ void asmlinkage svm_vmexit_handler(void) } =20 case VMEXIT_EXCEPTION_AC: - HVMTRACE_1D(TRAP, X86_EXC_AC); + TRACE(TRC_HVM_TRAP, X86_EXC_AC); hvm_inject_hw_exception(X86_EXC_AC, vmcb->ei.exc.ec); break; =20 @@ -2847,7 +2845,7 @@ void asmlinkage svm_vmexit_handler(void) =20 /* Asynchronous event, handled when we STGI'd after the VMEXIT. */ case VMEXIT_EXCEPTION_MC: - HVMTRACE_0D(MCE); + TRACE(TRC_HVM_MCE); svm_vmexit_mce_intercept(v, regs); break; =20 @@ -2993,7 +2991,7 @@ void asmlinkage svm_vmexit_handler(void) if ( (insn_len =3D svm_get_insn_len(v, INSTR_VMCALL)) =3D=3D 0 ) break; BUG_ON(vcpu_guestmode); - HVMTRACE_1D(VMMCALL, regs->eax); + TRACE(TRC_HVM_VMMCALL, regs->eax); =20 if ( hvm_hypercall(regs) =3D=3D HVM_HCALL_completed ) __update_guest_eip(regs, insn_len); diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c index dcbcf4a1feb5..65e171d4751f 100644 --- a/xen/arch/x86/hvm/vlapic.c +++ b/xen/arch/x86/hvm/vlapic.c @@ -682,7 +682,7 @@ int guest_rdmsr_x2apic(const struct vcpu *v, uint32_t m= sr, uint64_t *val) =20 static void cf_check vlapic_pt_cb(struct vcpu *v, void *data) { - TRACE_0D(TRC_HVM_EMUL_LAPIC_TIMER_CB); + TRACE_TIME(TRC_HVM_EMUL_LAPIC_TIMER_CB); *(s_time_t *)data =3D hvm_get_guest_time(v); } =20 @@ -736,9 +736,19 @@ static void vlapic_update_timer(struct vlapic *vlapic,= uint32_t lvtt, delta =3D delta * vlapic->hw.timer_divisor / old_divisor; } =20 - TRACE_2_LONG_3D(TRC_HVM_EMUL_LAPIC_START_TIMER, TRC_PAR_LONG(delta= ), - TRC_PAR_LONG(is_periodic ? period : 0), - vlapic->pt.irq); + if ( unlikely(tb_init_done) ) + { + struct { + uint64_t delta, period; + uint32_t irq; + } __packed d =3D { + .delta =3D delta, + .period =3D is_periodic ? period : 0, + .irq =3D vlapic->pt.irq, + }; + + trace_time(TRC_HVM_EMUL_LAPIC_START_TIMER, sizeof(d), &d); + } =20 create_periodic_time(current, &vlapic->pt, delta, is_periodic ? period : 0, vlapic->pt.irq, @@ -758,7 +768,7 @@ static void vlapic_update_timer(struct vlapic *vlapic, = uint32_t lvtt, } else { - TRACE_0D(TRC_HVM_EMUL_LAPIC_STOP_TIMER); + TRACE_TIME(TRC_HVM_EMUL_LAPIC_STOP_TIMER); destroy_periodic_time(&vlapic->pt); /* * From now, TMCCT should return 0 until TMICT is set again. @@ -1208,8 +1218,8 @@ void vlapic_tdt_msr_set(struct vlapic *vlapic, uint64= _t value) =20 vlapic->hw.tdt_msr =3D value; /* .... reprogram tdt timer */ - TRACE_2_LONG_3D(TRC_HVM_EMUL_LAPIC_START_TIMER, TRC_PAR_LONG(delta= ), - TRC_PAR_LONG(0LL), vlapic->pt.irq); + TRACE_TIME(TRC_HVM_EMUL_LAPIC_START_TIMER, delta, delta >> 32, + 0, 0, vlapic->pt.irq); create_periodic_time(v, &vlapic->pt, delta, 0, vlapic->pt.irq, vlapic_tdt_pt_cb, &vlapic->timer_last_update, false); @@ -1222,8 +1232,8 @@ void vlapic_tdt_msr_set(struct vlapic *vlapic, uint64= _t value) /* trigger a timer event if needed */ if ( value > 0 ) { - TRACE_2_LONG_3D(TRC_HVM_EMUL_LAPIC_START_TIMER, TRC_PAR_LONG(0= LL), - TRC_PAR_LONG(0LL), vlapic->pt.irq); + TRACE_TIME(TRC_HVM_EMUL_LAPIC_START_TIMER, 0, 0, + 0, 0, vlapic->pt.irq); create_periodic_time(v, &vlapic->pt, 0, 0, vlapic->pt.irq, vlapic_tdt_pt_cb, &vlapic->timer_last_update, false); @@ -1232,7 +1242,7 @@ void vlapic_tdt_msr_set(struct vlapic *vlapic, uint64= _t value) else { /* .... stop tdt timer */ - TRACE_0D(TRC_HVM_EMUL_LAPIC_STOP_TIMER); + TRACE_TIME(TRC_HVM_EMUL_LAPIC_STOP_TIMER); destroy_periodic_time(&vlapic->pt); } =20 @@ -1282,7 +1292,7 @@ int vlapic_accept_pic_intr(struct vcpu *v) if ( target ) accept =3D __vlapic_accept_pic_intr(v); =20 - TRACE_2D(TRC_HVM_EMUL_LAPIC_PIC_INTR, target, accept); + TRACE_TIME(TRC_HVM_EMUL_LAPIC_PIC_INTR, target, accept); =20 return target && accept; } @@ -1433,7 +1443,7 @@ static void vlapic_do_init(struct vlapic *vlapic) vlapic_set_reg(vlapic, APIC_SPIV, 0xff); vlapic->hw.disabled |=3D VLAPIC_SW_DISABLED; =20 - TRACE_0D(TRC_HVM_EMUL_LAPIC_STOP_TIMER); + TRACE_TIME(TRC_HVM_EMUL_LAPIC_STOP_TIMER); destroy_periodic_time(&vlapic->pt); } =20 @@ -1476,8 +1486,19 @@ static void lapic_rearm(struct vlapic *s) (uint32_t)tmict * s->hw.timer_divisor); is_periodic =3D vlapic_lvtt_period(s); =20 - TRACE_2_LONG_3D(TRC_HVM_EMUL_LAPIC_START_TIMER, TRC_PAR_LONG(period), - TRC_PAR_LONG(is_periodic ? period : 0LL), s->pt.irq); + if ( unlikely(tb_init_done) ) + { + struct { + uint64_t delta, period; + uint32_t irq; + } __packed d =3D { + .delta =3D period, + .period =3D is_periodic ? period : 0, + .irq =3D s->pt.irq, + }; + + trace_time(TRC_HVM_EMUL_LAPIC_START_TIMER, sizeof(d), &d); + } =20 create_periodic_time(vlapic_vcpu(s), &s->pt, period, is_periodic ? period : 0, @@ -1669,7 +1690,7 @@ void vlapic_destroy(struct vcpu *v) return; =20 tasklet_kill(&vlapic->init_sipi.tasklet); - TRACE_0D(TRC_HVM_EMUL_LAPIC_STOP_TIMER); + TRACE_TIME(TRC_HVM_EMUL_LAPIC_STOP_TIMER); destroy_periodic_time(&vlapic->pt); unmap_domain_page_global(vlapic->regs); free_domheap_page(vlapic->regs_page); diff --git a/xen/arch/x86/hvm/vmx/intr.c b/xen/arch/x86/hvm/vmx/intr.c index 8beeaab1517b..d36498d83104 100644 --- a/xen/arch/x86/hvm/vmx/intr.c +++ b/xen/arch/x86/hvm/vmx/intr.c @@ -67,8 +67,8 @@ static void vmx_enable_intr_window(struct vcpu *v, struct= hvm_intack intack) unsigned long intr; =20 __vmread(VM_ENTRY_INTR_INFO, &intr); - HVMTRACE_3D(INTR_WINDOW, intack.vector, intack.source, - (intr & INTR_INFO_VALID_MASK) ? intr & 0xff : -1); + TRACE(TRC_HVM_INTR_WINDOW, intack.vector, intack.source, + (intr & INTR_INFO_VALID_MASK) ? intr & 0xff : -1); } =20 if ( (intack.source =3D=3D hvm_intsrc_nmi) && cpu_has_vmx_vnmi ) @@ -390,7 +390,7 @@ void asmlinkage vmx_intr_assist(void) } else { - HVMTRACE_2D(INJ_VIRQ, intack.vector, /*fake=3D*/ 0); + TRACE(TRC_HVM_INJ_VIRQ, intack.vector, /*fake=3D*/ 0); vmx_inject_extint(intack.vector, intack.source); pt_intr_post(v, intack); } diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index 23bdf0d1957f..ac73f58798ed 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -2090,10 +2090,10 @@ static void cf_check vmx_inject_event(const struct = x86_event *event) =20 if ( (_event.vector =3D=3D X86_EXC_PF) && (_event.type =3D=3D X86_EVENTTYPE_HW_EXCEPTION) ) - HVMTRACE_LONG_2D(PF_INJECT, _event.error_code, - TRC_PAR_LONG(curr->arch.hvm.guest_cr[2])); + TRACE(TRC_HVM_PF_INJECT64, _event.error_code, + curr->arch.hvm.guest_cr[2], curr->arch.hvm.guest_cr[2] >> 32= ); else - HVMTRACE_2D(INJ_EXC, _event.vector, _event.error_code); + TRACE(TRC_HVM_INJ_EXC, _event.vector, _event.error_code); } =20 static bool cf_check vmx_event_pending(const struct vcpu *v) @@ -3085,7 +3085,7 @@ static void vmx_dr_access(unsigned long exit_qualific= ation, { struct vcpu *v =3D current; =20 - HVMTRACE_0D(DR_WRITE); + TRACE(TRC_HVM_DR_WRITE); =20 if ( !v->arch.hvm.flag_dr_dirty ) __restore_debug_registers(v); @@ -3097,7 +3097,7 @@ static void vmx_dr_access(unsigned long exit_qualific= ation, =20 static void vmx_invlpg_intercept(unsigned long linear) { - HVMTRACE_LONG_2D(INVLPG, /*invlpga=3D*/ 0, TRC_PAR_LONG(linear)); + TRACE(TRC_HVM_INVLPG64, /*invlpga=3D*/ 0, linear, linear >> 32); paging_invlpg(current, linear); } =20 @@ -3145,7 +3145,7 @@ static int vmx_cr_access(cr_access_qual_t qual) hvm_monitor_crX(CR0, value, old); curr->arch.hvm.guest_cr[0] =3D value; vmx_update_guest_cr(curr, 0, 0); - HVMTRACE_0D(CLTS); + TRACE(TRC_HVM_CLTS); break; } =20 @@ -3158,7 +3158,7 @@ static int vmx_cr_access(cr_access_qual_t qual) value =3D (value & ~(X86_CR0_MP|X86_CR0_EM|X86_CR0_TS)) | (qual.lmsw_data & (X86_CR0_PE|X86_CR0_MP|X86_CR0_EM|X86_CR0_TS)); - HVMTRACE_LONG_1D(LMSW, value); + TRACE(TRC_HVM_LMSW64, value, value >> 32); =20 if ( (rc =3D hvm_set_cr0(value, true)) =3D=3D X86EMUL_EXCEPTION ) hvm_inject_hw_exception(X86_EXC_GP, 0); @@ -3711,7 +3711,7 @@ static void vmx_do_extint(struct cpu_user_regs *regs) BUG_ON(!(vector & INTR_INFO_VALID_MASK)); =20 vector &=3D INTR_INFO_VECTOR_MASK; - HVMTRACE_1D(INTR, vector); + TRACE(TRC_HVM_INTR, vector); =20 regs->entry_vector =3D vector; do_IRQ(regs); @@ -3851,7 +3851,7 @@ static void vmx_failed_vmentry(unsigned int exit_reas= on, =20 case EXIT_REASON_MCE_DURING_VMENTRY: printk("MCE\n"); - HVMTRACE_0D(MCE); + TRACE(TRC_HVM_MCE); /* Already handled. */ break; =20 @@ -3892,7 +3892,7 @@ static int vmx_handle_eoi_write(void) { update_guest_eip(); /* Safe: APIC data write */ vlapic_EOI_set(vcpu_vlapic(current)); - HVMTRACE_0D(VLAPIC); + TRACE(TRC_HVM_VLAPIC); return 1; } =20 @@ -4062,10 +4062,9 @@ void asmlinkage vmx_vmexit_handler(struct cpu_user_r= egs *regs) __vmread(VM_EXIT_REASON, &exit_reason); =20 if ( hvm_long_mode_active(v) ) - HVMTRACE_ND(VMEXIT64, 0, 1/*cycles*/, exit_reason, - TRC_PAR_LONG(regs->rip)); + TRACE_TIME(TRC_HVM_VMEXIT64, exit_reason, regs->rip, regs->rip >> = 32); else - HVMTRACE_ND(VMEXIT, 0, 1/*cycles*/, exit_reason, regs->eip); + TRACE_TIME(TRC_HVM_VMEXIT, exit_reason, regs->eip); =20 perfc_incra(vmexits, (uint16_t)exit_reason); =20 @@ -4182,7 +4181,7 @@ void asmlinkage vmx_vmexit_handler(struct cpu_user_re= gs *regs) default: perfc_incr(realmode_exits); v->arch.hvm.vmx.vmx_emulate =3D 1; - HVMTRACE_0D(REALMODE_EMULATE); + TRACE(TRC_HVM_REALMODE_EMULATE); return; } case EXIT_REASON_EXTERNAL_INTERRUPT: @@ -4239,7 +4238,7 @@ void asmlinkage vmx_vmexit_handler(struct cpu_user_re= gs *regs) * Table 23-1, "Exit Qualification for Debug Exceptions"). */ __vmread(EXIT_QUALIFICATION, &exit_qualification); - HVMTRACE_1D(TRAP_DEBUG, exit_qualification); + TRACE(TRC_HVM_TRAP_DEBUG, exit_qualification); __restore_debug_registers(v); write_debugreg(6, exit_qualification | DR_STATUS_RESERVED_ONE); =20 @@ -4301,7 +4300,7 @@ void asmlinkage vmx_vmexit_handler(struct cpu_user_re= gs *regs) domain_pause_for_debugger(); break; case X86_EXC_BP: - HVMTRACE_1D(TRAP, vector); + TRACE(TRC_HVM_TRAP, vector); if ( !v->domain->debugger_attached ) { unsigned long insn_len; @@ -4326,7 +4325,7 @@ void asmlinkage vmx_vmexit_handler(struct cpu_user_re= gs *regs) } break; case X86_EXC_NM: - HVMTRACE_1D(TRAP, vector); + TRACE(TRC_HVM_TRAP, vector); vmx_fpu_dirty_intercept(); break; case X86_EXC_PF: @@ -4344,37 +4343,36 @@ void asmlinkage vmx_vmexit_handler(struct cpu_user_= regs *regs) if ( trace_will_trace_event(TRC_SHADOW) ) break; if ( hvm_long_mode_active(v) ) - HVMTRACE_LONG_2D(PF_XEN, regs->error_code, - TRC_PAR_LONG(exit_qualification) ); + TRACE(TRC_HVM_PF_XEN64, regs->error_code, + exit_qualification, exit_qualification >> 32); else - HVMTRACE_2D(PF_XEN, - regs->error_code, exit_qualification ); + TRACE(TRC_HVM_PF_XEN, regs->error_code, exit_qualifica= tion); break; } =20 hvm_inject_page_fault(regs->error_code, exit_qualification); break; case X86_EXC_AC: - HVMTRACE_1D(TRAP, vector); + TRACE(TRC_HVM_TRAP, vector); vmx_propagate_intr(intr_info); break; case X86_EXC_NMI: if ( MASK_EXTR(intr_info, INTR_INFO_INTR_TYPE_MASK) !=3D X86_EVENTTYPE_NMI ) goto exit_and_crash; - HVMTRACE_0D(NMI); + TRACE(TRC_HVM_NMI); /* Already handled above. */ break; case X86_EXC_MC: - HVMTRACE_0D(MCE); + TRACE(TRC_HVM_MCE); /* Already handled above. */ break; case X86_EXC_UD: - HVMTRACE_1D(TRAP, vector); + TRACE(TRC_HVM_TRAP, vector); hvm_ud_intercept(regs); break; default: - HVMTRACE_1D(TRAP, vector); + TRACE(TRC_HVM_TRAP, vector); goto exit_and_crash; } break; @@ -4460,7 +4458,7 @@ void asmlinkage vmx_vmexit_handler(struct cpu_user_re= gs *regs) break; =20 case EXIT_REASON_VMCALL: - HVMTRACE_1D(VMMCALL, regs->eax); + TRACE(TRC_HVM_VMMCALL, regs->eax); =20 if ( hvm_hypercall(regs) =3D=3D HVM_HCALL_completed ) update_guest_eip(); /* Safe: VMCALL */ @@ -4868,7 +4866,7 @@ bool asmlinkage vmx_vmenter_helper(const struct cpu_u= ser_regs *regs) if ( unlikely(curr->arch.hvm.vmx.lbr_flags & LBR_FIXUP_MASK) ) lbr_fixup(); =20 - HVMTRACE_ND(VMENTRY, 0, 1/*cycles*/); + TRACE_TIME(TRC_HVM_VMENTRY); =20 __vmwrite(GUEST_RIP, regs->rip); __vmwrite(GUEST_RSP, regs->rsp); diff --git a/xen/arch/x86/hvm/vpic.c b/xen/arch/x86/hvm/vpic.c index 4e23247a464a..7c3b5c7254a8 100644 --- a/xen/arch/x86/hvm/vpic.c +++ b/xen/arch/x86/hvm/vpic.c @@ -99,8 +99,7 @@ static void vpic_update_int_output(struct hvm_hw_vpic *vp= ic) ASSERT(vpic_is_locked(vpic)); =20 irq =3D vpic_get_highest_priority_irq(vpic); - TRACE_3D(TRC_HVM_EMUL_PIC_INT_OUTPUT, vpic->int_output, vpic->is_maste= r, - irq); + TRACE_TIME(TRC_HVM_EMUL_PIC_INT_OUTPUT, vpic->int_output, vpic->is_mas= ter, irq); if ( vpic->int_output =3D=3D (!vpic->init_state && irq >=3D 0) ) return; =20 @@ -119,7 +118,7 @@ static void vpic_update_int_output(struct hvm_hw_vpic *= vpic) =20 if ( v !=3D NULL ) { - TRACE_1D(TRC_HVM_EMUL_PIC_KICK, irq); + TRACE_TIME(TRC_HVM_EMUL_PIC_KICK, irq); vcpu_kick(v); } } @@ -144,7 +143,7 @@ static void __vpic_intack(struct hvm_hw_vpic *vpic, int= irq) =20 ASSERT(vpic_is_locked(vpic)); =20 - TRACE_2D(TRC_HVM_EMUL_PIC_INTACK, vpic->is_master, irq); + TRACE_TIME(TRC_HVM_EMUL_PIC_INTACK, vpic->is_master, irq); /* Edge-triggered: clear the IRR (forget the edge). */ if ( !(vpic->elcr & mask) ) vpic->irr &=3D ~mask; @@ -526,7 +525,7 @@ void vpic_irq_positive_edge(struct domain *d, int irq) ASSERT(irq <=3D 15); ASSERT(vpic_is_locked(vpic)); =20 - TRACE_1D(TRC_HVM_EMUL_PIC_POSEDGE, irq); + TRACE_TIME(TRC_HVM_EMUL_PIC_POSEDGE, irq); if ( irq =3D=3D 2 ) return; =20 @@ -544,7 +543,7 @@ void vpic_irq_negative_edge(struct domain *d, int irq) ASSERT(irq <=3D 15); ASSERT(vpic_is_locked(vpic)); =20 - TRACE_1D(TRC_HVM_EMUL_PIC_NEGEDGE, irq); + TRACE_TIME(TRC_HVM_EMUL_PIC_NEGEDGE, irq); if ( irq =3D=3D 2 ) return; =20 @@ -562,7 +561,7 @@ int vpic_ack_pending_irq(struct vcpu *v) =20 accept =3D vlapic_accept_pic_intr(v); =20 - TRACE_2D(TRC_HVM_EMUL_PIC_PEND_IRQ_CALL, accept, vpic->int_output); + TRACE_TIME(TRC_HVM_EMUL_PIC_PEND_IRQ_CALL, accept, vpic->int_output); if ( !accept || !vpic->int_output ) return -1; =20 diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c index 0487f734a5d2..2c1f858d3e64 100644 --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -229,7 +229,7 @@ static void _clear_irq_vector(struct irq_desc *desc) for_each_cpu(cpu, tmp_mask) { ASSERT(per_cpu(vector_irq, cpu)[old_vector] =3D=3D irq); - TRACE_3D(TRC_HW_IRQ_MOVE_FINISH, irq, old_vector, cpu); + TRACE_TIME(TRC_HW_IRQ_MOVE_FINISH, irq, old_vector, cpu); per_cpu(vector_irq, cpu)[old_vector] =3D ~irq; } =20 @@ -796,13 +796,11 @@ void cf_check irq_move_cleanup_interrupt(void) goto unlock; } send_IPI_self(IRQ_MOVE_CLEANUP_VECTOR); - TRACE_3D(TRC_HW_IRQ_MOVE_CLEANUP_DELAY, - irq, vector, smp_processor_id()); + TRACE_TIME(TRC_HW_IRQ_MOVE_CLEANUP_DELAY, irq, vector, me); goto unlock; } =20 - TRACE_3D(TRC_HW_IRQ_MOVE_CLEANUP, - irq, vector, smp_processor_id()); + TRACE_TIME(TRC_HW_IRQ_MOVE_CLEANUP, irq, vector, me); =20 per_cpu(vector_irq, me)[vector] =3D ~irq; desc->arch.move_cleanup_count--; @@ -1943,7 +1941,7 @@ void do_IRQ(struct cpu_user_regs *regs) spin_unlock(&desc->lock); } } - TRACE_1D(TRC_HW_IRQ_UNMAPPED_VECTOR, vector); + TRACE_TIME(TRC_HW_IRQ_UNMAPPED_VECTOR, vector); } goto out_no_unlock; } @@ -1984,7 +1982,7 @@ void do_IRQ(struct cpu_user_regs *regs) =20 tsc_in =3D tb_init_done ? get_cycles() : 0; do_IRQ_guest(desc, vector); - TRACE_3D(TRC_HW_IRQ_HANDLED, irq, tsc_in, get_cycles()); + TRACE_TIME(TRC_HW_IRQ_HANDLED, irq, tsc_in, get_cycles()); goto out_no_end; } =20 @@ -2008,7 +2006,7 @@ void do_IRQ(struct cpu_user_regs *regs) =20 tsc_in =3D tb_init_done ? get_cycles() : 0; action->handler(irq, action->dev_id); - TRACE_3D(TRC_HW_IRQ_HANDLED, irq, tsc_in, get_cycles()); + TRACE_TIME(TRC_HW_IRQ_HANDLED, irq, tsc_in, get_cycles()); =20 spin_lock_irq(&desc->lock); } diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index d554c9d41edd..468a03608102 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -1899,7 +1899,7 @@ void asmlinkage do_device_not_available(struct cpu_us= er_regs *regs) curr->arch.pv.ctrlreg[0] &=3D ~X86_CR0_TS; } else - TRACE_0D(TRC_PV_MATH_STATE_RESTORE); + TRACE_TIME(TRC_PV_MATH_STATE_RESTORE); #else ASSERT_UNREACHABLE(); #endif diff --git a/xen/common/domain.c b/xen/common/domain.c index 1f0d23a1e09b..fe8a216d29b6 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -625,7 +625,7 @@ struct domain *domain_create(domid_t domid, hardware_domain =3D d; } =20 - TRACE_1D(TRC_DOM0_DOM_ADD, d->domain_id); + TRACE_TIME(TRC_DOM0_DOM_ADD, d->domain_id); =20 lock_profile_register_struct(LOCKPROF_TYPE_PERDOM, d, domid); =20 @@ -1222,7 +1222,7 @@ void domain_destroy(struct domain *d) if ( atomic_cmpxchg(&d->refcnt, 0, DOMAIN_DESTROYED) !=3D 0 ) return; =20 - TRACE_1D(TRC_DOM0_DOM_REM, d->domain_id); + TRACE_TIME(TRC_DOM0_DOM_REM, d->domain_id); =20 /* Delete from task list and task hashtable. */ spin_lock(&domlist_update_lock); diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index 77089308829b..8d34c8815f05 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -1307,7 +1307,7 @@ map_grant_ref( goto undo_out; } =20 - TRACE_1D(TRC_MEM_PAGE_GRANT_MAP, op->dom); + TRACE_TIME(TRC_MEM_PAGE_GRANT_MAP, op->dom); =20 /* * All maptrack entry users check mt->flags first before using the @@ -1434,7 +1434,7 @@ unmap_common( return; } =20 - TRACE_1D(TRC_MEM_PAGE_GRANT_UNMAP, dom); + TRACE_TIME(TRC_MEM_PAGE_GRANT_UNMAP, dom); =20 rgt =3D rd->grant_table; =20 @@ -2445,7 +2445,7 @@ gnttab_transfer( put_gfn(d, gop.mfn); #endif =20 - TRACE_1D(TRC_MEM_PAGE_GRANT_TRANSFER, e->domain_id); + TRACE_TIME(TRC_MEM_PAGE_GRANT_TRANSFER, e->domain_id); =20 /* Tell the guest about its new page frame. */ grant_read_lock(e->grant_table); diff --git a/xen/drivers/cpufreq/utility.c b/xen/drivers/cpufreq/utility.c index dbf8985969b2..ede22650a387 100644 --- a/xen/drivers/cpufreq/utility.c +++ b/xen/drivers/cpufreq/utility.c @@ -368,7 +368,7 @@ int __cpufreq_driver_target(struct cpufreq_policy *poli= cy, retval =3D alternative_call(cpufreq_driver.target, policy, target_freq, relation); if ( retval =3D=3D 0 ) - TRACE_2D(TRC_PM_FREQ_CHANGE, prev_freq/1000, policy->cur/1000); + TRACE_TIME(TRC_PM_FREQ_CHANGE, prev_freq / 1000, policy->cur /= 1000); } =20 return retval; --=20 2.30.2 From nobody Tue May 21 19:54:03 2024 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=1710779791; cv=none; d=zohomail.com; s=zohoarc; b=H/b4bPBnKdOHlkBgX12OT/+6M6aXqSVrwkWkTu677jiQCgNltfMkFJJyNfQed3QtINctxKIer9yXMxrEoo0JFQYtAD0Iv7BuLxqUDwEMVY5cHSC3B/qMXGGOusSIWhDjH1DhZYtDHtzsXEBwlWOS99qfhPoKlhFRTl0VT6KCOkE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710779791; h=Content-Type: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=8vrAhsgU6cX18okKuYBRpNmDoptjsZfxbtY0fNi0S6I=; b=Lsrg5zCBppnPvojSHGDr+aLzGpDZCGU2/U243nmsijr7gQeIvNCAh9FTzALJOCCCjQ5k6fFhPvru8tPMc6URZPbo6RT6JHVyQuPomqlJaFEBUanF/u8OZ8HHJvCWZlrQV/Um82th+8phWbPO0mmOUbJN+Bdt/wEhXvAVCpZ/Vsk= 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 1710779791264585.5458504688308; Mon, 18 Mar 2024 09:36:31 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.694896.1084161 (Exim 4.92) (envelope-from ) id 1rmFy3-0006iC-6S; Mon, 18 Mar 2024 16:36:07 +0000 Received: by outflank-mailman (output) from mailman id 694896.1084161; Mon, 18 Mar 2024 16:36:07 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rmFy2-0006h4-Vg; Mon, 18 Mar 2024 16:36:06 +0000 Received: by outflank-mailman (input) for mailman id 694896; Mon, 18 Mar 2024 16:36:06 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rmFy2-0005JN-D3 for xen-devel@lists.xenproject.org; Mon, 18 Mar 2024 16:36:06 +0000 Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com [2a00:1450:4864:20::632]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 9ccc7f93-e545-11ee-a1ee-f123f15fe8a2; Mon, 18 Mar 2024 17:36:04 +0100 (CET) Received: by mail-ej1-x632.google.com with SMTP id a640c23a62f3a-a4675aaa2e8so530463766b.0 for ; Mon, 18 Mar 2024 09:36:04 -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.36.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Mar 2024 09:36:02 -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: 9ccc7f93-e545-11ee-a1ee-f123f15fe8a2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1710779763; x=1711384563; 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=8vrAhsgU6cX18okKuYBRpNmDoptjsZfxbtY0fNi0S6I=; b=YJE3oceJHQ3uKQr8hNkLSsp9XV7vs6q0l+zUv5atmkaQD6LWrlbbkbzsUW2+nIfvjj ZgcAdL3rOCbuIPBDvT9u2DsTcKFTh79Cnzg2PE27ybun/R5OSK14SCUjDwbBHLZTD5J0 DFhT0YcGwh86QrNf+vvgcqNM9QxFW1mUZ5SYA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710779763; x=1711384563; 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=8vrAhsgU6cX18okKuYBRpNmDoptjsZfxbtY0fNi0S6I=; b=YB6us06KbyjAz3gC3aHbiaOexuypMrDAKzqlkRwe9MOqwLHah5kySWAbpkkJMzh09G hNpLpGDTxfOUCEdX/8YXVRGgpor7wAokTvz3+JdH/HsA/L51s5hHcn9HhmVtwQkRsGVU iA+09iU24em6CjEgE6FT8WkLLSAT0PGQoN2Z32IpuVg2bFz0WHrSkbVeWpqUquX/PDeB bvGWu/99cwIYajWmKIP/FtMJu/o17U6lSq/qjNVmeDisgfM+sdj3tpPgqhaFLAY6wA8f CEggbO/faMGWXTKtNol7W3w2S353x7ZyKH+zI9rgY1017tPWq7aex3cGSwvwmbUx9+9k lvlw== X-Gm-Message-State: AOJu0YzC3sEH+DWvDKhRq7UtG0b4gPf1zdSF5cP62c04b9AfrY+z8L1H zoYHraJn9cG3fMZqBNwzJ6Vsd86XG4ki72Dg/hRiCE+4gSbc1BfhoeJtjs8FFE/MZyhLwE/tk8o R X-Google-Smtp-Source: AGHT+IEnk6AfX4SLXJGON1k0UkIeAvbg61kD28TZM+u99GXJOtoZvunt1o7QU0IrhGe8s4ngEuX9Tw== X-Received: by 2002:a17:906:6947:b0:a46:1e16:317c with SMTP id c7-20020a170906694700b00a461e16317cmr7955308ejs.55.1710779762757; Mon, 18 Mar 2024 09:36:02 -0700 (PDT) From: Andrew Cooper To: Xen-devel Cc: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , George Dunlap , Stefano Stabellini , Julien Grall , Nicola Vetrini , "consulting @ bugseng . com" Subject: [PATCH 6/7] xen/trace: Update final {__,}trace_var() users to the new API Date: Mon, 18 Mar 2024 16:35:51 +0000 Message-Id: <20240318163552.3808695-7-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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1710779792058100001 This logically drops the cycles parameter, as it's now encoded directly in = the event code. No functional change. Signed-off-by: Andrew Cooper Reviewed-by: George Dunlap Reviewed-by: Jan Beulich --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: George Dunlap CC: Stefano Stabellini CC: Julien Grall CC: Nicola Vetrini CC: consulting@bugseng.com v3: * New --- xen/arch/x86/hvm/emulate.c | 2 +- xen/arch/x86/hvm/hvm.c | 3 +-- xen/arch/x86/hvm/svm/svm.c | 2 +- xen/arch/x86/hvm/vmx/vmx.c | 2 +- xen/arch/x86/irq.c | 2 +- xen/arch/x86/mm/p2m-pod.c | 8 ++++---- xen/arch/x86/mm/p2m-pt.c | 2 +- xen/arch/x86/mm/shadow/common.c | 6 +++--- xen/arch/x86/mm/shadow/multi.c | 10 +++++----- xen/arch/x86/pv/trace.c | 21 +++++++++++---------- xen/common/memory.c | 2 +- xen/common/trace.c | 2 +- 12 files changed, 31 insertions(+), 31 deletions(-) diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c index d8f36206a712..a37525316c6e 100644 --- a/xen/arch/x86/hvm/emulate.c +++ b/xen/arch/x86/hvm/emulate.c @@ -67,7 +67,7 @@ static void hvmtrace_io_assist(const ioreq_t *p) size *=3D 2; } =20 - trace_var(event, 0/*!cycles*/, size, buffer); + trace(event, size, buffer); } =20 static int cf_check null_read( diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index e8af42eb499d..bb4eda4ecde2 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -5136,8 +5136,7 @@ long do_hvm_op(unsigned long op, XEN_GUEST_HANDLE_PAR= AM(void) arg) return -EINVAL; =20 /* Cycles will be taken at the vmexit and vmenter */ - trace_var(tr.event | TRC_GUEST, 0 /*!cycles*/, - tr.extra_bytes, tr.extra); + trace(tr.event | TRC_GUEST, tr.extra_bytes, tr.extra); break; } =20 diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index 09a79d761163..2d0c8762359f 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -1681,7 +1681,7 @@ static void svm_do_nested_pgfault(struct vcpu *v, _d.mfn =3D mfn_x(mfn); _d.p2mt =3D p2mt; =20 - __trace_var(TRC_HVM_NPF, 0, sizeof(_d), &_d); + trace(TRC_HVM_NPF, sizeof(_d), &_d); } =20 switch ( ret ) diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index ac73f58798ed..255c97f18162 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -3767,7 +3767,7 @@ static void ept_handle_violation(ept_qual_t q, paddr_= t gpa) _d.qualification =3D q.raw; _d.mfn =3D mfn_x(get_gfn_query_unlocked(d, gfn, &_d.p2mt)); =20 - __trace_var(TRC_HVM_NPF, 0, sizeof(_d), &_d); + trace(TRC_HVM_NPF, sizeof(_d), &_d); } =20 if ( q.gla_valid ) diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c index 2c1f858d3e64..45a74c6a0256 100644 --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -135,7 +135,7 @@ static void _trace_irq_mask(uint32_t event, int irq, in= t vector, =20 memcpy(d.mask, mask, min(sizeof(d.mask), BITS_TO_LONGS(nr_cpu_ids) * sizeof(long))); - trace_var(event, 1, sizeof(d), &d); + trace_time(event, sizeof(d), &d); } =20 static void trace_irq_mask(uint32_t event, int irq, int vector, diff --git a/xen/arch/x86/mm/p2m-pod.c b/xen/arch/x86/mm/p2m-pod.c index 65d31e552305..79a016682f1d 100644 --- a/xen/arch/x86/mm/p2m-pod.c +++ b/xen/arch/x86/mm/p2m-pod.c @@ -854,7 +854,7 @@ p2m_pod_zero_check_superpage(struct p2m_domain *p2m, gf= n_t gfn) t.d =3D d->domain_id; t.order =3D 9; =20 - __trace_var(TRC_MEM_POD_ZERO_RECLAIM, 0, sizeof(t), &t); + trace(TRC_MEM_POD_ZERO_RECLAIM, sizeof(t), &t); } =20 /* @@ -1022,7 +1022,7 @@ p2m_pod_zero_check(struct p2m_domain *p2m, const gfn_= t *gfns, unsigned int count t.d =3D d->domain_id; t.order =3D 0; =20 - __trace_var(TRC_MEM_POD_ZERO_RECLAIM, 0, sizeof(t), &t); + trace(TRC_MEM_POD_ZERO_RECLAIM, sizeof(t), &t); } =20 /* Add to cache, and account for the new p2m PoD entry */ @@ -1262,7 +1262,7 @@ p2m_pod_demand_populate(struct p2m_domain *p2m, gfn_t= gfn, t.d =3D d->domain_id; t.order =3D order; =20 - __trace_var(TRC_MEM_POD_POPULATE, 0, sizeof(t), &t); + trace(TRC_MEM_POD_POPULATE, sizeof(t), &t); } =20 pod_unlock_and_flush(p2m); @@ -1307,7 +1307,7 @@ p2m_pod_demand_populate(struct p2m_domain *p2m, gfn_t= gfn, t.d =3D d->domain_id; t.order =3D order; =20 - __trace_var(TRC_MEM_POD_SUPERPAGE_SPLINTER, 0, sizeof(t), &t); + trace(TRC_MEM_POD_SUPERPAGE_SPLINTER, sizeof(t), &t); } =20 return true; diff --git a/xen/arch/x86/mm/p2m-pt.c b/xen/arch/x86/mm/p2m-pt.c index 348130d0dd3b..666abd46be16 100644 --- a/xen/arch/x86/mm/p2m-pt.c +++ b/xen/arch/x86/mm/p2m-pt.c @@ -608,7 +608,7 @@ p2m_pt_set_entry(struct p2m_domain *p2m, gfn_t gfn_, mf= n_t mfn, t.d =3D d->domain_id; t.order =3D page_order; =20 - __trace_var(TRC_MEM_SET_P2M_ENTRY, 0, sizeof(t), &t); + trace(TRC_MEM_SET_P2M_ENTRY, sizeof(t), &t); } =20 /* Carry out any eventually pending earlier changes first. */ diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/commo= n.c index 8aa7b698f879..1303aec85918 100644 --- a/xen/arch/x86/mm/shadow/common.c +++ b/xen/arch/x86/mm/shadow/common.c @@ -433,7 +433,7 @@ static inline void trace_resync(int event, mfn_t gmfn) /* Convert gmfn to gfn */ gfn_t gfn =3D mfn_to_gfn(current->domain, gmfn); =20 - __trace_var(event, 0/*!tsc*/, sizeof(gfn), &gfn); + trace(event, sizeof(gfn), &gfn); } } =20 @@ -910,7 +910,7 @@ static inline void trace_shadow_prealloc_unpin(struct d= omain *d, mfn_t smfn) =20 ASSERT(mfn_valid(smfn)); gfn =3D mfn_to_gfn(d, backpointer(mfn_to_page(smfn))); - __trace_var(TRC_SHADOW_PREALLOC_UNPIN, 0/*!tsc*/, sizeof(gfn), &gf= n); + trace(TRC_SHADOW_PREALLOC_UNPIN, sizeof(gfn), &gfn); } } =20 @@ -1808,7 +1808,7 @@ static inline void trace_shadow_wrmap_bf(mfn_t gmfn) /* Convert gmfn to gfn */ gfn_t gfn =3D mfn_to_gfn(current->domain, gmfn); =20 - __trace_var(TRC_SHADOW_WRMAP_BF, 0/*!tsc*/, sizeof(gfn), &gfn); + trace(TRC_SHADOW_WRMAP_BF, sizeof(gfn), &gfn); } } =20 diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c index 90cf0ceaa367..bcd02b2d0037 100644 --- a/xen/arch/x86/mm/shadow/multi.c +++ b/xen/arch/x86/mm/shadow/multi.c @@ -1979,7 +1979,7 @@ static inline void trace_shadow_gen(u32 event, guest_= va_t va) if ( tb_init_done ) { event |=3D (GUEST_PAGING_LEVELS-2)<<8; - __trace_var(event, 0/*!tsc*/, sizeof(va), &va); + trace(event, sizeof(va), &va); } } =20 @@ -2003,7 +2003,7 @@ static inline void trace_shadow_fixup(guest_l1e_t gl1= e, d.va =3D va; d.flags =3D this_cpu(trace_shadow_path_flags); =20 - __trace_var(event, 0/*!tsc*/, sizeof(d), &d); + trace(event, sizeof(d), &d); } } =20 @@ -2027,7 +2027,7 @@ static inline void trace_not_shadow_fault(guest_l1e_t= gl1e, d.va =3D va; d.flags =3D this_cpu(trace_shadow_path_flags); =20 - __trace_var(event, 0/*!tsc*/, sizeof(d), &d); + trace(event, sizeof(d), &d); } } =20 @@ -2053,7 +2053,7 @@ static inline void trace_shadow_emulate_other(u32 eve= nt, d.gfn=3Dgfn_x(gfn); d.va =3D va; =20 - __trace_var(event, 0/*!tsc*/, sizeof(d), &d); + trace(event, sizeof(d), &d); } } =20 @@ -2106,7 +2106,7 @@ static inline void trace_shadow_emulate(guest_l1e_t g= l1e, unsigned long va) #endif d.flags =3D this_cpu(trace_shadow_path_flags); =20 - __trace_var(event, 0/*!tsc*/, sizeof(d), &d); + trace(event, sizeof(d), &d); } } #endif /* CONFIG_HVM */ diff --git a/xen/arch/x86/pv/trace.c b/xen/arch/x86/pv/trace.c index cf3897061e1f..70f426f2095c 100644 --- a/xen/arch/x86/pv/trace.c +++ b/xen/arch/x86/pv/trace.c @@ -19,7 +19,7 @@ void __trace_pv_trap(int trapnr, unsigned long eip, .error_code =3D error_code, }; =20 - __trace_var(TRC_PV_TRAP, 1, sizeof(d), &d); + trace_time(TRC_PV_TRAP, sizeof(d), &d); } else { @@ -35,7 +35,7 @@ void __trace_pv_trap(int trapnr, unsigned long eip, .error_code =3D error_code, }; =20 - __trace_var(TRC_PV_TRAP | TRC_64_FLAG, 1, sizeof(d), &d); + trace_time(TRC_PV_TRAP | TRC_64_FLAG, sizeof(d), &d); } } =20 @@ -53,7 +53,7 @@ void __trace_pv_page_fault(unsigned long addr, unsigned e= rror_code) .error_code =3D error_code, }; =20 - __trace_var(TRC_PV_PAGE_FAULT, 1, sizeof(d), &d); + trace_time(TRC_PV_PAGE_FAULT, sizeof(d), &d); } else { @@ -66,7 +66,7 @@ void __trace_pv_page_fault(unsigned long addr, unsigned e= rror_code) .error_code =3D error_code, }; =20 - __trace_var(TRC_PV_PAGE_FAULT | TRC_64_FLAG, 1, sizeof(d), &d); + trace_time(TRC_PV_PAGE_FAULT | TRC_64_FLAG, sizeof(d), &d); } } =20 @@ -75,10 +75,11 @@ void __trace_trap_one_addr(unsigned event, unsigned lon= g va) if ( is_pv_32bit_vcpu(current) ) { u32 d =3D va; - __trace_var(event, 1, sizeof(d), &d); + + trace_time(event, sizeof(d), &d); } else - __trace_var(event | TRC_64_FLAG, 1, sizeof(va), &va); + trace_time(event | TRC_64_FLAG, sizeof(va), &va); } =20 void __trace_trap_two_addr(unsigned event, unsigned long va1, @@ -93,7 +94,7 @@ void __trace_trap_two_addr(unsigned event, unsigned long = va1, .va2 =3D va2, }; =20 - __trace_var(event, 1, sizeof(d), &d); + trace_time(event, sizeof(d), &d); } else { @@ -104,7 +105,7 @@ void __trace_trap_two_addr(unsigned event, unsigned lon= g va1, .va2 =3D va2, }; =20 - __trace_var(event | TRC_64_FLAG, 1, sizeof(d), &d); + trace_time(event | TRC_64_FLAG, sizeof(d), &d); } } =20 @@ -123,7 +124,7 @@ void __trace_ptwr_emulation(unsigned long addr, l1_pgen= try_t npte) .eip =3D eip, }; =20 - __trace_var(TRC_PV_PTWR_EMULATION_PAE, 1, sizeof(d), &d); + trace_time(TRC_PV_PTWR_EMULATION_PAE, sizeof(d), &d); } else { @@ -136,6 +137,6 @@ void __trace_ptwr_emulation(unsigned long addr, l1_pgen= try_t npte) .rip =3D eip, }; =20 - __trace_var(TRC_PV_PTWR_EMULATION | TRC_64_FLAG, 1, sizeof(d), &d); + trace_time(TRC_PV_PTWR_EMULATION | TRC_64_FLAG, sizeof(d), &d); } } diff --git a/xen/common/memory.c b/xen/common/memory.c index b3b05c2ec090..3cecfdee9518 100644 --- a/xen/common/memory.c +++ b/xen/common/memory.c @@ -483,7 +483,7 @@ static void decrease_reservation(struct memop_args *a) t.d =3D a->domain->domain_id; t.order =3D a->extent_order; =20 - __trace_var(TRC_MEM_DECREASE_RESERVATION, 0, sizeof(t), &t); + trace(TRC_MEM_DECREASE_RESERVATION, sizeof(t), &t); } =20 /* See if populate-on-demand wants to handle this */ diff --git a/xen/common/trace.c b/xen/common/trace.c index c94ce1f7dc90..27c8a19f0549 100644 --- a/xen/common/trace.c +++ b/xen/common/trace.c @@ -868,7 +868,7 @@ void __trace_hypercall(uint32_t event, unsigned long op, break; } =20 - __trace_var(event, 1, sizeof(uint32_t) * (1 + (a - d.args)), &d); + trace_time(event, sizeof(uint32_t) * (1 + (a - d.args)), &d); } =20 /* --=20 2.30.2 From nobody Tue May 21 19:54:03 2024 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=1710779786; cv=none; d=zohomail.com; s=zohoarc; b=n7X/ackWjDVlQp4EmHoEhgWuUMCJm1WhzXyy7C+FfxV53cgM7ArcqWmQlF/xVGGPMQpkQBw++SMJbq9Y8y35nHnhHidNwNJ3oW2oolOAY/2Hm9jh4ndXVPG5d0TC5hN4R8ryY6Yro4FVwouiFXQmTgaW9LSm9T7LQfZW+ryyd60= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710779786; h=Content-Type: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=PINeZIOEWeXs0aAyqXBWjda/ShH0F0UcrolT6+Sh/5w=; b=Y8CwNTM0yltF0Nh4zN/Cl7M7lJVzB0089H6WmJCnMn6PUQPG+3Cd7vvMwlCMRiHrmeuaZKPCenQmlmHGPk0qQeH82VEgwmCfDKNGy2ktpw+m4WhBjtPAjxxjB0R/nuY2OttGyGwQ6z3YIegsw5PHAUm8lx7IozInWoi60O6107A= 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 1710779786193222.1543602081589; Mon, 18 Mar 2024 09:36:26 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.694897.1084173 (Exim 4.92) (envelope-from ) id 1rmFy4-000764-Ht; Mon, 18 Mar 2024 16:36:08 +0000 Received: by outflank-mailman (output) from mailman id 694897.1084173; Mon, 18 Mar 2024 16:36:08 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rmFy4-00074q-Be; Mon, 18 Mar 2024 16:36:08 +0000 Received: by outflank-mailman (input) for mailman id 694897; Mon, 18 Mar 2024 16:36:07 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rmFy3-0005JN-DY for xen-devel@lists.xenproject.org; Mon, 18 Mar 2024 16:36:07 +0000 Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com [2a00:1450:4864:20::630]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 9d9b2ef8-e545-11ee-a1ee-f123f15fe8a2; Mon, 18 Mar 2024 17:36:05 +0100 (CET) Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-a46cd9e7fcaso106121166b.1 for ; Mon, 18 Mar 2024 09:36:05 -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.36.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Mar 2024 09:36:03 -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: 9d9b2ef8-e545-11ee-a1ee-f123f15fe8a2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1710779764; x=1711384564; 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=PINeZIOEWeXs0aAyqXBWjda/ShH0F0UcrolT6+Sh/5w=; b=dEZS4AgTv8Z87yqX0To8RcxHntjxQEEMNGoDtmQN3WeHqQ/RNiDotfPwYL8EbHk74M OaTsjTQLuaHgZ+QDZVW8VvbcGb2f5gLSZ6GnQ1tIXyuFvmbMrDMoUgFXwr6mSZg4+urC Ntqoh+fcUqJaoC3HrrDVcDffzoMPdGP5la0oo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710779764; x=1711384564; 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=PINeZIOEWeXs0aAyqXBWjda/ShH0F0UcrolT6+Sh/5w=; b=sUDC6paG924YFMEaF/Rnke/4VFb2HBfjL0prwp5rtmEDRTFAHKmgeQBJgnEvBUSvD4 ccQiJdyh7G1cPXHFJZ492RpSe576lQ/PgBxRKTmViOqI38TyNejoFwe1JZvi/nqt4f4g 6zjhaMQ+awqbSUVVmbrQStG7X6QHnAl7BbB6QCZEpk4CfGO5YPfMXV2opq8r84nkf2dM BHi8xluUU7TfNo0KY19BJdDZSkOgER19Mx2MZ6SP9fsqg0Vh86iy/x/nnFNwsaq+xzKY 5ZahwT8ix/VgUI9YeR8KUmKeO9if082tRRvi2N0Py92P0eiPThl8AUsBqkD90XvEQ8Kr X7Vg== X-Gm-Message-State: AOJu0YzwuZ0jtuyjPc+tNzOBANun7cUDGEbSyNNWlH/tev+6spLkaTPc W0GB7Z+ozdqoHgpshi+OpMNEzOjbCY1zZeyZUlRJQowE7c7YCpPEC3VaZ48wRpn8vUsluDzL/V6 c X-Google-Smtp-Source: AGHT+IGP+9zN7xY7mThQWojYYbsKhTiU1tp+r4cl/2ev977sOFuznyozo9OoqQrM7KtJyUqm8N1VNw== X-Received: by 2002:a17:906:6a16:b0:a46:954a:aa14 with SMTP id qw22-20020a1709066a1600b00a46954aaa14mr6404141ejc.67.1710779764631; Mon, 18 Mar 2024 09:36:04 -0700 (PDT) From: Andrew Cooper To: Xen-devel Cc: Andrew Cooper , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , George Dunlap , Stefano Stabellini , Julien Grall , Nicola Vetrini , "consulting @ bugseng . com" Subject: [PATCH 7/7] xen/trace: Drop old trace API Date: Mon, 18 Mar 2024 16:35:52 +0000 Message-Id: <20240318163552.3808695-8-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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1710779787989100001 With all users updated to the new API, drop the old API. This includes all= of asm/hvm/trace.h, which allows us to drop some includes. Signed-off-by: Andrew Cooper Acked-by: Jan Beulich Reviewed-by: George Dunlap --- CC: Jan Beulich CC: Roger Pau Monn=C3=A9 CC: George Dunlap CC: Stefano Stabellini CC: Julien Grall CC: Nicola Vetrini CC: consulting@bugseng.com v2.1: * New v3: * Extend to drop __trace_var() too --- xen/arch/x86/hvm/emulate.c | 1 - xen/arch/x86/hvm/hpet.c | 1 - xen/arch/x86/hvm/hvm.c | 1 - xen/arch/x86/hvm/io.c | 1 - xen/arch/x86/hvm/svm/intr.c | 1 - xen/arch/x86/hvm/svm/svm.c | 1 - xen/arch/x86/hvm/vlapic.c | 1 - xen/arch/x86/hvm/vmx/intr.c | 1 - xen/arch/x86/hvm/vmx/vmx.c | 1 - xen/arch/x86/include/asm/hvm/trace.h | 114 ------------------------- xen/arch/x86/include/asm/hvm/vmx/vmx.h | 1 - xen/common/trace.c | 12 +-- xen/include/xen/trace.h | 47 ---------- 13 files changed, 3 insertions(+), 180 deletions(-) delete mode 100644 xen/arch/x86/include/asm/hvm/trace.h diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c index a37525316c6e..02e378365b40 100644 --- a/xen/arch/x86/hvm/emulate.c +++ b/xen/arch/x86/hvm/emulate.c @@ -22,7 +22,6 @@ #include #include #include -#include #include #include #include diff --git a/xen/arch/x86/hvm/hpet.c b/xen/arch/x86/hvm/hpet.c index 0356ade5957b..dd85e46d4001 100644 --- a/xen/arch/x86/hvm/hpet.c +++ b/xen/arch/x86/hvm/hpet.c @@ -8,7 +8,6 @@ #include #include #include -#include #include #include #include diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index bb4eda4ecde2..cedaf428b400 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -51,7 +51,6 @@ #include #include #include -#include #include #include #include diff --git a/xen/arch/x86/hvm/io.c b/xen/arch/x86/hvm/io.c index 06283b41c463..db726b38177b 100644 --- a/xen/arch/x86/hvm/io.c +++ b/xen/arch/x86/hvm/io.c @@ -28,7 +28,6 @@ #include #include #include -#include #include #include #include diff --git a/xen/arch/x86/hvm/svm/intr.c b/xen/arch/x86/hvm/svm/intr.c index dc684fdc843e..780c7e178a52 100644 --- a/xen/arch/x86/hvm/svm/intr.c +++ b/xen/arch/x86/hvm/svm/intr.c @@ -24,7 +24,6 @@ #include #include #include -#include =20 #include "nestedhvm.h" =20 diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index 2d0c8762359f..c94b83dc22f7 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -28,7 +28,6 @@ #include #include #include -#include #include #include #include diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c index 65e171d4751f..7a971470537e 100644 --- a/xen/arch/x86/hvm/vlapic.c +++ b/xen/arch/x86/hvm/vlapic.c @@ -27,7 +27,6 @@ #include #include #include -#include #include #include #include diff --git a/xen/arch/x86/hvm/vmx/intr.c b/xen/arch/x86/hvm/vmx/intr.c index d36498d83104..1a4dfb499bcd 100644 --- a/xen/arch/x86/hvm/vmx/intr.c +++ b/xen/arch/x86/hvm/vmx/intr.c @@ -24,7 +24,6 @@ #include #include #include -#include #include =20 /* diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index 255c97f18162..3fbbd44a6b45 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -37,7 +37,6 @@ #include #include #include -#include #include #include #include diff --git a/xen/arch/x86/include/asm/hvm/trace.h b/xen/arch/x86/include/as= m/hvm/trace.h deleted file mode 100644 index 22eadbdd4720..000000000000 --- a/xen/arch/x86/include/asm/hvm/trace.h +++ /dev/null @@ -1,114 +0,0 @@ -#ifndef __ASM_X86_HVM_TRACE_H__ -#define __ASM_X86_HVM_TRACE_H__ - -#include - -#define DEFAULT_HVM_TRACE_ON 1 -#define DEFAULT_HVM_TRACE_OFF 0 - -#define DEFAULT_HVM_VMSWITCH DEFAULT_HVM_TRACE_ON -#define DEFAULT_HVM_PF DEFAULT_HVM_TRACE_ON -#define DEFAULT_HVM_INJECT DEFAULT_HVM_TRACE_ON -#define DEFAULT_HVM_IO DEFAULT_HVM_TRACE_ON -#define DEFAULT_HVM_REGACCESS DEFAULT_HVM_TRACE_ON -#define DEFAULT_HVM_MISC DEFAULT_HVM_TRACE_ON -#define DEFAULT_HVM_INTR DEFAULT_HVM_TRACE_ON - -#define DO_TRC_HVM_VMENTRY DEFAULT_HVM_VMSWITCH -#define DO_TRC_HVM_VMEXIT DEFAULT_HVM_VMSWITCH -#define DO_TRC_HVM_VMEXIT64 DEFAULT_HVM_VMSWITCH -#define DO_TRC_HVM_PF_XEN DEFAULT_HVM_PF -#define DO_TRC_HVM_PF_XEN64 DEFAULT_HVM_PF -#define DO_TRC_HVM_PF_INJECT DEFAULT_HVM_PF -#define DO_TRC_HVM_PF_INJECT64 DEFAULT_HVM_PF -#define DO_TRC_HVM_INJ_EXC DEFAULT_HVM_INJECT -#define DO_TRC_HVM_INJ_VIRQ DEFAULT_HVM_INJECT -#define DO_TRC_HVM_REINJ_VIRQ DEFAULT_HVM_INJECT -#define DO_TRC_HVM_INTR_WINDOW DEFAULT_HVM_INJECT -#define DO_TRC_HVM_IO_READ DEFAULT_HVM_IO -#define DO_TRC_HVM_IO_WRITE DEFAULT_HVM_IO -#define DO_TRC_HVM_CR_READ DEFAULT_HVM_REGACCESS -#define DO_TRC_HVM_CR_READ64 DEFAULT_HVM_REGACCESS -#define DO_TRC_HVM_CR_WRITE DEFAULT_HVM_REGACCESS -#define DO_TRC_HVM_CR_WRITE64 DEFAULT_HVM_REGACCESS -#define DO_TRC_HVM_DR_READ DEFAULT_HVM_REGACCESS -#define DO_TRC_HVM_DR_WRITE DEFAULT_HVM_REGACCESS -#define DO_TRC_HVM_XCR_READ64 DEFAULT_HVM_REGACCESS -#define DO_TRC_HVM_XCR_WRITE64 DEFAULT_HVM_REGACCESS -#define DO_TRC_HVM_MSR_READ DEFAULT_HVM_REGACCESS -#define DO_TRC_HVM_MSR_WRITE DEFAULT_HVM_REGACCESS -#define DO_TRC_HVM_RDTSC DEFAULT_HVM_REGACCESS -#define DO_TRC_HVM_CPUID DEFAULT_HVM_MISC -#define DO_TRC_HVM_INTR DEFAULT_HVM_INTR -#define DO_TRC_HVM_NMI DEFAULT_HVM_INTR -#define DO_TRC_HVM_MCE DEFAULT_HVM_INTR -#define DO_TRC_HVM_SMI DEFAULT_HVM_INTR -#define DO_TRC_HVM_VMMCALL DEFAULT_HVM_MISC -#define DO_TRC_HVM_HLT DEFAULT_HVM_MISC -#define DO_TRC_HVM_INVLPG DEFAULT_HVM_MISC -#define DO_TRC_HVM_INVLPG64 DEFAULT_HVM_MISC -#define DO_TRC_HVM_IO_ASSIST DEFAULT_HVM_MISC -#define DO_TRC_HVM_MMIO_ASSIST DEFAULT_HVM_MISC -#define DO_TRC_HVM_CLTS DEFAULT_HVM_MISC -#define DO_TRC_HVM_LMSW DEFAULT_HVM_MISC -#define DO_TRC_HVM_LMSW64 DEFAULT_HVM_MISC -#define DO_TRC_HVM_REALMODE_EMULATE DEFAULT_HVM_MISC -#define DO_TRC_HVM_TRAP DEFAULT_HVM_MISC -#define DO_TRC_HVM_TRAP_DEBUG DEFAULT_HVM_MISC -#define DO_TRC_HVM_VLAPIC DEFAULT_HVM_MISC - - -#define TRC_PAR_LONG(par) ((uint32_t)(par)), ((par) >> 32) - -#define TRACE_2_LONG_2D(_e, d1, d2, ...) \ - TRACE_4D(_e, d1, d2) -#define TRACE_2_LONG_3D(_e, d1, d2, d3, ...) \ - TRACE_5D(_e, d1, d2, d3) -#define TRACE_2_LONG_4D(_e, d1, d2, d3, d4, ...) \ - TRACE_6D(_e, d1, d2, d3, d4) - -#define HVMTRACE_ND(evt, modifier, cycles, ...) \ - do { \ - if ( unlikely(tb_init_done) && DO_TRC_HVM_ ## evt ) \ - { \ - uint32_t _d[] =3D { __VA_ARGS__ }; = \ - __trace_var(TRC_HVM_ ## evt | (modifier), cycles, \ - sizeof(_d), sizeof(_d) ? _d : NULL); \ - } \ - } while(0) - -#define HVMTRACE_6D(evt, d1, d2, d3, d4, d5, d6) \ - HVMTRACE_ND(evt, 0, 0, d1, d2, d3, d4, d5, d6) -#define HVMTRACE_5D(evt, d1, d2, d3, d4, d5) \ - HVMTRACE_ND(evt, 0, 0, d1, d2, d3, d4, d5) -#define HVMTRACE_4D(evt, d1, d2, d3, d4) \ - HVMTRACE_ND(evt, 0, 0, d1, d2, d3, d4) -#define HVMTRACE_3D(evt, d1, d2, d3) \ - HVMTRACE_ND(evt, 0, 0, d1, d2, d3) -#define HVMTRACE_2D(evt, d1, d2) \ - HVMTRACE_ND(evt, 0, 0, d1, d2) -#define HVMTRACE_1D(evt, d1) \ - HVMTRACE_ND(evt, 0, 0, d1) -#define HVMTRACE_0D(evt) \ - HVMTRACE_ND(evt, 0, 0) - -#define HVMTRACE_LONG_1D(evt, d1) \ - HVMTRACE_2D(evt ## 64, (uint32_t)(d1), (d1) >> 32) -#define HVMTRACE_LONG_2D(evt, d1, d2, ...) \ - HVMTRACE_3D(evt ## 64, d1, d2) -#define HVMTRACE_LONG_3D(evt, d1, d2, d3, ...) \ - HVMTRACE_4D(evt ## 64, d1, d2, d3) -#define HVMTRACE_LONG_4D(evt, d1, d2, d3, d4, ...) \ - HVMTRACE_5D(evt ## 64, d1, d2, d3, d4) - -#endif /* __ASM_X86_HVM_TRACE_H__ */ - -/* - * Local variables: - * mode: C - * c-file-style: "BSD" - * c-basic-offset: 4 - * tab-width: 4 - * indent-tabs-mode: nil - * End: - */ diff --git a/xen/arch/x86/include/asm/hvm/vmx/vmx.h b/xen/arch/x86/include/= asm/hvm/vmx/vmx.h index 8ffab7d94c26..1489dd05c2a1 100644 --- a/xen/arch/x86/include/asm/hvm/vmx/vmx.h +++ b/xen/arch/x86/include/asm/hvm/vmx/vmx.h @@ -15,7 +15,6 @@ #include #include #include -#include #include =20 extern int8_t opt_ept_exec_sp; diff --git a/xen/common/trace.c b/xen/common/trace.c index 27c8a19f0549..c9c555094bf7 100644 --- a/xen/common/trace.c +++ b/xen/common/trace.c @@ -666,22 +666,21 @@ static DECLARE_SOFTIRQ_TASKLET(trace_notify_dom0_task= let, trace_notify_dom0, NULL); =20 /** - * __trace_var - Enters a trace tuple into the trace buffer for the curren= t CPU. + * trace - Enters a trace tuple into the trace buffer for the current CPU. * @event: the event type being logged - * @cycles: include tsc timestamp into trace record * @extra: size of additional trace data in bytes * @extra_data: pointer to additional trace data * * Logs a trace record into the appropriate buffer. */ -void __trace_var(u32 event, bool cycles, unsigned int extra, - const void *extra_data) +void trace(uint32_t event, unsigned int extra, const void *extra_data) { struct t_buf *buf; unsigned long flags; u32 bytes_to_tail, bytes_to_wrap; unsigned int rec_size, total_size; bool started_below_highwater; + bool cycles =3D event & TRC_HD_CYCLE_FLAG; =20 if( !tb_init_done ) return; @@ -808,11 +807,6 @@ void __trace_var(u32 event, bool cycles, unsigned int = extra, tasklet_schedule(&trace_notify_dom0_tasklet); } =20 -void trace(uint32_t event, unsigned int extra, const void *extra_data) -{ - __trace_var(event, event & TRC_HD_CYCLE_FLAG, extra, extra_data); -} - void __trace_hypercall(uint32_t event, unsigned long op, const xen_ulong_t *args) { diff --git a/xen/include/xen/trace.h b/xen/include/xen/trace.h index f184844e1b55..b39a286d2a8e 100644 --- a/xen/include/xen/trace.h +++ b/xen/include/xen/trace.h @@ -40,15 +40,6 @@ int trace_will_trace_event(u32 event); /* Create a trace record, with pre-constructed additional parameters. */ void trace(uint32_t event, unsigned int extra, const void *extra_data); =20 -void __trace_var(uint32_t event, bool cycles, unsigned int extra, const vo= id *); - -static inline void trace_var(uint32_t event, bool cycles, unsigned int ext= ra, - const void *extra_data) -{ - if ( unlikely(tb_init_done) ) - __trace_var(event, cycles, extra, extra_data); -} - void __trace_hypercall(uint32_t event, unsigned long op, const xen_ulong_t *args); =20 @@ -72,10 +63,6 @@ static inline int trace_will_trace_event(uint32_t event) static inline void trace( uint32_t event, unsigned int extra, const void *extra_data) {} =20 -static inline void trace_var(uint32_t event, bool cycles, unsigned int ext= ra, - const void *extra_data) {} -static inline void __trace_var(uint32_t event, bool cycles, unsigned int e= xtra, - const void *extra_data) {} static inline void __trace_hypercall(uint32_t event, unsigned long op, const xen_ulong_t *args) {} #endif /* CONFIG_TRACEBUFFER */ @@ -104,38 +91,4 @@ static inline void trace_time( /* Create a trace record with time included. */ #define TRACE_TIME(_e, ...) TRACE((_e) | TRC_HD_CYCLE_FLAG, ##__VA_ARGS__) =20 -/* Convenience macros for calling the trace function. */ -#define TRACE_0D(_e) \ - do { \ - trace_var(_e, 1, 0, NULL); \ - } while ( 0 ) - -/* Common helper for TRACE_{1..6}D() below. */ -#define TRACE_varD(_e, ...) \ - do { \ - if ( unlikely(tb_init_done) ) \ - { \ - uint32_t _d[] =3D { __VA_ARGS__ }; \ - __trace_var(_e, true, sizeof(_d), _d); \ - } \ - } while ( 0 ) - -#define TRACE_1D(_e, d1) \ - TRACE_varD(_e, d1) - -#define TRACE_2D(_e, d1, d2) \ - TRACE_varD(_e, d1, d2) - -#define TRACE_3D(_e, d1, d2, d3) \ - TRACE_varD(_e, d1, d2, d3) - -#define TRACE_4D(_e, d1, d2, d3, d4) \ - TRACE_varD(_e, d1, d2, d3, d4) - -#define TRACE_5D(_e, d1, d2, d3, d4, d5) \ - TRACE_varD(_e, d1, d2, d3, d4, d5) - -#define TRACE_6D(_e, d1, d2, d3, d4, d5, d6) \ - TRACE_varD(_e, d1, d2, d3, d4, d5, d6) - #endif /* __XEN_TRACE_H__ */ --=20 2.30.2