Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp3965117pxb; Mon, 8 Feb 2021 04:52:37 -0800 (PST) X-Google-Smtp-Source: ABdhPJzivsZQdE0Gg6ytFhZHbqC6nXlQUSD7K7YmWiGPdm/NICOvB5Xdb77b/JJ5Ey5Q3Wac7u8m X-Received: by 2002:aa7:d6d4:: with SMTP id x20mr17396155edr.8.1612788757132; Mon, 08 Feb 2021 04:52:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612788757; cv=none; d=google.com; s=arc-20160816; b=l3zyJH2hHwdpknhXRrbsZeKK5bfQ+Rxy9t1nZy+ZSJhDUeasCWelEx2IETxZBQ+knN nNB/ttJAUdZcg9KRn2gcqMGdJjOSFyiBh6+OD5US7Nn/udyqNNfy/G+K4sLVJVQ/TVLt q5lnVHhBj78gbxbPKO22p9Tcb7fMa4sGjkkJDGijJJGzfu1GFuk552FeeB8mzK8xwSnt M+1h8jtoUujco6piN12cdSnI1WWJbJYnvJZjGj31hor+Sj77FHnTQsAzOIdkEr9EMBVN F+mYZVIaZOEg6vljEdJoOlvdCvOss/MWm0A+LOOS/PUI7/jSrRdgqU7GRRxZfJ76YmoL pDBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:subject:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:cc:to:from; bh=EyTITLMjV3I3fAMULJEP7folUdqtZWYB5lL/25ZOZ5k=; b=nEw3cRRV8lE5ndVco+ECex6p+MJN4lnEjqTNig2FMa4A424czbaUvgeshyIYmM074i Ft3rDM71AuJ7VtuwJb9KxmUGuU/+bJj2GU7LJsAcWv5zM3ahk15Jykyb/wuFV3INV/Oe 1iBpcwe3Zj4JQ/yMmqBVEAZXqpAt19wHCwKGmBAKsluLbV/MndOju8dYpyE1M1HxBAhC iYpz0OnIAuVX7uih9I2t2s7L0FYb2qNCFASRqr2AhnHuTG89BZXHsmGXsCvYe4u4XjZx ZeHSAg1/LFo2ycgo4W7jTE9KGMEFsBfZKAc9AF7iNR0JtvzykePMjAb4MOwVg5PtwvZY 1Zxg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 22si10363203ejc.181.2021.02.08.04.52.14; Mon, 08 Feb 2021 04:52:37 -0800 (PST) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230249AbhBHMt4 (ORCPT + 99 others); Mon, 8 Feb 2021 07:49:56 -0500 Received: from paleale.coelho.fi ([176.9.41.70]:44450 "EHLO farmhouse.coelho.fi" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S230074AbhBHMtq (ORCPT ); Mon, 8 Feb 2021 07:49:46 -0500 Received: from 91-156-6-193.elisa-laajakaista.fi ([91.156.6.193] helo=redipa.ger.corp.intel.com) by farmhouse.coelho.fi with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.93) (envelope-from ) id 1l95yC-0047PC-T1; Mon, 08 Feb 2021 14:48:49 +0200 From: Luca Coelho To: kvalo@codeaurora.org Cc: linux-wireless@vger.kernel.org Date: Mon, 8 Feb 2021 14:48:36 +0200 Message-Id: X-Mailer: git-send-email 2.30.0 In-Reply-To: <20210208124847.1934441-1-luca@coelho.fi> References: <20210208124847.1934441-1-luca@coelho.fi> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on farmhouse.coelho.fi X-Spam-Level: X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00, TVD_RCVD_IP autolearn=ham autolearn_force=no version=3.4.4 Subject: [PATCH 01/12] iwlwifi: dbg: remove unsupported regions Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org From: Mordechay Goodstein In case user requested to register an unsupported regions, remove it from active list and trigger list, this saves operational driver memory and run time at collecting debug data. Signed-off-by: Mordechay Goodstein Signed-off-by: Luca Coelho --- drivers/net/wireless/intel/iwlwifi/fw/dbg.c | 6 ++-- .../net/wireless/intel/iwlwifi/iwl-dbg-tlv.c | 36 ++++++++++++++++++- .../net/wireless/intel/iwlwifi/iwl-trans.h | 1 + 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c index 1fdf80f154da..e87329265876 100644 --- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c +++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c @@ -2073,7 +2073,8 @@ static u32 iwl_dump_ini_info(struct iwl_fw_runtime *fwrt, dump->umac_minor = cpu_to_le32(fwrt->dump.fw_ver.umac_minor); dump->fw_mon_mode = cpu_to_le32(fwrt->trans->dbg.ini_dest); - dump->regions_mask = trigger->regions_mask; + dump->regions_mask = trigger->regions_mask & + ~cpu_to_le64(fwrt->trans->dbg.unsupported_region_msk); dump->build_tag_len = cpu_to_le32(sizeof(dump->build_tag)); memcpy(dump->build_tag, fwrt->fw->human_readable, @@ -2202,7 +2203,8 @@ static u32 iwl_dump_ini_trigger(struct iwl_fw_runtime *fwrt, }; int i; u32 size = 0; - u64 regions_mask = le64_to_cpu(trigger->regions_mask); + u64 regions_mask = le64_to_cpu(trigger->regions_mask) & + ~(fwrt->trans->dbg.unsupported_region_msk); BUILD_BUG_ON(sizeof(trigger->regions_mask) != sizeof(regions_mask)); BUILD_BUG_ON((sizeof(trigger->regions_mask) * BITS_PER_BYTE) < diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c b/drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c index a654147d3cd6..147a375b8ab8 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c +++ b/drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c @@ -964,6 +964,7 @@ static void iwl_dbg_tlv_init_cfg(struct iwl_fw_runtime *fwrt) { enum iwl_fw_ini_buffer_location *ini_dest = &fwrt->trans->dbg.ini_dest; int ret, i; + u32 failed_alloc = 0; if (*ini_dest != IWL_FW_INI_LOCATION_INVALID) return; @@ -995,10 +996,43 @@ static void iwl_dbg_tlv_init_cfg(struct iwl_fw_runtime *fwrt) continue; ret = iwl_dbg_tlv_alloc_fragments(fwrt, i); - if (ret) + + if (ret) { IWL_WARN(fwrt, "WRT: Failed to allocate DRAM buffer for allocation id %d, ret=%d\n", i, ret); + failed_alloc |= BIT(i); + } + } + + if (!failed_alloc) + return; + + for (i = 0; i < ARRAY_SIZE(fwrt->trans->dbg.active_regions) && failed_alloc; i++) { + struct iwl_fw_ini_region_tlv *reg; + struct iwl_ucode_tlv **active_reg = + &fwrt->trans->dbg.active_regions[i]; + u32 reg_type; + + if (!*active_reg) + continue; + + reg = (void *)(*active_reg)->data; + reg_type = le32_to_cpu(reg->type); + + if (reg_type != IWL_FW_INI_REGION_DRAM_BUFFER || + !(BIT(le32_to_cpu(reg->dram_alloc_id)) & failed_alloc)) + continue; + + IWL_DEBUG_FW(fwrt, + "WRT: removing allocation id %d from region id %d\n", + le32_to_cpu(reg->dram_alloc_id), i); + + failed_alloc &= ~le32_to_cpu(reg->dram_alloc_id); + fwrt->trans->dbg.unsupported_region_msk |= BIT(i); + + kfree(*active_reg); + *active_reg = NULL; } } diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h index 3348d582a46c..70caee03bd1b 100644 --- a/drivers/net/wireless/intel/iwlwifi/iwl-trans.h +++ b/drivers/net/wireless/intel/iwlwifi/iwl-trans.h @@ -746,6 +746,7 @@ struct iwl_trans_debug { bool hw_error; enum iwl_fw_ini_buffer_location ini_dest; + u64 unsupported_region_msk; struct iwl_ucode_tlv *active_regions[IWL_FW_INI_MAX_REGION_ID]; struct list_head debug_info_tlv_list; struct iwl_dbg_tlv_time_point_data -- 2.30.0