Message ID | 1675154394-25598-8-git-send-email-max.byungchul.park@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | DEPT(Dependency Tracker) | expand |
Hi Byungchul,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on tip/locking/core]
[also build test WARNING on tip/sched/core drm-misc/drm-misc-next linus/master v6.2-rc6 next-20230131]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Byungchul-Park/llist-Move-llist_-head-node-definition-to-types-h/20230131-164632
patch link: https://lore.kernel.org/r/1675154394-25598-8-git-send-email-max.byungchul.park%40gmail.com
patch subject: [PATCH v9 07/25] dept: Apply sdt_might_sleep_{start,end}() to wait_for_completion()/complete()
config: arc-allyesconfig (https://download.01.org/0day-ci/archive/20230201/202302011107.Qs35wciq-lkp@intel.com/config)
compiler: arceb-elf-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/4773cd9b4e467e974a08cfcd690019b170f2e123
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Byungchul-Park/llist-Move-llist_-head-node-definition-to-types-h/20230131-164632
git checkout 4773cd9b4e467e974a08cfcd690019b170f2e123
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arc olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arc SHELL=/bin/bash drivers/scsi/qla2xxx/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
drivers/scsi/qla2xxx/qla_dfs.c: In function 'qla2x00_dfs_tgt_port_database_show':
>> drivers/scsi/qla2xxx/qla_dfs.c:227:1: warning: the frame size of 1032 bytes is larger than 1024 bytes [-Wframe-larger-than=]
227 | }
| ^
vim +227 drivers/scsi/qla2xxx/qla_dfs.c
36c7845282eef0 Quinn Tran 2016-02-04 174
c423437e3ff41b Himanshu Madhani 2017-03-15 175 static int
c423437e3ff41b Himanshu Madhani 2017-03-15 176 qla2x00_dfs_tgt_port_database_show(struct seq_file *s, void *unused)
c423437e3ff41b Himanshu Madhani 2017-03-15 177 {
c423437e3ff41b Himanshu Madhani 2017-03-15 178 scsi_qla_host_t *vha = s->private;
c423437e3ff41b Himanshu Madhani 2017-03-15 179 struct qla_hw_data *ha = vha->hw;
4e5a05d1ecd92c Arun Easi 2020-09-03 180 struct gid_list_info *gid_list;
c423437e3ff41b Himanshu Madhani 2017-03-15 181 dma_addr_t gid_list_dma;
c423437e3ff41b Himanshu Madhani 2017-03-15 182 fc_port_t fc_port;
4e5a05d1ecd92c Arun Easi 2020-09-03 183 char *id_iter;
c423437e3ff41b Himanshu Madhani 2017-03-15 184 int rc, i;
c423437e3ff41b Himanshu Madhani 2017-03-15 185 uint16_t entries, loop_id;
c423437e3ff41b Himanshu Madhani 2017-03-15 186
c423437e3ff41b Himanshu Madhani 2017-03-15 187 seq_printf(s, "%s\n", vha->host_str);
c423437e3ff41b Himanshu Madhani 2017-03-15 188 gid_list = dma_alloc_coherent(&ha->pdev->dev,
c423437e3ff41b Himanshu Madhani 2017-03-15 189 qla2x00_gid_list_size(ha),
c423437e3ff41b Himanshu Madhani 2017-03-15 190 &gid_list_dma, GFP_KERNEL);
c423437e3ff41b Himanshu Madhani 2017-03-15 191 if (!gid_list) {
83548fe2fcbb78 Quinn Tran 2017-06-02 192 ql_dbg(ql_dbg_user, vha, 0x7018,
c423437e3ff41b Himanshu Madhani 2017-03-15 193 "DMA allocation failed for %u\n",
c423437e3ff41b Himanshu Madhani 2017-03-15 194 qla2x00_gid_list_size(ha));
c423437e3ff41b Himanshu Madhani 2017-03-15 195 return 0;
c423437e3ff41b Himanshu Madhani 2017-03-15 196 }
c423437e3ff41b Himanshu Madhani 2017-03-15 197
c423437e3ff41b Himanshu Madhani 2017-03-15 198 rc = qla24xx_gidlist_wait(vha, gid_list, gid_list_dma,
c423437e3ff41b Himanshu Madhani 2017-03-15 199 &entries);
c423437e3ff41b Himanshu Madhani 2017-03-15 200 if (rc != QLA_SUCCESS)
c423437e3ff41b Himanshu Madhani 2017-03-15 201 goto out_free_id_list;
c423437e3ff41b Himanshu Madhani 2017-03-15 202
4e5a05d1ecd92c Arun Easi 2020-09-03 203 id_iter = (char *)gid_list;
c423437e3ff41b Himanshu Madhani 2017-03-15 204
c423437e3ff41b Himanshu Madhani 2017-03-15 205 seq_puts(s, "Port Name Port ID Loop ID\n");
c423437e3ff41b Himanshu Madhani 2017-03-15 206
c423437e3ff41b Himanshu Madhani 2017-03-15 207 for (i = 0; i < entries; i++) {
4e5a05d1ecd92c Arun Easi 2020-09-03 208 struct gid_list_info *gid =
4e5a05d1ecd92c Arun Easi 2020-09-03 209 (struct gid_list_info *)id_iter;
c423437e3ff41b Himanshu Madhani 2017-03-15 210 loop_id = le16_to_cpu(gid->loop_id);
c423437e3ff41b Himanshu Madhani 2017-03-15 211 memset(&fc_port, 0, sizeof(fc_port_t));
c423437e3ff41b Himanshu Madhani 2017-03-15 212
c423437e3ff41b Himanshu Madhani 2017-03-15 213 fc_port.loop_id = loop_id;
c423437e3ff41b Himanshu Madhani 2017-03-15 214
c423437e3ff41b Himanshu Madhani 2017-03-15 215 rc = qla24xx_gpdb_wait(vha, &fc_port, 0);
c423437e3ff41b Himanshu Madhani 2017-03-15 216 seq_printf(s, "%8phC %02x%02x%02x %d\n",
c423437e3ff41b Himanshu Madhani 2017-03-15 217 fc_port.port_name, fc_port.d_id.b.domain,
c423437e3ff41b Himanshu Madhani 2017-03-15 218 fc_port.d_id.b.area, fc_port.d_id.b.al_pa,
c423437e3ff41b Himanshu Madhani 2017-03-15 219 fc_port.loop_id);
4e5a05d1ecd92c Arun Easi 2020-09-03 220 id_iter += ha->gid_list_info_size;
c423437e3ff41b Himanshu Madhani 2017-03-15 221 }
c423437e3ff41b Himanshu Madhani 2017-03-15 222 out_free_id_list:
c423437e3ff41b Himanshu Madhani 2017-03-15 223 dma_free_coherent(&ha->pdev->dev, qla2x00_gid_list_size(ha),
c423437e3ff41b Himanshu Madhani 2017-03-15 224 gid_list, gid_list_dma);
c423437e3ff41b Himanshu Madhani 2017-03-15 225
c423437e3ff41b Himanshu Madhani 2017-03-15 226 return 0;
c423437e3ff41b Himanshu Madhani 2017-03-15 @227 }
c423437e3ff41b Himanshu Madhani 2017-03-15 228
diff --git a/include/linux/completion.h b/include/linux/completion.h index 62b32b1..32d535a 100644 --- a/include/linux/completion.h +++ b/include/linux/completion.h @@ -10,6 +10,7 @@ */ #include <linux/swait.h> +#include <linux/dept_sdt.h> /* * struct completion - structure used to maintain state for a "completion" @@ -26,14 +27,33 @@ struct completion { unsigned int done; struct swait_queue_head wait; + struct dept_map dmap; }; +#define init_completion(x) \ +do { \ + sdt_map_init(&(x)->dmap); \ + __init_completion(x); \ +} while (0) + +/* + * XXX: No use cases for now. Fill the body when needed. + */ #define init_completion_map(x, m) init_completion(x) -static inline void complete_acquire(struct completion *x) {} -static inline void complete_release(struct completion *x) {} + +static inline void complete_acquire(struct completion *x) +{ + sdt_might_sleep_start(&x->dmap); +} + +static inline void complete_release(struct completion *x) +{ + sdt_might_sleep_end(); +} #define COMPLETION_INITIALIZER(work) \ - { 0, __SWAIT_QUEUE_HEAD_INITIALIZER((work).wait) } + { 0, __SWAIT_QUEUE_HEAD_INITIALIZER((work).wait), \ + .dmap = DEPT_MAP_INITIALIZER(work, NULL), } #define COMPLETION_INITIALIZER_ONSTACK_MAP(work, map) \ (*({ init_completion_map(&(work), &(map)); &(work); })) @@ -75,13 +95,13 @@ static inline void complete_release(struct completion *x) {} #endif /** - * init_completion - Initialize a dynamically allocated completion + * __init_completion - Initialize a dynamically allocated completion * @x: pointer to completion structure that is to be initialized * * This inline function will initialize a dynamically created completion * structure. */ -static inline void init_completion(struct completion *x) +static inline void __init_completion(struct completion *x) { x->done = 0; init_swait_queue_head(&x->wait);
Makes Dept able to track dependencies by wait_for_completion()/complete(). Signed-off-by: Byungchul Park <max.byungchul.park@gmail.com> --- include/linux/completion.h | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-)