From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: drivers/platform/x86/intel/pmc/core_ssram.c:141 pmc_core_get_lpm_req() error: uninitialized symbol 'ret'.
Date: Tue, 10 Dec 2024 12:49:43 +0800 [thread overview]
Message-ID: <202412101220.ykvYEG6c-lkp@intel.com> (raw)
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Xi Pardee <xi.pardee@intel.com>
CC: Hans de Goede <hdegoede@redhat.com>
CC: "David E. Box" <david.e.box@linux.intel.com>
CC: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 7cb1b466315004af98f6ba6c2546bb713ca3c237
commit: 4d621c3f02ba71cb8ed48b7c32ecb0910000cc28 platform/x86/intel/pmc: Retrieve LPM information using Intel PMT
date: 1 year ago
:::::: branch date: 10 hours ago
:::::: commit date: 1 year ago
config: x86_64-randconfig-r073-20241208 (https://download.01.org/0day-ci/archive/20241210/202412101220.ykvYEG6c-lkp@intel.com/config)
compiler: clang version 19.1.3 (https://github.com/llvm/llvm-project ab51eccf88f5321e7c60591c5546b254b6afab99)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202412101220.ykvYEG6c-lkp@intel.com/
smatch warnings:
drivers/platform/x86/intel/pmc/core_ssram.c:141 pmc_core_get_lpm_req() error: uninitialized symbol 'ret'.
vim +/ret +141 drivers/platform/x86/intel/pmc/core_ssram.c
4d621c3f02ba71 Xi Pardee 2023-11-29 42
4d621c3f02ba71 Xi Pardee 2023-11-29 43 static int pmc_core_get_lpm_req(struct pmc_dev *pmcdev, struct pmc *pmc)
4d621c3f02ba71 Xi Pardee 2023-11-29 44 {
4d621c3f02ba71 Xi Pardee 2023-11-29 45 struct telem_endpoint *ep;
4d621c3f02ba71 Xi Pardee 2023-11-29 46 const u8 *lpm_indices;
4d621c3f02ba71 Xi Pardee 2023-11-29 47 int num_maps, mode_offset = 0;
4d621c3f02ba71 Xi Pardee 2023-11-29 48 int ret, mode, i;
4d621c3f02ba71 Xi Pardee 2023-11-29 49 int lpm_size;
4d621c3f02ba71 Xi Pardee 2023-11-29 50 u32 guid;
4d621c3f02ba71 Xi Pardee 2023-11-29 51
4d621c3f02ba71 Xi Pardee 2023-11-29 52 lpm_indices = pmc->map->lpm_reg_index;
4d621c3f02ba71 Xi Pardee 2023-11-29 53 num_maps = pmc->map->lpm_num_maps;
4d621c3f02ba71 Xi Pardee 2023-11-29 54 lpm_size = LPM_MAX_NUM_MODES * num_maps;
4d621c3f02ba71 Xi Pardee 2023-11-29 55
4d621c3f02ba71 Xi Pardee 2023-11-29 56 guid = pmc_core_find_guid(pmcdev->regmap_list, pmc->map);
4d621c3f02ba71 Xi Pardee 2023-11-29 57 if (!guid)
4d621c3f02ba71 Xi Pardee 2023-11-29 58 return -ENXIO;
4d621c3f02ba71 Xi Pardee 2023-11-29 59
4d621c3f02ba71 Xi Pardee 2023-11-29 60 ep = pmt_telem_find_and_register_endpoint(pmcdev->ssram_pcidev, guid, 0);
4d621c3f02ba71 Xi Pardee 2023-11-29 61 if (IS_ERR(ep)) {
4d621c3f02ba71 Xi Pardee 2023-11-29 62 dev_dbg(&pmcdev->pdev->dev, "couldn't get telem endpoint %ld",
4d621c3f02ba71 Xi Pardee 2023-11-29 63 PTR_ERR(ep));
4d621c3f02ba71 Xi Pardee 2023-11-29 64 return -EPROBE_DEFER;
4d621c3f02ba71 Xi Pardee 2023-11-29 65 }
4d621c3f02ba71 Xi Pardee 2023-11-29 66
4d621c3f02ba71 Xi Pardee 2023-11-29 67 pmc->lpm_req_regs = devm_kzalloc(&pmcdev->pdev->dev,
4d621c3f02ba71 Xi Pardee 2023-11-29 68 lpm_size * sizeof(u32),
4d621c3f02ba71 Xi Pardee 2023-11-29 69 GFP_KERNEL);
4d621c3f02ba71 Xi Pardee 2023-11-29 70 if (!pmc->lpm_req_regs) {
4d621c3f02ba71 Xi Pardee 2023-11-29 71 ret = -ENOMEM;
4d621c3f02ba71 Xi Pardee 2023-11-29 72 goto unregister_ep;
4d621c3f02ba71 Xi Pardee 2023-11-29 73 }
4d621c3f02ba71 Xi Pardee 2023-11-29 74
4d621c3f02ba71 Xi Pardee 2023-11-29 75 /*
4d621c3f02ba71 Xi Pardee 2023-11-29 76 * PMC Low Power Mode (LPM) table
4d621c3f02ba71 Xi Pardee 2023-11-29 77 *
4d621c3f02ba71 Xi Pardee 2023-11-29 78 * In telemetry space, the LPM table contains a 4 byte header followed
4d621c3f02ba71 Xi Pardee 2023-11-29 79 * by 8 consecutive mode blocks (one for each LPM mode). Each block
4d621c3f02ba71 Xi Pardee 2023-11-29 80 * has a 4 byte header followed by a set of registers that describe the
4d621c3f02ba71 Xi Pardee 2023-11-29 81 * IP state requirements for the given mode. The IP mapping is platform
4d621c3f02ba71 Xi Pardee 2023-11-29 82 * specific but the same for each block, making for easy analysis.
4d621c3f02ba71 Xi Pardee 2023-11-29 83 * Platforms only use a subset of the space to track the requirements
4d621c3f02ba71 Xi Pardee 2023-11-29 84 * for their IPs. Callers provide the requirement registers they use as
4d621c3f02ba71 Xi Pardee 2023-11-29 85 * a list of indices. Each requirement register is associated with an
4d621c3f02ba71 Xi Pardee 2023-11-29 86 * IP map that's maintained by the caller.
4d621c3f02ba71 Xi Pardee 2023-11-29 87 *
4d621c3f02ba71 Xi Pardee 2023-11-29 88 * Header
4d621c3f02ba71 Xi Pardee 2023-11-29 89 * +----+----------------------------+----------------------------+
4d621c3f02ba71 Xi Pardee 2023-11-29 90 * | 0 | REVISION | ENABLED MODES |
4d621c3f02ba71 Xi Pardee 2023-11-29 91 * +----+--------------+-------------+-------------+--------------+
4d621c3f02ba71 Xi Pardee 2023-11-29 92 *
4d621c3f02ba71 Xi Pardee 2023-11-29 93 * Low Power Mode 0 Block
4d621c3f02ba71 Xi Pardee 2023-11-29 94 * +----+--------------+-------------+-------------+--------------+
4d621c3f02ba71 Xi Pardee 2023-11-29 95 * | 1 | SUB ID | SIZE | MAJOR | MINOR |
4d621c3f02ba71 Xi Pardee 2023-11-29 96 * +----+--------------+-------------+-------------+--------------+
4d621c3f02ba71 Xi Pardee 2023-11-29 97 * | 2 | LPM0 Requirements 0 |
4d621c3f02ba71 Xi Pardee 2023-11-29 98 * +----+---------------------------------------------------------+
4d621c3f02ba71 Xi Pardee 2023-11-29 99 * | | ... |
4d621c3f02ba71 Xi Pardee 2023-11-29 100 * +----+---------------------------------------------------------+
4d621c3f02ba71 Xi Pardee 2023-11-29 101 * | 29 | LPM0 Requirements 27 |
4d621c3f02ba71 Xi Pardee 2023-11-29 102 * +----+---------------------------------------------------------+
4d621c3f02ba71 Xi Pardee 2023-11-29 103 *
4d621c3f02ba71 Xi Pardee 2023-11-29 104 * ...
4d621c3f02ba71 Xi Pardee 2023-11-29 105 *
4d621c3f02ba71 Xi Pardee 2023-11-29 106 * Low Power Mode 7 Block
4d621c3f02ba71 Xi Pardee 2023-11-29 107 * +----+--------------+-------------+-------------+--------------+
4d621c3f02ba71 Xi Pardee 2023-11-29 108 * | | SUB ID | SIZE | MAJOR | MINOR |
4d621c3f02ba71 Xi Pardee 2023-11-29 109 * +----+--------------+-------------+-------------+--------------+
4d621c3f02ba71 Xi Pardee 2023-11-29 110 * | 60 | LPM7 Requirements 0 |
4d621c3f02ba71 Xi Pardee 2023-11-29 111 * +----+---------------------------------------------------------+
4d621c3f02ba71 Xi Pardee 2023-11-29 112 * | | ... |
4d621c3f02ba71 Xi Pardee 2023-11-29 113 * +----+---------------------------------------------------------+
4d621c3f02ba71 Xi Pardee 2023-11-29 114 * | 87 | LPM7 Requirements 27 |
4d621c3f02ba71 Xi Pardee 2023-11-29 115 * +----+---------------------------------------------------------+
4d621c3f02ba71 Xi Pardee 2023-11-29 116 *
4d621c3f02ba71 Xi Pardee 2023-11-29 117 */
4d621c3f02ba71 Xi Pardee 2023-11-29 118 mode_offset = LPM_HEADER_OFFSET + LPM_MODE_OFFSET;
4d621c3f02ba71 Xi Pardee 2023-11-29 119 pmc_for_each_mode(i, mode, pmcdev) {
4d621c3f02ba71 Xi Pardee 2023-11-29 120 u32 *req_offset = pmc->lpm_req_regs + (mode * num_maps);
4d621c3f02ba71 Xi Pardee 2023-11-29 121 int m;
4d621c3f02ba71 Xi Pardee 2023-11-29 122
4d621c3f02ba71 Xi Pardee 2023-11-29 123 for (m = 0; m < num_maps; m++) {
4d621c3f02ba71 Xi Pardee 2023-11-29 124 u8 sample_id = lpm_indices[m] + mode_offset;
4d621c3f02ba71 Xi Pardee 2023-11-29 125
4d621c3f02ba71 Xi Pardee 2023-11-29 126 ret = pmt_telem_read32(ep, sample_id, req_offset, 1);
4d621c3f02ba71 Xi Pardee 2023-11-29 127 if (ret) {
4d621c3f02ba71 Xi Pardee 2023-11-29 128 dev_err(&pmcdev->pdev->dev,
4d621c3f02ba71 Xi Pardee 2023-11-29 129 "couldn't read Low Power Mode requirements: %d\n", ret);
4d621c3f02ba71 Xi Pardee 2023-11-29 130 devm_kfree(&pmcdev->pdev->dev, pmc->lpm_req_regs);
4d621c3f02ba71 Xi Pardee 2023-11-29 131 goto unregister_ep;
4d621c3f02ba71 Xi Pardee 2023-11-29 132 }
4d621c3f02ba71 Xi Pardee 2023-11-29 133 ++req_offset;
4d621c3f02ba71 Xi Pardee 2023-11-29 134 }
4d621c3f02ba71 Xi Pardee 2023-11-29 135 mode_offset += LPM_REG_COUNT + LPM_MODE_OFFSET;
4d621c3f02ba71 Xi Pardee 2023-11-29 136 }
4d621c3f02ba71 Xi Pardee 2023-11-29 137
4d621c3f02ba71 Xi Pardee 2023-11-29 138 unregister_ep:
4d621c3f02ba71 Xi Pardee 2023-11-29 139 pmt_telem_unregister_endpoint(ep);
4d621c3f02ba71 Xi Pardee 2023-11-29 140
4d621c3f02ba71 Xi Pardee 2023-11-29 @141 return ret;
4d621c3f02ba71 Xi Pardee 2023-11-29 142 }
4d621c3f02ba71 Xi Pardee 2023-11-29 143
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next reply other threads:[~2024-12-10 4:50 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-10 4:49 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2024-12-14 9:26 drivers/platform/x86/intel/pmc/core_ssram.c:141 pmc_core_get_lpm_req() error: uninitialized symbol 'ret' kernel test robot
2024-12-12 11:14 kernel test robot
2024-09-13 1:29 kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202412101220.ykvYEG6c-lkp@intel.com \
--to=lkp@intel.com \
--cc=error27@gmail.com \
--cc=oe-kbuild@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.