This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Question about cyg_pci_translate_interrupt


Ok, I don't have my true target available here at home. But I tried it on my home PC. In summary, some devices were ok with it. Most were not. The "some devices" seems to be the main motherboard chipset, which shows up as several PCI devices. Every add-on to the PC did not work. Attached to the end are the output tests. (I did not realize the pci1 actually scanned all of the device twice anyways, so this actually has three scans.

Based on this, I would recommend that the change that you made to pci.c probably belongs in HAL_PCI_TRANSLATE_INTERRUPT for the HAL which requires that change. Since there is no way to "undo" it for HALs that do not need it.

David

David Brennan wrote:

Ok. thanks for the info. My platform is i386-pc. I will modify the pci test program to scan all of the devices twice and check the results. If it is only my particular device that has the problem, I can live with that. I just wanted to make sure it wasn't a general problem first.

Mark Salter wrote:

On Wed, 2004-10-06 at 22:29, David Brennan wrote:


Is this function allowed to be called multiple times? I have a particular device for which the driver is broken into two modules. Each uses the standard pci probe and print logic from the pci1 test file. The interrupt routine gets attached by the second module. However, when I got the latest CVS, the device now reports to the second module that it does not generate interrupts. I assume the problem was introduced with this change (http://sources.redhat.com/ml/ecos-patches/2004-08/msg00080.html). And I can re-write my code (basically not check the interrupt vector in the first module) to work. But wanted to make sure that was a desired effect of the change. The problem may also be my specific device, in which case it make perfect sense for me to solve it on my end.


There should be no problem in calling cyg_pci_translate_interrupt more than once. I tried it on a number of devices and it seems to work fine. You may be dealing with a device which modifies its interrupt pin register when the interrupt line register is written. I can't find anything in the standard which would support this behavior though. The actual translation is done by the HAL, so there may be issues with the particular HAL you are using. If a workaround is needed, it should be in that HAL code, not the drivers.

--Mark






Run with old pci.c logic:
Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7190 [82443BX/ZX][440BX/ZX AGPset Host Bridge]
Command   0x0006, Status 0x3210
Class/Rev 0x06000003 [Bridge Device][Host/PCI][]
Wired to HAL vector 32

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7191 [82443BX/ZX][440BX/ZX AGPset PCI-to-PCI bridge]
Command   0x0107, Status 0x0220
Class/Rev 0x06040003 [Bridge Device][PCI/PCI][]
Wired to HAL vector 32

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7110 [82371AB/EB/MB][PIIX4/4E/4M ISA Bridge]
Command   0x000f, Status 0x0280
Class/Rev 0x06010002 [Bridge Device][PCI/ISA][]
Wired to HAL vector 32

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7111 [82371AB/EB/MB][PIIX4/4E/4M IDE Controller]
Command   0x0005, Status 0x0a80
Class/Rev 0x01018001 [UNKNOWN]
Wired to HAL vector 32

Vendor 0x8086 [Intel][Intel Corporation]
Device 0x7112 [82371AB/EB/MB][PIIX4/4E/4M USB Interface]
Command 0x0005, Status 0x0280
Class/Rev 0x0c030001 [Serial Bus Controller][USB (Universal Serial Bus)][Universal Host Controller]
Wired to HAL vector 42


Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7113 [82371AB/EB/MB][PIIX4/4E/4M Power Management Controller]
Command   0x0003, Status 0x0280
Class/Rev 0x06800002 [Bridge Device][Other][]
Wired to HAL vector 32

Vendor    0x1106 [VIA][VIA Technologies Inc]
Device    0x3043 [VT86C100A][Rhine 10/100 Ethernet Adapter]
Command   0x0007, Status 0x0200
Class/Rev 0x02000006 [Network Controller][Ethernet][]
Wired to HAL vector 37

Vendor    0x1073 [Yamaha][Yamaha Corporation]
Device    0x0004 [YMF724][PCI Audio Controller]
Command   0x0006, Status 0x0210
Class/Rev 0x04010005 [Multimedia Device][Audio][]
Wired to HAL vector 44

Vendor    0x10de [NVIDIA][NVIDIA Corporation]
Device    0x0201 [NV20DDR][GeForce3 Ti 200]
Command   0x0007, Status 0x02b0
Class/Rev 0x030000a3 [Display Controller][PC Compatible][VGA]
Wired to HAL vector 43

********************************************************************************
Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7190 [82443BX/ZX][440BX/ZX AGPset Host Bridge]
Command   0x0006, Status 0x3210
Class/Rev 0x06000003 [Bridge Device][Host/PCI][]
Wired to HAL vector 32

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7191 [82443BX/ZX][440BX/ZX AGPset PCI-to-PCI bridge]
Command   0x0107, Status 0x0220
Class/Rev 0x06040003 [Bridge Device][PCI/PCI][]
Wired to HAL vector 32

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7110 [82371AB/EB/MB][PIIX4/4E/4M ISA Bridge]
Command   0x000f, Status 0x0280
Class/Rev 0x06010002 [Bridge Device][PCI/ISA][]
Wired to HAL vector 32

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7111 [82371AB/EB/MB][PIIX4/4E/4M IDE Controller]
Command   0x0005, Status 0x0a80
Class/Rev 0x01018001 [UNKNOWN]
Wired to HAL vector 32

Vendor 0x8086 [Intel][Intel Corporation]
Device 0x7112 [82371AB/EB/MB][PIIX4/4E/4M USB Interface]
Command 0x0005, Status 0x0280
Class/Rev 0x0c030001 [Serial Bus Controller][USB (Universal Serial Bus)][Universal Host Controller]
Wired to HAL vector 42


Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7113 [82371AB/EB/MB][PIIX4/4E/4M Power Management Controller]
Command   0x0003, Status 0x0280
Class/Rev 0x06800002 [Bridge Device][Other][]
Wired to HAL vector 32

Vendor    0x1106 [VIA][VIA Technologies Inc]
Device    0x3043 [VT86C100A][Rhine 10/100 Ethernet Adapter]
Command   0x0007, Status 0x0200
Class/Rev 0x02000006 [Network Controller][Ethernet][]
Wired to HAL vector 37

Vendor    0x1073 [Yamaha][Yamaha Corporation]
Device    0x0004 [YMF724][PCI Audio Controller]
Command   0x0006, Status 0x0210
Class/Rev 0x04010005 [Multimedia Device][Audio][]
Wired to HAL vector 44

Vendor    0x10de [NVIDIA][NVIDIA Corporation]
Device    0x0201 [NV20DDR][GeForce3 Ti 200]
Command   0x0007, Status 0x02b0
Class/Rev 0x030000a3 [Display Controller][PC Compatible][VGA]
Wired to HAL vector 43

********************************************************************************

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7190 [82443BX/ZX][440BX/ZX AGPset Host Bridge]
Command   0x0006, Status 0x3210
Class/Rev 0x06000003 [Bridge Device][Host/PCI][]
Wired to HAL vector 32

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7191 [82443BX/ZX][440BX/ZX AGPset PCI-to-PCI bridge]
Command   0x0107, Status 0x0220
Class/Rev 0x06040003 [Bridge Device][PCI/PCI][]
Wired to HAL vector 32

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7110 [82371AB/EB/MB][PIIX4/4E/4M ISA Bridge]
Command   0x000f, Status 0x0280
Class/Rev 0x06010002 [Bridge Device][PCI/ISA][]
Wired to HAL vector 32

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7111 [82371AB/EB/MB][PIIX4/4E/4M IDE Controller]
Command   0x0005, Status 0x0a80
Class/Rev 0x01018001 [UNKNOWN]
Wired to HAL vector 32

Vendor 0x8086 [Intel][Intel Corporation]
Device 0x7112 [82371AB/EB/MB][PIIX4/4E/4M USB Interface]
Command 0x0005, Status 0x0280
Class/Rev 0x0c030001 [Serial Bus Controller][USB (Universal Serial Bus)][Universal Host Controller]
Wired to HAL vector 42


Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7113 [82371AB/EB/MB][PIIX4/4E/4M Power Management Controller]
Command   0x0003, Status 0x0280
Class/Rev 0x06800002 [Bridge Device][Other][]
Wired to HAL vector 32

Vendor    0x1106 [VIA][VIA Technologies Inc]
Device    0x3043 [VT86C100A][Rhine 10/100 Ethernet Adapter]
Command   0x0007, Status 0x0200
Class/Rev 0x02000006 [Network Controller][Ethernet][]
Wired to HAL vector 37

Vendor    0x1073 [Yamaha][Yamaha Corporation]
Device    0x0004 [YMF724][PCI Audio Controller]
Command   0x0006, Status 0x0210
Class/Rev 0x04010005 [Multimedia Device][Audio][]
Wired to HAL vector 44

Vendor    0x10de [NVIDIA][NVIDIA Corporation]
Device    0x0201 [NV20DDR][GeForce3 Ti 200]
Command   0x0007, Status 0x02b0
Class/Rev 0x030000a3 [Display Controller][PC Compatible][VGA]
Wired to HAL vector 43

Run with new pci.c logic

========== Finding and configuring devices
Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7190 [82443BX/ZX][440BX/ZX AGPset Host Bridge]
Command   0x0006, Status 0x3210
Class/Rev 0x06000003 [Bridge Device][Host/PCI][]
Wired to HAL vector 32

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7191 [82443BX/ZX][440BX/ZX AGPset PCI-to-PCI bridge]
Command   0x0107, Status 0x0220
Class/Rev 0x06040003 [Bridge Device][PCI/PCI][]
Wired to HAL vector 32

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7110 [82371AB/EB/MB][PIIX4/4E/4M ISA Bridge]
Command   0x000f, Status 0x0280
Class/Rev 0x06010002 [Bridge Device][PCI/ISA][]
Wired to HAL vector 32

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7111 [82371AB/EB/MB][PIIX4/4E/4M IDE Controller]
Command   0x0005, Status 0x0a80
Class/Rev 0x01018001 [UNKNOWN]
Wired to HAL vector 32

Vendor 0x8086 [Intel][Intel Corporation]
Device 0x7112 [82371AB/EB/MB][PIIX4/4E/4M USB Interface]
Command 0x0005, Status 0x0280
Class/Rev 0x0c030001 [Serial Bus Controller][USB (Universal Serial Bus)][Universal Host Controller]
Wired to HAL vector 42


Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7113 [82371AB/EB/MB][PIIX4/4E/4M Power Management Controller]
Command   0x0003, Status 0x0280
Class/Rev 0x06800002 [Bridge Device][Other][]
Wired to HAL vector 32

Vendor    0x1106 [VIA][VIA Technologies Inc]
Device    0x3043 [VT86C100A][Rhine 10/100 Ethernet Adapter]
Command   0x0007, Status 0x0200
Class/Rev 0x02000006 [Network Controller][Ethernet][]
Wired to HAL vector 37

Vendor    0x1073 [Yamaha][Yamaha Corporation]
Device    0x0004 [YMF724][PCI Audio Controller]
Command   0x0006, Status 0x0210
Class/Rev 0x04010005 [Multimedia Device][Audio][]
Wired to HAL vector 44

Vendor    0x10de [NVIDIA][NVIDIA Corporation]
Device    0x0201 [NV20DDR][GeForce3 Ti 200]
Command   0x0007, Status 0x02b0
Class/Rev 0x030000a3 [Display Controller][PC Compatible][VGA]
Wired to HAL vector 43

********************************************************************************

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7190 [82443BX/ZX][440BX/ZX AGPset Host Bridge]
Command   0x0006, Status 0x3210
Class/Rev 0x06000003 [Bridge Device][Host/PCI][]
Wired to HAL vector 32

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7191 [82443BX/ZX][440BX/ZX AGPset PCI-to-PCI bridge]
Command   0x0107, Status 0x0220
Class/Rev 0x06040003 [Bridge Device][PCI/PCI][]
Wired to HAL vector 32

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7110 [82371AB/EB/MB][PIIX4/4E/4M ISA Bridge]
Command   0x000f, Status 0x0280
Class/Rev 0x06010002 [Bridge Device][PCI/ISA][]
Wired to HAL vector 32

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7111 [82371AB/EB/MB][PIIX4/4E/4M IDE Controller]
Command   0x0005, Status 0x0a80
Class/Rev 0x01018001 [UNKNOWN]
Wired to HAL vector 32

Vendor 0x8086 [Intel][Intel Corporation]
Device 0x7112 [82371AB/EB/MB][PIIX4/4E/4M USB Interface]
Command 0x0005, Status 0x0280
Class/Rev 0x0c030001 [Serial Bus Controller][USB (Universal Serial Bus)][Universal Host Controller]
Does not generate interrupts.


Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7113 [82371AB/EB/MB][PIIX4/4E/4M Power Management Controller]
Command   0x0003, Status 0x0280
Class/Rev 0x06800002 [Bridge Device][Other][]
Wired to HAL vector 32

Vendor    0x1106 [VIA][VIA Technologies Inc]
Device    0x3043 [VT86C100A][Rhine 10/100 Ethernet Adapter]
Command   0x0007, Status 0x0200
Class/Rev 0x02000006 [Network Controller][Ethernet][]
Does not generate interrupts.

Vendor    0x1073 [Yamaha][Yamaha Corporation]
Device    0x0004 [YMF724][PCI Audio Controller]
Command   0x0006, Status 0x0210
Class/Rev 0x04010005 [Multimedia Device][Audio][]
Does not generate interrupts.

Vendor    0x10de [NVIDIA][NVIDIA Corporation]
Device    0x0201 [NV20DDR][GeForce3 Ti 200]
Command   0x0007, Status 0x02b0
Class/Rev 0x030000a3 [Display Controller][PC Compatible][VGA]
Does not generate interrupts.

********************************************************************************

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7190 [82443BX/ZX][440BX/ZX AGPset Host Bridge]
Command   0x0006, Status 0x3210
Class/Rev 0x06000003 [Bridge Device][Host/PCI][]
Wired to HAL vector 32

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7191 [82443BX/ZX][440BX/ZX AGPset PCI-to-PCI bridge]
Command   0x0107, Status 0x0220
Class/Rev 0x06040003 [Bridge Device][PCI/PCI][]
Wired to HAL vector 32

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7110 [82371AB/EB/MB][PIIX4/4E/4M ISA Bridge]
Command   0x000f, Status 0x0280
Class/Rev 0x06010002 [Bridge Device][PCI/ISA][]
Wired to HAL vector 32

Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7111 [82371AB/EB/MB][PIIX4/4E/4M IDE Controller]
Command   0x0005, Status 0x0a80
Class/Rev 0x01018001 [UNKNOWN]
Wired to HAL vector 32

Vendor 0x8086 [Intel][Intel Corporation]
Device 0x7112 [82371AB/EB/MB][PIIX4/4E/4M USB Interface]
Command 0x0005, Status 0x0280
Class/Rev 0x0c030001 [Serial Bus Controller][USB (Universal Serial Bus)][Universal Host Controller]
Does not generate interrupts.


Vendor    0x8086 [Intel][Intel Corporation]
Device    0x7113 [82371AB/EB/MB][PIIX4/4E/4M Power Management Controller]
Command   0x0003, Status 0x0280
Class/Rev 0x06800002 [Bridge Device][Other][]
Wired to HAL vector 32

Vendor    0x1106 [VIA][VIA Technologies Inc]
Device    0x3043 [VT86C100A][Rhine 10/100 Ethernet Adapter]
Command   0x0007, Status 0x0200
Class/Rev 0x02000006 [Network Controller][Ethernet][]
Does not generate interrupts.

Vendor    0x1073 [Yamaha][Yamaha Corporation]
Device    0x0004 [YMF724][PCI Audio Controller]
Command   0x0006, Status 0x0210
Class/Rev 0x04010005 [Multimedia Device][Audio][]
Does not generate interrupts.

Vendor    0x10de [NVIDIA][NVIDIA Corporation]
Device    0x0201 [NV20DDR][GeForce3 Ti 200]
Command   0x0007, Status 0x02b0
Class/Rev 0x030000a3 [Display Controller][PC Compatible][VGA]
Does not generate interrupts.


-- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]