CC: [email protected] CC: [email protected] TO: Krzysztof Kozlowski <[email protected]> CC: Wolfram Sang <[email protected]>
Hi Krzysztof, First bad commit (maybe != root cause): tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 4d41ead6ead97c3730bbd186a601a64828668f01 commit: 4a2d5f663dab6614772d8e28ca190b127ba46d9d i2c: Enable compile testing for more drivers date: 7 months ago :::::: branch date: 4 hours ago :::::: commit date: 7 months ago config: microblaze-randconfig-m031-20200828 (attached as .config) compiler: microblaze-linux-gcc (GCC) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> New smatch warnings: drivers/i2c/busses/i2c-mv64xxx.c:586 mv64xxx_i2c_execute_msg() error: double unlocked 'drv_data->lock' (orig line 584) drivers/i2c/busses/i2c-mv64xxx.c:656 mv64xxx_i2c_offload_xfer() error: double unlocked 'drv_data->lock' (orig line 654) Old smatch warnings: drivers/i2c/busses/i2c-mv64xxx.c:510 mv64xxx_i2c_intr() warn: this loop depends on readl() succeeding arch/microblaze/include/asm/thread_info.h:94 current_thread_info() error: uninitialized symbol 'sp'. # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4a2d5f663dab6614772d8e28ca190b127ba46d9d git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 4a2d5f663dab6614772d8e28ca190b127ba46d9d vim +586 drivers/i2c/busses/i2c-mv64xxx.c ^1da177e4c3f415 Linus Torvalds 2005-04-16 570 ^1da177e4c3f415 Linus Torvalds 2005-04-16 571 static int eda6bee6c7e67b5 Rodolfo Giometti 2010-11-26 572 mv64xxx_i2c_execute_msg(struct mv64xxx_i2c_data *drv_data, struct i2c_msg *msg, 4243fa0bad551b8 Russell King 2013-05-16 573 int is_last) ^1da177e4c3f415 Linus Torvalds 2005-04-16 574 { ^1da177e4c3f415 Linus Torvalds 2005-04-16 575 unsigned long flags; ^1da177e4c3f415 Linus Torvalds 2005-04-16 576 ^1da177e4c3f415 Linus Torvalds 2005-04-16 577 spin_lock_irqsave(&drv_data->lock, flags); ^1da177e4c3f415 Linus Torvalds 2005-04-16 578 aa6bce5319a54c0 Russell King 2013-05-16 579 drv_data->state = MV64XXX_I2C_STATE_WAITING_FOR_START_COND; 79970db213344b4 Wolfram Sang 2014-02-13 580 eda6bee6c7e67b5 Rodolfo Giometti 2010-11-26 581 drv_data->send_stop = is_last; ^1da177e4c3f415 Linus Torvalds 2005-04-16 582 drv_data->block = 1; b0200abeba31340 Wolfram Sang 2014-02-13 583 mv64xxx_i2c_send_start(drv_data); ^1da177e4c3f415 Linus Torvalds 2005-04-16 @584 spin_unlock_irqrestore(&drv_data->lock, flags); ^1da177e4c3f415 Linus Torvalds 2005-04-16 585 ^1da177e4c3f415 Linus Torvalds 2005-04-16 @586 mv64xxx_i2c_wait_for_completion(drv_data); ^1da177e4c3f415 Linus Torvalds 2005-04-16 587 return drv_data->rc; ^1da177e4c3f415 Linus Torvalds 2005-04-16 588 } ^1da177e4c3f415 Linus Torvalds 2005-04-16 589 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 590 static void 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 591 mv64xxx_i2c_prepare_tx(struct mv64xxx_i2c_data *drv_data) 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 592 { 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 593 struct i2c_msg *msg = drv_data->msgs; 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 594 u32 buf[2]; 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 595 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 596 memcpy(buf, msg->buf, msg->len); 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 597 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 598 writel(buf[0], drv_data->reg_base + MV64XXX_I2C_REG_TX_DATA_LO); 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 599 writel(buf[1], drv_data->reg_base + MV64XXX_I2C_REG_TX_DATA_HI); 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 600 } 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 601 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 602 static int 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 603 mv64xxx_i2c_offload_xfer(struct mv64xxx_i2c_data *drv_data) 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 604 { 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 605 struct i2c_msg *msgs = drv_data->msgs; 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 606 int num = drv_data->num_msgs; 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 607 unsigned long ctrl_reg; 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 608 unsigned long flags; 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 609 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 610 spin_lock_irqsave(&drv_data->lock, flags); 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 611 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 612 /* Build transaction */ 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 613 ctrl_reg = MV64XXX_I2C_BRIDGE_CONTROL_ENABLE | 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 614 (msgs[0].addr << MV64XXX_I2C_BRIDGE_CONTROL_ADDR_SHIFT); 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 615 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 616 if (msgs[0].flags & I2C_M_TEN) 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 617 ctrl_reg |= MV64XXX_I2C_BRIDGE_CONTROL_ADDR_EXT; 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 618 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 619 /* Single write message transaction */ 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 620 if (num == 1 && !(msgs[0].flags & I2C_M_RD)) { 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 621 size_t len = msgs[0].len - 1; 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 622 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 623 ctrl_reg |= MV64XXX_I2C_BRIDGE_CONTROL_WR | 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 624 (len << MV64XXX_I2C_BRIDGE_CONTROL_TX_SIZE_SHIFT); 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 625 mv64xxx_i2c_prepare_tx(drv_data); 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 626 } 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 627 /* Single read message transaction */ 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 628 else if (num == 1 && msgs[0].flags & I2C_M_RD) { 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 629 size_t len = msgs[0].len - 1; 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 630 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 631 ctrl_reg |= MV64XXX_I2C_BRIDGE_CONTROL_RD | 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 632 (len << MV64XXX_I2C_BRIDGE_CONTROL_RX_SIZE_SHIFT); 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 633 } 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 634 /* 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 635 * Transaction with one write and one read message. This is 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 636 * guaranteed by the mv64xx_i2c_can_offload() checks. 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 637 */ 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 638 else if (num == 2) { 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 639 size_t lentx = msgs[0].len - 1; 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 640 size_t lenrx = msgs[1].len - 1; 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 641 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 642 ctrl_reg |= 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 643 MV64XXX_I2C_BRIDGE_CONTROL_RD | 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 644 MV64XXX_I2C_BRIDGE_CONTROL_WR | 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 645 (lentx << MV64XXX_I2C_BRIDGE_CONTROL_TX_SIZE_SHIFT) | 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 646 (lenrx << MV64XXX_I2C_BRIDGE_CONTROL_RX_SIZE_SHIFT) | 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 647 MV64XXX_I2C_BRIDGE_CONTROL_REPEATED_START; 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 648 mv64xxx_i2c_prepare_tx(drv_data); 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 649 } 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 650 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 651 /* Execute transaction */ 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 652 drv_data->block = 1; 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 653 writel(ctrl_reg, drv_data->reg_base + MV64XXX_I2C_REG_BRIDGE_CONTROL); 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 @654 spin_unlock_irqrestore(&drv_data->lock, flags); 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 655 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 @656 mv64xxx_i2c_wait_for_completion(drv_data); 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 657 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 658 return drv_data->rc; 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 659 } 00d8689b85a7bb3 Thomas Petazzoni 2014-12-11 660 :::::: The code at line 586 was first introduced by commit :::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2 :::::: TO: Linus Torvalds <[email protected]> :::::: CC: Linus Torvalds <[email protected]> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
