From: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
To: linux-aspeed@lists.ozlabs.org
Subject: [PATCH i2c-next v9 5/5] i2c: aspeed: Add bus idle waiting logic for multi-master use cases
Date: Thu, 1 Nov 2018 11:09:20 -0700 [thread overview]
Message-ID: <a126e4ca-69a7-ee23-4e87-e8bc4a3657ac@linux.intel.com> (raw)
In-Reply-To: <201811020154.eziM0emr%fengguang.wu@intel.com>
On 11/1/2018 10:44 AM, kbuild test robot wrote:
> Hi Jae,
>
> Thank you for the patch! Perhaps something to improve:
>
> [auto build test WARNING on wsa/i2c/for-next]
> [also build test WARNING on v4.19 next-20181101]
> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>
> url: https://github.com/0day-ci/linux/commits/Jae-Hyun-Yoo/dt-bindings-i2c-Add-bus-timeout-ms-and-retries-properties-as-common-optional/20181031-051152
> base: https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git i2c/for-next
> config: i386-allyesconfig (attached as .config)
> compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
> reproduce:
> # save the attached .config to linux build tree
> make ARCH=i386
>
> Note: it may well be a FALSE warning. FWIW you are at least aware of it now.
> http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings
>
> All warnings (new ones prefixed by >>):
>
> drivers/i2c/busses/i2c-aspeed.c: In function 'aspeed_i2c_master_xfer':
>>> drivers/i2c/busses/i2c-aspeed.c:624:210: warning: 'timeout' may be used uninitialized in this function [-Wmaybe-uninitialized]
> if (time_after(jiffies, timeout))
> ^
> drivers/i2c/busses/i2c-aspeed.c:607:16: note: 'timeout' was declared here
> unsigned long timeout;
> ^~~~~~~
>
> vim +/timeout +624 drivers/i2c/busses/i2c-aspeed.c
>
> 604
> 605 static int aspeed_i2c_check_bus_busy(struct aspeed_i2c_bus *bus)
> 606 {
> 607 unsigned long timeout;
> 608
> 609 if (bus->multi_master) {
> 610 might_sleep();
> 611 /* Initialize it only when multi_master is set */
> 612 timeout = jiffies + bus->adap.timeout;
The 'timeout' variable will be initialized only when bus->multi_master
is true to save some OPs in case this variable isn't used. The saved OPs
are not expensive but it makes a meaning because this function is called
very frequently on every master transfer.
> 613 }
> 614
> 615 for (;;) {
> 616 if (!(readl(bus->base + ASPEED_I2C_CMD_REG) &
> 617 ASPEED_I2CD_BUS_BUSY_STS))
> 618 #if IS_ENABLED(CONFIG_I2C_SLAVE)
> 619 if (bus->slave_state == ASPEED_I2C_SLAVE_STOP)
> 620 #endif
> 621 return 0;
> 622 if (!bus->multi_master)
> 623 break;
If bus->multi_master is false then it doesn't fall through so the
'timeout' variable in below will not be used when itself is
uninitialized. Also, bus->multi_master is fixed at probing time and it
doesn't change at runtime so the warning case never happens.
-Jae
> > 624 if (time_after(jiffies, timeout))
> 625 break;
> 626 usleep_range((ASPEED_I2C_BUS_BUSY_CHECK_INTERVAL_US >> 2) + 1,
> 627 ASPEED_I2C_BUS_BUSY_CHECK_INTERVAL_US);
> 628 }
> 629
> 630 return aspeed_i2c_recover_bus(bus);
> 631 }
> 632
>
> ---
> 0-DAY kernel test infrastructure Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all Intel Corporation
>
WARNING: multiple messages have this Message-ID (diff)
From: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
To: kbuild test robot <lkp@intel.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
devicetree@vger.kernel.org, linux-aspeed@lists.ozlabs.org,
Wolfram Sang <wsa@the-dreams.de>,
Andrew Jeffery <andrew@aj.id.au>,
openbmc@lists.ozlabs.org,
Brendan Higgins <brendanhiggins@google.com>,
linux-kernel@vger.kernel.org,
James Feist <james.feist@linux.intel.com>,
linux-i2c@vger.kernel.org, Rob Herring <robh+dt@kernel.org>,
Jarkko Nikula <jarkko.nikula@linux.intel.com>,
Vernon Mauery <vernon.mauery@linux.intel.com>,
linux-arm-kernel@lists.infradead.org, kbuild-all@01.org
Subject: Re: [PATCH i2c-next v9 5/5] i2c: aspeed: Add bus idle waiting logic for multi-master use cases
Date: Thu, 1 Nov 2018 11:09:20 -0700 [thread overview]
Message-ID: <a126e4ca-69a7-ee23-4e87-e8bc4a3657ac@linux.intel.com> (raw)
In-Reply-To: <201811020154.eziM0emr%fengguang.wu@intel.com>
On 11/1/2018 10:44 AM, kbuild test robot wrote:
> Hi Jae,
>
> Thank you for the patch! Perhaps something to improve:
>
> [auto build test WARNING on wsa/i2c/for-next]
> [also build test WARNING on v4.19 next-20181101]
> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>
> url: https://github.com/0day-ci/linux/commits/Jae-Hyun-Yoo/dt-bindings-i2c-Add-bus-timeout-ms-and-retries-properties-as-common-optional/20181031-051152
> base: https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git i2c/for-next
> config: i386-allyesconfig (attached as .config)
> compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
> reproduce:
> # save the attached .config to linux build tree
> make ARCH=i386
>
> Note: it may well be a FALSE warning. FWIW you are at least aware of it now.
> http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings
>
> All warnings (new ones prefixed by >>):
>
> drivers/i2c/busses/i2c-aspeed.c: In function 'aspeed_i2c_master_xfer':
>>> drivers/i2c/busses/i2c-aspeed.c:624:210: warning: 'timeout' may be used uninitialized in this function [-Wmaybe-uninitialized]
> if (time_after(jiffies, timeout))
> ^
> drivers/i2c/busses/i2c-aspeed.c:607:16: note: 'timeout' was declared here
> unsigned long timeout;
> ^~~~~~~
>
> vim +/timeout +624 drivers/i2c/busses/i2c-aspeed.c
>
> 604
> 605 static int aspeed_i2c_check_bus_busy(struct aspeed_i2c_bus *bus)
> 606 {
> 607 unsigned long timeout;
> 608
> 609 if (bus->multi_master) {
> 610 might_sleep();
> 611 /* Initialize it only when multi_master is set */
> 612 timeout = jiffies + bus->adap.timeout;
The 'timeout' variable will be initialized only when bus->multi_master
is true to save some OPs in case this variable isn't used. The saved OPs
are not expensive but it makes a meaning because this function is called
very frequently on every master transfer.
> 613 }
> 614
> 615 for (;;) {
> 616 if (!(readl(bus->base + ASPEED_I2C_CMD_REG) &
> 617 ASPEED_I2CD_BUS_BUSY_STS))
> 618 #if IS_ENABLED(CONFIG_I2C_SLAVE)
> 619 if (bus->slave_state == ASPEED_I2C_SLAVE_STOP)
> 620 #endif
> 621 return 0;
> 622 if (!bus->multi_master)
> 623 break;
If bus->multi_master is false then it doesn't fall through so the
'timeout' variable in below will not be used when itself is
uninitialized. Also, bus->multi_master is fixed at probing time and it
doesn't change at runtime so the warning case never happens.
-Jae
> > 624 if (time_after(jiffies, timeout))
> 625 break;
> 626 usleep_range((ASPEED_I2C_BUS_BUSY_CHECK_INTERVAL_US >> 2) + 1,
> 627 ASPEED_I2C_BUS_BUSY_CHECK_INTERVAL_US);
> 628 }
> 629
> 630 return aspeed_i2c_recover_bus(bus);
> 631 }
> 632
>
> ---
> 0-DAY kernel test infrastructure Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all Intel Corporation
>
WARNING: multiple messages have this Message-ID (diff)
From: jae.hyun.yoo@linux.intel.com (Jae Hyun Yoo)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH i2c-next v9 5/5] i2c: aspeed: Add bus idle waiting logic for multi-master use cases
Date: Thu, 1 Nov 2018 11:09:20 -0700 [thread overview]
Message-ID: <a126e4ca-69a7-ee23-4e87-e8bc4a3657ac@linux.intel.com> (raw)
In-Reply-To: <201811020154.eziM0emr%fengguang.wu@intel.com>
On 11/1/2018 10:44 AM, kbuild test robot wrote:
> Hi Jae,
>
> Thank you for the patch! Perhaps something to improve:
>
> [auto build test WARNING on wsa/i2c/for-next]
> [also build test WARNING on v4.19 next-20181101]
> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>
> url: https://github.com/0day-ci/linux/commits/Jae-Hyun-Yoo/dt-bindings-i2c-Add-bus-timeout-ms-and-retries-properties-as-common-optional/20181031-051152
> base: https://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git i2c/for-next
> config: i386-allyesconfig (attached as .config)
> compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
> reproduce:
> # save the attached .config to linux build tree
> make ARCH=i386
>
> Note: it may well be a FALSE warning. FWIW you are at least aware of it now.
> http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings
>
> All warnings (new ones prefixed by >>):
>
> drivers/i2c/busses/i2c-aspeed.c: In function 'aspeed_i2c_master_xfer':
>>> drivers/i2c/busses/i2c-aspeed.c:624:210: warning: 'timeout' may be used uninitialized in this function [-Wmaybe-uninitialized]
> if (time_after(jiffies, timeout))
> ^
> drivers/i2c/busses/i2c-aspeed.c:607:16: note: 'timeout' was declared here
> unsigned long timeout;
> ^~~~~~~
>
> vim +/timeout +624 drivers/i2c/busses/i2c-aspeed.c
>
> 604
> 605 static int aspeed_i2c_check_bus_busy(struct aspeed_i2c_bus *bus)
> 606 {
> 607 unsigned long timeout;
> 608
> 609 if (bus->multi_master) {
> 610 might_sleep();
> 611 /* Initialize it only when multi_master is set */
> 612 timeout = jiffies + bus->adap.timeout;
The 'timeout' variable will be initialized only when bus->multi_master
is true to save some OPs in case this variable isn't used. The saved OPs
are not expensive but it makes a meaning because this function is called
very frequently on every master transfer.
> 613 }
> 614
> 615 for (;;) {
> 616 if (!(readl(bus->base + ASPEED_I2C_CMD_REG) &
> 617 ASPEED_I2CD_BUS_BUSY_STS))
> 618 #if IS_ENABLED(CONFIG_I2C_SLAVE)
> 619 if (bus->slave_state == ASPEED_I2C_SLAVE_STOP)
> 620 #endif
> 621 return 0;
> 622 if (!bus->multi_master)
> 623 break;
If bus->multi_master is false then it doesn't fall through so the
'timeout' variable in below will not be used when itself is
uninitialized. Also, bus->multi_master is fixed at probing time and it
doesn't change at runtime so the warning case never happens.
-Jae
> > 624 if (time_after(jiffies, timeout))
> 625 break;
> 626 usleep_range((ASPEED_I2C_BUS_BUSY_CHECK_INTERVAL_US >> 2) + 1,
> 627 ASPEED_I2C_BUS_BUSY_CHECK_INTERVAL_US);
> 628 }
> 629
> 630 return aspeed_i2c_recover_bus(bus);
> 631 }
> 632
>
> ---
> 0-DAY kernel test infrastructure Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all Intel Corporation
>
next prev parent reply other threads:[~2018-11-01 18:09 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-30 21:09 [PATCH i2c-next v9 0/5] i2c: aspeed: Add bus idle waiting logic for multi-master use cases Jae Hyun Yoo
2018-10-30 21:09 ` Jae Hyun Yoo
2018-10-30 21:09 ` Jae Hyun Yoo
2018-10-30 21:09 ` [PATCH i2c-next v9 1/5] dt-bindings: i2c: Add 'bus-timeout-ms' and '#retries' properties as common optional Jae Hyun Yoo
2018-10-30 21:09 ` Jae Hyun Yoo
2018-10-30 21:09 ` Jae Hyun Yoo
2018-11-28 21:54 ` Wolfram Sang
2018-11-28 21:54 ` Wolfram Sang
2018-11-28 21:54 ` Wolfram Sang
2018-11-28 22:36 ` Jae Hyun Yoo
2018-11-28 22:36 ` Jae Hyun Yoo
2018-11-28 22:36 ` Jae Hyun Yoo
2018-10-30 21:09 ` [PATCH i2c-next v9 2/5] i2c: core: Add support reading of 'bus-timeout-ms' and '#retries' properties Jae Hyun Yoo
2018-10-30 21:09 ` Jae Hyun Yoo
2018-10-30 21:09 ` Jae Hyun Yoo
2018-10-30 21:09 ` [PATCH i2c-next v9 3/5] dt-bindings: i2c: aspeed: Add 'bus-timeout-ms' property as an optional property Jae Hyun Yoo
2018-10-30 21:09 ` Jae Hyun Yoo
2018-10-30 21:09 ` Jae Hyun Yoo
2018-10-30 21:09 ` [PATCH i2c-next v9 4/5] i2c: aspeed: Remove hard-coded bus timeout value setting Jae Hyun Yoo
2018-10-30 21:09 ` Jae Hyun Yoo
2018-10-30 21:09 ` Jae Hyun Yoo
2018-10-30 21:09 ` [PATCH i2c-next v9 5/5] i2c: aspeed: Add bus idle waiting logic for multi-master use cases Jae Hyun Yoo
2018-10-30 21:09 ` Jae Hyun Yoo
2018-10-30 21:09 ` Jae Hyun Yoo
2018-10-30 22:22 ` kbuild test robot
2018-10-30 22:22 ` kbuild test robot
2018-10-30 22:22 ` kbuild test robot
2018-10-30 22:22 ` kbuild test robot
2018-10-30 23:04 ` Jae Hyun Yoo
2018-10-30 23:04 ` Jae Hyun Yoo
2018-10-30 23:04 ` Jae Hyun Yoo
2018-11-01 17:44 ` kbuild test robot
2018-11-01 17:44 ` kbuild test robot
2018-11-01 17:44 ` kbuild test robot
2018-11-01 17:44 ` kbuild test robot
2018-11-01 18:09 ` Jae Hyun Yoo [this message]
2018-11-01 18:09 ` Jae Hyun Yoo
2018-11-01 18:09 ` Jae Hyun Yoo
2018-11-28 21:54 ` Wolfram Sang
2018-11-28 21:54 ` Wolfram Sang
2018-11-28 21:54 ` Wolfram Sang
2018-11-28 22:30 ` Jae Hyun Yoo
2018-11-28 22:30 ` Jae Hyun Yoo
2018-11-28 22:30 ` Jae Hyun Yoo
2019-01-15 22:47 ` [PATCH i2c-next v9 0/5] " Wolfram Sang
2019-01-15 22:47 ` Wolfram Sang
2019-01-15 22:47 ` Wolfram Sang
2019-01-15 23:32 ` Jae Hyun Yoo
2019-01-15 23:32 ` Jae Hyun Yoo
2019-01-15 23:32 ` Jae Hyun Yoo
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=a126e4ca-69a7-ee23-4e87-e8bc4a3657ac@linux.intel.com \
--to=jae.hyun.yoo@linux.intel.com \
--cc=linux-aspeed@lists.ozlabs.org \
/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.