All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: arch/mips/sgi-ip27/ip27-hubio.c:30:15: warning: no previous prototype for 'hub_pio_map'
Date: Wed, 09 Dec 2020 19:41:56 +0800	[thread overview]
Message-ID: <202012091948.WAXF28rh-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 14606 bytes --]

Hi Thomas,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   a68a0262abdaa251e12c53715f48e698a18ef402
commit: b78e9d63a3b6307b6b786e6ba189d3978b60ceb5 MIPS: SGI-IP27: use asm/sn/agent.h for including HUB related stuff
date:   11 months ago
config: mips-randconfig-r031-20201209 (attached as .config)
compiler: mips64-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=b78e9d63a3b6307b6b786e6ba189d3978b60ceb5
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout b78e9d63a3b6307b6b786e6ba189d3978b60ceb5
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=mips 

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

All warnings (new ones prefixed by >>):

>> arch/mips/sgi-ip27/ip27-hubio.c:30:15: warning: no previous prototype for 'hub_pio_map' [-Wmissing-prototypes]
      30 | unsigned long hub_pio_map(nasid_t nasid, xwidgetnum_t widget,
         |               ^~~~~~~~~~~
>> arch/mips/sgi-ip27/ip27-hubio.c:175:6: warning: no previous prototype for 'hub_pio_init' [-Wmissing-prototypes]
     175 | void hub_pio_init(nasid_t nasid)
         |      ^~~~~~~~~~~~

vim +/hub_pio_map +30 arch/mips/sgi-ip27/ip27-hubio.c

^1da177e4c3f41 Linus Torvalds      2005-04-16   20  
^1da177e4c3f41 Linus Torvalds      2005-04-16   21  /**
^1da177e4c3f41 Linus Torvalds      2005-04-16   22   * hub_pio_map	-  establish a HUB PIO mapping
^1da177e4c3f41 Linus Torvalds      2005-04-16   23   *
^1da177e4c3f41 Linus Torvalds      2005-04-16   24   * @hub:	hub to perform PIO mapping on
^1da177e4c3f41 Linus Torvalds      2005-04-16   25   * @widget:	widget ID to perform PIO mapping for
^1da177e4c3f41 Linus Torvalds      2005-04-16   26   * @xtalk_addr: xtalk_address that needs to be mapped
^1da177e4c3f41 Linus Torvalds      2005-04-16   27   * @size:	size of the PIO mapping
^1da177e4c3f41 Linus Torvalds      2005-04-16   28   *
^1da177e4c3f41 Linus Torvalds      2005-04-16   29   **/
4bf841ebf17aaa Thomas Bogendoerfer 2019-10-03  @30  unsigned long hub_pio_map(nasid_t nasid, xwidgetnum_t widget,
^1da177e4c3f41 Linus Torvalds      2005-04-16   31  			  unsigned long xtalk_addr, size_t size)
^1da177e4c3f41 Linus Torvalds      2005-04-16   32  {
^1da177e4c3f41 Linus Torvalds      2005-04-16   33  	unsigned i;
^1da177e4c3f41 Linus Torvalds      2005-04-16   34  
^1da177e4c3f41 Linus Torvalds      2005-04-16   35  	/* use small-window mapping if possible */
^1da177e4c3f41 Linus Torvalds      2005-04-16   36  	if ((xtalk_addr % SWIN_SIZE) + size <= SWIN_SIZE)
^1da177e4c3f41 Linus Torvalds      2005-04-16   37  		return NODE_SWIN_BASE(nasid, widget) + (xtalk_addr % SWIN_SIZE);
^1da177e4c3f41 Linus Torvalds      2005-04-16   38  
^1da177e4c3f41 Linus Torvalds      2005-04-16   39  	if ((xtalk_addr % BWIN_SIZE) + size > BWIN_SIZE) {
^1da177e4c3f41 Linus Torvalds      2005-04-16   40  		printk(KERN_WARNING "PIO mapping at hub %d widget %d addr 0x%lx"
^1da177e4c3f41 Linus Torvalds      2005-04-16   41  				" too big (%ld)\n",
^1da177e4c3f41 Linus Torvalds      2005-04-16   42  				nasid, widget, xtalk_addr, size);
^1da177e4c3f41 Linus Torvalds      2005-04-16   43  		return 0;
^1da177e4c3f41 Linus Torvalds      2005-04-16   44  	}
^1da177e4c3f41 Linus Torvalds      2005-04-16   45  
^1da177e4c3f41 Linus Torvalds      2005-04-16   46  	xtalk_addr &= ~(BWIN_SIZE-1);
^1da177e4c3f41 Linus Torvalds      2005-04-16   47  	for (i = 0; i < HUB_NUM_BIG_WINDOW; i++) {
4bf841ebf17aaa Thomas Bogendoerfer 2019-10-03   48  		if (test_and_set_bit(i, hub_data(nasid)->h_bigwin_used))
^1da177e4c3f41 Linus Torvalds      2005-04-16   49  			continue;
^1da177e4c3f41 Linus Torvalds      2005-04-16   50  
^1da177e4c3f41 Linus Torvalds      2005-04-16   51  		/*
^1da177e4c3f41 Linus Torvalds      2005-04-16   52  		 * The code below does a PIO write to setup an ITTE entry.
^1da177e4c3f41 Linus Torvalds      2005-04-16   53  		 *
^1da177e4c3f41 Linus Torvalds      2005-04-16   54  		 * We need to prevent other CPUs from seeing our updated
^1da177e4c3f41 Linus Torvalds      2005-04-16   55  		 * memory shadow of the ITTE (in the piomap) until the ITTE
^1da177e4c3f41 Linus Torvalds      2005-04-16   56  		 * entry is actually set up; otherwise, another CPU might
^1da177e4c3f41 Linus Torvalds      2005-04-16   57  		 * attempt a PIO prematurely.
^1da177e4c3f41 Linus Torvalds      2005-04-16   58  		 *
^1da177e4c3f41 Linus Torvalds      2005-04-16   59  		 * Also, the only way we can know that an entry has been
^1da177e4c3f41 Linus Torvalds      2005-04-16   60  		 * received  by the hub and can be used by future PIO reads/
^1da177e4c3f41 Linus Torvalds      2005-04-16   61  		 * writes is by reading back the ITTE entry after writing it.
^1da177e4c3f41 Linus Torvalds      2005-04-16   62  		 *
^1da177e4c3f41 Linus Torvalds      2005-04-16   63  		 * For these two reasons, we PIO read back the ITTE entry
^1da177e4c3f41 Linus Torvalds      2005-04-16   64  		 * after we write it.
^1da177e4c3f41 Linus Torvalds      2005-04-16   65  		 */
^1da177e4c3f41 Linus Torvalds      2005-04-16   66  		IIO_ITTE_PUT(nasid, i, HUB_PIO_MAP_TO_MEM, widget, xtalk_addr);
db0e7d4e42b055 Thomas Bogendoerfer 2019-02-19   67  		__raw_readq(IIO_ITTE_GET(nasid, i));
^1da177e4c3f41 Linus Torvalds      2005-04-16   68  
^1da177e4c3f41 Linus Torvalds      2005-04-16   69  		return NODE_BWIN_BASE(nasid, widget) + (xtalk_addr % BWIN_SIZE);
^1da177e4c3f41 Linus Torvalds      2005-04-16   70  	}
^1da177e4c3f41 Linus Torvalds      2005-04-16   71  
^1da177e4c3f41 Linus Torvalds      2005-04-16   72  	printk(KERN_WARNING "unable to establish PIO mapping for at"
^1da177e4c3f41 Linus Torvalds      2005-04-16   73  			" hub %d widget %d addr 0x%lx\n",
^1da177e4c3f41 Linus Torvalds      2005-04-16   74  			nasid, widget, xtalk_addr);
^1da177e4c3f41 Linus Torvalds      2005-04-16   75  	return 0;
^1da177e4c3f41 Linus Torvalds      2005-04-16   76  }
^1da177e4c3f41 Linus Torvalds      2005-04-16   77  
^1da177e4c3f41 Linus Torvalds      2005-04-16   78  
^1da177e4c3f41 Linus Torvalds      2005-04-16   79  /*
^1da177e4c3f41 Linus Torvalds      2005-04-16   80   * hub_setup_prb(nasid, prbnum, credits, conveyor)
^1da177e4c3f41 Linus Torvalds      2005-04-16   81   *
^1da177e4c3f41 Linus Torvalds      2005-04-16   82   *	Put a PRB into fire-and-forget mode if conveyor isn't set.  Otherwise,
^1da177e4c3f41 Linus Torvalds      2005-04-16   83   *	put it into conveyor belt mode with the specified number of credits.
^1da177e4c3f41 Linus Torvalds      2005-04-16   84   */
^1da177e4c3f41 Linus Torvalds      2005-04-16   85  static void hub_setup_prb(nasid_t nasid, int prbnum, int credits)
^1da177e4c3f41 Linus Torvalds      2005-04-16   86  {
^1da177e4c3f41 Linus Torvalds      2005-04-16   87  	iprb_t prb;
^1da177e4c3f41 Linus Torvalds      2005-04-16   88  	int prb_offset;
^1da177e4c3f41 Linus Torvalds      2005-04-16   89  
^1da177e4c3f41 Linus Torvalds      2005-04-16   90  	/*
^1da177e4c3f41 Linus Torvalds      2005-04-16   91  	 * Get the current register value.
^1da177e4c3f41 Linus Torvalds      2005-04-16   92  	 */
^1da177e4c3f41 Linus Torvalds      2005-04-16   93  	prb_offset = IIO_IOPRB(prbnum);
^1da177e4c3f41 Linus Torvalds      2005-04-16   94  	prb.iprb_regval = REMOTE_HUB_L(nasid, prb_offset);
^1da177e4c3f41 Linus Torvalds      2005-04-16   95  
^1da177e4c3f41 Linus Torvalds      2005-04-16   96  	/*
^1da177e4c3f41 Linus Torvalds      2005-04-16   97  	 * Clear out some fields.
^1da177e4c3f41 Linus Torvalds      2005-04-16   98  	 */
^1da177e4c3f41 Linus Torvalds      2005-04-16   99  	prb.iprb_ovflow = 1;
^1da177e4c3f41 Linus Torvalds      2005-04-16  100  	prb.iprb_bnakctr = 0;
^1da177e4c3f41 Linus Torvalds      2005-04-16  101  	prb.iprb_anakctr = 0;
^1da177e4c3f41 Linus Torvalds      2005-04-16  102  
^1da177e4c3f41 Linus Torvalds      2005-04-16  103  	/*
^1da177e4c3f41 Linus Torvalds      2005-04-16  104  	 * Enable or disable fire-and-forget mode.
^1da177e4c3f41 Linus Torvalds      2005-04-16  105  	 */
^1da177e4c3f41 Linus Torvalds      2005-04-16  106  	prb.iprb_ff = force_fire_and_forget ? 1 : 0;
^1da177e4c3f41 Linus Torvalds      2005-04-16  107  
^1da177e4c3f41 Linus Torvalds      2005-04-16  108  	/*
87fd4e2692a2ad Andrea Gelmini      2016-05-21  109  	 * Set the appropriate number of PIO credits for the widget.
^1da177e4c3f41 Linus Torvalds      2005-04-16  110  	 */
^1da177e4c3f41 Linus Torvalds      2005-04-16  111  	prb.iprb_xtalkctr = credits;
^1da177e4c3f41 Linus Torvalds      2005-04-16  112  
^1da177e4c3f41 Linus Torvalds      2005-04-16  113  	/*
^1da177e4c3f41 Linus Torvalds      2005-04-16  114  	 * Store the new value to the register.
^1da177e4c3f41 Linus Torvalds      2005-04-16  115  	 */
^1da177e4c3f41 Linus Torvalds      2005-04-16  116  	REMOTE_HUB_S(nasid, prb_offset, prb.iprb_regval);
^1da177e4c3f41 Linus Torvalds      2005-04-16  117  }
^1da177e4c3f41 Linus Torvalds      2005-04-16  118  
^1da177e4c3f41 Linus Torvalds      2005-04-16  119  /**
^1da177e4c3f41 Linus Torvalds      2005-04-16  120   * hub_set_piomode  -  set pio mode for a given hub
^1da177e4c3f41 Linus Torvalds      2005-04-16  121   *
^1da177e4c3f41 Linus Torvalds      2005-04-16  122   * @nasid:	physical node ID for the hub in question
^1da177e4c3f41 Linus Torvalds      2005-04-16  123   *
^1da177e4c3f41 Linus Torvalds      2005-04-16  124   * Put the hub into either "PIO conveyor belt" mode or "fire-and-forget" mode.
^1da177e4c3f41 Linus Torvalds      2005-04-16  125   * To do this, we have to make absolutely sure that no PIOs are in progress
^1da177e4c3f41 Linus Torvalds      2005-04-16  126   * so we turn off access to all widgets for the duration of the function.
^1da177e4c3f41 Linus Torvalds      2005-04-16  127   *
^1da177e4c3f41 Linus Torvalds      2005-04-16  128   * XXX - This code should really check what kind of widget we're talking
^1da177e4c3f41 Linus Torvalds      2005-04-16  129   * to.	Bridges can only handle three requests, but XG will do more.
^1da177e4c3f41 Linus Torvalds      2005-04-16  130   * How many can crossbow handle to widget 0?  We're assuming 1.
^1da177e4c3f41 Linus Torvalds      2005-04-16  131   *
^1da177e4c3f41 Linus Torvalds      2005-04-16  132   * XXX - There is a bug in the crossbow that link reset PIOs do not
^1da177e4c3f41 Linus Torvalds      2005-04-16  133   * return write responses.  The easiest solution to this problem is to
^1da177e4c3f41 Linus Torvalds      2005-04-16  134   * leave widget 0 (xbow) in fire-and-forget mode at all times.	This
^1da177e4c3f41 Linus Torvalds      2005-04-16  135   * only affects pio's to xbow registers, which should be rare.
^1da177e4c3f41 Linus Torvalds      2005-04-16  136   **/
^1da177e4c3f41 Linus Torvalds      2005-04-16  137  static void hub_set_piomode(nasid_t nasid)
^1da177e4c3f41 Linus Torvalds      2005-04-16  138  {
db0e7d4e42b055 Thomas Bogendoerfer 2019-02-19  139  	u64 ii_iowa;
^1da177e4c3f41 Linus Torvalds      2005-04-16  140  	hubii_wcr_t ii_wcr;
^1da177e4c3f41 Linus Torvalds      2005-04-16  141  	unsigned i;
^1da177e4c3f41 Linus Torvalds      2005-04-16  142  
^1da177e4c3f41 Linus Torvalds      2005-04-16  143  	ii_iowa = REMOTE_HUB_L(nasid, IIO_OUTWIDGET_ACCESS);
^1da177e4c3f41 Linus Torvalds      2005-04-16  144  	REMOTE_HUB_S(nasid, IIO_OUTWIDGET_ACCESS, 0);
^1da177e4c3f41 Linus Torvalds      2005-04-16  145  
^1da177e4c3f41 Linus Torvalds      2005-04-16  146  	ii_wcr.wcr_reg_value = REMOTE_HUB_L(nasid, IIO_WCR);
^1da177e4c3f41 Linus Torvalds      2005-04-16  147  
^1da177e4c3f41 Linus Torvalds      2005-04-16  148  	if (ii_wcr.iwcr_dir_con) {
^1da177e4c3f41 Linus Torvalds      2005-04-16  149  		/*
^1da177e4c3f41 Linus Torvalds      2005-04-16  150  		 * Assume a bridge here.
^1da177e4c3f41 Linus Torvalds      2005-04-16  151  		 */
^1da177e4c3f41 Linus Torvalds      2005-04-16  152  		hub_setup_prb(nasid, 0, 3);
^1da177e4c3f41 Linus Torvalds      2005-04-16  153  	} else {
^1da177e4c3f41 Linus Torvalds      2005-04-16  154  		/*
^1da177e4c3f41 Linus Torvalds      2005-04-16  155  		 * Assume a crossbow here.
^1da177e4c3f41 Linus Torvalds      2005-04-16  156  		 */
^1da177e4c3f41 Linus Torvalds      2005-04-16  157  		hub_setup_prb(nasid, 0, 1);
^1da177e4c3f41 Linus Torvalds      2005-04-16  158  	}
^1da177e4c3f41 Linus Torvalds      2005-04-16  159  
^1da177e4c3f41 Linus Torvalds      2005-04-16  160  	/*
^1da177e4c3f41 Linus Torvalds      2005-04-16  161  	 * XXX - Here's where we should take the widget type into
^1da177e4c3f41 Linus Torvalds      2005-04-16  162  	 * when account assigning credits.
^1da177e4c3f41 Linus Torvalds      2005-04-16  163  	 */
^1da177e4c3f41 Linus Torvalds      2005-04-16  164  	for (i = HUB_WIDGET_ID_MIN; i <= HUB_WIDGET_ID_MAX; i++)
^1da177e4c3f41 Linus Torvalds      2005-04-16  165  		hub_setup_prb(nasid, i, 3);
^1da177e4c3f41 Linus Torvalds      2005-04-16  166  
^1da177e4c3f41 Linus Torvalds      2005-04-16  167  	REMOTE_HUB_S(nasid, IIO_OUTWIDGET_ACCESS, ii_iowa);
^1da177e4c3f41 Linus Torvalds      2005-04-16  168  }
^1da177e4c3f41 Linus Torvalds      2005-04-16  169  
^1da177e4c3f41 Linus Torvalds      2005-04-16  170  /*
603e82edf78ad6 Joe Perches         2008-02-03  171   * hub_pio_init	 -  PIO-related hub initialization
^1da177e4c3f41 Linus Torvalds      2005-04-16  172   *
^1da177e4c3f41 Linus Torvalds      2005-04-16  173   * @hub:	hubinfo structure for our hub
^1da177e4c3f41 Linus Torvalds      2005-04-16  174   */
4bf841ebf17aaa Thomas Bogendoerfer 2019-10-03 @175  void hub_pio_init(nasid_t nasid)

:::::: The code@line 30 was first introduced by commit
:::::: 4bf841ebf17aaa0f7712623896c699b44fa92f44 MIPS: SGI-IP27: get rid of compact node ids

:::::: TO: Thomas Bogendoerfer <tbogendoerfer@suse.de>
:::::: CC: Paul Burton <paul.burton@mips.com>

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 30522 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org,
	Paul Burton <paulburton@kernel.org>
Subject: arch/mips/sgi-ip27/ip27-hubio.c:30:15: warning: no previous prototype for 'hub_pio_map'
Date: Wed, 9 Dec 2020 19:41:56 +0800	[thread overview]
Message-ID: <202012091948.WAXF28rh-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 14407 bytes --]

Hi Thomas,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   a68a0262abdaa251e12c53715f48e698a18ef402
commit: b78e9d63a3b6307b6b786e6ba189d3978b60ceb5 MIPS: SGI-IP27: use asm/sn/agent.h for including HUB related stuff
date:   11 months ago
config: mips-randconfig-r031-20201209 (attached as .config)
compiler: mips64-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=b78e9d63a3b6307b6b786e6ba189d3978b60ceb5
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout b78e9d63a3b6307b6b786e6ba189d3978b60ceb5
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=mips 

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

All warnings (new ones prefixed by >>):

>> arch/mips/sgi-ip27/ip27-hubio.c:30:15: warning: no previous prototype for 'hub_pio_map' [-Wmissing-prototypes]
      30 | unsigned long hub_pio_map(nasid_t nasid, xwidgetnum_t widget,
         |               ^~~~~~~~~~~
>> arch/mips/sgi-ip27/ip27-hubio.c:175:6: warning: no previous prototype for 'hub_pio_init' [-Wmissing-prototypes]
     175 | void hub_pio_init(nasid_t nasid)
         |      ^~~~~~~~~~~~

vim +/hub_pio_map +30 arch/mips/sgi-ip27/ip27-hubio.c

^1da177e4c3f41 Linus Torvalds      2005-04-16   20  
^1da177e4c3f41 Linus Torvalds      2005-04-16   21  /**
^1da177e4c3f41 Linus Torvalds      2005-04-16   22   * hub_pio_map	-  establish a HUB PIO mapping
^1da177e4c3f41 Linus Torvalds      2005-04-16   23   *
^1da177e4c3f41 Linus Torvalds      2005-04-16   24   * @hub:	hub to perform PIO mapping on
^1da177e4c3f41 Linus Torvalds      2005-04-16   25   * @widget:	widget ID to perform PIO mapping for
^1da177e4c3f41 Linus Torvalds      2005-04-16   26   * @xtalk_addr: xtalk_address that needs to be mapped
^1da177e4c3f41 Linus Torvalds      2005-04-16   27   * @size:	size of the PIO mapping
^1da177e4c3f41 Linus Torvalds      2005-04-16   28   *
^1da177e4c3f41 Linus Torvalds      2005-04-16   29   **/
4bf841ebf17aaa Thomas Bogendoerfer 2019-10-03  @30  unsigned long hub_pio_map(nasid_t nasid, xwidgetnum_t widget,
^1da177e4c3f41 Linus Torvalds      2005-04-16   31  			  unsigned long xtalk_addr, size_t size)
^1da177e4c3f41 Linus Torvalds      2005-04-16   32  {
^1da177e4c3f41 Linus Torvalds      2005-04-16   33  	unsigned i;
^1da177e4c3f41 Linus Torvalds      2005-04-16   34  
^1da177e4c3f41 Linus Torvalds      2005-04-16   35  	/* use small-window mapping if possible */
^1da177e4c3f41 Linus Torvalds      2005-04-16   36  	if ((xtalk_addr % SWIN_SIZE) + size <= SWIN_SIZE)
^1da177e4c3f41 Linus Torvalds      2005-04-16   37  		return NODE_SWIN_BASE(nasid, widget) + (xtalk_addr % SWIN_SIZE);
^1da177e4c3f41 Linus Torvalds      2005-04-16   38  
^1da177e4c3f41 Linus Torvalds      2005-04-16   39  	if ((xtalk_addr % BWIN_SIZE) + size > BWIN_SIZE) {
^1da177e4c3f41 Linus Torvalds      2005-04-16   40  		printk(KERN_WARNING "PIO mapping at hub %d widget %d addr 0x%lx"
^1da177e4c3f41 Linus Torvalds      2005-04-16   41  				" too big (%ld)\n",
^1da177e4c3f41 Linus Torvalds      2005-04-16   42  				nasid, widget, xtalk_addr, size);
^1da177e4c3f41 Linus Torvalds      2005-04-16   43  		return 0;
^1da177e4c3f41 Linus Torvalds      2005-04-16   44  	}
^1da177e4c3f41 Linus Torvalds      2005-04-16   45  
^1da177e4c3f41 Linus Torvalds      2005-04-16   46  	xtalk_addr &= ~(BWIN_SIZE-1);
^1da177e4c3f41 Linus Torvalds      2005-04-16   47  	for (i = 0; i < HUB_NUM_BIG_WINDOW; i++) {
4bf841ebf17aaa Thomas Bogendoerfer 2019-10-03   48  		if (test_and_set_bit(i, hub_data(nasid)->h_bigwin_used))
^1da177e4c3f41 Linus Torvalds      2005-04-16   49  			continue;
^1da177e4c3f41 Linus Torvalds      2005-04-16   50  
^1da177e4c3f41 Linus Torvalds      2005-04-16   51  		/*
^1da177e4c3f41 Linus Torvalds      2005-04-16   52  		 * The code below does a PIO write to setup an ITTE entry.
^1da177e4c3f41 Linus Torvalds      2005-04-16   53  		 *
^1da177e4c3f41 Linus Torvalds      2005-04-16   54  		 * We need to prevent other CPUs from seeing our updated
^1da177e4c3f41 Linus Torvalds      2005-04-16   55  		 * memory shadow of the ITTE (in the piomap) until the ITTE
^1da177e4c3f41 Linus Torvalds      2005-04-16   56  		 * entry is actually set up; otherwise, another CPU might
^1da177e4c3f41 Linus Torvalds      2005-04-16   57  		 * attempt a PIO prematurely.
^1da177e4c3f41 Linus Torvalds      2005-04-16   58  		 *
^1da177e4c3f41 Linus Torvalds      2005-04-16   59  		 * Also, the only way we can know that an entry has been
^1da177e4c3f41 Linus Torvalds      2005-04-16   60  		 * received  by the hub and can be used by future PIO reads/
^1da177e4c3f41 Linus Torvalds      2005-04-16   61  		 * writes is by reading back the ITTE entry after writing it.
^1da177e4c3f41 Linus Torvalds      2005-04-16   62  		 *
^1da177e4c3f41 Linus Torvalds      2005-04-16   63  		 * For these two reasons, we PIO read back the ITTE entry
^1da177e4c3f41 Linus Torvalds      2005-04-16   64  		 * after we write it.
^1da177e4c3f41 Linus Torvalds      2005-04-16   65  		 */
^1da177e4c3f41 Linus Torvalds      2005-04-16   66  		IIO_ITTE_PUT(nasid, i, HUB_PIO_MAP_TO_MEM, widget, xtalk_addr);
db0e7d4e42b055 Thomas Bogendoerfer 2019-02-19   67  		__raw_readq(IIO_ITTE_GET(nasid, i));
^1da177e4c3f41 Linus Torvalds      2005-04-16   68  
^1da177e4c3f41 Linus Torvalds      2005-04-16   69  		return NODE_BWIN_BASE(nasid, widget) + (xtalk_addr % BWIN_SIZE);
^1da177e4c3f41 Linus Torvalds      2005-04-16   70  	}
^1da177e4c3f41 Linus Torvalds      2005-04-16   71  
^1da177e4c3f41 Linus Torvalds      2005-04-16   72  	printk(KERN_WARNING "unable to establish PIO mapping for at"
^1da177e4c3f41 Linus Torvalds      2005-04-16   73  			" hub %d widget %d addr 0x%lx\n",
^1da177e4c3f41 Linus Torvalds      2005-04-16   74  			nasid, widget, xtalk_addr);
^1da177e4c3f41 Linus Torvalds      2005-04-16   75  	return 0;
^1da177e4c3f41 Linus Torvalds      2005-04-16   76  }
^1da177e4c3f41 Linus Torvalds      2005-04-16   77  
^1da177e4c3f41 Linus Torvalds      2005-04-16   78  
^1da177e4c3f41 Linus Torvalds      2005-04-16   79  /*
^1da177e4c3f41 Linus Torvalds      2005-04-16   80   * hub_setup_prb(nasid, prbnum, credits, conveyor)
^1da177e4c3f41 Linus Torvalds      2005-04-16   81   *
^1da177e4c3f41 Linus Torvalds      2005-04-16   82   *	Put a PRB into fire-and-forget mode if conveyor isn't set.  Otherwise,
^1da177e4c3f41 Linus Torvalds      2005-04-16   83   *	put it into conveyor belt mode with the specified number of credits.
^1da177e4c3f41 Linus Torvalds      2005-04-16   84   */
^1da177e4c3f41 Linus Torvalds      2005-04-16   85  static void hub_setup_prb(nasid_t nasid, int prbnum, int credits)
^1da177e4c3f41 Linus Torvalds      2005-04-16   86  {
^1da177e4c3f41 Linus Torvalds      2005-04-16   87  	iprb_t prb;
^1da177e4c3f41 Linus Torvalds      2005-04-16   88  	int prb_offset;
^1da177e4c3f41 Linus Torvalds      2005-04-16   89  
^1da177e4c3f41 Linus Torvalds      2005-04-16   90  	/*
^1da177e4c3f41 Linus Torvalds      2005-04-16   91  	 * Get the current register value.
^1da177e4c3f41 Linus Torvalds      2005-04-16   92  	 */
^1da177e4c3f41 Linus Torvalds      2005-04-16   93  	prb_offset = IIO_IOPRB(prbnum);
^1da177e4c3f41 Linus Torvalds      2005-04-16   94  	prb.iprb_regval = REMOTE_HUB_L(nasid, prb_offset);
^1da177e4c3f41 Linus Torvalds      2005-04-16   95  
^1da177e4c3f41 Linus Torvalds      2005-04-16   96  	/*
^1da177e4c3f41 Linus Torvalds      2005-04-16   97  	 * Clear out some fields.
^1da177e4c3f41 Linus Torvalds      2005-04-16   98  	 */
^1da177e4c3f41 Linus Torvalds      2005-04-16   99  	prb.iprb_ovflow = 1;
^1da177e4c3f41 Linus Torvalds      2005-04-16  100  	prb.iprb_bnakctr = 0;
^1da177e4c3f41 Linus Torvalds      2005-04-16  101  	prb.iprb_anakctr = 0;
^1da177e4c3f41 Linus Torvalds      2005-04-16  102  
^1da177e4c3f41 Linus Torvalds      2005-04-16  103  	/*
^1da177e4c3f41 Linus Torvalds      2005-04-16  104  	 * Enable or disable fire-and-forget mode.
^1da177e4c3f41 Linus Torvalds      2005-04-16  105  	 */
^1da177e4c3f41 Linus Torvalds      2005-04-16  106  	prb.iprb_ff = force_fire_and_forget ? 1 : 0;
^1da177e4c3f41 Linus Torvalds      2005-04-16  107  
^1da177e4c3f41 Linus Torvalds      2005-04-16  108  	/*
87fd4e2692a2ad Andrea Gelmini      2016-05-21  109  	 * Set the appropriate number of PIO credits for the widget.
^1da177e4c3f41 Linus Torvalds      2005-04-16  110  	 */
^1da177e4c3f41 Linus Torvalds      2005-04-16  111  	prb.iprb_xtalkctr = credits;
^1da177e4c3f41 Linus Torvalds      2005-04-16  112  
^1da177e4c3f41 Linus Torvalds      2005-04-16  113  	/*
^1da177e4c3f41 Linus Torvalds      2005-04-16  114  	 * Store the new value to the register.
^1da177e4c3f41 Linus Torvalds      2005-04-16  115  	 */
^1da177e4c3f41 Linus Torvalds      2005-04-16  116  	REMOTE_HUB_S(nasid, prb_offset, prb.iprb_regval);
^1da177e4c3f41 Linus Torvalds      2005-04-16  117  }
^1da177e4c3f41 Linus Torvalds      2005-04-16  118  
^1da177e4c3f41 Linus Torvalds      2005-04-16  119  /**
^1da177e4c3f41 Linus Torvalds      2005-04-16  120   * hub_set_piomode  -  set pio mode for a given hub
^1da177e4c3f41 Linus Torvalds      2005-04-16  121   *
^1da177e4c3f41 Linus Torvalds      2005-04-16  122   * @nasid:	physical node ID for the hub in question
^1da177e4c3f41 Linus Torvalds      2005-04-16  123   *
^1da177e4c3f41 Linus Torvalds      2005-04-16  124   * Put the hub into either "PIO conveyor belt" mode or "fire-and-forget" mode.
^1da177e4c3f41 Linus Torvalds      2005-04-16  125   * To do this, we have to make absolutely sure that no PIOs are in progress
^1da177e4c3f41 Linus Torvalds      2005-04-16  126   * so we turn off access to all widgets for the duration of the function.
^1da177e4c3f41 Linus Torvalds      2005-04-16  127   *
^1da177e4c3f41 Linus Torvalds      2005-04-16  128   * XXX - This code should really check what kind of widget we're talking
^1da177e4c3f41 Linus Torvalds      2005-04-16  129   * to.	Bridges can only handle three requests, but XG will do more.
^1da177e4c3f41 Linus Torvalds      2005-04-16  130   * How many can crossbow handle to widget 0?  We're assuming 1.
^1da177e4c3f41 Linus Torvalds      2005-04-16  131   *
^1da177e4c3f41 Linus Torvalds      2005-04-16  132   * XXX - There is a bug in the crossbow that link reset PIOs do not
^1da177e4c3f41 Linus Torvalds      2005-04-16  133   * return write responses.  The easiest solution to this problem is to
^1da177e4c3f41 Linus Torvalds      2005-04-16  134   * leave widget 0 (xbow) in fire-and-forget mode at all times.	This
^1da177e4c3f41 Linus Torvalds      2005-04-16  135   * only affects pio's to xbow registers, which should be rare.
^1da177e4c3f41 Linus Torvalds      2005-04-16  136   **/
^1da177e4c3f41 Linus Torvalds      2005-04-16  137  static void hub_set_piomode(nasid_t nasid)
^1da177e4c3f41 Linus Torvalds      2005-04-16  138  {
db0e7d4e42b055 Thomas Bogendoerfer 2019-02-19  139  	u64 ii_iowa;
^1da177e4c3f41 Linus Torvalds      2005-04-16  140  	hubii_wcr_t ii_wcr;
^1da177e4c3f41 Linus Torvalds      2005-04-16  141  	unsigned i;
^1da177e4c3f41 Linus Torvalds      2005-04-16  142  
^1da177e4c3f41 Linus Torvalds      2005-04-16  143  	ii_iowa = REMOTE_HUB_L(nasid, IIO_OUTWIDGET_ACCESS);
^1da177e4c3f41 Linus Torvalds      2005-04-16  144  	REMOTE_HUB_S(nasid, IIO_OUTWIDGET_ACCESS, 0);
^1da177e4c3f41 Linus Torvalds      2005-04-16  145  
^1da177e4c3f41 Linus Torvalds      2005-04-16  146  	ii_wcr.wcr_reg_value = REMOTE_HUB_L(nasid, IIO_WCR);
^1da177e4c3f41 Linus Torvalds      2005-04-16  147  
^1da177e4c3f41 Linus Torvalds      2005-04-16  148  	if (ii_wcr.iwcr_dir_con) {
^1da177e4c3f41 Linus Torvalds      2005-04-16  149  		/*
^1da177e4c3f41 Linus Torvalds      2005-04-16  150  		 * Assume a bridge here.
^1da177e4c3f41 Linus Torvalds      2005-04-16  151  		 */
^1da177e4c3f41 Linus Torvalds      2005-04-16  152  		hub_setup_prb(nasid, 0, 3);
^1da177e4c3f41 Linus Torvalds      2005-04-16  153  	} else {
^1da177e4c3f41 Linus Torvalds      2005-04-16  154  		/*
^1da177e4c3f41 Linus Torvalds      2005-04-16  155  		 * Assume a crossbow here.
^1da177e4c3f41 Linus Torvalds      2005-04-16  156  		 */
^1da177e4c3f41 Linus Torvalds      2005-04-16  157  		hub_setup_prb(nasid, 0, 1);
^1da177e4c3f41 Linus Torvalds      2005-04-16  158  	}
^1da177e4c3f41 Linus Torvalds      2005-04-16  159  
^1da177e4c3f41 Linus Torvalds      2005-04-16  160  	/*
^1da177e4c3f41 Linus Torvalds      2005-04-16  161  	 * XXX - Here's where we should take the widget type into
^1da177e4c3f41 Linus Torvalds      2005-04-16  162  	 * when account assigning credits.
^1da177e4c3f41 Linus Torvalds      2005-04-16  163  	 */
^1da177e4c3f41 Linus Torvalds      2005-04-16  164  	for (i = HUB_WIDGET_ID_MIN; i <= HUB_WIDGET_ID_MAX; i++)
^1da177e4c3f41 Linus Torvalds      2005-04-16  165  		hub_setup_prb(nasid, i, 3);
^1da177e4c3f41 Linus Torvalds      2005-04-16  166  
^1da177e4c3f41 Linus Torvalds      2005-04-16  167  	REMOTE_HUB_S(nasid, IIO_OUTWIDGET_ACCESS, ii_iowa);
^1da177e4c3f41 Linus Torvalds      2005-04-16  168  }
^1da177e4c3f41 Linus Torvalds      2005-04-16  169  
^1da177e4c3f41 Linus Torvalds      2005-04-16  170  /*
603e82edf78ad6 Joe Perches         2008-02-03  171   * hub_pio_init	 -  PIO-related hub initialization
^1da177e4c3f41 Linus Torvalds      2005-04-16  172   *
^1da177e4c3f41 Linus Torvalds      2005-04-16  173   * @hub:	hubinfo structure for our hub
^1da177e4c3f41 Linus Torvalds      2005-04-16  174   */
4bf841ebf17aaa Thomas Bogendoerfer 2019-10-03 @175  void hub_pio_init(nasid_t nasid)

:::::: The code at line 30 was first introduced by commit
:::::: 4bf841ebf17aaa0f7712623896c699b44fa92f44 MIPS: SGI-IP27: get rid of compact node ids

:::::: TO: Thomas Bogendoerfer <tbogendoerfer@suse.de>
:::::: CC: Paul Burton <paul.burton@mips.com>

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

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 30522 bytes --]

             reply	other threads:[~2020-12-09 11:41 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-09 11:41 kernel test robot [this message]
2020-12-09 11:41 ` arch/mips/sgi-ip27/ip27-hubio.c:30:15: warning: no previous prototype for 'hub_pio_map' kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2021-02-25  9:49 kernel test robot
2021-02-25  9:49 ` kernel test robot
2021-01-19 16:24 kernel test robot
2021-01-19 16:24 ` kernel test robot
2020-08-17 20:25 kernel test robot
2020-08-17 20:25 ` kernel test robot
2020-06-22 11:12 kernel test robot
2020-06-22 11:12 ` kernel test robot
2020-05-30 21:32 kbuild test robot
2020-05-30 21:32 ` kbuild test robot

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=202012091948.WAXF28rh-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.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.