Re: expicitly use XT_PIC interrupt for an old device?

Zhao Yakui
2008-08-13T01:04:46Z

On Tue, 2008-08-12 at 09:04 +0200, Dieter Schön wrote:
> hi,
>
> thanks for the answer,
>
> Zhao Yakui schrieb:
> > On Mon, 2008-08-11 at 16:59 +0200, Dieter Schön wrote:
> >> hi group,
> >>
> >> i have to migrate a character device driver for an old synchronus
> >> serial PCI board (Moxa C502/PCI)
> >> from 2.2.something to 2.6.5-smp x86_64.
> >> the problem is, that no interrupts are routed to the driver.
> >> i was able to get interrupts when i used a non-SMP kernel and the
> >> "noapic" boot option.
> >>
> >> is there a way to explicitly force the use of the 8259 when i request
> >> an interrupt to get the interrupts for this card not routed via the
> >> APIC?
> >> any pointers are appreciated.
> > doubt whether the I8259 and I/O APIC can be used at the same time.
> > When the non-smp kernel is used and boot option of "noapic" is added,
> > there exists the interrupt for PCI UART card.
> > Do you try it with the boot option of "noapic" on smp kernel?
> > Can you try it on the latest kernel?
>
> i have tried it with 2.6.25 on suse11, and also on another hardware
> platform (i have heard that some motherboards/BIOSes have problems with
> the APIC) to rule that out.
>
> and it seems that it is possible to operate both ways at the same time:
> the cascade driver seems to use the 8259.
> my driver is one line below, the Moxa. another idea: would it be
> possible to force a IO-APIC-level interrupt instead of an edge-triggered?
If the interrupt for Moxa is below 16, you can try to use it as
edge-triggered. But you should confirm that it won't be shared by other
devices.

Maybe after you do so, the Moxa still can't work unless you can confirm
that the interrupt Pin of Moxa card is already connected with the I/O
APIC input pin.

Have you tried it with the boot option of "noapic" on smp-kernel?
Thanks.
>
> user@host $ cat /proc/interrupts
> CPU0 CPU1
> 0: 145319 102178 IO-APIC-edge timer
> 1: 368 485 IO-APIC-edge i8042
> 2: 0 0 XT-PIC cascade
> 6: 0 0 IO-APIC-edge Moxa
> 8: 0 0 IO-APIC-edge rtc
> 9: 0 0 IO-APIC-level acpi
> 12: 668 1190 IO-APIC-edge i8042
> 14: 494 624 IO-APIC-edge ide0
> 16: 0 0 IO-APIC-level eth0, ehci_hcd, uhci_hcd
> 17: 0 0 IO-APIC-level eth1, uhci_hcd
> 18: 6783 3973 IO-APIC-level libata
> NMI: 247349 247309
> LOC: 246859 247246
> ERR: 0
> MIS: 0
>
> user@host $ uname -a
> Linux host 2.6.5-7.244-smp #1 SMP Mon Dec 12 18:32:25 UTC 2005 x86_64
> x86_64 x86_64 GNU/Linux
>
> user@host $ cat /proc/cpuinfo
> processor : 0
> vendor_id : GenuineIntel
> cpu family : 15
> model : 6
> model name : Intel(R) Pentium(R) D CPU 3.40GHz
> stepping : 4
> cpu MHz : 3400.280
> cache size : 2048 KB
> physical id : 0
> siblings : 2
> core id : 0
> cpu cores : 2
> fpu : yes
> fpu_exception : yes
> cpuid level : 6
> wp : yes
> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
> mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall
> lm pni monitor ds_cpl tm2 cid cmpxchg16b lahf_lm
> bogomips : 6717.44
> clflush size : 64
> cache_alignment : 128
> address sizes : 36 bits physical, 48 bits virtual
> power management:
>
> processor : 1
> vendor_id : GenuineIntel
> cpu family : 15
> model : 6
> model name : Intel(R) Pentium(R) D CPU 3.40GHz
> stepping : 4
> cpu MHz : 3400.280
> cache size : 2048 KB
> physical id : 0
> siblings : 2
> core id : 1
> cpu cores : 2
> fpu : yes
> fpu_exception : yes
> cpuid level : 6
> wp : yes
> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
> mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall
> lm pni monitor ds_cpl tm2 cid cmpxchg16b lahf_lm
> bogomips : 6782.97
> clflush size : 64
> cache_alignment : 128
> address sizes : 36 bits physical, 48 bits virtual
> power management:
>
>
> kind regards,
> dieter