[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20180717010159.GD10593@intel.com>
Date: Tue, 17 Jul 2018 09:01:59 +0800
From: kbuild test robot <lkp@...el.com>
To: Alexander Sverdlin <alexander.sverdlin@...ia.com>
Cc: kbuild-all@...org, netdev@...r.kernel.org,
Alexander Sverdlin <alexander.sverdlin@...ia.com>,
"David S. Miller" <davem@...emloft.net>,
Aleksey Makarov <aleksey.makarov@...ium.com>,
Sunil Goutham <sgoutham@...ium.com>,
Raghu Vatsavayi <raghu.vatsavayi@...ium.com>,
Vijaya Mohan Guvva <vijaya.guvva@...ium.com>
Subject: Re: [PATCH] net: cavium: Drop dependency of NET_VENDOR_CAVIUM on PCI
Hi Alexander,
I love your patch! Yet something to improve:
[auto build test ERROR on net-next/master]
[also build test ERROR on v4.18-rc5 next-20180713]
[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/Alexander-Sverdlin/net-cavium-Drop-dependency-of-NET_VENDOR_CAVIUM-on-PCI/20180716-002448
config: s390-defconfig (attached as .config)
compiler: s390x-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=7.2.0 make.cross ARCH=s390
:::::: branch date: 15 hours ago
:::::: commit date: 15 hours ago
All error/warnings (new ones prefixed by >>):
drivers/net/ethernet/cavium/common/cavium_ptp.c: In function 'cavium_ptp_probe':
>> drivers/net/ethernet/cavium/common/cavium_ptp.c:235:8: error: implicit declaration of function 'pcim_enable_device'; did you mean 'pci_enable_device'? [-Werror=implicit-function-declaration]
err = pcim_enable_device(pdev);
^~~~~~~~~~~~~~~~~~
pci_enable_device
drivers/net/ethernet/cavium/common/cavium_ptp.c: At top level:
>> drivers/net/ethernet/cavium/common/cavium_ptp.c:339:1: warning: data definition has no type or storage class
module_pci_driver(cavium_ptp_driver);
^~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/cavium/common/cavium_ptp.c:339:1: error: type defaults to 'int' in declaration of 'module_pci_driver' [-Werror=implicit-int]
>> drivers/net/ethernet/cavium/common/cavium_ptp.c:339:1: warning: parameter names (without types) in function declaration
drivers/net/ethernet/cavium/common/cavium_ptp.c:332:26: warning: 'cavium_ptp_driver' defined but not used [-Wunused-variable]
static struct pci_driver cavium_ptp_driver = {
^~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
# https://github.com/0day-ci/linux/commit/c862aa8f427828f2c08fdc96494152690a2ec5d0
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout c862aa8f427828f2c08fdc96494152690a2ec5d0
vim +235 drivers/net/ethernet/cavium/common/cavium_ptp.c
8c56df37 Radoslaw Biernacki 2018-01-15 216
8c56df37 Radoslaw Biernacki 2018-01-15 217 static int cavium_ptp_probe(struct pci_dev *pdev,
8c56df37 Radoslaw Biernacki 2018-01-15 218 const struct pci_device_id *ent)
8c56df37 Radoslaw Biernacki 2018-01-15 219 {
8c56df37 Radoslaw Biernacki 2018-01-15 220 struct device *dev = &pdev->dev;
8c56df37 Radoslaw Biernacki 2018-01-15 221 struct cavium_ptp *clock;
8c56df37 Radoslaw Biernacki 2018-01-15 222 struct cyclecounter *cc;
8c56df37 Radoslaw Biernacki 2018-01-15 223 u64 clock_cfg;
8c56df37 Radoslaw Biernacki 2018-01-15 224 u64 clock_comp;
8c56df37 Radoslaw Biernacki 2018-01-15 225 int err;
8c56df37 Radoslaw Biernacki 2018-01-15 226
8c56df37 Radoslaw Biernacki 2018-01-15 227 clock = devm_kzalloc(dev, sizeof(*clock), GFP_KERNEL);
8c56df37 Radoslaw Biernacki 2018-01-15 228 if (!clock) {
8c56df37 Radoslaw Biernacki 2018-01-15 229 err = -ENOMEM;
8c56df37 Radoslaw Biernacki 2018-01-15 230 goto error;
8c56df37 Radoslaw Biernacki 2018-01-15 231 }
8c56df37 Radoslaw Biernacki 2018-01-15 232
8c56df37 Radoslaw Biernacki 2018-01-15 233 clock->pdev = pdev;
8c56df37 Radoslaw Biernacki 2018-01-15 234
8c56df37 Radoslaw Biernacki 2018-01-15 @235 err = pcim_enable_device(pdev);
8c56df37 Radoslaw Biernacki 2018-01-15 236 if (err)
8c56df37 Radoslaw Biernacki 2018-01-15 237 goto error_free;
8c56df37 Radoslaw Biernacki 2018-01-15 238
8c56df37 Radoslaw Biernacki 2018-01-15 239 err = pcim_iomap_regions(pdev, 1 << PCI_PTP_BAR_NO, pci_name(pdev));
8c56df37 Radoslaw Biernacki 2018-01-15 240 if (err)
8c56df37 Radoslaw Biernacki 2018-01-15 241 goto error_free;
8c56df37 Radoslaw Biernacki 2018-01-15 242
8c56df37 Radoslaw Biernacki 2018-01-15 243 clock->reg_base = pcim_iomap_table(pdev)[PCI_PTP_BAR_NO];
8c56df37 Radoslaw Biernacki 2018-01-15 244
8c56df37 Radoslaw Biernacki 2018-01-15 245 spin_lock_init(&clock->spin_lock);
8c56df37 Radoslaw Biernacki 2018-01-15 246
8c56df37 Radoslaw Biernacki 2018-01-15 247 cc = &clock->cycle_counter;
8c56df37 Radoslaw Biernacki 2018-01-15 248 cc->read = cavium_ptp_cc_read;
8c56df37 Radoslaw Biernacki 2018-01-15 249 cc->mask = CYCLECOUNTER_MASK(64);
8c56df37 Radoslaw Biernacki 2018-01-15 250 cc->mult = 1;
8c56df37 Radoslaw Biernacki 2018-01-15 251 cc->shift = 0;
8c56df37 Radoslaw Biernacki 2018-01-15 252
8c56df37 Radoslaw Biernacki 2018-01-15 253 timecounter_init(&clock->time_counter, &clock->cycle_counter,
8c56df37 Radoslaw Biernacki 2018-01-15 254 ktime_to_ns(ktime_get_real()));
8c56df37 Radoslaw Biernacki 2018-01-15 255
8c56df37 Radoslaw Biernacki 2018-01-15 256 clock->clock_rate = ptp_cavium_clock_get();
8c56df37 Radoslaw Biernacki 2018-01-15 257
8c56df37 Radoslaw Biernacki 2018-01-15 258 clock->ptp_info = (struct ptp_clock_info) {
8c56df37 Radoslaw Biernacki 2018-01-15 259 .owner = THIS_MODULE,
8c56df37 Radoslaw Biernacki 2018-01-15 260 .name = "ThunderX PTP",
8c56df37 Radoslaw Biernacki 2018-01-15 261 .max_adj = 1000000000ull,
8c56df37 Radoslaw Biernacki 2018-01-15 262 .n_ext_ts = 0,
8c56df37 Radoslaw Biernacki 2018-01-15 263 .n_pins = 0,
8c56df37 Radoslaw Biernacki 2018-01-15 264 .pps = 0,
8c56df37 Radoslaw Biernacki 2018-01-15 265 .adjfine = cavium_ptp_adjfine,
8c56df37 Radoslaw Biernacki 2018-01-15 266 .adjtime = cavium_ptp_adjtime,
8c56df37 Radoslaw Biernacki 2018-01-15 267 .gettime64 = cavium_ptp_gettime,
8c56df37 Radoslaw Biernacki 2018-01-15 268 .settime64 = cavium_ptp_settime,
8c56df37 Radoslaw Biernacki 2018-01-15 269 .enable = cavium_ptp_enable,
8c56df37 Radoslaw Biernacki 2018-01-15 270 };
8c56df37 Radoslaw Biernacki 2018-01-15 271
8c56df37 Radoslaw Biernacki 2018-01-15 272 clock_cfg = readq(clock->reg_base + PTP_CLOCK_CFG);
8c56df37 Radoslaw Biernacki 2018-01-15 273 clock_cfg |= PTP_CLOCK_CFG_PTP_EN;
8c56df37 Radoslaw Biernacki 2018-01-15 274 writeq(clock_cfg, clock->reg_base + PTP_CLOCK_CFG);
8c56df37 Radoslaw Biernacki 2018-01-15 275
8c56df37 Radoslaw Biernacki 2018-01-15 276 clock_comp = ((u64)1000000000ull << 32) / clock->clock_rate;
8c56df37 Radoslaw Biernacki 2018-01-15 277 writeq(clock_comp, clock->reg_base + PTP_CLOCK_COMP);
8c56df37 Radoslaw Biernacki 2018-01-15 278
8c56df37 Radoslaw Biernacki 2018-01-15 279 clock->ptp_clock = ptp_clock_register(&clock->ptp_info, dev);
8c56df37 Radoslaw Biernacki 2018-01-15 280 if (!clock->ptp_clock) {
8c56df37 Radoslaw Biernacki 2018-01-15 281 err = -ENODEV;
8c56df37 Radoslaw Biernacki 2018-01-15 282 goto error_stop;
8c56df37 Radoslaw Biernacki 2018-01-15 283 }
8c56df37 Radoslaw Biernacki 2018-01-15 284 if (IS_ERR(clock->ptp_clock)) {
8c56df37 Radoslaw Biernacki 2018-01-15 285 err = PTR_ERR(clock->ptp_clock);
8c56df37 Radoslaw Biernacki 2018-01-15 286 goto error_stop;
8c56df37 Radoslaw Biernacki 2018-01-15 287 }
8c56df37 Radoslaw Biernacki 2018-01-15 288
8c56df37 Radoslaw Biernacki 2018-01-15 289 pci_set_drvdata(pdev, clock);
8c56df37 Radoslaw Biernacki 2018-01-15 290 return 0;
8c56df37 Radoslaw Biernacki 2018-01-15 291
8c56df37 Radoslaw Biernacki 2018-01-15 292 error_stop:
8c56df37 Radoslaw Biernacki 2018-01-15 293 clock_cfg = readq(clock->reg_base + PTP_CLOCK_CFG);
8c56df37 Radoslaw Biernacki 2018-01-15 294 clock_cfg &= ~PTP_CLOCK_CFG_PTP_EN;
8c56df37 Radoslaw Biernacki 2018-01-15 295 writeq(clock_cfg, clock->reg_base + PTP_CLOCK_CFG);
8c56df37 Radoslaw Biernacki 2018-01-15 296 pcim_iounmap_regions(pdev, 1 << PCI_PTP_BAR_NO);
8c56df37 Radoslaw Biernacki 2018-01-15 297
8c56df37 Radoslaw Biernacki 2018-01-15 298 error_free:
8c56df37 Radoslaw Biernacki 2018-01-15 299 devm_kfree(dev, clock);
8c56df37 Radoslaw Biernacki 2018-01-15 300
8c56df37 Radoslaw Biernacki 2018-01-15 301 error:
8c56df37 Radoslaw Biernacki 2018-01-15 302 /* For `cavium_ptp_get()` we need to differentiate between the case
8c56df37 Radoslaw Biernacki 2018-01-15 303 * when the core has not tried to probe this device and the case when
8c56df37 Radoslaw Biernacki 2018-01-15 304 * the probe failed. In the later case we pretend that the
8c56df37 Radoslaw Biernacki 2018-01-15 305 * initialization was successful and keep the error in
8c56df37 Radoslaw Biernacki 2018-01-15 306 * `dev->driver_data`.
8c56df37 Radoslaw Biernacki 2018-01-15 307 */
8c56df37 Radoslaw Biernacki 2018-01-15 308 pci_set_drvdata(pdev, ERR_PTR(err));
8c56df37 Radoslaw Biernacki 2018-01-15 309 return 0;
8c56df37 Radoslaw Biernacki 2018-01-15 310 }
8c56df37 Radoslaw Biernacki 2018-01-15 311
8c56df37 Radoslaw Biernacki 2018-01-15 312 static void cavium_ptp_remove(struct pci_dev *pdev)
8c56df37 Radoslaw Biernacki 2018-01-15 313 {
8c56df37 Radoslaw Biernacki 2018-01-15 314 struct cavium_ptp *clock = pci_get_drvdata(pdev);
8c56df37 Radoslaw Biernacki 2018-01-15 315 u64 clock_cfg;
8c56df37 Radoslaw Biernacki 2018-01-15 316
8c56df37 Radoslaw Biernacki 2018-01-15 317 if (IS_ERR_OR_NULL(clock))
8c56df37 Radoslaw Biernacki 2018-01-15 318 return;
8c56df37 Radoslaw Biernacki 2018-01-15 319
8c56df37 Radoslaw Biernacki 2018-01-15 320 ptp_clock_unregister(clock->ptp_clock);
8c56df37 Radoslaw Biernacki 2018-01-15 321
8c56df37 Radoslaw Biernacki 2018-01-15 322 clock_cfg = readq(clock->reg_base + PTP_CLOCK_CFG);
8c56df37 Radoslaw Biernacki 2018-01-15 323 clock_cfg &= ~PTP_CLOCK_CFG_PTP_EN;
8c56df37 Radoslaw Biernacki 2018-01-15 324 writeq(clock_cfg, clock->reg_base + PTP_CLOCK_CFG);
8c56df37 Radoslaw Biernacki 2018-01-15 325 }
8c56df37 Radoslaw Biernacki 2018-01-15 326
8c56df37 Radoslaw Biernacki 2018-01-15 327 static const struct pci_device_id cavium_ptp_id_table[] = {
8c56df37 Radoslaw Biernacki 2018-01-15 328 { PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, PCI_DEVICE_ID_CAVIUM_PTP) },
8c56df37 Radoslaw Biernacki 2018-01-15 329 { 0, }
8c56df37 Radoslaw Biernacki 2018-01-15 330 };
8c56df37 Radoslaw Biernacki 2018-01-15 331
8c56df37 Radoslaw Biernacki 2018-01-15 332 static struct pci_driver cavium_ptp_driver = {
8c56df37 Radoslaw Biernacki 2018-01-15 333 .name = DRV_NAME,
8c56df37 Radoslaw Biernacki 2018-01-15 334 .id_table = cavium_ptp_id_table,
8c56df37 Radoslaw Biernacki 2018-01-15 335 .probe = cavium_ptp_probe,
8c56df37 Radoslaw Biernacki 2018-01-15 336 .remove = cavium_ptp_remove,
8c56df37 Radoslaw Biernacki 2018-01-15 337 };
8c56df37 Radoslaw Biernacki 2018-01-15 338
75498aa1 Wei Yongjun 2018-03-28 @339 module_pci_driver(cavium_ptp_driver);
8c56df37 Radoslaw Biernacki 2018-01-15 340
:::::: The code at line 235 was first introduced by commit
:::::: 8c56df372bc1371504bf3cc29fbb3c09967cafff net: add support for Cavium PTP coprocessor
:::::: TO: Radoslaw Biernacki <rad@...ihalf.com>
:::::: CC: David S. Miller <davem@...emloft.net>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Download attachment ".config.gz" of type "application/gzip" (10962 bytes)
Powered by blists - more mailing lists