drivers/scsi/gdth_proc.c:249:42: warning: conversion from 'long unsigned int' to 'u16' {aka 'short unsigned int'} changes value from '196608' to '0'

From: kernel test robot
Date: Thu Feb 04 2021 - 06:01:33 EST


Hi Christophe,

First bad commit (maybe != root cause):

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 61556703b610a104de324e4f061dc6cf7b218b46
commit: 03fd42d458fb9cb69e712600bd69ff77ff3a45a8 powerpc/fixmap: Fix FIX_EARLY_DEBUG_BASE when page size is 256k
date: 8 months ago
config: powerpc-randconfig-m031-20210204 (attached as .config)
compiler: powerpc-linux-gcc (GCC) 9.3.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://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=03fd42d458fb9cb69e712600bd69ff77ff3a45a8
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 03fd42d458fb9cb69e712600bd69ff77ff3a45a8
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=powerpc

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

In file included from drivers/scsi/gdth.c:266:
drivers/scsi/gdth_proc.c: In function 'gdth_show_info':
>> drivers/scsi/gdth_proc.c:249:42: warning: conversion from 'long unsigned int' to 'u16' {aka 'short unsigned int'} changes value from '196608' to '0' [-Woverflow]
249 | gdtcmd->u.ioctl.param_size = 3*GDTH_SCRATCH/4;
| ^
drivers/scsi/gdth.c: In function 'gdth_async_event':
drivers/scsi/gdth.c:3010:9: warning: variable 'cmd_index' set but not used [-Wunused-but-set-variable]
3010 | int cmd_index;
| ^~~~~~~~~
drivers/scsi/gdth.c: At top level:
drivers/scsi/gdth.c:3231:12: warning: no previous prototype for 'option_setup' [-Wmissing-prototypes]
3231 | int __init option_setup(char *str)
| ^~~~~~~~~~~~
--
In file included from arch/powerpc/include/asm/thread_info.h:13,
from include/linux/thread_info.h:38,
from include/asm-generic/preempt.h:5,
from ./arch/powerpc/include/generated/asm/preempt.h:1,
from include/linux/preempt.h:78,
from include/linux/spinlock.h:51,
from include/linux/seqlock.h:36,
from include/linux/time.h:6,
from include/linux/stat.h:19,
from include/linux/module.h:13,
from drivers/net/vmxnet3/vmxnet3_drv.c:27:
drivers/net/vmxnet3/vmxnet3_drv.c: In function 'vmxnet3_rq_init':
>> arch/powerpc/include/asm/page.h:24:20: warning: conversion from 'long unsigned int' to 'u16' {aka 'short unsigned int'} changes value from '262144' to '0' [-Woverflow]
24 | #define PAGE_SIZE (ASM_CONST(1) << PAGE_SHIFT)
| ^
drivers/net/vmxnet3/vmxnet3_drv.c:1785:29: note: in expansion of macro 'PAGE_SIZE'
1785 | rq->buf_info[0][i].len = PAGE_SIZE;
| ^~~~~~~~~
>> arch/powerpc/include/asm/page.h:24:20: warning: conversion from 'long unsigned int' to 'u16' {aka 'short unsigned int'} changes value from '262144' to '0' [-Woverflow]
24 | #define PAGE_SIZE (ASM_CONST(1) << PAGE_SHIFT)
| ^
drivers/net/vmxnet3/vmxnet3_drv.c:1790:28: note: in expansion of macro 'PAGE_SIZE'
1790 | rq->buf_info[1][i].len = PAGE_SIZE;
| ^~~~~~~~~


vim +249 drivers/scsi/gdth_proc.c

^1da177e4c3f41 Linus Torvalds 2005-04-16 150
3e0552eebdf621 Al Viro 2013-03-31 151 int gdth_show_info(struct seq_file *m, struct Scsi_Host *host)
^1da177e4c3f41 Linus Torvalds 2005-04-16 152 {
3e0552eebdf621 Al Viro 2013-03-31 153 gdth_ha_str *ha = shost_priv(host);
238ddbb98c327a Alan Cox 2009-06-09 154 int hlen;
^1da177e4c3f41 Linus Torvalds 2005-04-16 155 int id, i, j, k, sec, flag;
^1da177e4c3f41 Linus Torvalds 2005-04-16 156 int no_mdrv = 0, drv_no, is_mirr;
1fe6dbf4d0afba Dave Jones 2010-01-04 157 u32 cnt;
463563fa745ac7 Christoph Hellwig 2018-12-12 158 dma_addr_t paddr;
^1da177e4c3f41 Linus Torvalds 2005-04-16 159 int rc = -ENOMEM;
^1da177e4c3f41 Linus Torvalds 2005-04-16 160
^1da177e4c3f41 Linus Torvalds 2005-04-16 161 gdth_cmd_str *gdtcmd;
^1da177e4c3f41 Linus Torvalds 2005-04-16 162 gdth_evt_str *estr;
345ebae7d0586d Arnd Bergmann 2017-07-14 163 char hrec[277];
^1da177e4c3f41 Linus Torvalds 2005-04-16 164
^1da177e4c3f41 Linus Torvalds 2005-04-16 165 char *buf;
^1da177e4c3f41 Linus Torvalds 2005-04-16 166 gdth_dskstat_str *pds;
^1da177e4c3f41 Linus Torvalds 2005-04-16 167 gdth_diskinfo_str *pdi;
^1da177e4c3f41 Linus Torvalds 2005-04-16 168 gdth_arrayinf_str *pai;
^1da177e4c3f41 Linus Torvalds 2005-04-16 169 gdth_defcnt_str *pdef;
^1da177e4c3f41 Linus Torvalds 2005-04-16 170 gdth_cdrinfo_str *pcdi;
^1da177e4c3f41 Linus Torvalds 2005-04-16 171 gdth_hget_str *phg;
^1da177e4c3f41 Linus Torvalds 2005-04-16 172 char cmnd[MAX_COMMAND_SIZE];
^1da177e4c3f41 Linus Torvalds 2005-04-16 173
^1da177e4c3f41 Linus Torvalds 2005-04-16 174 gdtcmd = kmalloc(sizeof(*gdtcmd), GFP_KERNEL);
^1da177e4c3f41 Linus Torvalds 2005-04-16 175 estr = kmalloc(sizeof(*estr), GFP_KERNEL);
^1da177e4c3f41 Linus Torvalds 2005-04-16 176 if (!gdtcmd || !estr)
^1da177e4c3f41 Linus Torvalds 2005-04-16 177 goto free_fail;
^1da177e4c3f41 Linus Torvalds 2005-04-16 178
^1da177e4c3f41 Linus Torvalds 2005-04-16 179 memset(cmnd, 0xff, 12);
^1da177e4c3f41 Linus Torvalds 2005-04-16 180 memset(gdtcmd, 0, sizeof(gdth_cmd_str));
^1da177e4c3f41 Linus Torvalds 2005-04-16 181
45f1a41b2b2e02 Boaz Harrosh 2007-10-02 182 TRACE2(("gdth_get_info() ha %d\n",ha->hanum));
^1da177e4c3f41 Linus Torvalds 2005-04-16 183
^1da177e4c3f41 Linus Torvalds 2005-04-16 184
^1da177e4c3f41 Linus Torvalds 2005-04-16 185 /* request is i.e. "cat /proc/scsi/gdth/0" */
^1da177e4c3f41 Linus Torvalds 2005-04-16 186 /* format: %-15s\t%-10s\t%-15s\t%s */
^1da177e4c3f41 Linus Torvalds 2005-04-16 187 /* driver parameters */
91c40f24faadd9 Rasmus Villemoes 2014-12-03 188 seq_puts(m, "Driver Parameters:\n");
^1da177e4c3f41 Linus Torvalds 2005-04-16 189 if (reserve_list[0] == 0xff)
^1da177e4c3f41 Linus Torvalds 2005-04-16 190 strcpy(hrec, "--");
^1da177e4c3f41 Linus Torvalds 2005-04-16 191 else {
238ddbb98c327a Alan Cox 2009-06-09 192 hlen = sprintf(hrec, "%d", reserve_list[0]);
^1da177e4c3f41 Linus Torvalds 2005-04-16 193 for (i = 1; i < MAX_RES_ARGS; i++) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 194 if (reserve_list[i] == 0xff)
^1da177e4c3f41 Linus Torvalds 2005-04-16 195 break;
473e554d656eb6 Takashi Iwai 2020-03-15 196 hlen += scnprintf(hrec + hlen, 161 - hlen, ",%d", reserve_list[i]);
^1da177e4c3f41 Linus Torvalds 2005-04-16 197 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 198 }
3e0552eebdf621 Al Viro 2013-03-31 199 seq_printf(m,
^1da177e4c3f41 Linus Torvalds 2005-04-16 200 " reserve_mode: \t%d \treserve_list: \t%s\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16 201 reserve_mode, hrec);
3e0552eebdf621 Al Viro 2013-03-31 202 seq_printf(m,
^1da177e4c3f41 Linus Torvalds 2005-04-16 203 " max_ids: \t%-3d \thdr_channel: \t%d\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16 204 max_ids, hdr_channel);
^1da177e4c3f41 Linus Torvalds 2005-04-16 205
^1da177e4c3f41 Linus Torvalds 2005-04-16 206 /* controller information */
91c40f24faadd9 Rasmus Villemoes 2014-12-03 207 seq_puts(m, "\nDisk Array Controller Information:\n");
3e0552eebdf621 Al Viro 2013-03-31 208 seq_printf(m,
^1da177e4c3f41 Linus Torvalds 2005-04-16 209 " Number: \t%d \tName: \t%s\n",
3e0552eebdf621 Al Viro 2013-03-31 210 ha->hanum, ha->binfo.type_string);
^1da177e4c3f41 Linus Torvalds 2005-04-16 211
3e0552eebdf621 Al Viro 2013-03-31 212 seq_printf(m,
3e0552eebdf621 Al Viro 2013-03-31 213 " Driver Ver.: \t%-10s\tFirmware Ver.: \t",
3e0552eebdf621 Al Viro 2013-03-31 214 GDTH_VERSION_STR);
^1da177e4c3f41 Linus Torvalds 2005-04-16 215 if (ha->more_proc)
3e0552eebdf621 Al Viro 2013-03-31 216 seq_printf(m, "%d.%02d.%02d-%c%03X\n",
1fe6dbf4d0afba Dave Jones 2010-01-04 217 (u8)(ha->binfo.upd_fw_ver>>24),
1fe6dbf4d0afba Dave Jones 2010-01-04 218 (u8)(ha->binfo.upd_fw_ver>>16),
1fe6dbf4d0afba Dave Jones 2010-01-04 219 (u8)(ha->binfo.upd_fw_ver),
^1da177e4c3f41 Linus Torvalds 2005-04-16 220 ha->bfeat.raid ? 'R':'N',
^1da177e4c3f41 Linus Torvalds 2005-04-16 221 ha->binfo.upd_revision);
^1da177e4c3f41 Linus Torvalds 2005-04-16 222 else
3e0552eebdf621 Al Viro 2013-03-31 223 seq_printf(m, "%d.%02d\n", (u8)(ha->cpar.version>>8),
1fe6dbf4d0afba Dave Jones 2010-01-04 224 (u8)(ha->cpar.version));
^1da177e4c3f41 Linus Torvalds 2005-04-16 225
3e0552eebdf621 Al Viro 2013-03-31 226 if (ha->more_proc)
^1da177e4c3f41 Linus Torvalds 2005-04-16 227 /* more information: 1. about controller */
3e0552eebdf621 Al Viro 2013-03-31 228 seq_printf(m,
^1da177e4c3f41 Linus Torvalds 2005-04-16 229 " Serial No.: \t0x%8X\tCache RAM size:\t%d KB\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16 230 ha->binfo.ser_no, ha->binfo.memsize / 1024);
^1da177e4c3f41 Linus Torvalds 2005-04-16 231
^1da177e4c3f41 Linus Torvalds 2005-04-16 232 if (ha->more_proc) {
8d22022c3a5631 Christoph Hellwig 2018-12-12 233 size_t size = max_t(size_t, GDTH_SCRATCH, sizeof(gdth_hget_str));
8d22022c3a5631 Christoph Hellwig 2018-12-12 234
^1da177e4c3f41 Linus Torvalds 2005-04-16 235 /* more information: 2. about physical devices */
91c40f24faadd9 Rasmus Villemoes 2014-12-03 236 seq_puts(m, "\nPhysical Devices:");
^1da177e4c3f41 Linus Torvalds 2005-04-16 237 flag = FALSE;
^1da177e4c3f41 Linus Torvalds 2005-04-16 238
bb327df8326eff Christoph Hellwig 2018-12-12 239 buf = dma_alloc_coherent(&ha->pdev->dev, size, &paddr, GFP_KERNEL);
^1da177e4c3f41 Linus Torvalds 2005-04-16 240 if (!buf)
^1da177e4c3f41 Linus Torvalds 2005-04-16 241 goto stop_output;
^1da177e4c3f41 Linus Torvalds 2005-04-16 242 for (i = 0; i < ha->bus_cnt; ++i) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 243 /* 2.a statistics (and retries/reassigns) */
^1da177e4c3f41 Linus Torvalds 2005-04-16 244 TRACE2(("pdr_statistics() chn %d\n",i));
^1da177e4c3f41 Linus Torvalds 2005-04-16 245 pds = (gdth_dskstat_str *)(buf + GDTH_SCRATCH/4);
^1da177e4c3f41 Linus Torvalds 2005-04-16 246 gdtcmd->Service = CACHESERVICE;
^1da177e4c3f41 Linus Torvalds 2005-04-16 247 gdtcmd->OpCode = GDT_IOCTL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 248 gdtcmd->u.ioctl.p_param = paddr + GDTH_SCRATCH/4;
^1da177e4c3f41 Linus Torvalds 2005-04-16 @249 gdtcmd->u.ioctl.param_size = 3*GDTH_SCRATCH/4;
^1da177e4c3f41 Linus Torvalds 2005-04-16 250 gdtcmd->u.ioctl.subfunc = DSK_STATISTICS | L_CTRL_PATTERN;
^1da177e4c3f41 Linus Torvalds 2005-04-16 251 gdtcmd->u.ioctl.channel = ha->raw[i].address | INVALID_CHANNEL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 252 pds->bid = ha->raw[i].local_no;
^1da177e4c3f41 Linus Torvalds 2005-04-16 253 pds->first = 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 254 pds->entries = ha->raw[i].pdev_cnt;
1fe6dbf4d0afba Dave Jones 2010-01-04 255 cnt = (3*GDTH_SCRATCH/4 - 5 * sizeof(u32)) /
^1da177e4c3f41 Linus Torvalds 2005-04-16 256 sizeof(pds->list[0]);
^1da177e4c3f41 Linus Torvalds 2005-04-16 257 if (pds->entries > cnt)
^1da177e4c3f41 Linus Torvalds 2005-04-16 258 pds->entries = cnt;
cbd5f69b98bb5d Leubner, Achim 2006-06-09 259
cbd5f69b98bb5d Leubner, Achim 2006-06-09 260 if (gdth_execute(host, gdtcmd, cmnd, 30, NULL) != S_OK)
^1da177e4c3f41 Linus Torvalds 2005-04-16 261 pds->count = 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 262
^1da177e4c3f41 Linus Torvalds 2005-04-16 263 /* other IOCTLs must fit into area GDTH_SCRATCH/4 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 264 for (j = 0; j < ha->raw[i].pdev_cnt; ++j) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 265 /* 2.b drive info */
^1da177e4c3f41 Linus Torvalds 2005-04-16 266 TRACE2(("scsi_drv_info() chn %d dev %d\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16 267 i, ha->raw[i].id_list[j]));
^1da177e4c3f41 Linus Torvalds 2005-04-16 268 pdi = (gdth_diskinfo_str *)buf;
^1da177e4c3f41 Linus Torvalds 2005-04-16 269 gdtcmd->Service = CACHESERVICE;
^1da177e4c3f41 Linus Torvalds 2005-04-16 270 gdtcmd->OpCode = GDT_IOCTL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 271 gdtcmd->u.ioctl.p_param = paddr;
^1da177e4c3f41 Linus Torvalds 2005-04-16 272 gdtcmd->u.ioctl.param_size = sizeof(gdth_diskinfo_str);
^1da177e4c3f41 Linus Torvalds 2005-04-16 273 gdtcmd->u.ioctl.subfunc = SCSI_DR_INFO | L_CTRL_PATTERN;
^1da177e4c3f41 Linus Torvalds 2005-04-16 274 gdtcmd->u.ioctl.channel =
^1da177e4c3f41 Linus Torvalds 2005-04-16 275 ha->raw[i].address | ha->raw[i].id_list[j];
cbd5f69b98bb5d Leubner, Achim 2006-06-09 276
cbd5f69b98bb5d Leubner, Achim 2006-06-09 277 if (gdth_execute(host, gdtcmd, cmnd, 30, NULL) == S_OK) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 278 strncpy(hrec,pdi->vendor,8);
^1da177e4c3f41 Linus Torvalds 2005-04-16 279 strncpy(hrec+8,pdi->product,16);
^1da177e4c3f41 Linus Torvalds 2005-04-16 280 strncpy(hrec+24,pdi->revision,4);
^1da177e4c3f41 Linus Torvalds 2005-04-16 281 hrec[28] = 0;
3e0552eebdf621 Al Viro 2013-03-31 282 seq_printf(m,
^1da177e4c3f41 Linus Torvalds 2005-04-16 283 "\n Chn/ID/LUN: \t%c/%02d/%d \tName: \t%s\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16 284 'A'+i,pdi->target_id,pdi->lun,hrec);
^1da177e4c3f41 Linus Torvalds 2005-04-16 285 flag = TRUE;
^1da177e4c3f41 Linus Torvalds 2005-04-16 286 pdi->no_ldrive &= 0xffff;
^1da177e4c3f41 Linus Torvalds 2005-04-16 287 if (pdi->no_ldrive == 0xffff)
^1da177e4c3f41 Linus Torvalds 2005-04-16 288 strcpy(hrec,"--");
^1da177e4c3f41 Linus Torvalds 2005-04-16 289 else
^1da177e4c3f41 Linus Torvalds 2005-04-16 290 sprintf(hrec,"%d",pdi->no_ldrive);
3e0552eebdf621 Al Viro 2013-03-31 291 seq_printf(m,
^1da177e4c3f41 Linus Torvalds 2005-04-16 292 " Capacity [MB]:\t%-6d \tTo Log. Drive: \t%s\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16 293 pdi->blkcnt/(1024*1024/pdi->blksize),
^1da177e4c3f41 Linus Torvalds 2005-04-16 294 hrec);
^1da177e4c3f41 Linus Torvalds 2005-04-16 295 } else {
^1da177e4c3f41 Linus Torvalds 2005-04-16 296 pdi->devtype = 0xff;
^1da177e4c3f41 Linus Torvalds 2005-04-16 297 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 298
^1da177e4c3f41 Linus Torvalds 2005-04-16 299 if (pdi->devtype == 0) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 300 /* search retries/reassigns */
^1da177e4c3f41 Linus Torvalds 2005-04-16 301 for (k = 0; k < pds->count; ++k) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 302 if (pds->list[k].tid == pdi->target_id &&
^1da177e4c3f41 Linus Torvalds 2005-04-16 303 pds->list[k].lun == pdi->lun) {
3e0552eebdf621 Al Viro 2013-03-31 304 seq_printf(m,
^1da177e4c3f41 Linus Torvalds 2005-04-16 305 " Retries: \t%-6d \tReassigns: \t%d\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16 306 pds->list[k].retries,
^1da177e4c3f41 Linus Torvalds 2005-04-16 307 pds->list[k].reassigns);
^1da177e4c3f41 Linus Torvalds 2005-04-16 308 break;
^1da177e4c3f41 Linus Torvalds 2005-04-16 309 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 310 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 311 /* 2.c grown defects */
^1da177e4c3f41 Linus Torvalds 2005-04-16 312 TRACE2(("scsi_drv_defcnt() chn %d dev %d\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16 313 i, ha->raw[i].id_list[j]));
^1da177e4c3f41 Linus Torvalds 2005-04-16 314 pdef = (gdth_defcnt_str *)buf;
^1da177e4c3f41 Linus Torvalds 2005-04-16 315 gdtcmd->Service = CACHESERVICE;
^1da177e4c3f41 Linus Torvalds 2005-04-16 316 gdtcmd->OpCode = GDT_IOCTL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 317 gdtcmd->u.ioctl.p_param = paddr;
^1da177e4c3f41 Linus Torvalds 2005-04-16 318 gdtcmd->u.ioctl.param_size = sizeof(gdth_defcnt_str);
^1da177e4c3f41 Linus Torvalds 2005-04-16 319 gdtcmd->u.ioctl.subfunc = SCSI_DEF_CNT | L_CTRL_PATTERN;
^1da177e4c3f41 Linus Torvalds 2005-04-16 320 gdtcmd->u.ioctl.channel =
^1da177e4c3f41 Linus Torvalds 2005-04-16 321 ha->raw[i].address | ha->raw[i].id_list[j];
^1da177e4c3f41 Linus Torvalds 2005-04-16 322 pdef->sddc_type = 0x08;
cbd5f69b98bb5d Leubner, Achim 2006-06-09 323
cbd5f69b98bb5d Leubner, Achim 2006-06-09 324 if (gdth_execute(host, gdtcmd, cmnd, 30, NULL) == S_OK) {
3e0552eebdf621 Al Viro 2013-03-31 325 seq_printf(m,
^1da177e4c3f41 Linus Torvalds 2005-04-16 326 " Grown Defects:\t%d\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16 327 pdef->sddc_cnt);
^1da177e4c3f41 Linus Torvalds 2005-04-16 328 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 329 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 330 }
5c10007560589a Julia Lawall 2010-12-29 331 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 332
3e0552eebdf621 Al Viro 2013-03-31 333 if (!flag)
91c40f24faadd9 Rasmus Villemoes 2014-12-03 334 seq_puts(m, "\n --\n");
^1da177e4c3f41 Linus Torvalds 2005-04-16 335
^1da177e4c3f41 Linus Torvalds 2005-04-16 336 /* 3. about logical drives */
91c40f24faadd9 Rasmus Villemoes 2014-12-03 337 seq_puts(m, "\nLogical Drives:");
^1da177e4c3f41 Linus Torvalds 2005-04-16 338 flag = FALSE;
^1da177e4c3f41 Linus Torvalds 2005-04-16 339
^1da177e4c3f41 Linus Torvalds 2005-04-16 340 for (i = 0; i < MAX_LDRIVES; ++i) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 341 if (!ha->hdr[i].is_logdrv)
^1da177e4c3f41 Linus Torvalds 2005-04-16 342 continue;
^1da177e4c3f41 Linus Torvalds 2005-04-16 343 drv_no = i;
^1da177e4c3f41 Linus Torvalds 2005-04-16 344 j = k = 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 345 is_mirr = FALSE;
^1da177e4c3f41 Linus Torvalds 2005-04-16 346 do {
^1da177e4c3f41 Linus Torvalds 2005-04-16 347 /* 3.a log. drive info */
^1da177e4c3f41 Linus Torvalds 2005-04-16 348 TRACE2(("cache_drv_info() drive no %d\n",drv_no));
^1da177e4c3f41 Linus Torvalds 2005-04-16 349 pcdi = (gdth_cdrinfo_str *)buf;
^1da177e4c3f41 Linus Torvalds 2005-04-16 350 gdtcmd->Service = CACHESERVICE;
^1da177e4c3f41 Linus Torvalds 2005-04-16 351 gdtcmd->OpCode = GDT_IOCTL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 352 gdtcmd->u.ioctl.p_param = paddr;
^1da177e4c3f41 Linus Torvalds 2005-04-16 353 gdtcmd->u.ioctl.param_size = sizeof(gdth_cdrinfo_str);
^1da177e4c3f41 Linus Torvalds 2005-04-16 354 gdtcmd->u.ioctl.subfunc = CACHE_DRV_INFO;
^1da177e4c3f41 Linus Torvalds 2005-04-16 355 gdtcmd->u.ioctl.channel = drv_no;
cbd5f69b98bb5d Leubner, Achim 2006-06-09 356 if (gdth_execute(host, gdtcmd, cmnd, 30, NULL) != S_OK)
^1da177e4c3f41 Linus Torvalds 2005-04-16 357 break;
^1da177e4c3f41 Linus Torvalds 2005-04-16 358 pcdi->ld_dtype >>= 16;
^1da177e4c3f41 Linus Torvalds 2005-04-16 359 j++;
^1da177e4c3f41 Linus Torvalds 2005-04-16 360 if (pcdi->ld_dtype > 2) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 361 strcpy(hrec, "missing");
^1da177e4c3f41 Linus Torvalds 2005-04-16 362 } else if (pcdi->ld_error & 1) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 363 strcpy(hrec, "fault");
^1da177e4c3f41 Linus Torvalds 2005-04-16 364 } else if (pcdi->ld_error & 2) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 365 strcpy(hrec, "invalid");
^1da177e4c3f41 Linus Torvalds 2005-04-16 366 k++; j--;
^1da177e4c3f41 Linus Torvalds 2005-04-16 367 } else {
^1da177e4c3f41 Linus Torvalds 2005-04-16 368 strcpy(hrec, "ok");
^1da177e4c3f41 Linus Torvalds 2005-04-16 369 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 370
^1da177e4c3f41 Linus Torvalds 2005-04-16 371 if (drv_no == i) {
3e0552eebdf621 Al Viro 2013-03-31 372 seq_printf(m,
^1da177e4c3f41 Linus Torvalds 2005-04-16 373 "\n Number: \t%-2d \tStatus: \t%s\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16 374 drv_no, hrec);
^1da177e4c3f41 Linus Torvalds 2005-04-16 375 flag = TRUE;
^1da177e4c3f41 Linus Torvalds 2005-04-16 376 no_mdrv = pcdi->cd_ldcnt;
^1da177e4c3f41 Linus Torvalds 2005-04-16 377 if (no_mdrv > 1 || pcdi->ld_slave != -1) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 378 is_mirr = TRUE;
^1da177e4c3f41 Linus Torvalds 2005-04-16 379 strcpy(hrec, "RAID-1");
^1da177e4c3f41 Linus Torvalds 2005-04-16 380 } else if (pcdi->ld_dtype == 0) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 381 strcpy(hrec, "Disk");
^1da177e4c3f41 Linus Torvalds 2005-04-16 382 } else if (pcdi->ld_dtype == 1) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 383 strcpy(hrec, "RAID-0");
^1da177e4c3f41 Linus Torvalds 2005-04-16 384 } else if (pcdi->ld_dtype == 2) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 385 strcpy(hrec, "Chain");
^1da177e4c3f41 Linus Torvalds 2005-04-16 386 } else {
^1da177e4c3f41 Linus Torvalds 2005-04-16 387 strcpy(hrec, "???");
^1da177e4c3f41 Linus Torvalds 2005-04-16 388 }
3e0552eebdf621 Al Viro 2013-03-31 389 seq_printf(m,
^1da177e4c3f41 Linus Torvalds 2005-04-16 390 " Capacity [MB]:\t%-6d \tType: \t%s\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16 391 pcdi->ld_blkcnt/(1024*1024/pcdi->ld_blksize),
^1da177e4c3f41 Linus Torvalds 2005-04-16 392 hrec);
^1da177e4c3f41 Linus Torvalds 2005-04-16 393 } else {
3e0552eebdf621 Al Viro 2013-03-31 394 seq_printf(m,
^1da177e4c3f41 Linus Torvalds 2005-04-16 395 " Slave Number: \t%-2d \tStatus: \t%s\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16 396 drv_no & 0x7fff, hrec);
^1da177e4c3f41 Linus Torvalds 2005-04-16 397 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 398 drv_no = pcdi->ld_slave;
^1da177e4c3f41 Linus Torvalds 2005-04-16 399 } while (drv_no != -1);
^1da177e4c3f41 Linus Torvalds 2005-04-16 400
3e0552eebdf621 Al Viro 2013-03-31 401 if (is_mirr)
3e0552eebdf621 Al Viro 2013-03-31 402 seq_printf(m,
^1da177e4c3f41 Linus Torvalds 2005-04-16 403 " Missing Drv.: \t%-2d \tInvalid Drv.: \t%d\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16 404 no_mdrv - j - k, k);
^1da177e4c3f41 Linus Torvalds 2005-04-16 405
^1da177e4c3f41 Linus Torvalds 2005-04-16 406 if (!ha->hdr[i].is_arraydrv)
^1da177e4c3f41 Linus Torvalds 2005-04-16 407 strcpy(hrec, "--");
^1da177e4c3f41 Linus Torvalds 2005-04-16 408 else
^1da177e4c3f41 Linus Torvalds 2005-04-16 409 sprintf(hrec, "%d", ha->hdr[i].master_no);
3e0552eebdf621 Al Viro 2013-03-31 410 seq_printf(m,
^1da177e4c3f41 Linus Torvalds 2005-04-16 411 " To Array Drv.:\t%s\n", hrec);
5c10007560589a Julia Lawall 2010-12-29 412 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 413
3e0552eebdf621 Al Viro 2013-03-31 414 if (!flag)
91c40f24faadd9 Rasmus Villemoes 2014-12-03 415 seq_puts(m, "\n --\n");
^1da177e4c3f41 Linus Torvalds 2005-04-16 416
^1da177e4c3f41 Linus Torvalds 2005-04-16 417 /* 4. about array drives */
91c40f24faadd9 Rasmus Villemoes 2014-12-03 418 seq_puts(m, "\nArray Drives:");
^1da177e4c3f41 Linus Torvalds 2005-04-16 419 flag = FALSE;
^1da177e4c3f41 Linus Torvalds 2005-04-16 420
^1da177e4c3f41 Linus Torvalds 2005-04-16 421 for (i = 0; i < MAX_LDRIVES; ++i) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 422 if (!(ha->hdr[i].is_arraydrv && ha->hdr[i].is_master))
^1da177e4c3f41 Linus Torvalds 2005-04-16 423 continue;
^1da177e4c3f41 Linus Torvalds 2005-04-16 424 /* 4.a array drive info */
^1da177e4c3f41 Linus Torvalds 2005-04-16 425 TRACE2(("array_info() drive no %d\n",i));
^1da177e4c3f41 Linus Torvalds 2005-04-16 426 pai = (gdth_arrayinf_str *)buf;
^1da177e4c3f41 Linus Torvalds 2005-04-16 427 gdtcmd->Service = CACHESERVICE;
^1da177e4c3f41 Linus Torvalds 2005-04-16 428 gdtcmd->OpCode = GDT_IOCTL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 429 gdtcmd->u.ioctl.p_param = paddr;
^1da177e4c3f41 Linus Torvalds 2005-04-16 430 gdtcmd->u.ioctl.param_size = sizeof(gdth_arrayinf_str);
^1da177e4c3f41 Linus Torvalds 2005-04-16 431 gdtcmd->u.ioctl.subfunc = ARRAY_INFO | LA_CTRL_PATTERN;
^1da177e4c3f41 Linus Torvalds 2005-04-16 432 gdtcmd->u.ioctl.channel = i;
cbd5f69b98bb5d Leubner, Achim 2006-06-09 433 if (gdth_execute(host, gdtcmd, cmnd, 30, NULL) == S_OK) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 434 if (pai->ai_state == 0)
^1da177e4c3f41 Linus Torvalds 2005-04-16 435 strcpy(hrec, "idle");
^1da177e4c3f41 Linus Torvalds 2005-04-16 436 else if (pai->ai_state == 2)
^1da177e4c3f41 Linus Torvalds 2005-04-16 437 strcpy(hrec, "build");
^1da177e4c3f41 Linus Torvalds 2005-04-16 438 else if (pai->ai_state == 4)
^1da177e4c3f41 Linus Torvalds 2005-04-16 439 strcpy(hrec, "ready");
^1da177e4c3f41 Linus Torvalds 2005-04-16 440 else if (pai->ai_state == 6)
^1da177e4c3f41 Linus Torvalds 2005-04-16 441 strcpy(hrec, "fail");
^1da177e4c3f41 Linus Torvalds 2005-04-16 442 else if (pai->ai_state == 8 || pai->ai_state == 10)
^1da177e4c3f41 Linus Torvalds 2005-04-16 443 strcpy(hrec, "rebuild");
^1da177e4c3f41 Linus Torvalds 2005-04-16 444 else
^1da177e4c3f41 Linus Torvalds 2005-04-16 445 strcpy(hrec, "error");
^1da177e4c3f41 Linus Torvalds 2005-04-16 446 if (pai->ai_ext_state & 0x10)
^1da177e4c3f41 Linus Torvalds 2005-04-16 447 strcat(hrec, "/expand");
^1da177e4c3f41 Linus Torvalds 2005-04-16 448 else if (pai->ai_ext_state & 0x1)
^1da177e4c3f41 Linus Torvalds 2005-04-16 449 strcat(hrec, "/patch");
3e0552eebdf621 Al Viro 2013-03-31 450 seq_printf(m,
^1da177e4c3f41 Linus Torvalds 2005-04-16 451 "\n Number: \t%-2d \tStatus: \t%s\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16 452 i,hrec);
^1da177e4c3f41 Linus Torvalds 2005-04-16 453 flag = TRUE;
^1da177e4c3f41 Linus Torvalds 2005-04-16 454
^1da177e4c3f41 Linus Torvalds 2005-04-16 455 if (pai->ai_type == 0)
^1da177e4c3f41 Linus Torvalds 2005-04-16 456 strcpy(hrec, "RAID-0");
^1da177e4c3f41 Linus Torvalds 2005-04-16 457 else if (pai->ai_type == 4)
^1da177e4c3f41 Linus Torvalds 2005-04-16 458 strcpy(hrec, "RAID-4");
^1da177e4c3f41 Linus Torvalds 2005-04-16 459 else if (pai->ai_type == 5)
^1da177e4c3f41 Linus Torvalds 2005-04-16 460 strcpy(hrec, "RAID-5");
^1da177e4c3f41 Linus Torvalds 2005-04-16 461 else
^1da177e4c3f41 Linus Torvalds 2005-04-16 462 strcpy(hrec, "RAID-10");
3e0552eebdf621 Al Viro 2013-03-31 463 seq_printf(m,
^1da177e4c3f41 Linus Torvalds 2005-04-16 464 " Capacity [MB]:\t%-6d \tType: \t%s\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16 465 pai->ai_size/(1024*1024/pai->ai_secsize),
^1da177e4c3f41 Linus Torvalds 2005-04-16 466 hrec);
^1da177e4c3f41 Linus Torvalds 2005-04-16 467 }
5c10007560589a Julia Lawall 2010-12-29 468 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 469
3e0552eebdf621 Al Viro 2013-03-31 470 if (!flag)
91c40f24faadd9 Rasmus Villemoes 2014-12-03 471 seq_puts(m, "\n --\n");
^1da177e4c3f41 Linus Torvalds 2005-04-16 472
^1da177e4c3f41 Linus Torvalds 2005-04-16 473 /* 5. about host drives */
91c40f24faadd9 Rasmus Villemoes 2014-12-03 474 seq_puts(m, "\nHost Drives:");
^1da177e4c3f41 Linus Torvalds 2005-04-16 475 flag = FALSE;
^1da177e4c3f41 Linus Torvalds 2005-04-16 476
^1da177e4c3f41 Linus Torvalds 2005-04-16 477 for (i = 0; i < MAX_LDRIVES; ++i) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 478 if (!ha->hdr[i].is_logdrv ||
^1da177e4c3f41 Linus Torvalds 2005-04-16 479 (ha->hdr[i].is_arraydrv && !ha->hdr[i].is_master))
^1da177e4c3f41 Linus Torvalds 2005-04-16 480 continue;
^1da177e4c3f41 Linus Torvalds 2005-04-16 481 /* 5.a get host drive list */
^1da177e4c3f41 Linus Torvalds 2005-04-16 482 TRACE2(("host_get() drv_no %d\n",i));
^1da177e4c3f41 Linus Torvalds 2005-04-16 483 phg = (gdth_hget_str *)buf;
^1da177e4c3f41 Linus Torvalds 2005-04-16 484 gdtcmd->Service = CACHESERVICE;
^1da177e4c3f41 Linus Torvalds 2005-04-16 485 gdtcmd->OpCode = GDT_IOCTL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 486 gdtcmd->u.ioctl.p_param = paddr;
^1da177e4c3f41 Linus Torvalds 2005-04-16 487 gdtcmd->u.ioctl.param_size = sizeof(gdth_hget_str);
^1da177e4c3f41 Linus Torvalds 2005-04-16 488 gdtcmd->u.ioctl.subfunc = HOST_GET | LA_CTRL_PATTERN;
^1da177e4c3f41 Linus Torvalds 2005-04-16 489 gdtcmd->u.ioctl.channel = i;
^1da177e4c3f41 Linus Torvalds 2005-04-16 490 phg->entries = MAX_HDRIVES;
^1da177e4c3f41 Linus Torvalds 2005-04-16 491 phg->offset = GDTOFFSOF(gdth_hget_str, entry[0]);
cbd5f69b98bb5d Leubner, Achim 2006-06-09 492 if (gdth_execute(host, gdtcmd, cmnd, 30, NULL) == S_OK) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 493 ha->hdr[i].ldr_no = i;
^1da177e4c3f41 Linus Torvalds 2005-04-16 494 ha->hdr[i].rw_attribs = 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 495 ha->hdr[i].start_sec = 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 496 } else {
^1da177e4c3f41 Linus Torvalds 2005-04-16 497 for (j = 0; j < phg->entries; ++j) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 498 k = phg->entry[j].host_drive;
^1da177e4c3f41 Linus Torvalds 2005-04-16 499 if (k >= MAX_LDRIVES)
^1da177e4c3f41 Linus Torvalds 2005-04-16 500 continue;
^1da177e4c3f41 Linus Torvalds 2005-04-16 501 ha->hdr[k].ldr_no = phg->entry[j].log_drive;
^1da177e4c3f41 Linus Torvalds 2005-04-16 502 ha->hdr[k].rw_attribs = phg->entry[j].rw_attribs;
^1da177e4c3f41 Linus Torvalds 2005-04-16 503 ha->hdr[k].start_sec = phg->entry[j].start_sec;
^1da177e4c3f41 Linus Torvalds 2005-04-16 504 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 505 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 506 }
bb327df8326eff Christoph Hellwig 2018-12-12 507 dma_free_coherent(&ha->pdev->dev, size, buf, paddr);
^1da177e4c3f41 Linus Torvalds 2005-04-16 508
^1da177e4c3f41 Linus Torvalds 2005-04-16 509 for (i = 0; i < MAX_HDRIVES; ++i) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 510 if (!(ha->hdr[i].present))
^1da177e4c3f41 Linus Torvalds 2005-04-16 511 continue;
^1da177e4c3f41 Linus Torvalds 2005-04-16 512
3e0552eebdf621 Al Viro 2013-03-31 513 seq_printf(m,
^1da177e4c3f41 Linus Torvalds 2005-04-16 514 "\n Number: \t%-2d \tArr/Log. Drive:\t%d\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16 515 i, ha->hdr[i].ldr_no);
^1da177e4c3f41 Linus Torvalds 2005-04-16 516 flag = TRUE;
^1da177e4c3f41 Linus Torvalds 2005-04-16 517
3e0552eebdf621 Al Viro 2013-03-31 518 seq_printf(m,
^1da177e4c3f41 Linus Torvalds 2005-04-16 519 " Capacity [MB]:\t%-6d \tStart Sector: \t%d\n",
1fe6dbf4d0afba Dave Jones 2010-01-04 520 (u32)(ha->hdr[i].size/2048), ha->hdr[i].start_sec);
^1da177e4c3f41 Linus Torvalds 2005-04-16 521 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 522
3e0552eebdf621 Al Viro 2013-03-31 523 if (!flag)
91c40f24faadd9 Rasmus Villemoes 2014-12-03 524 seq_puts(m, "\n --\n");
^1da177e4c3f41 Linus Torvalds 2005-04-16 525 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 526
^1da177e4c3f41 Linus Torvalds 2005-04-16 527 /* controller events */
91c40f24faadd9 Rasmus Villemoes 2014-12-03 528 seq_puts(m, "\nController Events:\n");
^1da177e4c3f41 Linus Torvalds 2005-04-16 529
^1da177e4c3f41 Linus Torvalds 2005-04-16 530 for (id = -1;;) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 531 id = gdth_read_event(ha, id, estr);
^1da177e4c3f41 Linus Torvalds 2005-04-16 532 if (estr->event_source == 0)
^1da177e4c3f41 Linus Torvalds 2005-04-16 533 break;
45f1a41b2b2e02 Boaz Harrosh 2007-10-02 534 if (estr->event_data.eu.driver.ionode == ha->hanum &&
^1da177e4c3f41 Linus Torvalds 2005-04-16 535 estr->event_source == ES_ASYNC) {
^1da177e4c3f41 Linus Torvalds 2005-04-16 536 gdth_log_event(&estr->event_data, hrec);
5a412c38bb5bb6 Alison Schofield 2016-02-17 537
5a412c38bb5bb6 Alison Schofield 2016-02-17 538 /*
5a412c38bb5bb6 Alison Schofield 2016-02-17 539 * Elapsed seconds subtraction with unsigned operands is
5a412c38bb5bb6 Alison Schofield 2016-02-17 540 * safe from wrap around in year 2106. Executes as:
5a412c38bb5bb6 Alison Schofield 2016-02-17 541 * operand a + (2's complement operand b) + 1
5a412c38bb5bb6 Alison Schofield 2016-02-17 542 */
5a412c38bb5bb6 Alison Schofield 2016-02-17 543
5a412c38bb5bb6 Alison Schofield 2016-02-17 544 sec = (int)((u32)ktime_get_real_seconds() - estr->first_stamp);
^1da177e4c3f41 Linus Torvalds 2005-04-16 545 if (sec < 0) sec = 0;
3e0552eebdf621 Al Viro 2013-03-31 546 seq_printf(m," date- %02d:%02d:%02d\t%s\n",
^1da177e4c3f41 Linus Torvalds 2005-04-16 547 sec/3600, sec%3600/60, sec%60, hrec);
^1da177e4c3f41 Linus Torvalds 2005-04-16 548 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 549 if (id == -1)
^1da177e4c3f41 Linus Torvalds 2005-04-16 550 break;
^1da177e4c3f41 Linus Torvalds 2005-04-16 551 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 552 stop_output:
3e0552eebdf621 Al Viro 2013-03-31 553 rc = 0;
^1da177e4c3f41 Linus Torvalds 2005-04-16 554 free_fail:
^1da177e4c3f41 Linus Torvalds 2005-04-16 555 kfree(gdtcmd);
^1da177e4c3f41 Linus Torvalds 2005-04-16 556 kfree(estr);
^1da177e4c3f41 Linus Torvalds 2005-04-16 557 return rc;
^1da177e4c3f41 Linus Torvalds 2005-04-16 558 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 559

:::::: The code at line 249 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2

:::::: TO: Linus Torvalds <torvalds@xxxxxxxxxxxxxxx>
:::::: CC: Linus Torvalds <torvalds@xxxxxxxxxxxxxxx>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip