[PATCH v7 3/4] phy: Add Sparx5 ethernet serdes PHY driver

kernel test robot lkp at intel.com
Wed Dec 2 10:09:39 EST 2020


Hi Steen,

I love your patch! Perhaps something to improve:

[auto build test WARNING on robh/for-next]
[also build test WARNING on linux/master linus/master v5.10-rc6 next-20201201]
[cannot apply to phy/next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Steen-Hegelund/Adding-the-Sparx5-Serdes-driver/20201202-211116
base:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
config: sh-allmodconfig (attached as .config)
compiler: sh4-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://github.com/0day-ci/linux/commit/f9670130c2b0d7ccd38a459e66d8da36b8edb7e0
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Steen-Hegelund/Adding-the-Sparx5-Serdes-driver/20201202-211116
        git checkout f9670130c2b0d7ccd38a459e66d8da36b8edb7e0
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=sh 

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

All warnings (new ones prefixed by >>):

>> drivers/phy/microchip/sparx5_serdes.c:2236:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26046660608' to '276856832' [-Woverflow]
    2236 |  { TARGET_SD_CMU,          0x610808000 }, /* sd_cmu_0 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2237:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26046693376' to '276889600' [-Woverflow]
    2237 |  { TARGET_SD_CMU + 1,      0x610810000 }, /* sd_cmu_1 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2238:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26046726144' to '276922368' [-Woverflow]
    2238 |  { TARGET_SD_CMU + 2,      0x610818000 }, /* sd_cmu_2 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2239:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26046758912' to '276955136' [-Woverflow]
    2239 |  { TARGET_SD_CMU + 3,      0x610820000 }, /* sd_cmu_3 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2240:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26046791680' to '276987904' [-Woverflow]
    2240 |  { TARGET_SD_CMU + 4,      0x610828000 }, /* sd_cmu_4 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2241:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26046824448' to '277020672' [-Woverflow]
    2241 |  { TARGET_SD_CMU + 5,      0x610830000 }, /* sd_cmu_5 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2242:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26046857216' to '277053440' [-Woverflow]
    2242 |  { TARGET_SD_CMU + 6,      0x610838000 }, /* sd_cmu_6 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2243:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26046889984' to '277086208' [-Woverflow]
    2243 |  { TARGET_SD_CMU + 7,      0x610840000 }, /* sd_cmu_7 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2244:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26046922752' to '277118976' [-Woverflow]
    2244 |  { TARGET_SD_CMU + 8,      0x610848000 }, /* sd_cmu_8 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2245:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26046955520' to '277151744' [-Woverflow]
    2245 |  { TARGET_SD_CMU_CFG,      0x610850000 }, /* sd_cmu_cfg_0 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2246:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26046988288' to '277184512' [-Woverflow]
    2246 |  { TARGET_SD_CMU_CFG + 1,  0x610858000 }, /* sd_cmu_cfg_1 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2247:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047021056' to '277217280' [-Woverflow]
    2247 |  { TARGET_SD_CMU_CFG + 2,  0x610860000 }, /* sd_cmu_cfg_2 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2248:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047053824' to '277250048' [-Woverflow]
    2248 |  { TARGET_SD_CMU_CFG + 3,  0x610868000 }, /* sd_cmu_cfg_3 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2249:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047086592' to '277282816' [-Woverflow]
    2249 |  { TARGET_SD_CMU_CFG + 4,  0x610870000 }, /* sd_cmu_cfg_4 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2250:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047119360' to '277315584' [-Woverflow]
    2250 |  { TARGET_SD_CMU_CFG + 5,  0x610878000 }, /* sd_cmu_cfg_5 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2251:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047152128' to '277348352' [-Woverflow]
    2251 |  { TARGET_SD_CMU_CFG + 6,  0x610880000 }, /* sd_cmu_cfg_6 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2252:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047184896' to '277381120' [-Woverflow]
    2252 |  { TARGET_SD_CMU_CFG + 7,  0x610888000 }, /* sd_cmu_cfg_7 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2253:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047217664' to '277413888' [-Woverflow]
    2253 |  { TARGET_SD_CMU_CFG + 8,  0x610890000 }, /* sd_cmu_cfg_8 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2254:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047250432' to '277446656' [-Woverflow]
    2254 |  { TARGET_SD6G_LANE,       0x610898000 }, /* sd6g_lane_0 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2255:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047283200' to '277479424' [-Woverflow]
    2255 |  { TARGET_SD6G_LANE + 1,   0x6108a0000 }, /* sd6g_lane_1 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2256:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047315968' to '277512192' [-Woverflow]
    2256 |  { TARGET_SD6G_LANE + 2,   0x6108a8000 }, /* sd6g_lane_2 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2257:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047348736' to '277544960' [-Woverflow]
    2257 |  { TARGET_SD6G_LANE + 3,   0x6108b0000 }, /* sd6g_lane_3 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2258:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047381504' to '277577728' [-Woverflow]
    2258 |  { TARGET_SD6G_LANE + 4,   0x6108b8000 }, /* sd6g_lane_4 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2259:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047414272' to '277610496' [-Woverflow]
    2259 |  { TARGET_SD6G_LANE + 5,   0x6108c0000 }, /* sd6g_lane_5 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2260:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047447040' to '277643264' [-Woverflow]
    2260 |  { TARGET_SD6G_LANE + 6,   0x6108c8000 }, /* sd6g_lane_6 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2261:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047479808' to '277676032' [-Woverflow]
    2261 |  { TARGET_SD6G_LANE + 7,   0x6108d0000 }, /* sd6g_lane_7 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2262:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047512576' to '277708800' [-Woverflow]
    2262 |  { TARGET_SD6G_LANE + 8,   0x6108d8000 }, /* sd6g_lane_8 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2263:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047545344' to '277741568' [-Woverflow]
    2263 |  { TARGET_SD6G_LANE + 9,   0x6108e0000 }, /* sd6g_lane_9 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2264:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047578112' to '277774336' [-Woverflow]
    2264 |  { TARGET_SD6G_LANE + 10,  0x6108e8000 }, /* sd6g_lane_10 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2265:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047610880' to '277807104' [-Woverflow]
    2265 |  { TARGET_SD6G_LANE + 11,  0x6108f0000 }, /* sd6g_lane_11 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2266:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047643648' to '277839872' [-Woverflow]
    2266 |  { TARGET_SD6G_LANE + 12,  0x6108f8000 }, /* sd6g_lane_12 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2267:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047676416' to '277872640' [-Woverflow]
    2267 |  { TARGET_SD10G_LANE,      0x610900000 }, /* sd10g_lane_0 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2268:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047709184' to '277905408' [-Woverflow]
    2268 |  { TARGET_SD10G_LANE + 1,  0x610908000 }, /* sd10g_lane_1 */
         |                            ^~~~~~~~~~~
   drivers/phy/microchip/sparx5_serdes.c:2269:28: warning: unsigned conversion from 'long long int' to 'unsigned int' changes value from '26047741952' to '277938176' [-Woverflow]
    2269 |  { TARGET_SD10G_LANE + 2,  0x610910000 }, /* sd10g_lane_2 */

vim +2236 drivers/phy/microchip/sparx5_serdes.c

  2234	
  2235	static struct sparx5_serdes_io_resource sparx5_serdes_iomap[] =  {
> 2236		{ TARGET_SD_CMU,          0x610808000 }, /* sd_cmu_0 */
  2237		{ TARGET_SD_CMU + 1,      0x610810000 }, /* sd_cmu_1 */
  2238		{ TARGET_SD_CMU + 2,      0x610818000 }, /* sd_cmu_2 */
  2239		{ TARGET_SD_CMU + 3,      0x610820000 }, /* sd_cmu_3 */
  2240		{ TARGET_SD_CMU + 4,      0x610828000 }, /* sd_cmu_4 */
  2241		{ TARGET_SD_CMU + 5,      0x610830000 }, /* sd_cmu_5 */
  2242		{ TARGET_SD_CMU + 6,      0x610838000 }, /* sd_cmu_6 */
  2243		{ TARGET_SD_CMU + 7,      0x610840000 }, /* sd_cmu_7 */
  2244		{ TARGET_SD_CMU + 8,      0x610848000 }, /* sd_cmu_8 */
  2245		{ TARGET_SD_CMU_CFG,      0x610850000 }, /* sd_cmu_cfg_0 */
  2246		{ TARGET_SD_CMU_CFG + 1,  0x610858000 }, /* sd_cmu_cfg_1 */
  2247		{ TARGET_SD_CMU_CFG + 2,  0x610860000 }, /* sd_cmu_cfg_2 */
  2248		{ TARGET_SD_CMU_CFG + 3,  0x610868000 }, /* sd_cmu_cfg_3 */
  2249		{ TARGET_SD_CMU_CFG + 4,  0x610870000 }, /* sd_cmu_cfg_4 */
  2250		{ TARGET_SD_CMU_CFG + 5,  0x610878000 }, /* sd_cmu_cfg_5 */
  2251		{ TARGET_SD_CMU_CFG + 6,  0x610880000 }, /* sd_cmu_cfg_6 */
  2252		{ TARGET_SD_CMU_CFG + 7,  0x610888000 }, /* sd_cmu_cfg_7 */
  2253		{ TARGET_SD_CMU_CFG + 8,  0x610890000 }, /* sd_cmu_cfg_8 */
  2254		{ TARGET_SD6G_LANE,       0x610898000 }, /* sd6g_lane_0 */
  2255		{ TARGET_SD6G_LANE + 1,   0x6108a0000 }, /* sd6g_lane_1 */
  2256		{ TARGET_SD6G_LANE + 2,   0x6108a8000 }, /* sd6g_lane_2 */
  2257		{ TARGET_SD6G_LANE + 3,   0x6108b0000 }, /* sd6g_lane_3 */
  2258		{ TARGET_SD6G_LANE + 4,   0x6108b8000 }, /* sd6g_lane_4 */
  2259		{ TARGET_SD6G_LANE + 5,   0x6108c0000 }, /* sd6g_lane_5 */
  2260		{ TARGET_SD6G_LANE + 6,   0x6108c8000 }, /* sd6g_lane_6 */
  2261		{ TARGET_SD6G_LANE + 7,   0x6108d0000 }, /* sd6g_lane_7 */
  2262		{ TARGET_SD6G_LANE + 8,   0x6108d8000 }, /* sd6g_lane_8 */
  2263		{ TARGET_SD6G_LANE + 9,   0x6108e0000 }, /* sd6g_lane_9 */
  2264		{ TARGET_SD6G_LANE + 10,  0x6108e8000 }, /* sd6g_lane_10 */
  2265		{ TARGET_SD6G_LANE + 11,  0x6108f0000 }, /* sd6g_lane_11 */
  2266		{ TARGET_SD6G_LANE + 12,  0x6108f8000 }, /* sd6g_lane_12 */
  2267		{ TARGET_SD10G_LANE,      0x610900000 }, /* sd10g_lane_0 */
  2268		{ TARGET_SD10G_LANE + 1,  0x610908000 }, /* sd10g_lane_1 */
  2269		{ TARGET_SD10G_LANE + 2,  0x610910000 }, /* sd10g_lane_2 */
  2270		{ TARGET_SD10G_LANE + 3,  0x610918000 }, /* sd10g_lane_3 */
  2271		{ TARGET_SD_LANE,         0x6109a8000 }, /* sd_lane_0 */
  2272		{ TARGET_SD_LANE + 1,     0x6109b0000 }, /* sd_lane_1 */
  2273		{ TARGET_SD_LANE + 2,     0x6109b8000 }, /* sd_lane_2 */
  2274		{ TARGET_SD_LANE + 3,     0x6109c0000 }, /* sd_lane_3 */
  2275		{ TARGET_SD_LANE + 4,     0x6109c8000 }, /* sd_lane_4 */
  2276		{ TARGET_SD_LANE + 5,     0x6109d0000 }, /* sd_lane_5 */
  2277		{ TARGET_SD_LANE + 6,     0x6109d8000 }, /* sd_lane_6 */
  2278		{ TARGET_SD_LANE + 7,     0x6109e0000 }, /* sd_lane_7 */
  2279		{ TARGET_SD_LANE + 8,     0x6109e8000 }, /* sd_lane_8 */
  2280		{ TARGET_SD_LANE + 9,     0x6109f0000 }, /* sd_lane_9 */
  2281		{ TARGET_SD_LANE + 10,    0x6109f8000 }, /* sd_lane_10 */
  2282		{ TARGET_SD_LANE + 11,    0x610a00000 }, /* sd_lane_11 */
  2283		{ TARGET_SD_LANE + 12,    0x610a08000 }, /* sd_lane_12 */
  2284		{ TARGET_SD_LANE + 13,    0x610a10000 }, /* sd_lane_13 */
  2285		{ TARGET_SD_LANE + 14,    0x610a18000 }, /* sd_lane_14 */
  2286		{ TARGET_SD_LANE + 15,    0x610a20000 }, /* sd_lane_15 */
  2287		{ TARGET_SD_LANE + 16,    0x610a28000 }, /* sd_lane_16 */
  2288		{ TARGET_SD_CMU + 9,      0x610c08000 }, /* sd_cmu_9 */
  2289		{ TARGET_SD_CMU + 10,     0x610c10000 }, /* sd_cmu_10 */
  2290		{ TARGET_SD_CMU + 11,     0x610c18000 }, /* sd_cmu_11 */
  2291		{ TARGET_SD_CMU + 12,     0x610c20000 }, /* sd_cmu_12 */
  2292		{ TARGET_SD_CMU + 13,     0x610c28000 }, /* sd_cmu_13 */
  2293		{ TARGET_SD_CMU_CFG + 9,  0x610c30000 }, /* sd_cmu_cfg_9 */
  2294		{ TARGET_SD_CMU_CFG + 10, 0x610c38000 }, /* sd_cmu_cfg_10 */
  2295		{ TARGET_SD_CMU_CFG + 11, 0x610c40000 }, /* sd_cmu_cfg_11 */
  2296		{ TARGET_SD_CMU_CFG + 12, 0x610c48000 }, /* sd_cmu_cfg_12 */
  2297		{ TARGET_SD_CMU_CFG + 13, 0x610c50000 }, /* sd_cmu_cfg_13 */
  2298		{ TARGET_SD10G_LANE + 4,  0x610c58000 }, /* sd10g_lane_4 */
  2299		{ TARGET_SD10G_LANE + 5,  0x610c60000 }, /* sd10g_lane_5 */
  2300		{ TARGET_SD10G_LANE + 6,  0x610c68000 }, /* sd10g_lane_6 */
  2301		{ TARGET_SD10G_LANE + 7,  0x610c70000 }, /* sd10g_lane_7 */
  2302		{ TARGET_SD10G_LANE + 8,  0x610c78000 }, /* sd10g_lane_8 */
  2303		{ TARGET_SD10G_LANE + 9,  0x610c80000 }, /* sd10g_lane_9 */
  2304		{ TARGET_SD10G_LANE + 10, 0x610c88000 }, /* sd10g_lane_10 */
  2305		{ TARGET_SD10G_LANE + 11, 0x610c90000 }, /* sd10g_lane_11 */
  2306		{ TARGET_SD25G_LANE,      0x610c98000 }, /* sd25g_lane_0 */
  2307		{ TARGET_SD25G_LANE + 1,  0x610ca0000 }, /* sd25g_lane_1 */
  2308		{ TARGET_SD25G_LANE + 2,  0x610ca8000 }, /* sd25g_lane_2 */
  2309		{ TARGET_SD25G_LANE + 3,  0x610cb0000 }, /* sd25g_lane_3 */
  2310		{ TARGET_SD25G_LANE + 4,  0x610cb8000 }, /* sd25g_lane_4 */
  2311		{ TARGET_SD25G_LANE + 5,  0x610cc0000 }, /* sd25g_lane_5 */
  2312		{ TARGET_SD25G_LANE + 6,  0x610cc8000 }, /* sd25g_lane_6 */
  2313		{ TARGET_SD25G_LANE + 7,  0x610cd0000 }, /* sd25g_lane_7 */
  2314		{ TARGET_SD_LANE + 17,    0x610d58000 }, /* sd_lane_17 */
  2315		{ TARGET_SD_LANE + 18,    0x610d60000 }, /* sd_lane_18 */
  2316		{ TARGET_SD_LANE + 19,    0x610d68000 }, /* sd_lane_19 */
  2317		{ TARGET_SD_LANE + 20,    0x610d70000 }, /* sd_lane_20 */
  2318		{ TARGET_SD_LANE + 21,    0x610d78000 }, /* sd_lane_21 */
  2319		{ TARGET_SD_LANE + 22,    0x610d80000 }, /* sd_lane_22 */
  2320		{ TARGET_SD_LANE + 23,    0x610d88000 }, /* sd_lane_23 */
  2321		{ TARGET_SD_LANE + 24,    0x610d90000 }, /* sd_lane_24 */
  2322		{ TARGET_SD_LANE_25G,     0x610d98000 }, /* sd_lane_25g_25 */
  2323		{ TARGET_SD_LANE_25G + 1, 0x610da0000 }, /* sd_lane_25g_26 */
  2324		{ TARGET_SD_LANE_25G + 2, 0x610da8000 }, /* sd_lane_25g_27 */
  2325		{ TARGET_SD_LANE_25G + 3, 0x610db0000 }, /* sd_lane_25g_28 */
  2326		{ TARGET_SD_LANE_25G + 4, 0x610db8000 }, /* sd_lane_25g_29 */
  2327		{ TARGET_SD_LANE_25G + 5, 0x610dc0000 }, /* sd_lane_25g_30 */
  2328		{ TARGET_SD_LANE_25G + 6, 0x610dc8000 }, /* sd_lane_25g_31 */
  2329		{ TARGET_SD_LANE_25G + 7, 0x610dd0000 }, /* sd_lane_25g_32 */
  2330	};
  2331	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 53581 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20201202/962484c2/attachment-0001.gz>


More information about the linux-arm-kernel mailing list