tree: https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git pci/host-designware head: f6a1972e20ab2f40f4a8a1000bf34f4df3145c01 commit: 450afc42599ba3544e23fb45e86a995d839e2e1c [37/43] misc: Add host side PCI driver for PCI test function device config: blackfin-allmodconfig (attached as .config) compiler: bfin-uclinux-gcc (GCC) 6.2.0 reproduce: wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross git checkout 450afc42599ba3544e23fb45e86a995d839e2e1c # save the attached .config to linux build tree make.cross ARCH=blackfin All error/warnings (new ones prefixed by >>): drivers/misc/pci_endpoint_test.c: In function 'pci_endpoint_test_probe': >> drivers/misc/pci_endpoint_test.c:420:8: error: implicit declaration of function 'pci_alloc_irq_vectors' [-Werror=implicit-function-declaration] irq = pci_alloc_irq_vectors(pdev, 1, 32, PCI_IRQ_MSI); ^~~~~~~~~~~~~~~~~~~~~ >> drivers/misc/pci_endpoint_test.c:420:43: error: 'PCI_IRQ_MSI' undeclared (first use in this function) irq = pci_alloc_irq_vectors(pdev, 1, 32, PCI_IRQ_MSI); ^~~~~~~~~~~ drivers/misc/pci_endpoint_test.c:420:43: note: each undeclared identifier is reported only once for each function it appears in >> drivers/misc/pci_endpoint_test.c:487:2: error: implicit declaration of function 'pci_disable_msi' [-Werror=implicit-function-declaration] pci_disable_msi(pdev); ^~~~~~~~~~~~~~~ drivers/misc/pci_endpoint_test.c: At top level: >> drivers/misc/pci_endpoint_test.c:530:1: warning: data definition has no type or storage class module_pci_driver(pci_endpoint_test_driver); ^~~~~~~~~~~~~~~~~ >> drivers/misc/pci_endpoint_test.c:530:1: error: type defaults to 'int' in declaration of 'module_pci_driver' [-Werror=implicit-int] >> drivers/misc/pci_endpoint_test.c:530:1: warning: parameter names (without types) in function declaration drivers/misc/pci_endpoint_test.c:524:26: warning: 'pci_endpoint_test_driver' defined but not used [-Wunused-variable] static struct pci_driver pci_endpoint_test_driver = { ^~~~~~~~~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors vim +/pci_alloc_irq_vectors +420 drivers/misc/pci_endpoint_test.c 414 dev_err(dev, "Cannot obtain PCI resources\n"); 415 goto err_disable_pdev; 416 } 417 418 pci_set_master(pdev); 419 > 420 irq = pci_alloc_irq_vectors(pdev, 1, 32, PCI_IRQ_MSI); 421 if (irq < 0) 422 dev_err(dev, "failed to get MSI interrupts\n"); 423 424 err = devm_request_irq(dev, pdev->irq, pci_endpoint_test_irqhandler, 425 IRQF_SHARED, DRV_MODULE_NAME, test); 426 if (err) { 427 dev_err(dev, "failed to request IRQ %d\n", pdev->irq); 428 goto err_disable_msi; 429 } 430 431 for (i = 1; i < irq; i++) { 432 err = devm_request_irq(dev, pdev->irq + i, 433 pci_endpoint_test_irqhandler, 434 IRQF_SHARED, DRV_MODULE_NAME, test); 435 if (err) 436 dev_err(dev, "failed to request IRQ %d for MSI %d\n", 437 pdev->irq + i, i + 1); 438 } 439 440 for (bar = BAR_0; bar <= BAR_5; bar++) { 441 base = pci_ioremap_bar(pdev, bar); 442 if (!base) { 443 dev_err(dev, "failed to read BAR%d\n", bar); 444 WARN_ON(bar == BAR_0); 445 } 446 test->bar[bar] = base; 447 } 448 449 test->base = test->bar[0]; 450 if (!test->base) { 451 dev_err(dev, "Cannot perform PCI test without BAR0\n"); 452 goto err_iounmap; 453 } 454 455 pci_set_drvdata(pdev, test); 456 457 id = ida_simple_get(&pci_endpoint_test_ida, 0, 0, GFP_KERNEL); 458 if (id < 0) { 459 dev_err(dev, "unable to get id\n"); 460 goto err_iounmap; 461 } 462 463 snprintf(name, sizeof(name), DRV_MODULE_NAME ".%d", id); 464 misc_device = &test->miscdev; 465 misc_device->minor = MISC_DYNAMIC_MINOR; 466 misc_device->name = name; 467 misc_device->fops = &pci_endpoint_test_fops, 468 469 err = misc_register(misc_device); 470 if (err) { 471 dev_err(dev, "failed to register device\n"); 472 goto err_ida_remove; 473 } 474 475 return 0; 476 477 err_ida_remove: 478 ida_simple_remove(&pci_endpoint_test_ida, id); 479 480 err_iounmap: 481 for (bar = BAR_0; bar <= BAR_5; bar++) { 482 if (test->bar[bar]) 483 pci_iounmap(pdev, test->bar[bar]); 484 } 485 486 err_disable_msi: > 487 pci_disable_msi(pdev); 488 pci_release_regions(pdev); 489 490 err_disable_pdev: 491 pci_disable_device(pdev); 492 493 return err; 494 } 495 496 static void pci_endpoint_test_remove(struct pci_dev *pdev) 497 { 498 int id; 499 enum pci_barno bar; 500 struct pci_endpoint_test *test = pci_get_drvdata(pdev); 501 struct miscdevice *misc_device = &test->miscdev; 502 503 if (sscanf(misc_device->name, DRV_MODULE_NAME ".%d", &id) != 1) 504 return; 505 506 misc_deregister(&test->miscdev); 507 ida_simple_remove(&pci_endpoint_test_ida, id); 508 for (bar = BAR_0; bar <= BAR_5; bar++) { 509 if (test->bar[bar]) 510 pci_iounmap(pdev, test->bar[bar]); 511 } 512 pci_disable_msi(pdev); 513 pci_release_regions(pdev); 514 pci_disable_device(pdev); 515 } 516 517 static const struct pci_device_id pci_endpoint_test_tbl[] = { 518 { PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_DRA74x) }, 519 { PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_DRA72x) }, 520 { } 521 }; 522 MODULE_DEVICE_TABLE(pci, pci_endpoint_test_tbl); 523 524 static struct pci_driver pci_endpoint_test_driver = { 525 .name = DRV_MODULE_NAME, 526 .id_table = pci_endpoint_test_tbl, 527 .probe = pci_endpoint_test_probe, 528 .remove = pci_endpoint_test_remove, 529 }; > 530 module_pci_driver(pci_endpoint_test_driver); 531 532 MODULE_DESCRIPTION("PCI ENDPOINT TEST HOST DRIVER"); 533 MODULE_AUTHOR("Kishon Vijay Abraham I <kishon@xxxxxx>"); --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip