devc-ser8250 problem

bridged with qdn.public.ddk
Post Reply
Brian Meinke

devc-ser8250 problem

Post by Brian Meinke » Wed Jan 08, 2003 9:45 pm

While developing a devc driver, I encountered a little intermittent problem
with devc-ser8250 on 6.20A PE SMP(Dual 1.8 GHz Xeons, 512MB, 3COM 3C905C
NIC)

I am trying to develop a character driver for a multi-port VME Bus serial
board (NEC 7201 DUART) and have written a small test application which
simply writes a string out one serial port of the VME serial card and is
received on COM1 on a different computer. The VME based computer (PIII850
256 MB) running my devc driver (devc-mz8300) and the Dual Xeon box is simply
running devc-ser8250. Serial ports on both boxes set to 9600,N,8,1 raw with
no hardware/software handshaking (this is due to legacy configurations of
the VME serial board already being used in the field).

The problem I am seeing is that the Dual Xeon box stops
transmitting.receiving data after some random amount of time (anywhere from
5 minutes to several hours) and all network connections are lost (I have to
slay/restart io-net to access the network).

I have tried using the non-SMP kernel which only extends the amount of time
which passes before the problem occurs. I have disabled hyper-threading both
with and without the SMP kernel which seems to have a similar effect as
using the non-SMP kernel (more time passes before problem occurs).

I have attached the output from 'pci -v'. Any ideas are greatly appreciated.

TIA
Brian


begin 666 pci.txt
M"E!#22!V97)S:6]N(" @(#T@,BXQ, H*0VQA<W,@(" @(" @(" @/2!"<FED
M9V4@*$AO<W0O4$-)*0I696YD;W(@240@(" @(" ](#@P.#9H+"!);G1E;"!#
M;W)P;W)A=&EO;B *1&5V:6-E($E$(" @(" @/2 R-3,Q:"P@.#(X-C @2&]S
M="U(=6(@26YT97)F86-E7T$@0G)I9&=E("A$4"!M;V1E*0I00TD@:6YD97@@
M(" @(" ](#!H"D-L87-S($-O9&5S(" @(#T@,#8P,# P: I2979I<VEO;B!)
M1" @(" ](#1H"D)U<R!N=6UB97(@(" @(#T@, I$979I8V4@;G5M8F5R(" ]
M(# *1G5N8W1I;VX@;G5M(" @/2 P"E-T871U<R!296<@(" @(#T@83 Y,&@*
M0V]M;6%N9"!296<@(" @/2 Q,#9H"DAE861E<B!T>7!E(" @(#T@,&@@4VEN
M9VQE+69U;F-T:6]N"D))4U0@(" @(" @(" @(#T@,&@@0G5I;&0M:6XM<V5L
M9BUT97-T(&YO="!S=7!P;W)T960*3&%T96YC>2!4:6UE<B @/2 P: I#86-H
M92!,:6YE(%-I>F4](#!H( I3=6)S>7-T96T@5F5N9&]R($E$(#T@,3 R.&@*
M4W5B<WES=&5M($E$(" @(" @(" ](&0X: I-87@@3&%T(" @(" @(" ](#!N
M<PI-:6X@1VYT(" @(" @(" ](#!N<PI00TD@26YT(%!I;B @(" ]($Y#"DEN
M=&5R<G5P="!L:6YE(#T@, I#87!A8FEL:71I97,@4&]I;G1E<B ](&$P: I#
M87!A8FEL:71Y($E$(" @(" @(" ](#)H"D-A<&%B:6QI=&EE<R @(" @(" @
M(#T@,C!H("T@,68P,# R,3=H"@I#;&%S<R @(" @(" @(" ]($)R:61G92 H
M4$-)+U!#22D*5F5N9&]R($E$(" @(" @/2 X,#@V:"P@26YT96P@0V]R<&]R
M871I;VX@"D1E=FEC92!)1" @(" @(#T@,C4S,F@L(#@R.#4P+S@R.#8P($%'
M4"!"<FED9V4*4$-)(&EN9&5X(" @(" @/2 P: I#;&%S<R!#;V1E<R @(" ]
M(# V,#0P,&@*4F5V:7-I;VX@240@(" @/2 T: I"=7,@;G5M8F5R(" @(" ]
M(# *1&5V:6-E(&YU;6)E<B @/2 Q"D9U;F-T:6]N(&YU;2 @(#T@, I3=&%T
M=7,@4F5G(" @(" ](&$P: I#;VUM86YD(%)E9R @(" ](#$P-V@*2&5A9&5R
M('1Y<&4@(" @/2 Q:"!3:6YG;&4M9G5N8W1I;VX*0DE35" @(" @(" @(" @
M/2 P:"!"=6EL9"UI;BUS96QF+71E<W0@;F]T('-U<'!O<G1E9 I,871E;F-Y
M(%1I;65R(" ](#0P: I#86-H92!,:6YE(%-I>F4](#!H( I0<FEM87)Y($)U
M<R!.=6UB97(@(" @(" @/2 P: I396-O;F1A<GD@0G5S($YU;6)E<B @(" @
M/2 Q: I3=6)O<F1I;F%T92!"=7,@3G5M8F5R(" @/2 Q: I396-O;F1A<GD@
M3&%T96YC>2!4:6UE<B @/2 T,&@*22]/($)A<V4@(" @(" @(" @(" @(" @
M(#T@93!H"DDO3R!,:6UI=" @(" @(" @(" @(" @(" ](&4P: I396-O;F1A
M<GD@4W1A='5S(" @(" @(" @/2 R,F$P: I-96UO<GD@0F%S92 @(" @(" @
M(" @(" @/2!F8S0P: I-96UO<GD@3&EM:70@(" @(" @(" @(" @/2!F8S4P
M: I0<F5F971C:&%B;&4@365M;W)Y($)A<V4@/2!E.# P: I0<F5F971C:&%B
M;&4@365M;W)Y($QI;6ET/2!E9F8P: I0<F5F971C:&%B;&4@0F%S92!5<'!E
M<B S,B!":71S(" ](#!H"E!R969E=&-H86)L92!,:6UI="!5<'!E<B S,B!"
M:71S(#T@,&@*22]/($)A<V4@57!P97(@,38@0FET<R @(#T@9F9F9F@*22]/
M($QI;6ET(%5P<&5R(#$V($)I=',@(#T@9F9F9F@*0G)I9&=E($-O;G1R;VP@
M(" @(" @(" @(#T@,31N<PI00TD@26YT(%!I;B @(" @(" @(" @(" @/2!.
M0PI);G1E<G)U<'0@;&EN92 @(" @(" @(" @/2 P"@I#;&%S<R @(" @(" @
M(" ]($)R:61G92 H4$-)+U!#22D*5F5N9&]R($E$(" @(" @/2 X,#@V:"P@
M26YT96P@0V]R<&]R871I;VX@"D1E=FEC92!)1" @(" @(#T@,C4S,V@L(#@R
M.#8P($AU8B!);G1E<F9A8V5?0B!"<FED9V4*4$-)(&EN9&5X(" @(" @/2 P
M: I#;&%S<R!#;V1E<R @(" ](# V,#0P,&@*4F5V:7-I;VX@240@(" @/2 T
M: I"=7,@;G5M8F5R(" @(" ](# *1&5V:6-E(&YU;6)E<B @/2 R"D9U;F-T
M:6]N(&YU;2 @(#T@, I3=&%T=7,@4F5G(" @(" ](&$P: I#;VUM86YD(%)E
M9R @(" ](#$P-V@*2&5A9&5R('1Y<&4@(" @/2 Q:"!3:6YG;&4M9G5N8W1I
M;VX*0DE35" @(" @(" @(" @/2 P:"!"=6EL9"UI;BUS96QF+71E<W0@;F]T
M('-U<'!O<G1E9 I,871E;F-Y(%1I;65R(" ](#0P: I#86-H92!,:6YE(%-I
M>F4](#!H( I0<FEM87)Y($)U<R!.=6UB97(@(" @(" @/2 P: I396-O;F1A
M<GD@0G5S($YU;6)E<B @(" @/2 R: I3=6)O<F1I;F%T92!"=7,@3G5M8F5R
M(" @/2 S: I396-O;F1A<GD@3&%T96YC>2!4:6UE<B @/2 P: I)+T\@0F%S
M92 @(" @(" @(" @(" @(" @/2!F,&@*22]/($QI;6ET(" @(" @(" @(" @
M(" @(#T@,&@*4V5C;VYD87)Y(%-T871U<R @(" @(" @(#T@,C)A,&@*365M
M;W)Y($)A<V4@(" @(" @(" @(" @(#T@9F,Q,&@*365M;W)Y($QI;6ET(" @
M(" @(" @(" @(#T@9F,S,&@*4')E9F5T8VAA8FQE($UE;6]R>2!"87-E(#T@
M9F9F,&@*4')E9F5T8VAA8FQE($UE;6]R>2!,:6UI=#T@,&@*4')E9F5T8VAA
M8FQE($)A<V4@57!P97(@,S(@0FET<R @/2 P: I0<F5F971C:&%B;&4@3&EM
M:70@57!P97(@,S(@0FET<R ](#!H"DDO3R!"87-E(%5P<&5R(#$V($)I=',@
M(" ](&9F9F9H"DDO3R!,:6UI="!5<'!E<B Q-B!":71S(" ](&9F9F9H"D)R
M:61G92!#;VYT<F]L(" @(" @(" @(" ](#9N<PI00TD@26YT(%!I;B @(" @
M(" @(" @(" @/2!.0PI);G1E<G)U<'0@;&EN92 @(" @(" @(" @/2 P"@I#
M;&%S<R @(" @(" @(" ]($)R:61G92 H4$-)+U!#22D*5F5N9&]R($E$(" @
M(" @/2 X,#@V:"P@26YT96P@0V]R<&]R871I;VX@"D1E=FEC92!)1" @(" @
M(#T@,C0T96@L(#@R.# Q0D$O0T$@2'5B($EN=&5R9F%C92!T;R!00TD@0G)I
M9&=E"E!#22!I;F1E>" @(" @(#T@,&@*0VQA<W,@0V]D97,@(" @/2 P-C T
M,#!H"E)E=FES:6]N($E$(" @(#T@-&@*0G5S(&YU;6)E<B @(" @/2 P"D1E
M=FEC92!N=6UB97(@(#T@,S *1G5N8W1I;VX@;G5M(" @/2 P"E-T871U<R!2
M96<@(" @(#T@.#!H"D-O;6UA;F0@4F5G(" @(#T@,3 W: I(96%D97(@='EP
M92 @(" ](#%H(%-I;F=L92UF=6YC=&EO;@I"25-4(" @(" @(" @(" ](#!H
M($)U:6QD+6EN+7-E;&8M=&5S="!N;W0@<W5P<&]R=&5D"DQA=&5N8WD@5&EM
M97(@(#T@,&@*0V%C:&4@3&EN92!3:7IE/2 P:" *4')I;6%R>2!"=7,@3G5M
M8F5R(" @(" @(#T@,&@*4V5C;VYD87)Y($)U<R!.=6UB97(@(" @(#T@-&@*
M4W5B;W)D:6YA=&4@0G5S($YU;6)E<B @(#T@-&@*4V5C;VYD87)Y($QA=&5N
M8WD@5&EM97(@(#T@-#!H"DDO3R!"87-E(" @(" @(" @(" @(" @(" ](&0P
M: I)+T\@3&EM:70@(" @(" @(" @(" @(" @/2!D,&@*4V5C;VYD87)Y(%-T
M871U<R @(" @(" @(#T@,C(X,&@*365M;W)Y($)A<V4@(" @(" @(" @(" @
M(#T@9C0P,&@*365M;W)Y($QI;6ET(" @(" @(" @(" @(#T@9F)F,&@*4')E
M9F5T8VAA8FQE($UE;6]R>2!"87-E(#T@9F9F,&@*4')E9F5T8VAA8FQE($UE
M;6]R>2!,:6UI=#T@,&@*4')E9F5T8VAA8FQE($)A<V4@57!P97(@,S(@0FET
M<R @/2 P: I0<F5F971C:&%B;&4@3&EM:70@57!P97(@,S(@0FET<R ](#!H
M"DDO3R!"87-E(%5P<&5R(#$V($)I=',@(" ](&9F9F9H"DDO3R!,:6UI="!5
M<'!E<B Q-B!":71S(" ](&9F9F9H"D)R:61G92!#;VYT<F]L(" @(" @(" @
M(" ](#9N<PI00TD@26YT(%!I;B @(" @(" @(" @(" @/2!.0PI);G1E<G)U
M<'0@;&EN92 @(" @(" @(" @/2 P"@I#;&%S<R @(" @(" @(" ]($)R:61G
M92 H4$-)+TE302D*5F5N9&]R($E$(" @(" @/2 X,#@V:"P@26YT96P@0V]R
M<&]R871I;VX@"D1E=FEC92!)1" @(" @(#T@,C0T,&@L(#@R.# Q0D$@3%!#
M($EN=&5R9F%C92!"<FED9V4L($E#2#(*4$-)(&EN9&5X(" @(" @/2 P: I#
M;&%S<R!#;V1E<R @(" ](# V,#$P,&@*4F5V:7-I;VX@240@(" @/2 T: I"
M=7,@;G5M8F5R(" @(" ](# *1&5V:6-E(&YU;6)E<B @/2 S,0I&=6YC=&EO
M;B!N=6T@(" ](# *4W1A='5S(%)E9R @(" @/2 R.#!H"D-O;6UA;F0@4F5G
M(" @(#T@9F@*2&5A9&5R('1Y<&4@(" @/2 P:"!-=6QT:2UF=6YC=&EO;@I"
M25-4(" @(" @(" @(" ](#!H($)U:6QD+6EN+7-E;&8M=&5S="!N;W0@<W5P
M<&]R=&5D"DQA=&5N8WD@5&EM97(@(#T@,&@*0V%C:&4@3&EN92!3:7IE/2 P
M:" *36%X($QA=" @(" @(" @/2 P;G,*36EN($=N=" @(" @(" @/2 P;G,*
M4$-)($EN="!0:6X@(" @/2!.0PI);G1E<G)U<'0@;&EN92 ](# *"D-L87-S
M(" @(" @(" @(#T@36%S<R!3=&]R86=E("A)1$4I"E9E;F1O<B!)1" @(" @
M(#T@.# X-F@L($EN=&5L($-O<G!O<F%T:6]N( I$979I8V4@240@(" @(" ]
M(#(T-&)H+" X,C@P,4)!($E$12!#;VYT<F]L;&5R"E!#22!I;F1E>" @(" @
M(#T@,&@*0VQA<W,@0V]D97,@(" @/2 P,3 Q.#!H"E)E=FES:6]N($E$(" @
M(#T@-&@*0G5S(&YU;6)E<B @(" @/2 P"D1E=FEC92!N=6UB97(@(#T@,S$*
M1G5N8W1I;VX@;G5M(" @/2 Q"E-T871U<R!296<@(" @(#T@,C@P: I#;VUM
M86YD(%)E9R @(" ](#5H"DAE861E<B!T>7!E(" @(#T@,&@@4VEN9VQE+69U
M;F-T:6]N"D))4U0@(" @(" @(" @(#T@,&@@0G5I;&0M:6XM<V5L9BUT97-T
M(&YO="!S=7!P;W)T960*3&%T96YC>2!4:6UE<B @/2 P: I#86-H92!,:6YE
M(%-I>F4](#!H( I00TD@24\@061D<F5S<R @/2!F9F$P:"!L96YG=&@@,38@
M96YA8FQE9 I3=6)S>7-T96T@5F5N9&]R($E$(#T@,3 R.&@*4W5B<WES=&5M
M($E$(" @(" @(" ](&0X: I-87@@3&%T(" @(" @(" ](#!N<PI-:6X@1VYT
M(" @(" @(" ](#!N<PI00TD@26YT(%!I;B @(" ]($Y#"DEN=&5R<G5P="!L
M:6YE(#T@, H*0VQA<W,@(" @(" @(" @/2!397)I86P@0G5S("A5;FEV97)S
M86P@4V5R:6%L($)U<RD*5F5N9&]R($E$(" @(" @/2 X,#@V:"P@26YT96P@
M0V]R<&]R871I;VX@"D1E=FEC92!)1" @(" @(#T@,C0T,F@L(#@R.# Q0D$O
M0D%-(%530B!#;VYT<F]L;&5R+"!54T(M00I00TD@:6YD97@@(" @(" ](#!H
M"D-L87-S($-O9&5S(" @(#T@,&,P,S P: I2979I<VEO;B!)1" @(" ](#1H
M"D)U<R!N=6UB97(@(" @(#T@, I$979I8V4@;G5M8F5R(" ](#,Q"D9U;F-T
M:6]N(&YU;2 @(#T@,@I3=&%T=7,@4F5G(" @(" ](#(X,&@*0V]M;6%N9"!2
M96<@(" @/2 T: I(96%D97(@='EP92 @(" ](#!H(%-I;F=L92UF=6YC=&EO
M;@I"25-4(" @(" @(" @(" ](#!H($)U:6QD+6EN+7-E;&8M=&5S="!N;W0@
M<W5P<&]R=&5D"DQA=&5N8WD@5&EM97(@(#T@,&@*0V%C:&4@3&EN92!3:7IE
M/2 P:" *4$-)($E/($%D9')E<W,@(#T@,&@@;&5N9W1H(#,R(&1I<V%B;&5D
M"E-U8G-Y<W1E;2!696YD;W(@240@/2 Q,#(X: I3=6)S>7-T96T@240@(" @
M(" @(#T@9#AH"DUA>"!,870@(" @(" @(#T@,&YS"DUI;B!';G0@(" @(" @
M(#T@,&YS"E!#22!);G0@4&EN(" @(#T@24Y4($0*26YT97)R=7!T(&QI;F4@
M/2 Q,0H*0VQA<W,@(" @(" @(" @/2!397)I86P@0G5S("A334)U<RD*5F5N
M9&]R($E$(" @(" @/2 X,#@V:"P@26YT96P@0V]R<&]R871I;VX@"D1E=FEC
M92!)1" @(" @(#T@,C0T,V@L(#@R.# Q0D$O0D%-(%--0G5S($-O;G1R;VQL
M97(*4$-)(&EN9&5X(" @(" @/2 P: I#;&%S<R!#;V1E<R @(" ](#!C,#4P
M,&@*4F5V:7-I;VX@240@(" @/2 T: I"=7,@;G5M8F5R(" @(" ](# *1&5V
M:6-E(&YU;6)E<B @/2 S,0I&=6YC=&EO;B!N=6T@(" ](#,*4W1A='5S(%)E
M9R @(" @/2 R.#!H"D-O;6UA;F0@4F5G(" @(#T@,6@*2&5A9&5R('1Y<&4@
M(" @/2 P:"!3:6YG;&4M9G5N8W1I;VX*0DE35" @(" @(" @(" @/2 P:"!"
M=6EL9"UI;BUS96QF+71E<W0@;F]T('-U<'!O<G1E9 I,871E;F-Y(%1I;65R
M(" ](#!H"D-A8VAE($QI;F4@4VEZ93T@,&@@"E!#22!)3R!!9&1R97-S(" ]
M(&-C9#!H(&QE;F=T:" Q-B!E;F%B;&5D"E-U8G-Y<W1E;2!696YD;W(@240@
M/2 Q,#(X: I3=6)S>7-T96T@240@(" @(" @(#T@9#AH"DUA>"!,870@(" @
M(" @(#T@,&YS"DUI;B!';G0@(" @(" @(#T@,&YS"E!#22!);G0@4&EN(" @
M(#T@24Y4($(*26YT97)R=7!T(&QI;F4@/2 Q, H*0VQA<W,@(" @(" @(" @
M/2!397)I86P@0G5S("A5;FEV97)S86P@4V5R:6%L($)U<RD*5F5N9&]R($E$
M(" @(" @/2 X,#@V:"P@26YT96P@0V]R<&]R871I;VX@"D1E=FEC92!)1" @
M(" @(#T@,C0T-&@L(#@R.# Q0D$O0D%-(%530B!#;VYT<F]L;&5R+"!54T(M
M0@I00TD@:6YD97@@(" @(" ](#!H"D-L87-S($-O9&5S(" @(#T@,&,P,S P
M: I2979I<VEO;B!)1" @(" ](#1H"D)U<R!N=6UB97(@(" @(#T@, I$979I
M8V4@;G5M8F5R(" ](#,Q"D9U;F-T:6]N(&YU;2 @(#T@- I3=&%T=7,@4F5G
M(" @(" ](#(X,&@*0V]M;6%N9"!296<@(" @/2 T: I(96%D97(@='EP92 @
M(" ](#!H(%-I;F=L92UF=6YC=&EO;@I"25-4(" @(" @(" @(" ](#!H($)U
M:6QD+6EN+7-E;&8M=&5S="!N;W0@<W5P<&]R=&5D"DQA=&5N8WD@5&EM97(@
M(#T@,&@*0V%C:&4@3&EN92!3:7IE/2 P:" *4$-)($E/($%D9')E<W,@(#T@
M,&@@;&5N9W1H(#,R(&1I<V%B;&5D"E-U8G-Y<W1E;2!696YD;W(@240@/2 Q
M,#(X: I3=6)S>7-T96T@240@(" @(" @(#T@9#AH"DUA>"!,870@(" @(" @
M(#T@,&YS"DUI;B!';G0@(" @(" @(#T@,&YS"E!#22!);G0@4&EN(" @(#T@
M24Y4($,*26YT97)R=7!T(&QI;F4@/2 Y"@I#;&%S<R @(" @(" @(" ]($UU
M;'1I;65D:6$@*$%U9&EO*0I696YD;W(@240@(" @(" ](#@P.#9H+"!);G1E
M;"!#;W)P;W)A=&EO;B *1&5V:6-E($E$(" @(" @/2 R-#0U:"P@.#(X,#%"
M02]"04T@04,Y-R!!=61I;R!#;VYT<F]L;&5R"E!#22!I;F1E>" @(" @(#T@
M,&@*0VQA<W,@0V]D97,@(" @/2 P-# Q,#!H"E)E=FES:6]N($E$(" @(#T@
M-&@*0G5S(&YU;6)E<B @(" @/2 P"D1E=FEC92!N=6UB97(@(#T@,S$*1G5N
M8W1I;VX@;G5M(" @/2 U"E-T871U<R!296<@(" @(#T@,C@P: I#;VUM86YD
M(%)E9R @(" ](#5H"DAE861E<B!T>7!E(" @(#T@,&@@4VEN9VQE+69U;F-T
M:6]N"D))4U0@(" @(" @(" @(#T@,&@@0G5I;&0M:6XM<V5L9BUT97-T(&YO
M="!S=7!P;W)T960*3&%T96YC>2!4:6UE<B @/2 P: I#86-H92!,:6YE(%-I
M>F4](#!H( I00TD@24\@061D<F5S<R @/2!C.# P:"!L96YG=&@@,C4V(&5N
M86)L960*4$-)($E/($%D9')E<W,@(#T@8V,T,&@@;&5N9W1H(#8T(&5N86)L
M960*4W5B<WES=&5M(%9E;F1O<B!)1" ](#$P,CAH"E-U8G-Y<W1E;2!)1" @
M(" @(" @/2!D.&@*36%X($QA=" @(" @(" @/2 P;G,*36EN($=N=" @(" @
M(" @/2 P;G,*4$-)($EN="!0:6X@(" @/2!)3E0@0@I);G1E<G)U<'0@;&EN
M92 ](#$P"@I#;&%S<R @(" @(" @(" ]($1I<W!L87D@*%9'02D*5F5N9&]R
M($E$(" @(" @/2 Q,# R:"P@051)(%1E8VAN;VQO9VEE<R *1&5V:6-E($E$
M(" @(" @/2 U,34Y:"P@4F%D96]N(%9%( I00TD@:6YD97@@(" @(" ](#!H
M"D-L87-S($-O9&5S(" @(#T@,#,P,# P: I2979I<VEO;B!)1" @(" ](#!H
M"D)U<R!N=6UB97(@(" @(#T@,0I$979I8V4@;G5M8F5R(" ](# *1G5N8W1I
M;VX@;G5M(" @/2 P"E-T871U<R!296<@(" @(#T@,F(P: I#;VUM86YD(%)E
M9R @(" ](#$X-V@*2&5A9&5R('1Y<&4@(" @/2 P:"!3:6YG;&4M9G5N8W1I
M;VX*0DE35" @(" @(" @(" @/2 P:"!"=6EL9"UI;BUS96QF+71E<W0@;F]T
M('-U<'!O<G1E9 I,871E;F-Y(%1I;65R(" ](#0P: I#86-H92!,:6YE(%-I
M>F4](#$P:"!U;BUC86-H96%B;&4*4$-)($UE;2!!9&1R97-S(#T@93@P,# P
M,#!H('!R969E=&-H86)L92 S,F)I="!L96YG=&@@,3,T,C$W-S(X(&5N86)L
M960*4$-)($E/($%D9')E<W,@(#T@96,P,&@@;&5N9W1H(#(U-B!E;F%B;&5D
M"E!#22!-96T@061D<F5S<R ](&9C-&8P,# P:" S,F)I="!L96YG=&@@-C4U
M,S8@96YA8FQE9 I3=6)S>7-T96T@5F5N9&]R($E$(#T@,3 P,F@*4W5B<WES
M=&5M($E$(" @(" @(" ](#%B.&%H"E!#22!%>'!A;G-I;VX@4D]-(#T@8S$P
M,# P,#!H(&QE;F=T:" Q,S$P-S(@9&ES86)L960*36%X($QA=" @(" @(" @
M/2 P;G,*36EN($=N=" @(" @(" @/2 X;G,*4$-)($EN="!0:6X@(" @/2!)
M3E0@00I);G1E<G)U<'0@;&EN92 ](#$Q"D-A<&%B:6QI=&EE<R!0;VEN=&5R
M(#T@-3AH"D-A<&%B:6QI='D@240@(" @(" @(#T@,F@*0V%P86)I;&ET:65S
M(" @(" @(" @/2 R,&@@+2 R9C P,#(P-V@*0V%P86)I;&ET>2!)1" @(" @
M(" @/2 Q: I#87!A8FEL:71I97,@(" @(" @(" ](#8P,F@@+2 P: H*0VQA
M<W,@(" @(" @(" @/2!"<FED9V4@*%!#22]00TDI"E9E;F1O<B!)1" @(" @
M(#T@.# X-F@L($EN=&5L($-O<G!O<F%T:6]N( I$979I8V4@240@(" @(" ]
M(#$S-C!H+" X,C@P-D%!($AU8B!);G1E<F9A8V4@=&\@4$-)($)R:61G90I0
M0TD@:6YD97@@(" @(" ](#!H"D-L87-S($-O9&5S(" @(#T@,#8P-# P: I2
M979I<VEO;B!)1" @(" ](#-H"D)U<R!N=6UB97(@(" @(#T@,@I$979I8V4@
M;G5M8F5R(" ](#,Q"D9U;F-T:6]N(&YU;2 @(#T@, I3=&%T=7,@4F5G(" @
M(" ](#(P: I#;VUM86YD(%)E9R @(" ](#$P-V@*2&5A9&5R('1Y<&4@(" @
M/2 Q:"!3:6YG;&4M9G5N8W1I;VX*0DE35" @(" @(" @(" @/2 P:"!"=6EL
M9"UI;BUS96QF+71E<W0@;F]T('-U<'!O<G1E9 I,871E;F-Y(%1I;65R(" ]
M(#!H"D-A8VAE($QI;F4@4VEZ93T@,&@@"E!R:6UA<GD@0G5S($YU;6)E<B @
M(" @(" ](#)H"E-E8V]N9&%R>2!"=7,@3G5M8F5R(" @(" ](#-H"E-U8F]R
M9&EN871E($)U<R!.=6UB97(@(" ](#-H"E-E8V]N9&%R>2!,871E;F-Y(%1I
M;65R(" ](#0P: I)+T\@0F%S92 @(" @(" @(" @(" @(" @/2!F,&@*22]/
M($QI;6ET(" @(" @(" @(" @(" @(#T@,&@*4V5C;VYD87)Y(%-T871U<R @
M(" @(" @(#T@,C)A,&@*365M;W)Y($)A<V4@(" @(" @(" @(" @(#T@9F,R
M,&@*365M;W)Y($QI;6ET(" @(" @(" @(" @(#T@9F,S,&@*4')E9F5T8VAA
M8FQE($UE;6]R>2!"87-E(#T@9F9F,&@*4')E9F5T8VAA8FQE($UE;6]R>2!,
M:6UI=#T@,&@*4')E9F5T8VAA8FQE($)A<V4@57!P97(@,S(@0FET<R @/2 P
M: I0<F5F971C:&%B;&4@3&EM:70@57!P97(@,S(@0FET<R ](#!H"DDO3R!"
M87-E(%5P<&5R(#$V($)I=',@(" ](&9F9F9H"DDO3R!,:6UI="!5<'!E<B Q
M-B!":71S(" ](&9F9F9H"D)R:61G92!#;VYT<F]L(" @(" @(" @(" ](#,R
M-S<T;G,*4$-)($EN="!0:6X@(" @(" @(" @(" @(#T@3D,*26YT97)R=7!T
M(&QI;F4@(" @(" @(" @(#T@, H*0VQA<W,@(" @(" @(" @/2!3>7-T96T@
M4&5R:7!H97)A;',@*%!)0RD*5F5N9&]R($E$(" @(" @/2 X,#@V:"P@26YT
M96P@0V]R<&]R871I;VX@"D1E=FEC92!)1" @(" @(#T@,3$V,6@L(#@R.# V
M04$@22]/($%024,@1&5V:6-E"E!#22!I;F1E>" @(" @(#T@,&@*0VQA<W,@
M0V]D97,@(" @/2 P.# P,C!H"E)E=FES:6]N($E$(" @(#T@,6@*0G5S(&YU
M;6)E<B @(" @/2 S"D1E=FEC92!N=6UB97(@(#T@, I&=6YC=&EO;B!N=6T@
M(" ](# *4W1A='5S(%)E9R @(" @/2 P: I#;VUM86YD(%)E9R @(" ](#!H
M"DAE861E<B!T>7!E(" @(#T@,&@@375L=&DM9G5N8W1I;VX*0DE35" @(" @
M(" @(" @/2 P:"!"=6EL9"UI;BUS96QF+71E<W0@;F]T('-U<'!O<G1E9 I,
M871E;F-Y(%1I;65R(" ](#!H"D-A8VAE($QI;F4@4VEZ93T@,&@@"E-U8G-Y
M<W1E;2!696YD;W(@240@/2 X,#@V: I3=6)S>7-T96T@240@(" @(" @(#T@
M,3$V,6@*36%X($QA=" @(" @(" @/2 P;G,*36EN($=N=" @(" @(" @/2 P
M;G,*4$-)($EN="!0:6X@(" @/2!.0PI);G1E<G)U<'0@;&EN92 ](# *"D-L
M87-S(" @(" @(" @(#T@3F5T=V]R:R H171H97)N970I"E9E;F1O<B!)1" @
M(" @(#T@,3!B-V@L(#-#;VT@0V]R<&]R871I;VX@"D1E=FEC92!)1" @(" @
M(#T@.3(P,&@L(#-#.3 U0RU46"!&87-T($5T:&5R3&EN:R!F;W(@4$,@36%N
M86=E;65N="!.24,*4$-)(&EN9&5X(" @(" @/2 P: I#;&%S<R!#;V1E<R @
M(" ](# R,# P,&@*4F5V:7-I;VX@240@(" @/2 W.&@*0G5S(&YU;6)E<B @
M(" @/2 T"D1E=FEC92!N=6UB97(@(#T@,3$*1G5N8W1I;VX@;G5M(" @/2 P
M"E-T871U<R!296<@(" @(#T@,C$P: I#;VUM86YD(%)E9R @(" ](#$Q-V@*
M2&5A9&5R('1Y<&4@(" @/2 P:"!3:6YG;&4M9G5N8W1I;VX*0DE35" @(" @
M(" @(" @/2 P:"!"=6EL9"UI;BUS96QF+71E<W0@;F]T('-U<'!O<G1E9 I,
M871E;F-Y(%1I;65R(" ](#0P: I#86-H92!,:6YE(%-I>F4](#$P:"!U;BUC
M86-H96%B;&4*4$-)($E/($%D9')E<W,@(#T@9&,X,&@@;&5N9W1H(#$R."!E
M;F%B;&5D"E!#22!-96T@061D<F5S<R ](&9B969F8S P:" S,F)I="!L96YG
M=&@@,3(X(&5N86)L960*4W5B<WES=&5M(%9E;F1O<B!)1" ](#$P,CAH"E-U
M8G-Y<W1E;2!)1" @(" @(" @/2!D.&@*4$-)($5X<&%N<VEO;B!23TT@/2!F
M8F8P,# P,&@@;&5N9W1H(#$S,3 W,B!D:7-A8FQE9 I-87@@3&%T(" @(" @
M(" ](#$P;G,*36EN($=N=" @(" @(" @/2 Q,&YS"E!#22!);G0@4&EN(" @
M(#T@24Y4($$*26YT97)R=7!T(&QI;F4@/2 Y"D-A<&%B:6QI=&EE<R!0;VEN
M=&5R(#T@9&-H"D-A<&%B:6QI='D@240@(" @(" @(#T@,6@*0V%P86)I;&ET
M:65S(" @(" @(" @/2!F93 R:" M(#8X,# T,3 P: H*0VQA<W,@(" @(" @
M(" @/2!397)I86P@0G5S("A&:7)E5VER92D*5F5N9&]R($E$(" @(" @/2 Q
M,#1C:"P@5&5X87,@26YS=')U;65N=',@"D1E=FEC92!)1" @(" @(#T@.# R
M,&@L(%130C$R3%8R-B!/2$-)+4QY;G@@4$-)($E%144@,3,Y-"!(;W-T($-O
M;G1R;VQL97(*4$-)(&EN9&5X(" @(" @/2 P: I#;&%S<R!#;V1E<R @(" ]
M(#!C,# Q,&@*4F5V:7-I;VX@240@(" @/2 P: I"=7,@;G5M8F5R(" @(" ]
M(#0*1&5V:6-E(&YU;6)E<B @/2 Q,@I&=6YC=&EO;B!N=6T@(" ](# *4W1A
M='5S(%)E9R @(" @/2 R,3!H"D-O;6UA;F0@4F5G(" @(#T@,3$V: I(96%D
M97(@='EP92 @(" ](#!H(%-I;F=L92UF=6YC=&EO;@I"25-4(" @(" @(" @
M(" ](#!H($)U:6QD+6EN+7-E;&8M=&5S="!N;W0@<W5P<&]R=&5D"DQA=&5N
M8WD@5&EM97(@(#T@-#!H"D-A8VAE($QI;F4@4VEZ93T@,3!H('5N+6-A8VAE
M86)L90I00TD@365M($%D9')E<W,@/2!F8F5F9C P,&@@,S)B:70@;&5N9W1H
M(#(P-#@@96YA8FQE9 I00TD@365M($%D9')E<W,@/2!F8F5F.# P,&@@,S)B
M:70@;&5N9W1H(#$V,S@T(&5N86)L960*4W5B<WES=&5M(%9E;F1O<B!)1" ]
M(#$P,CAH"E-U8G-Y<W1E;2!)1" @(" @(" @/2!D.&@*36%X($QA=" @(" @
M(" @/2 T;G,*36EN($=N=" @(" @(" @/2 R;G,*4$-)($EN="!0:6X@(" @
M/2!)3E0@00I);G1E<G)U<'0@;&EN92 ](#$Q"D-A<&%B:6QI=&EE<R!0;VEN
M=&5R(#T@-#1H"D-A<&%B:6QI='D@240@(" @(" @(#T@,6@*0V%P86)I;&ET
M:65S(" @(" @(" @/2 V-#$Q:" M(#!H"@I#;&%S<R @(" @(" @(" ]($-O
M;6UU;FEC871I;VX@*%!)0RD*5F5N9&]R($E$(" @(" @/2 Q,S5C:"P@475A
M=&5C:"!);F,@"D1E=FEC92!)1" @(" @(#T@-3!H+"!5;FMN;W=N(%5N:VYO
M=VX*4$-)(&EN9&5X(" @(" @/2 P: I#;&%S<R!#;V1E<R @(" ](# W,#(P
M,&@*4F5V:7-I;VX@240@(" @/2 S,F@*0G5S(&YU;6)E<B @(" @/2 T"D1E
M=FEC92!N=6UB97(@(#T@,3,*1G5N8W1I;VX@;G5M(" @/2 P"E-T871U<R!2
M96<@(" @(#T@,C@P: I#;VUM86YD(%)E9R @(" ](#$P,V@*2&5A9&5R('1Y
M<&4@(" @/2 P:"!3:6YG;&4M9G5N8W1I;VX*0DE35" @(" @(" @(" @/2 P
M:"!"=6EL9"UI;BUS96QF+71E<W0@;F]T('-U<'!O<G1E9 I,871E;F-Y(%1I
M;65R(" ](#!H"D-A8VAE($QI;F4@4VEZ93T@,&@@"E!#22!)3R!!9&1R97-S
M(" ](&1C,#!H(&QE;F=T:" Q,C@@96YA8FQE9 I00TD@24\@061D<F5S<R @
M/2!D.&,P:"!L96YG=&@@-C0@96YA8FQE9 I3=6)S>7-T96T@5F5N9&]R($E$
M(#T@,3,U8V@*4W5B<WES=&5M($E$(" @(" @(" ](#4P: I00TD@17AP86YS
M:6]N(%)/32 ](&9B9C P,# P:"!L96YG=&@@,C T."!D:7-A8FQE9 I-87@@
M3&%T(" @(" @(" ](#!N<PI-:6X@1VYT(" @(" @(" ](#!N<PI00TD@26YT
M(%!I;B @(" ]($E.5"!!"DEN=&5R<G5P="!L:6YE(#T@,3 *"D-L87-S(" @
M(" @(" @(#T@0V]M;75N:6-A=&EO;B H4$E#*0I696YD;W(@240@(" @(" ]
M(#$S-6-H+"!1=6%T96-H($EN8R *1&5V:6-E($E$(" @(" @/2 T,&@L(%5N
M:VYO=VX@56YK;F]W;@I00TD@:6YD97@@(" @(" ](#!H"D-L87-S($-O9&5S
M(" @(#T@,#<P,C P: I2979I<VEO;B!)1" @(" ](#1H"D)U<R!N=6UB97(@
M(" @(#T@- I$979I8V4@;G5M8F5R(" ](#$T"D9U;F-T:6]N(&YU;2 @(#T@
M, I3=&%T=7,@4F5G(" @(" ](#(X,&@*0V]M;6%N9"!296<@(" @/2 Q,#-H
M"DAE861E<B!T>7!E(" @(#T@,&@@4VEN9VQE+69U;F-T:6]N"D))4U0@(" @
M(" @(" @(#T@,&@@0G5I;&0M:6XM<V5L9BUT97-T(&YO="!S=7!P;W)T960*
M3&%T96YC>2!4:6UE<B @/2 P: I#86-H92!,:6YE(%-I>F4](#!H( I00TD@
M24\@061D<F5S<R @/2!D.# P:"!L96YG=&@@,3(X(&5N86)L960*4$-)($E/
M($%D9')E<W,@(#T@9#AA,&@@;&5N9W1H(#,R(&5N86)L960*4W5B<WES=&5M
M(%9E;F1O<B!)1" ](#$S-6-H"E-U8G-Y<W1E;2!)1" @(" @(" @/2 T,&@*
M4$-)($5X<&%N<VEO;B!23TT@/2!F8F8P,# P,&@@;&5N9W1H(#(P-#@@9&ES
M86)L960*36%X($QA=" @(" @(" @/2 P;G,*36EN($=N=" @(" @(" @/2 P
M;G,*4$-)($EN="!0:6X@(" @/2!)3E0@00I);G1E<G)U<'0@;&EN92 ](#$Q
M"@I#;&%S<R @(" @(" @(" ]($)R:61G92 H56YK;F]W;BD*5F5N9&]R($E$
M(" @(" @/2 Q,C1B:"P@1W)E96Y3<')I;F<@0V]M<'5T97)S( I$979I8V4@
M240@(" @(" ](#0P:"P@56YK;F]W;B!5;FMN;W=N"E!#22!I;F1E>" @(" @
M(#T@,&@*0VQA<W,@0V]D97,@(" @/2 P-C@P,#!H"E)E=FES:6]N($E$(" @
M(#T@8F@*0G5S(&YU;6)E<B @(" @/2 T"D1E=FEC92!N=6UB97(@(#T@,34*
M1G5N8W1I;VX@;G5M(" @/2 P"E-T871U<R!296<@(" @(#T@,C@P: I#;VUM
M86YD(%)E9R @(" ](#$Q-V@*2&5A9&5R('1Y<&4@(" @/2 P:"!3:6YG;&4M
M9G5N8W1I;VX*0DE35" @(" @(" @(" @/2 P:"!"=6EL9"UI;BUS96QF+71E
M<W0@;F]T('-U<'!O<G1E9 I,871E;F-Y(%1I;65R(" ](#0P: I#86-H92!,
M:6YE(%-I>F4](#$P:"!U;BUC86-H96%B;&4*4W5B<WES=&5M(%9E;F1O<B!)
M1" ](#$R-&)H"E-U8G-Y<W1E;2!)1" @(" @(" @/2 Y,#@P: I-87@@3&%T
M(" @(" @(" ](#!N<PI-:6X@1VYT(" @(" @(" ](#!N<PI00TD@26YT(%!I
B;B @(" ]($E.5"!!"DEN=&5R<G5P="!L:6YE(#T@,3$*"@``
`
end

David Gibbs

Re: devc-ser8250 problem

Post by David Gibbs » Wed Jan 08, 2003 10:27 pm

Brian Meinke <RoverFan_SE7@hotmail.com> wrote:
The problem I am seeing is that the Dual Xeon box stops
transmitting.receiving data after some random amount of time (anywhere from
5 minutes to several hours) and all network connections are lost (I have to
slay/restart io-net to access the network).
Hm...your serial card and the network card wouldn't happen to be sharing
an interupt would they?

-David

--
QNX Training Services
http://www.qnx.com/support/training/
Please followup in this newsgroup if you have further questions.

Brian Meinke

Re: devc-ser8250 problem

Post by Brian Meinke » Wed Jan 08, 2003 11:11 pm

The problem is not occurring on the system with my VME Bus serial card...it
occurrs on COM1 ($3F8, 4) and COM2 ($2F8, 3) of the dual Xeon Dell (can you
tell I like the Dual Xeon :) ). Would it be a problem if they did share the
same interrupt (just for future reference)?

thanks again

"David Gibbs" <dagibbs@qnx.com> wrote in message
news:avi8kg$dch$1@nntp.qnx.com...
Brian Meinke <RoverFan_SE7@hotmail.com> wrote:

The problem I am seeing is that the Dual Xeon box stops
transmitting.receiving data after some random amount of time (anywhere
from
5 minutes to several hours) and all network connections are lost (I have
to
slay/restart io-net to access the network).

Hm...your serial card and the network card wouldn't happen to be sharing
an interupt would they?

-David

--
QNX Training Services
http://www.qnx.com/support/training/
Please followup in this newsgroup if you have further questions.

Geoff

Re: devc-ser8250 problem

Post by Geoff » Thu Jan 09, 2003 3:41 am

While developing the QNX6 RocketPort driver I found that until I sorted
out my interrupt unmasking properly, my ethernet driver would stop. The
ethernet card happened to share IRQ9 (in my case) with one of the
RocketPorts. Both of course being PCI.

Basically, you have to identify/determine in your ISR if it was your
hardware that resulted in you being there. If not, quietly return NULL.
Otherwise, mask the interrupt proceed with whatever you have to do to
service it. You shouyld also unmask when finished, which may or may not
be in the ISR itself.

Geoff.



Brian Meinke wrote:
The problem is not occurring on the system with my VME Bus serial card...it
occurrs on COM1 ($3F8, 4) and COM2 ($2F8, 3) of the dual Xeon Dell (can you
tell I like the Dual Xeon :) ). Would it be a problem if they did share the
same interrupt (just for future reference)?

thanks again

"David Gibbs" <dagibbs@qnx.com> wrote in message
news:avi8kg$dch$1@nntp.qnx.com...
Brian Meinke <RoverFan_SE7@hotmail.com> wrote:

The problem I am seeing is that the Dual Xeon box stops
transmitting.receiving data after some random amount of time (anywhere
from
5 minutes to several hours) and all network connections are lost (I have
to
slay/restart io-net to access the network).

Hm...your serial card and the network card wouldn't happen to be sharing
an interupt would they?

-David

--
QNX Training Services
http://www.qnx.com/support/training/
Please followup in this newsgroup if you have further questions.
--

Realtime Technology Systems Pty Ltd
2 Hadleigh Circuit
Isabella Plains
ACT 2905
AUSTRALIA

Phone: 61-2-6291 3833
Fax: 61-2-6291 3838
Mobile: 0413 634 667
Email: geoff@rtts.com.au

Brian Meinke

Re: devc-ser8250 problem

Post by Brian Meinke » Thu Jan 09, 2003 4:01 am

Thanks for the feedback. That was my assumption with shared interrupt
processing and subsequently what my driver does. However, the box with which
I am experiencing the "network-no-more-worky" problem is not the box running
my driver :( - it is occurring on a standard Intel PC talking on COM1 (IRQ
4...nic uses IRQ 9).

Brian


"Geoff" <geoff@rtts.com.au> wrote in message
news:3E1CEF4C.9271E1F4@rtts.com.au...
While developing the QNX6 RocketPort driver I found that until I sorted
out my interrupt unmasking properly, my ethernet driver would stop. The
ethernet card happened to share IRQ9 (in my case) with one of the
RocketPorts. Both of course being PCI.

Basically, you have to identify/determine in your ISR if it was your
hardware that resulted in you being there. If not, quietly return NULL.
Otherwise, mask the interrupt proceed with whatever you have to do to
service it. You shouyld also unmask when finished, which may or may not
be in the ISR itself.

Geoff.



Brian Meinke wrote:

The problem is not occurring on the system with my VME Bus serial
card...it
occurrs on COM1 ($3F8, 4) and COM2 ($2F8, 3) of the dual Xeon Dell (can
you
tell I like the Dual Xeon :) ). Would it be a problem if they did share
the
same interrupt (just for future reference)?

thanks again

"David Gibbs" <dagibbs@qnx.com> wrote in message
news:avi8kg$dch$1@nntp.qnx.com...
Brian Meinke <RoverFan_SE7@hotmail.com> wrote:

The problem I am seeing is that the Dual Xeon box stops
transmitting.receiving data after some random amount of time
(anywhere
from
5 minutes to several hours) and all network connections are lost (I
have
to
slay/restart io-net to access the network).

Hm...your serial card and the network card wouldn't happen to be
sharing
an interupt would they?

-David

--
QNX Training Services
http://www.qnx.com/support/training/
Please followup in this newsgroup if you have further questions.

--

Realtime Technology Systems Pty Ltd
2 Hadleigh Circuit
Isabella Plains
ACT 2905
AUSTRALIA

Phone: 61-2-6291 3833
Fax: 61-2-6291 3838
Mobile: 0413 634 667
Email: geoff@rtts.com.au

Brian Meinke

Re: devc-ser8250 problem

Post by Brian Meinke » Thu Jan 09, 2003 4:05 am

Another question regarding access to global memory from the ISR:

In order to access the VME serial card, I have to mmap() a range of physical
memory (to access the VME bus short I/O range). I store the pointer returned
from mmap() in a global pointer which I assumed would be available in the
ISR. Is this assumption correct or is it possible that the mmap()'d region
might not always be valid within the ISR?

TIA
Brian


"Brian Meinke" <RoverFan_SE7@Hotmail.com> wrote in message
news:avi5hv$ard$1@inn.qnx.com...
While developing a devc driver, I encountered a little intermittent
problem
with devc-ser8250 on 6.20A PE SMP(Dual 1.8 GHz Xeons, 512MB, 3COM 3C905C
NIC)

I am trying to develop a character driver for a multi-port VME Bus serial
board (NEC 7201 DUART) and have written a small test application which
simply writes a string out one serial port of the VME serial card and is
received on COM1 on a different computer. The VME based computer (PIII850
256 MB) running my devc driver (devc-mz8300) and the Dual Xeon box is
simply
running devc-ser8250. Serial ports on both boxes set to 9600,N,8,1 raw
with
no hardware/software handshaking (this is due to legacy configurations of
the VME serial board already being used in the field).

The problem I am seeing is that the Dual Xeon box stops
transmitting.receiving data after some random amount of time (anywhere
from
5 minutes to several hours) and all network connections are lost (I have
to
slay/restart io-net to access the network).

I have tried using the non-SMP kernel which only extends the amount of
time
which passes before the problem occurs. I have disabled hyper-threading
both
with and without the SMP kernel which seems to have a similar effect as
using the non-SMP kernel (more time passes before problem occurs).

I have attached the output from 'pci -v'. Any ideas are greatly
appreciated.

TIA
Brian


Geoff

Re: devc-ser8250 problem

Post by Geoff » Thu Jan 09, 2003 5:22 am

I suspect that even with a physical address (as opposed to a virtual
address) you might have problems when referencing from within the ISR.
Fortunately I didn't have this problem. But I had similar issues to
contend with. Essentially, from within the ISR I am able to reference
both the memory area I passed into the ISR when I set it up, and I also
am able to reference a global pointer to an object that allows me to
obtain some essential and specific information about the hardware device
that actually initiated the interrupt. The driver supports multiple
cards with shared or unshared interrupts, PCI or ISA, using the one ISR.

To access some memory (mmap) I would probably not be inclined to try it
from within the ISR. Rather I would (and do) fire a pulse and have my
application do the work in its handler outside of the ISR context.


Geoff.

Brian Meinke wrote:
Another question regarding access to global memory from the ISR:

In order to access the VME serial card, I have to mmap() a range of physical
memory (to access the VME bus short I/O range). I store the pointer returned
from mmap() in a global pointer which I assumed would be available in the
ISR. Is this assumption correct or is it possible that the mmap()'d region
might not always be valid within the ISR?

TIA
Brian

"Brian Meinke" <RoverFan_SE7@Hotmail.com> wrote in message
news:avi5hv$ard$1@inn.qnx.com...
While developing a devc driver, I encountered a little intermittent
problem
with devc-ser8250 on 6.20A PE SMP(Dual 1.8 GHz Xeons, 512MB, 3COM 3C905C
NIC)

I am trying to develop a character driver for a multi-port VME Bus serial
board (NEC 7201 DUART) and have written a small test application which
simply writes a string out one serial port of the VME serial card and is
received on COM1 on a different computer. The VME based computer (PIII850
256 MB) running my devc driver (devc-mz8300) and the Dual Xeon box is
simply
running devc-ser8250. Serial ports on both boxes set to 9600,N,8,1 raw
with
no hardware/software handshaking (this is due to legacy configurations of
the VME serial board already being used in the field).

The problem I am seeing is that the Dual Xeon box stops
transmitting.receiving data after some random amount of time (anywhere
from
5 minutes to several hours) and all network connections are lost (I have
to
slay/restart io-net to access the network).

I have tried using the non-SMP kernel which only extends the amount of
time
which passes before the problem occurs. I have disabled hyper-threading
both
with and without the SMP kernel which seems to have a similar effect as
using the non-SMP kernel (more time passes before problem occurs).

I have attached the output from 'pci -v'. Any ideas are greatly
appreciated.

TIA
Brian


--

Realtime Technology Systems Pty Ltd
2 Hadleigh Circuit
Isabella Plains
ACT 2905
AUSTRALIA

Phone: 61-2-6291 3833
Fax: 61-2-6291 3838
Mobile: 0413 634 667
Email: geoff@rtts.com.au

David Gibbs

Re: devc-ser8250 problem

Post by David Gibbs » Thu Jan 09, 2003 8:41 pm

Brian Meinke <RoverFan_SE7@hotmail.com> wrote:
Another question regarding access to global memory from the ISR:

In order to access the VME serial card, I have to mmap() a range of physical
memory (to access the VME bus short I/O range). I store the pointer returned
from mmap() in a global pointer which I assumed would be available in the
ISR. Is this assumption correct or is it possible that the mmap()'d region
might not always be valid within the ISR?
The physical memory you have mmap() should always be available and useable
from the ISR. IF at some point we implement paging/swapping, and IF you
choose to enable on your system, then the global pointer you stored that
address in may not be accessible from your ISR. mlock() will be able to
be used to request the memory not be paged/swapped to ensure this won't
be a problem.

-David
--
QNX Training Services
http://www.qnx.com/support/training/
Please followup in this newsgroup if you have further questions.

David Gibbs

Re: devc-ser8250 problem

Post by David Gibbs » Thu Jan 09, 2003 8:43 pm

Brian Meinke <RoverFan_SE7@hotmail.com> wrote:
The problem is not occurring on the system with my VME Bus serial card...it
occurrs on COM1 ($3F8, 4) and COM2 ($2F8, 3) of the dual Xeon Dell (can you
tell I like the Dual Xeon :) ).
Oh, I hadn't realized from the post that it was a different machine
where you lost network access.

This sounds like something else going on, and I have no idea
what.
Would it be a problem if they did share the
same interrupt (just for future reference)?
If you had coding/logic problems in your interrupt handling, you
might end up leaving the interrupt masked when you shouldn't have,
and resulted in this. Basically if a couple people are sharing an
irq, and one makes a mistake, it can damage both.

-David
--
QNX Training Services
http://www.qnx.com/support/training/
Please followup in this newsgroup if you have further questions.

Brian Meinke

Re: devc-ser8250 problem

Post by Brian Meinke » Thu Jan 09, 2003 10:53 pm

Thanks for the feedback. I suppose just to be on the safe side (so I dont
hve to worry about it in the future) I will add an mlock() call to lock the
mmap()'d region. The good news for now is that I haven't seen the
"network-no-worky" problem (described in my original post) for quite some
time now :)

Brian

"David Gibbs" <dagibbs@qnx.com> wrote in message
news:avkmou$3ch$2@nntp.qnx.com...
Brian Meinke <RoverFan_SE7@hotmail.com> wrote:
Another question regarding access to global memory from the ISR:

In order to access the VME serial card, I have to mmap() a range of
physical
memory (to access the VME bus short I/O range). I store the pointer
returned
from mmap() in a global pointer which I assumed would be available in
the
ISR. Is this assumption correct or is it possible that the mmap()'d
region
might not always be valid within the ISR?

The physical memory you have mmap() should always be available and useable
from the ISR. IF at some point we implement paging/swapping, and IF you
choose to enable on your system, then the global pointer you stored that
address in may not be accessible from your ISR. mlock() will be able to
be used to request the memory not be paged/swapped to ensure this won't
be a problem.

-David
--
QNX Training Services
http://www.qnx.com/support/training/
Please followup in this newsgroup if you have further questions.

David Gibbs

Re: devc-ser8250 problem

Post by David Gibbs » Fri Jan 10, 2003 4:23 pm

Brian Meinke <RoverFan_SE7@hotmail.com> wrote:
Thanks for the feedback. I suppose just to be on the safe side (so I dont
hve to worry about it in the future) I will add an mlock() call to lock the
mmap()'d region.
Maybe I wasn't clear enough. It isn't the mmap()ed region that needs the
mlock() call. It is a mapping of physical memory, the OS is never going
to page/swap that out. (Among other reasons, there is no point to doing
so as doing so doesn't gain any RAM for other programs to use. It is also
a physical mapping of addresses, so swapping it out is kind of meaningless.)

It is the global pointer (which resides in your processes RAM) which is
the memory that might get swapped/paged out at some point in the future,
and which might need the mlock() call applied to it for safety.

That is, you'll always be able to get to the physcical mapped memory,
you may not always be able to get to your program's pointer to that
memory to know where in your address space it resides.

-David
"David Gibbs" <dagibbs@qnx.com> wrote in message
news:avkmou$3ch$2@nntp.qnx.com...
Brian Meinke <RoverFan_SE7@hotmail.com> wrote:
Another question regarding access to global memory from the ISR:

In order to access the VME serial card, I have to mmap() a range of
physical
memory (to access the VME bus short I/O range). I store the pointer
returned
from mmap() in a global pointer which I assumed would be available in
the
ISR. Is this assumption correct or is it possible that the mmap()'d
region
might not always be valid within the ISR?

The physical memory you have mmap() should always be available and useable
from the ISR. IF at some point we implement paging/swapping, and IF you
choose to enable on your system, then the global pointer you stored that
address in may not be accessible from your ISR. mlock() will be able to
be used to request the memory not be paged/swapped to ensure this won't
be a problem.

-David
--
QNX Training Services
http://www.qnx.com/support/training/
Please followup in this newsgroup if you have further questions.

--
QNX Training Services
http://www.qnx.com/support/training/
Please followup in this newsgroup if you have further questions.

Brian Meinke

Re: devc-ser8250 problem

Post by Brian Meinke » Fri Jan 10, 2003 9:28 pm

Ahh....That makes sense. Thanks for the clarification.

"David Gibbs" <dagibbs@qnx.com> wrote in message
news:avms2m$gbt$2@nntp.qnx.com...
Brian Meinke <RoverFan_SE7@hotmail.com> wrote:
Thanks for the feedback. I suppose just to be on the safe side (so I
dont
hve to worry about it in the future) I will add an mlock() call to lock
the
mmap()'d region.

Maybe I wasn't clear enough. It isn't the mmap()ed region that needs the
mlock() call. It is a mapping of physical memory, the OS is never going
to page/swap that out. (Among other reasons, there is no point to doing
so as doing so doesn't gain any RAM for other programs to use. It is also
a physical mapping of addresses, so swapping it out is kind of
meaningless.)

It is the global pointer (which resides in your processes RAM) which is
the memory that might get swapped/paged out at some point in the future,
and which might need the mlock() call applied to it for safety.

That is, you'll always be able to get to the physcical mapped memory,
you may not always be able to get to your program's pointer to that
memory to know where in your address space it resides.

-David

"David Gibbs" <dagibbs@qnx.com> wrote in message
news:avkmou$3ch$2@nntp.qnx.com...
Brian Meinke <RoverFan_SE7@hotmail.com> wrote:
Another question regarding access to global memory from the ISR:

In order to access the VME serial card, I have to mmap() a range of
physical
memory (to access the VME bus short I/O range). I store the pointer
returned
from mmap() in a global pointer which I assumed would be available in
the
ISR. Is this assumption correct or is it possible that the mmap()'d
region
might not always be valid within the ISR?

The physical memory you have mmap() should always be available and
useable
from the ISR. IF at some point we implement paging/swapping, and IF
you
choose to enable on your system, then the global pointer you stored
that
address in may not be accessible from your ISR. mlock() will be able
to
be used to request the memory not be paged/swapped to ensure this won't
be a problem.

-David
--
QNX Training Services
http://www.qnx.com/support/training/
Please followup in this newsgroup if you have further questions.



--
QNX Training Services
http://www.qnx.com/support/training/
Please followup in this newsgroup if you have further questions.

Geoff

Re: devc-ser8250 problem

Post by Geoff » Fri Jan 10, 2003 11:00 pm

David,

I have interest in this for the same reasons as Brian. Problem is, the
docs I have say that mlock() is not currently supported. Is this still
correct?

Geoff

David Gibbs wrote:
Brian Meinke <RoverFan_SE7@hotmail.com> wrote:
Thanks for the feedback. I suppose just to be on the safe side (so I dont
hve to worry about it in the future) I will add an mlock() call to lock the
mmap()'d region.

Maybe I wasn't clear enough. It isn't the mmap()ed region that needs the
mlock() call. It is a mapping of physical memory, the OS is never going
to page/swap that out. (Among other reasons, there is no point to doing
so as doing so doesn't gain any RAM for other programs to use. It is also
a physical mapping of addresses, so swapping it out is kind of meaningless.)

It is the global pointer (which resides in your processes RAM) which is
the memory that might get swapped/paged out at some point in the future,
and which might need the mlock() call applied to it for safety.

That is, you'll always be able to get to the physcical mapped memory,
you may not always be able to get to your program's pointer to that
memory to know where in your address space it resides.

-David

"David Gibbs" <dagibbs@qnx.com> wrote in message
news:avkmou$3ch$2@nntp.qnx.com...
Brian Meinke <RoverFan_SE7@hotmail.com> wrote:
Another question regarding access to global memory from the ISR:

In order to access the VME serial card, I have to mmap() a range of
physical
memory (to access the VME bus short I/O range). I store the pointer
returned
from mmap() in a global pointer which I assumed would be available in
the
ISR. Is this assumption correct or is it possible that the mmap()'d
region
might not always be valid within the ISR?

The physical memory you have mmap() should always be available and useable
from the ISR. IF at some point we implement paging/swapping, and IF you
choose to enable on your system, then the global pointer you stored that
address in may not be accessible from your ISR. mlock() will be able to
be used to request the memory not be paged/swapped to ensure this won't
be a problem.

-David
--
QNX Training Services
http://www.qnx.com/support/training/
Please followup in this newsgroup if you have further questions.

--
QNX Training Services
http://www.qnx.com/support/training/
Please followup in this newsgroup if you have further questions.

David Gibbs

Re: devc-ser8250 problem

Post by David Gibbs » Mon Jan 13, 2003 4:10 pm

Geoff <geoff@rtts.com.au> wrote:
David,

I have interest in this for the same reasons as Brian. Problem is, the
docs I have say that mlock() is not currently supported. Is this still
correct?
That is, also, correct. (mlock() may or may not be currently implemented,
that is, it may actually set the bits to lock something into memory right
now, or it may not -- but since we don't actually swap/page anything,
it doesn't have any effect.)

If you go back to my original paragraph, I say things like "if swapping
is implemented" and "mlock() will be able to be used to".

So, mlock() does(the equivalent of) nothing now, but may at some point
in the future be important.

-David
David Gibbs wrote:

Brian Meinke <RoverFan_SE7@hotmail.com> wrote:
Thanks for the feedback. I suppose just to be on the safe side (so I dont
hve to worry about it in the future) I will add an mlock() call to lock the
mmap()'d region.

Maybe I wasn't clear enough. It isn't the mmap()ed region that needs the
mlock() call. It is a mapping of physical memory, the OS is never going
to page/swap that out. (Among other reasons, there is no point to doing
so as doing so doesn't gain any RAM for other programs to use. It is also
a physical mapping of addresses, so swapping it out is kind of meaningless.)

It is the global pointer (which resides in your processes RAM) which is
the memory that might get swapped/paged out at some point in the future,
and which might need the mlock() call applied to it for safety.

That is, you'll always be able to get to the physcical mapped memory,
you may not always be able to get to your program's pointer to that
memory to know where in your address space it resides.

-David

"David Gibbs" <dagibbs@qnx.com> wrote in message
news:avkmou$3ch$2@nntp.qnx.com...
Brian Meinke <RoverFan_SE7@hotmail.com> wrote:
Another question regarding access to global memory from the ISR:

In order to access the VME serial card, I have to mmap() a range of
physical
memory (to access the VME bus short I/O range). I store the pointer
returned
from mmap() in a global pointer which I assumed would be available in
the
ISR. Is this assumption correct or is it possible that the mmap()'d
region
might not always be valid within the ISR?

The physical memory you have mmap() should always be available and useable
from the ISR. IF at some point we implement paging/swapping, and IF you
choose to enable on your system, then the global pointer you stored that
address in may not be accessible from your ISR. mlock() will be able to
be used to request the memory not be paged/swapped to ensure this won't
be a problem.

-David
--
QNX Training Services
http://www.qnx.com/support/training/
Please followup in this newsgroup if you have further questions.

--
QNX Training Services
http://www.qnx.com/support/training/
Please followup in this newsgroup if you have further questions.
--
QNX Training Services
http://www.qnx.com/support/training/
Please followup in this newsgroup if you have further questions.

Post Reply

Return to “qdn.public.ddk”