mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: matthew.gerlach@linux.intel.com
To: kbuild test robot <lkp@intel.com>
Cc: Tobias Klauser <tklauser@distanz.ch>,
	kbuild-all@01.org, Alan Tull <atull@kernel.org>,
	Moritz Fischer <moritz.fischer@ettus.com>,
	linux-fpga@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] fpga: allow to compile-test Altera FPGA bridge drivers
Date: Tue, 18 Apr 2017 08:27:15 -0700 (PDT)	[thread overview]
Message-ID: <alpine.DEB.2.20.1704180813140.2186@mgerlach-VirtualBox> (raw)
In-Reply-To: <201704121352.3vqxa89x%fengguang.wu@intel.com>



On Wed, 12 Apr 2017, kbuild test robot wrote:

> Hi Tobias,


Hi Tobias,

This is very interesting issue brought up by your patch that turns
on COMPILE_TEST in drivers/fpga/Kconfig.  See my comment below.

Matthew Gerlach

>
> [auto build test WARNING on linus/master]
> [also build test WARNING on v4.11-rc6 next-20170411]
> [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/Tobias-Klauser/fpga-allow-to-compile-test-Altera-FPGA-bridge-drivers/20170411-181401
> config: m32r-allmodconfig (attached as .config)
> compiler: m32r-linux-gcc (GCC) 6.2.0
> reproduce:
>        wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>        chmod +x ~/bin/make.cross
>        # save the attached .config to linux build tree
>        make.cross ARCH=m32r
>
> All warnings (new ones prefixed by >>):
>
>   In file included from include/linux/printk.h:329:0,
>                    from include/linux/kernel.h:13,
>                    from include/linux/delay.h:21,
>                    from drivers/fpga/altera-freeze-bridge.c:18:
>   drivers/fpga/altera-freeze-bridge.c: In function 'altera_freeze_br_do_freeze':
>>> drivers/fpga/altera-freeze-bridge.c:107:15: warning: format '%d' expects argument of type 'int', but argument 6 has type 'long unsigned int' [-Wformat=]
>     dev_dbg(dev, "%s %d %d\n", __func__, status, readl(csr_ctrl_addr));
>                  ^

The line above compiles cleanly for x86 and 32-bit ARM.  Interestingly, 
the variable, status, is declared locally as an u32 and is assigned by a
call to readl(), and there is no warning.  On x86 and 32-bit arm, readl(), 
is defined as returning u32, but on this m32r processor, readl() returns 
unsigned long, thus the warning.

A possilbe fix to this warning is to declare another local u32, ctrl, and
assign a value with a call to readl().  In other words, mimic what is 
done with the variable, status.  While this would get rid of the 
warning, I can't help but think there is either a compiler problem or a 
problem with m32r.


>   include/linux/dynamic_debug.h:134:39: note: in definition of macro 'dynamic_dev_dbg'
>      __dynamic_dev_dbg(&descriptor, dev, fmt, \
>                                          ^~~
>>> drivers/fpga/altera-freeze-bridge.c:107:2: note: in expansion of macro 'dev_dbg'
>     dev_dbg(dev, "%s %d %d\n", __func__, status, readl(csr_ctrl_addr));
>     ^~~~~~~
>   drivers/fpga/altera-freeze-bridge.c: In function 'altera_freeze_br_do_unfreeze':
>   drivers/fpga/altera-freeze-bridge.c:144:15: warning: format '%d' expects argument of type 'int', but argument 6 has type 'long unsigned int' [-Wformat=]
>     dev_dbg(dev, "%s %d %d\n", __func__, status, readl(csr_ctrl_addr));
>                  ^
>   include/linux/dynamic_debug.h:134:39: note: in definition of macro 'dynamic_dev_dbg'
>      __dynamic_dev_dbg(&descriptor, dev, fmt, \
>                                          ^~~
>   drivers/fpga/altera-freeze-bridge.c:144:2: note: in expansion of macro 'dev_dbg'
>     dev_dbg(dev, "%s %d %d\n", __func__, status, readl(csr_ctrl_addr));
>     ^~~~~~~
>   drivers/fpga/altera-freeze-bridge.c:162:15: warning: format '%d' expects argument of type 'int', but argument 6 has type 'long unsigned int' [-Wformat=]
>     dev_dbg(dev, "%s %d %d\n", __func__, status, readl(csr_ctrl_addr));
>                  ^
>   include/linux/dynamic_debug.h:134:39: note: in definition of macro 'dynamic_dev_dbg'
>      __dynamic_dev_dbg(&descriptor, dev, fmt, \
>                                          ^~~
>   drivers/fpga/altera-freeze-bridge.c:162:2: note: in expansion of macro 'dev_dbg'
>     dev_dbg(dev, "%s %d %d\n", __func__, status, readl(csr_ctrl_addr));
>     ^~~~~~~
>
> vim +107 drivers/fpga/altera-freeze-bridge.c
>
> ca24a648 Alan Tull 2016-11-01   12   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
> ca24a648 Alan Tull 2016-11-01   13   * more details.
> ca24a648 Alan Tull 2016-11-01   14   *
> ca24a648 Alan Tull 2016-11-01   15   * You should have received a copy of the GNU General Public License along with
> ca24a648 Alan Tull 2016-11-01   16   * this program.  If not, see <http://www.gnu.org/licenses/>.
> ca24a648 Alan Tull 2016-11-01   17   */
> ca24a648 Alan Tull 2016-11-01  @18  #include <linux/delay.h>
> ca24a648 Alan Tull 2016-11-01   19  #include <linux/io.h>
> ca24a648 Alan Tull 2016-11-01   20  #include <linux/kernel.h>
> ca24a648 Alan Tull 2016-11-01   21  #include <linux/of_device.h>
> ca24a648 Alan Tull 2016-11-01   22  #include <linux/module.h>
> ca24a648 Alan Tull 2016-11-01   23  #include <linux/fpga/fpga-bridge.h>
> ca24a648 Alan Tull 2016-11-01   24
> ca24a648 Alan Tull 2016-11-01   25  #define FREEZE_CSR_STATUS_OFFSET		0
> ca24a648 Alan Tull 2016-11-01   26  #define FREEZE_CSR_CTRL_OFFSET			4
> ca24a648 Alan Tull 2016-11-01   27  #define FREEZE_CSR_ILLEGAL_REQ_OFFSET		8
> ca24a648 Alan Tull 2016-11-01   28  #define FREEZE_CSR_REG_VERSION			12
> ca24a648 Alan Tull 2016-11-01   29
> ca24a648 Alan Tull 2016-11-01   30  #define FREEZE_CSR_SUPPORTED_VERSION		2
> ca24a648 Alan Tull 2016-11-01   31
> ca24a648 Alan Tull 2016-11-01   32  #define FREEZE_CSR_STATUS_FREEZE_REQ_DONE	BIT(0)
> ca24a648 Alan Tull 2016-11-01   33  #define FREEZE_CSR_STATUS_UNFREEZE_REQ_DONE	BIT(1)
> ca24a648 Alan Tull 2016-11-01   34
> ca24a648 Alan Tull 2016-11-01   35  #define FREEZE_CSR_CTRL_FREEZE_REQ		BIT(0)
> ca24a648 Alan Tull 2016-11-01   36  #define FREEZE_CSR_CTRL_RESET_REQ		BIT(1)
> ca24a648 Alan Tull 2016-11-01   37  #define FREEZE_CSR_CTRL_UNFREEZE_REQ		BIT(2)
> ca24a648 Alan Tull 2016-11-01   38
> ca24a648 Alan Tull 2016-11-01   39  #define FREEZE_BRIDGE_NAME			"freeze"
> ca24a648 Alan Tull 2016-11-01   40
> ca24a648 Alan Tull 2016-11-01   41  struct altera_freeze_br_data {
> ca24a648 Alan Tull 2016-11-01   42  	struct device *dev;
> ca24a648 Alan Tull 2016-11-01   43  	void __iomem *base_addr;
> ca24a648 Alan Tull 2016-11-01   44  	bool enable;
> ca24a648 Alan Tull 2016-11-01   45  };
> ca24a648 Alan Tull 2016-11-01   46
> ca24a648 Alan Tull 2016-11-01   47  /*
> ca24a648 Alan Tull 2016-11-01   48   * Poll status until status bit is set or we have a timeout.
> ca24a648 Alan Tull 2016-11-01   49   */
> ca24a648 Alan Tull 2016-11-01   50  static int altera_freeze_br_req_ack(struct altera_freeze_br_data *priv,
> ca24a648 Alan Tull 2016-11-01   51  				    u32 timeout, u32 req_ack)
> ca24a648 Alan Tull 2016-11-01   52  {
> ca24a648 Alan Tull 2016-11-01   53  	struct device *dev = priv->dev;
> ca24a648 Alan Tull 2016-11-01   54  	void __iomem *csr_illegal_req_addr = priv->base_addr +
> ca24a648 Alan Tull 2016-11-01   55  					     FREEZE_CSR_ILLEGAL_REQ_OFFSET;
> ca24a648 Alan Tull 2016-11-01   56  	u32 status, illegal, ctrl;
> ca24a648 Alan Tull 2016-11-01   57  	int ret = -ETIMEDOUT;
> ca24a648 Alan Tull 2016-11-01   58
> ca24a648 Alan Tull 2016-11-01   59  	do {
> ca24a648 Alan Tull 2016-11-01   60  		illegal = readl(csr_illegal_req_addr);
> ca24a648 Alan Tull 2016-11-01   61  		if (illegal) {
> ca24a648 Alan Tull 2016-11-01   62  			dev_err(dev, "illegal request detected 0x%x", illegal);
> ca24a648 Alan Tull 2016-11-01   63
> ca24a648 Alan Tull 2016-11-01   64  			writel(1, csr_illegal_req_addr);
> ca24a648 Alan Tull 2016-11-01   65
> ca24a648 Alan Tull 2016-11-01   66  			illegal = readl(csr_illegal_req_addr);
> ca24a648 Alan Tull 2016-11-01   67  			if (illegal)
> ca24a648 Alan Tull 2016-11-01   68  				dev_err(dev, "illegal request not cleared 0x%x",
> ca24a648 Alan Tull 2016-11-01   69  					illegal);
> ca24a648 Alan Tull 2016-11-01   70
> ca24a648 Alan Tull 2016-11-01   71  			ret = -EINVAL;
> ca24a648 Alan Tull 2016-11-01   72  			break;
> ca24a648 Alan Tull 2016-11-01   73  		}
> ca24a648 Alan Tull 2016-11-01   74
> ca24a648 Alan Tull 2016-11-01   75  		status = readl(priv->base_addr + FREEZE_CSR_STATUS_OFFSET);
> ca24a648 Alan Tull 2016-11-01   76  		dev_dbg(dev, "%s %x %x\n", __func__, status, req_ack);
> ca24a648 Alan Tull 2016-11-01   77  		status &= req_ack;
> ca24a648 Alan Tull 2016-11-01   78  		if (status) {
> ca24a648 Alan Tull 2016-11-01   79  			ctrl = readl(priv->base_addr + FREEZE_CSR_CTRL_OFFSET);
> ca24a648 Alan Tull 2016-11-01   80  			dev_dbg(dev, "%s request %x acknowledged %x %x\n",
> ca24a648 Alan Tull 2016-11-01   81  				__func__, req_ack, status, ctrl);
> ca24a648 Alan Tull 2016-11-01   82  			ret = 0;
> ca24a648 Alan Tull 2016-11-01   83  			break;
> ca24a648 Alan Tull 2016-11-01   84  		}
> ca24a648 Alan Tull 2016-11-01   85
> ca24a648 Alan Tull 2016-11-01   86  		udelay(1);
> ca24a648 Alan Tull 2016-11-01   87  	} while (timeout--);
> ca24a648 Alan Tull 2016-11-01   88
> ca24a648 Alan Tull 2016-11-01   89  	if (ret == -ETIMEDOUT)
> ca24a648 Alan Tull 2016-11-01   90  		dev_err(dev, "%s timeout waiting for 0x%x\n",
> ca24a648 Alan Tull 2016-11-01   91  			__func__, req_ack);
> ca24a648 Alan Tull 2016-11-01   92
> ca24a648 Alan Tull 2016-11-01   93  	return ret;
> ca24a648 Alan Tull 2016-11-01   94  }
> ca24a648 Alan Tull 2016-11-01   95
> ca24a648 Alan Tull 2016-11-01   96  static int altera_freeze_br_do_freeze(struct altera_freeze_br_data *priv,
> ca24a648 Alan Tull 2016-11-01   97  				      u32 timeout)
> ca24a648 Alan Tull 2016-11-01   98  {
> ca24a648 Alan Tull 2016-11-01   99  	struct device *dev = priv->dev;
> ca24a648 Alan Tull 2016-11-01  100  	void __iomem *csr_ctrl_addr = priv->base_addr +
> ca24a648 Alan Tull 2016-11-01  101  				      FREEZE_CSR_CTRL_OFFSET;
> ca24a648 Alan Tull 2016-11-01  102  	u32 status;
> ca24a648 Alan Tull 2016-11-01  103  	int ret;
> ca24a648 Alan Tull 2016-11-01  104
> ca24a648 Alan Tull 2016-11-01  105  	status = readl(priv->base_addr + FREEZE_CSR_STATUS_OFFSET);
> ca24a648 Alan Tull 2016-11-01  106
> ca24a648 Alan Tull 2016-11-01 @107  	dev_dbg(dev, "%s %d %d\n", __func__, status, readl(csr_ctrl_addr));
> ca24a648 Alan Tull 2016-11-01  108
> ca24a648 Alan Tull 2016-11-01  109  	if (status & FREEZE_CSR_STATUS_FREEZE_REQ_DONE) {
> ca24a648 Alan Tull 2016-11-01  110  		dev_dbg(dev, "%s bridge already disabled %d\n",
>
> :::::: The code at line 107 was first introduced by commit
> :::::: ca24a648f535a02b4163ca4f4d2e51869f155a3a fpga: add altera freeze bridge support
>
> :::::: TO: Alan Tull <atull@opensource.altera.com>
> :::::: CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
>

  reply	other threads:[~2017-04-18 15:27 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-11  9:22 Tobias Klauser
2017-04-11 14:27 ` Alan Tull
2017-04-11 14:35   ` Tobias Klauser
2017-04-11 15:21     ` Alan Tull
2017-04-12  6:51       ` Tobias Klauser
2017-04-12  5:47 ` kbuild test robot
2017-04-18 15:27   ` matthew.gerlach [this message]
2017-04-19 12:07     ` Tobias Klauser

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=alpine.DEB.2.20.1704180813140.2186@mgerlach-VirtualBox \
    --to=matthew.gerlach@linux.intel.com \
    --cc=atull@kernel.org \
    --cc=kbuild-all@01.org \
    --cc=linux-fpga@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=moritz.fischer@ettus.com \
    --cc=tklauser@distanz.ch \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®