I have 2 suggestions , but both are just guesses.
I use Agilent USB controllers.
1: You might have a card with PCI ID :
a1a10e:07.0 Communication controller: National Instruments Device
a1a1 (rev 02)
That id is NOT recognized in the current source , but according to the below post from the "linux-gpib mailinglist" , should be easy to add to the source.
Hej,
newer NI PCIe can easily be included and work well ...
regards
Carsten
diff -crB linux-gpib-3.2.14/drivers/gpib/tnt4882/tnt4882.h
linux-gpib-3.2.14.ni_pcie2/drivers/gpib/tnt4882/tnt4882.h ***
linux-gpib-3.2.14/drivers/gpib/tnt4882/tnt4882.h 2007-04-04
21:33:11.000000000 +0200 ---
linux-gpib-3.2.14.ni_pcie2/drivers/gpib/tnt4882/tnt4882.h 2010-02-23
16:22:20.000000000 +0100 ***************
*** 35,41 ****
PCI_DEVICE_ID_NI_GPIB_PLUS = 0xc811,
PCI_DEVICE_ID_NI_PXIGPIB = 0xc821,
PCI_DEVICE_ID_NI_PMCGPIB = 0xc831,
! PCI_DEVICE_ID_NI_PCIEGPIB = 0x70cf
};
// struct which defines private_data for tnt4882 devices
--- 35,42 ----
PCI_DEVICE_ID_NI_GPIB_PLUS = 0xc811,
PCI_DEVICE_ID_NI_PXIGPIB = 0xc821,
PCI_DEVICE_ID_NI_PMCGPIB = 0xc831,
! PCI_DEVICE_ID_NI_PCIEGPIB = 0x70cf,
! PCI_DEVICE_ID_NI_PCIE2GPIB = 0x710e
};
// struct which defines private_data for tnt4882 devices
diff -crB linux-gpib-3.2.14/drivers/gpib/tnt4882/tnt4882_init.c
linux-gpib-3.2.14.ni_pcie2/drivers/gpib/tnt4882/tnt4882_init.c ***
linux-gpib-3.2.14/drivers/gpib/tnt4882/tnt4882_init.c 2007-10-24
16:12:00.000000000 +0200 ---
linux-gpib-3.2.14.ni_pcie2/drivers/gpib/tnt4882/tnt4882_init.c 2010-02-23
16:12:23.000000000 +0100 ***************
*** 525,530 ****
--- 525,531 ----
case PCI_DEVICE_ID_NI_PXIGPIB: case PCI_DEVICE_ID_NI_PMCGPIB: case
PCI_DEVICE_ID_NI_PCIEGPIB:
+ case PCI_DEVICE_ID_NI_PCIE2GPIB:
found_board = 1;
break;
default:
***************
*** 723,728 ****
--- 724,730 ----
{PCI_DEVICE(PCI_VENDOR_ID_NATINST, PCI_DEVICE_ID_NI_PXIGPIB)},
{PCI_DEVICE(PCI_VENDOR_ID_NATINST, PCI_DEVICE_ID_NI_PMCGPIB)},
{PCI_DEVICE(PCI_VENDOR_ID_NATINST, PCI_DEVICE_ID_NI_PCIEGPIB)},
+ {PCI_DEVICE(PCI_VENDOR_ID_NATINST, PCI_DEVICE_ID_NI_PCIE2GPIB)},
{ 0 }
};
MODULE_DEVICE_TABLE(pci, tnt4882_pci_table);
This means
Ie. in / drivers / gpib / tnt4882 / tnt4882.h
In the enum , add an extra line
PCI_DEVICE_ID_NI_PCIE3GPIB = 0xa1a1,
enum
{
PCI_DEVICE_ID_NI_GPIB = 0xc801,
PCI_DEVICE_ID_NI_GPIB_PLUS = 0xc811,
PCI_DEVICE_ID_NI_PXIGPIB = 0xc821,
PCI_DEVICE_ID_NI_PMCGPIB = 0xc831,
PCI_DEVICE_ID_NI_PCIEGPIB = 0x70cf,
PCI_DEVICE_ID_NI_PCIE2GPIB = 0x710e,
PCI_DEVICE_ID_NI_PCIE3GPIB = 0xa1a1,
PCI_DEVICE_ID_CEC_NI_GPIB = 0x7258
};
In / drivers / gpib / tnt4882 / tnt4882_init.c
Search for PCI_DEVICE_ID_NI_PCIE2GPIB , and add PCI_DEVICE_ID_NI_PCIE3GPIB the 2 found places
switch(mite_device_id(mite))
{
case PCI_DEVICE_ID_NI_GPIB:
case PCI_DEVICE_ID_NI_GPIB_PLUS:
case PCI_DEVICE_ID_NI_PXIGPIB:
case PCI_DEVICE_ID_NI_PMCGPIB:
case PCI_DEVICE_ID_NI_PCIEGPIB:
case PCI_DEVICE_ID_NI_PCIE2GPIB:
case PCI_DEVICE_ID_NI_PCIE3GPIB:
case PCI_DEVICE_ID_CEC_NI_GPIB:
found_board = 1;
break;
default:
found_board = 0;
break;
}
And
static const struct pci_device_id tnt4882_pci_table[] =
{
{PCI_DEVICE(PCI_VENDOR_ID_NATINST, PCI_DEVICE_ID_NI_GPIB)},
{PCI_DEVICE(PCI_VENDOR_ID_NATINST, PCI_DEVICE_ID_NI_GPIB_PLUS)},
{PCI_DEVICE(PCI_VENDOR_ID_NATINST, PCI_DEVICE_ID_NI_PXIGPIB)},
{PCI_DEVICE(PCI_VENDOR_ID_NATINST, PCI_DEVICE_ID_NI_PMCGPIB)},
{PCI_DEVICE(PCI_VENDOR_ID_NATINST, PCI_DEVICE_ID_NI_PCIEGPIB)},
{PCI_DEVICE(PCI_VENDOR_ID_NATINST, PCI_DEVICE_ID_NI_PCIE2GPIB)},
{PCI_DEVICE(PCI_VENDOR_ID_NATINST, PCI_DEVICE_ID_NI_PCIE3GPIB)},
{PCI_DEVICE(PCI_VENDOR_ID_NATINST, PCI_DEVICE_ID_CEC_NI_GPIB)},
{ 0 }
};
According to the mailinglist post , this should do it.
And would prob be my best guess , if it's PCI-ID related.
The other was something Dave Penkler wrote , not so long ago.
But i would not expect it to cause the symptoms above.
2:What kernel do you use ?
A patch was incorporated into the kernel between 4.2 and 4.3 that broke
PCI IRQ routing in certain cases by no longer enabling interrupts on
upstream bridges.
This affected the PCI cards supported by the agilent_82350b and tnt4882
drivers in the linux-gpib package running on kernel versions 4.3 through
4.4.6.
If you are affected by this and can't change your kernel, a work-around is
to boot it with the *"pci=routeirq"* option. The problem was fixed in
kernel version 4.5 and later with this commit:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=6c777e8799a93e3bdb67bec622429e1b48dc90fb
Thanks to Ansgar Keukes for reporting and helping to resolve the issue.
/Bingo