From: kbuild test robot <lkp@intel.com>
To: Alexander Sverdlin <alexander.sverdlin@nokia.com>
Cc: kbuild-all@01.org, netdev@vger.kernel.org,
Alexander Sverdlin <alexander.sverdlin@nokia.com>,
"David S. Miller" <davem@davemloft.net>,
Aleksey Makarov <aleksey.makarov@cavium.com>,
Sunil Goutham <sgoutham@cavium.com>,
Raghu Vatsavayi <raghu.vatsavayi@cavium.com>,
Vijaya Mohan Guvva <vijaya.guvva@cavium.com>
Subject: Re: [PATCH] net: cavium: Drop dependency of NET_VENDOR_CAVIUM on PCI
Date: Tue, 17 Jul 2018 09:01:59 +0800 [thread overview]
Message-ID: <20180717010159.GD10593@intel.com> (raw)
In-Reply-To: <20180713150428.1638-1-alexander.sverdlin@nokia.com>
[-- Attachment #1: Type: text/plain, Size: 11377 bytes --]
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@semihalf.com>
:::::: CC: David S. Miller <davem@davemloft.net>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 10962 bytes --]
next prev parent reply other threads:[~2018-07-17 1:23 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-13 15:04 [PATCH] net: cavium: Drop dependency of NET_VENDOR_CAVIUM on PCI Alexander Sverdlin
2018-07-16 20:44 ` David Miller
2018-07-17 1:01 ` kbuild test robot [this message]
2018-07-17 8:16 ` [PATCH v2] " Alexander Sverdlin
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=20180717010159.GD10593@intel.com \
--to=lkp@intel.com \
--cc=aleksey.makarov@cavium.com \
--cc=alexander.sverdlin@nokia.com \
--cc=davem@davemloft.net \
--cc=kbuild-all@01.org \
--cc=netdev@vger.kernel.org \
--cc=raghu.vatsavayi@cavium.com \
--cc=sgoutham@cavium.com \
--cc=vijaya.guvva@cavium.com \
/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.