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: Tue, 18 Aug 2020 04:25:31 +0800 [thread overview]
Message-ID: <202008180419.YvRaQpHL%lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 15524 bytes --]
Hi Thomas,
FYI, the error/warning still remains.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 9123e3a74ec7b934a4a099e98af6a61c2f80bbf5
commit: b78e9d63a3b6307b6b786e6ba189d3978b60ceb5 MIPS: SGI-IP27: use asm/sn/agent.h for including HUB related stuff
date: 7 months ago
config: mips-randconfig-r023-20200817 (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
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)
| ^~~~~~~~~~~~
{standard input}: Assembler messages:
{standard input}:130: Error: found '(', expected: ')'
{standard input}:130: Error: found '(', expected: ')'
{standard input}:130: Error: non-constant expression in ".if" statement
{standard input}:130: Error: junk at end of line, first unrecognized character is `('
{standard input}:155: Error: found '(', expected: ')'
{standard input}:155: Error: found '(', expected: ')'
{standard input}:155: Error: non-constant expression in ".if" statement
{standard input}:155: Error: junk at end of line, first unrecognized character is `('
{standard input}:641: Error: found '(', expected: ')'
{standard input}:641: Error: found '(', expected: ')'
{standard input}:641: Error: non-constant expression in ".if" statement
{standard input}:641: Error: junk at end of line, first unrecognized character is `('
# 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
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: 23874 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: Tue, 18 Aug 2020 04:25:31 +0800 [thread overview]
Message-ID: <202008180419.YvRaQpHL%lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 15311 bytes --]
Hi Thomas,
FYI, the error/warning still remains.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 9123e3a74ec7b934a4a099e98af6a61c2f80bbf5
commit: b78e9d63a3b6307b6b786e6ba189d3978b60ceb5 MIPS: SGI-IP27: use asm/sn/agent.h for including HUB related stuff
date: 7 months ago
config: mips-randconfig-r023-20200817 (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
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)
| ^~~~~~~~~~~~
{standard input}: Assembler messages:
{standard input}:130: Error: found '(', expected: ')'
{standard input}:130: Error: found '(', expected: ')'
{standard input}:130: Error: non-constant expression in ".if" statement
{standard input}:130: Error: junk at end of line, first unrecognized character is `('
{standard input}:155: Error: found '(', expected: ')'
{standard input}:155: Error: found '(', expected: ')'
{standard input}:155: Error: non-constant expression in ".if" statement
{standard input}:155: Error: junk at end of line, first unrecognized character is `('
{standard input}:641: Error: found '(', expected: ')'
{standard input}:641: Error: found '(', expected: ')'
{standard input}:641: Error: non-constant expression in ".if" statement
{standard input}:641: Error: junk at end of line, first unrecognized character is `('
# 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
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: 23874 bytes --]
next reply other threads:[~2020-08-17 20:25 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-17 20:25 kernel test robot [this message]
2020-08-17 20:25 ` 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-12-09 11:41 kernel test robot
2020-12-09 11:41 ` 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=202008180419.YvRaQpHL%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.