* [PATCH] net: cavium: Drop dependency of NET_VENDOR_CAVIUM on PCI
@ 2018-07-13 15:04 Alexander Sverdlin
2018-07-16 20:44 ` David Miller
2018-07-17 1:01 ` kbuild test robot
0 siblings, 2 replies; 4+ messages in thread
From: Alexander Sverdlin @ 2018-07-13 15:04 UTC (permalink / raw)
To: netdev
Cc: Alexander Sverdlin, David S. Miller, Aleksey Makarov,
Sunil Goutham, Raghu Vatsavayi, Vijaya Mohan Guvva
Octeon Ethernet drivers work perfectly without PCI.
Signed-off-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
---
drivers/net/ethernet/cavium/Kconfig | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/net/ethernet/cavium/Kconfig b/drivers/net/ethernet/cavium/Kconfig
index 043e3c11c42b..4c3a5c354497 100644
--- a/drivers/net/ethernet/cavium/Kconfig
+++ b/drivers/net/ethernet/cavium/Kconfig
@@ -4,7 +4,6 @@
config NET_VENDOR_CAVIUM
bool "Cavium ethernet drivers"
- depends on PCI
default y
---help---
Select this option if you want enable Cavium network support.
--
2.18.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] net: cavium: Drop dependency of NET_VENDOR_CAVIUM on PCI
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
1 sibling, 0 replies; 4+ messages in thread
From: David Miller @ 2018-07-16 20:44 UTC (permalink / raw)
To: alexander.sverdlin
Cc: netdev, aleksey.makarov, sgoutham, raghu.vatsavayi, vijaya.guvva
From: Alexander Sverdlin <alexander.sverdlin@nokia.com>
Date: Fri, 13 Jul 2018 17:04:28 +0200
> Octeon Ethernet drivers work perfectly without PCI.
>
> Signed-off-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
Applied.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] net: cavium: Drop dependency of NET_VENDOR_CAVIUM on PCI
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
2018-07-17 8:16 ` [PATCH v2] " Alexander Sverdlin
1 sibling, 1 reply; 4+ messages in thread
From: kbuild test robot @ 2018-07-17 1:01 UTC (permalink / raw)
To: Alexander Sverdlin
Cc: kbuild-all, netdev, Alexander Sverdlin, David S. Miller,
Aleksey Makarov, Sunil Goutham, Raghu Vatsavayi,
Vijaya Mohan Guvva
[-- 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 --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2] net: cavium: Drop dependency of NET_VENDOR_CAVIUM on PCI
2018-07-17 1:01 ` kbuild test robot
@ 2018-07-17 8:16 ` Alexander Sverdlin
0 siblings, 0 replies; 4+ messages in thread
From: Alexander Sverdlin @ 2018-07-17 8:16 UTC (permalink / raw)
To: netdev
Cc: Alexander Sverdlin, David S. Miller, Aleksey Makarov,
Sunil Goutham, Raghu Vatsavayi, Vijaya Mohan Guvva
Octeon Ethernet drivers work perfectly without PCI.
Signed-off-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
---
drivers/net/ethernet/cavium/Kconfig | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/drivers/net/ethernet/cavium/Kconfig b/drivers/net/ethernet/cavium/Kconfig
index 043e3c11c42b..ba65ed49f480 100644
--- a/drivers/net/ethernet/cavium/Kconfig
+++ b/drivers/net/ethernet/cavium/Kconfig
@@ -4,7 +4,6 @@
config NET_VENDOR_CAVIUM
bool "Cavium ethernet drivers"
- depends on PCI
default y
---help---
Select this option if you want enable Cavium network support.
@@ -15,7 +14,7 @@ if NET_VENDOR_CAVIUM
config THUNDER_NIC_PF
tristate "Thunder Physical function driver"
- depends on 64BIT
+ depends on 64BIT && PCI
select THUNDER_NIC_BGX
---help---
This driver supports Thunder's NIC physical function.
@@ -28,13 +27,13 @@ config THUNDER_NIC_PF
config THUNDER_NIC_VF
tristate "Thunder Virtual function driver"
imply CAVIUM_PTP
- depends on 64BIT
+ depends on 64BIT && PCI
---help---
This driver supports Thunder's NIC virtual function
config THUNDER_NIC_BGX
tristate "Thunder MAC interface driver (BGX)"
- depends on 64BIT
+ depends on 64BIT && PCI
select PHYLIB
select MDIO_THUNDER
select THUNDER_NIC_RGX
@@ -44,7 +43,7 @@ config THUNDER_NIC_BGX
config THUNDER_NIC_RGX
tristate "Thunder MAC interface driver (RGX)"
- depends on 64BIT
+ depends on 64BIT && PCI
select PHYLIB
select MDIO_THUNDER
---help---
@@ -53,7 +52,7 @@ config THUNDER_NIC_RGX
config CAVIUM_PTP
tristate "Cavium PTP coprocessor as PTP clock"
- depends on 64BIT
+ depends on 64BIT && PCI
imply PTP_1588_CLOCK
default y
---help---
@@ -65,7 +64,7 @@ config CAVIUM_PTP
config LIQUIDIO
tristate "Cavium LiquidIO support"
- depends on 64BIT
+ depends on 64BIT && PCI
depends on MAY_USE_DEVLINK
imply PTP_1588_CLOCK
select FW_LOADER
--
2.18.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2018-07-17 8:48 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
2018-07-17 8:16 ` [PATCH v2] " Alexander Sverdlin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).