Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp6443406rwr; Tue, 9 May 2023 15:37:01 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7B9rH5NskGB+fTI5dVDfnUIAAmnAmAWegFyYMtU6mR3xeWwt7tRZiTBWhzf4gGXJSLCmpl X-Received: by 2002:a05:6a00:1954:b0:645:4a3d:a14f with SMTP id s20-20020a056a00195400b006454a3da14fmr14047768pfk.29.1683671821014; Tue, 09 May 2023 15:37:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683671821; cv=none; d=google.com; s=arc-20160816; b=d6Cwp9Y0R2pyfFugJyv3+AasaJSo11xVY3PpF3kao29Si/lTGboR9vP8wfhvBSwzAj tfhPbLAH2pDA9Vg0NULFYEJ4DTJRFI2mQbapH23ZwSPYPOOlkxtojN950SbjmOeLvg5/ YR4Igrk1wybRao1oe0aplxmozRN9zl/PmIoxeJjSpuxd7lH50DCJZaxo7oWVWkiDkjts 8mp40FXuHqdADsUnv97YtM4ax2n8yQj4h6gsyRqnMTSu36JdQ3DrLAXMk6LdlSEkyDy+ Cjm6PTwf37BLVR7Rm4gcsJuSy0ishTP3bL9ARl0xdrj2w8KsqwpYfcau46wS+HnlnXX+ 9n0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=GTxEjbmdkfc8o/qkvStUX5STAg54FZeQlWLzywfFbHc=; b=S6YvJxgpMej5F+Gnbb5y9yyW7ckpDVIU65rh0nCModcqeL9IFT8gu+KDPR3G4fur+6 bogRP9VAjrYkijYsOFuoEfuiLxAlmlv8pKv77emIZBVtUl1LyXBQswFiF1LejW+8/vNj iLhaOwARXbLeDlBhRRyMPjxIp1lTSqjV6UlJ97W4BpZqJjPcF7YowJq6vWD608xTAK8n lHSgy3ooPoJd0MZRMSrwKe07bf1AaWeavRxNwmaJWDhmXAIfilfnRxGE6izfS3jeEy08 RJWZPC0TUaoLF3RzPW60HNMvQZHHEFh588n1Jl8k7a+nr+w9qpKdMVQJS0xBk2J77N8W j/GQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=RFurPuMG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h14-20020aa79f4e000000b0063d2c3e897bsi3417728pfr.202.2023.05.09.15.36.47; Tue, 09 May 2023 15:37:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=RFurPuMG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235735AbjEIWbw (ORCPT + 99 others); Tue, 9 May 2023 18:31:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33046 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231467AbjEIWbv (ORCPT ); Tue, 9 May 2023 18:31:51 -0400 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 639BE10F7; Tue, 9 May 2023 15:31:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1683671507; x=1715207507; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=1R2Gg6wlaBtXe+4zx8PrBpi9i8hSxKDH4nvvTPsLK2E=; b=RFurPuMGXS6KGqG2LxYWQzmrO4vLHIPV7BLP9GZ8HodizhjSwVXCtPob YjbkyAdsEtczC9JWeB+A5NNnN0ReIVM5chBaFa9CM0zpwv7gg98SGP1px HJo1x50zNlVpeFDEySw/UadnTztIJ9lwcBl25alyIiD957s3EuyhEL6Mh ltY2eVlOp+YU8y7frSWq0j8qRUvHK/H4Rqk7lEdOQZPQhAmNNV4U6qa7w i1Wzn37T4HUHVrquzV8ZJu6VxNyuRFFjKUedi72N4ntH1AMYMV/uE66b/ F4JG3OMmw0U2WoRyEMGsSknG4vVGgNPEoDs4hBP4QVBBidC2PKtlelR/u A==; X-IronPort-AV: E=McAfee;i="6600,9927,10705"; a="330430580" X-IronPort-AV: E=Sophos;i="5.99,263,1677571200"; d="scan'208";a="330430580" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 May 2023 15:31:44 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10705"; a="649520053" X-IronPort-AV: E=Sophos;i="5.99,263,1677571200"; d="scan'208";a="649520053" Received: from dcovax-mobl.amr.corp.intel.com (HELO [10.212.97.226]) ([10.212.97.226]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 May 2023 15:31:43 -0700 Message-ID: <7d35c9f2-9070-32d0-2ddc-ff6b0a8b5c26@intel.com> Date: Tue, 9 May 2023 15:31:43 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0 Thunderbird/102.10.0 Subject: Re: [PATCH v7 8/8] cxl/test: Simulate event log overflow Content-Language: en-US To: Ira Weiny , Dan Williams Cc: Bjorn Helgaas , Alison Schofield , Vishal Verma , Davidlohr Bueso , Jonathan Cameron , Ben Widawsky , Steven Rostedt , linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org, linux-cxl@vger.kernel.org References: <20221216-cxl-ev-log-v7-0-2316a5c8f7d8@intel.com> <20221216-cxl-ev-log-v7-8-2316a5c8f7d8@intel.com> From: Dave Jiang In-Reply-To: <20221216-cxl-ev-log-v7-8-2316a5c8f7d8@intel.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-4.8 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A, RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 1/17/23 10:53 PM, Ira Weiny wrote: > Log overflow is marked by a separate trace message. > > Simulate a log with lots of messages and flag overflow until space is > cleared. > > Reviewed-by: Dan Williams > Reviewed-by: Jonathan Cameron > Signed-off-by: Ira Weiny Reviewed-by: Dave Jiang > > --- > Changes in v7: > > --- > tools/testing/cxl/test/mem.c | 50 +++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 49 insertions(+), 1 deletion(-) > > diff --git a/tools/testing/cxl/test/mem.c b/tools/testing/cxl/test/mem.c > index 00bf19a68604..9263b04d35f7 100644 > --- a/tools/testing/cxl/test/mem.c > +++ b/tools/testing/cxl/test/mem.c > @@ -78,6 +78,8 @@ struct mock_event_log { > u16 clear_idx; > u16 cur_idx; > u16 nr_events; > + u16 nr_overflow; > + u16 overflow_reset; > struct cxl_event_record_raw *events[CXL_TEST_EVENT_CNT_MAX]; > }; > > @@ -116,6 +118,7 @@ static void event_reset_log(struct mock_event_log *log) > { > log->cur_idx = 0; > log->clear_idx = 0; > + log->nr_overflow = log->overflow_reset; > } > > /* Handle can never be 0 use 1 based indexing for handle */ > @@ -147,8 +150,12 @@ static void mes_add_event(struct mock_event_store *mes, > return; > > log = &mes->mock_logs[log_type]; > - if (WARN_ON(log->nr_events >= CXL_TEST_EVENT_CNT_MAX)) > + > + if ((log->nr_events + 1) > CXL_TEST_EVENT_CNT_MAX) { > + log->nr_overflow++; > + log->overflow_reset = log->nr_overflow; > return; > + } > > log->events[log->nr_events] = event; > log->nr_events++; > @@ -159,6 +166,7 @@ static int mock_get_event(struct cxl_dev_state *cxlds, > { > struct cxl_get_event_payload *pl; > struct mock_event_log *log; > + u16 nr_overflow; > u8 log_type; > int i; > > @@ -191,6 +199,19 @@ static int mock_get_event(struct cxl_dev_state *cxlds, > if (!event_log_empty(log)) > pl->flags |= CXL_GET_EVENT_FLAG_MORE_RECORDS; > > + if (log->nr_overflow) { > + u64 ns; > + > + pl->flags |= CXL_GET_EVENT_FLAG_OVERFLOW; > + pl->overflow_err_count = cpu_to_le16(nr_overflow); > + ns = ktime_get_real_ns(); > + ns -= 5000000000; /* 5s ago */ > + pl->first_overflow_timestamp = cpu_to_le64(ns); > + ns = ktime_get_real_ns(); > + ns -= 1000000000; /* 1s ago */ > + pl->last_overflow_timestamp = cpu_to_le64(ns); > + } > + > return 0; > } > > @@ -231,6 +252,9 @@ static int mock_clear_event(struct cxl_dev_state *cxlds, > } > } > > + if (log->nr_overflow) > + log->nr_overflow = 0; > + > /* Clear events */ > log->clear_idx += pl->nr_recs; > return 0; > @@ -353,6 +377,30 @@ static void cxl_mock_add_event_logs(struct mock_event_store *mes) > (struct cxl_event_record_raw *)&mem_module); > mes->ev_status |= CXLDEV_EVENT_STATUS_INFO; > > + mes_add_event(mes, CXL_EVENT_TYPE_FAIL, &maint_needed); > + mes_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + mes_add_event(mes, CXL_EVENT_TYPE_FAIL, > + (struct cxl_event_record_raw *)&dram); > + mes_add_event(mes, CXL_EVENT_TYPE_FAIL, > + (struct cxl_event_record_raw *)&gen_media); > + mes_add_event(mes, CXL_EVENT_TYPE_FAIL, > + (struct cxl_event_record_raw *)&mem_module); > + mes_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + mes_add_event(mes, CXL_EVENT_TYPE_FAIL, > + (struct cxl_event_record_raw *)&dram); > + /* Overflow this log */ > + mes_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + mes_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + mes_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + mes_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + mes_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + mes_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + mes_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + mes_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + mes_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + mes_add_event(mes, CXL_EVENT_TYPE_FAIL, &hardware_replace); > + mes->ev_status |= CXLDEV_EVENT_STATUS_FAIL; > + > mes_add_event(mes, CXL_EVENT_TYPE_FATAL, &hardware_replace); > mes_add_event(mes, CXL_EVENT_TYPE_FATAL, > (struct cxl_event_record_raw *)&dram); >