Messages in this thread | | | Date | Fri, 9 May 1997 22:00:07 +0200 (MET DST) | From | Riccardo Facchetti <> | Subject | [PATCH3] 2.1.36 (do_nmi) NMI trap revised |
| |
On Fri, 9 May 1997, Martin Mares wrote:
> Hi, > > > > I'll test it today and let's see if the bits work or not. > > > > Yes ... but ... err ... do you have some buggy parity memory ? :))) > > No, but I can simply simulate parity errors for example by turning on the > parity checks on system with no-parity SIMMs.
Okay. I have tested the NMI handler with my Triton PIIX3 chipset. It seems to work well. I have enabled parity check in BIOS, then I have booted the machine telling the BIOS (at bios request after an NMI at address 0x00) to disable NMI interrupts (I guess writing 1 at bit 7 of 0x70). Then booted with patch (revised to check local_page for error) with NMI disabled. After this, I have run an user program to enable memory parity check and re-enable the NMI interrupts and I have received the kernel NMI message. The kernel allocated the local page and memset(...) raised the NMI flag (NMI error). I have set up the kernel handler to leave NMI interrupts disabled (hehe ... without this last thing, there was one NMI after the other forever :))
The only strange thing is that after the test, having NMI interrupts disabled (and all filesystems except / umounted) I have done a ctrl-alt-del to reboot and I have had a PANIC (program, not kernel) from init. Hmmm may be some flaw in the nmi handler ? Or doing this tricks with NMI leaved the machine in an insane state ?
Boh ... the logic seems to work. Try this one. nmi.diff is the kernel diff nmi.c is the program I have used to raise the NMI interrupt. Remember to comment out the last "NMI interruts enable" instruction in do_nmi.
The next step will be to cli/sti the memory test. I have an idea on how to collect the informations. I think I will use an array of bytes as a bitmap with every bit meaning a page. Allocating num_physpages >> 8 bytes I can collect all the relevant informations and printk it after the sti. This way for 128 Mb of memory we need only 4096 bytes. Of course all this crap because we can not printk in a cli/sti pair: it is itself in a __cli/__sti pair so after its sti we are happily allowing interrupts et al eventually doing spurious NMIs on unchecked memory accesses while we are checking a known page and fooling us with NMI flag set.
But this evening I have something other to do :))
Ciao, Riccardo. ------------- begin 644 nmi.tar.gz M'XL("'E\<S,"`VYM:2YT87(`[5E[;QNY$<^_TJ>8Y'`Y*9*EE>1';">7.(Z3 MJ+4=P\DU:%%`H':Y$NM]8;EK66W=S]Z9X3XEV4X+W!U:>&%X)9)#SNLW#RKP M5<]^\NL^`\O:W=Z&)T"/M?(&&`RM`<#N:+2]N[<[V!GBB&7M#9^`]>0W>%*= MB!C@21R&R7WK'IK_'WU^4('MI8Z$5VF@=.+TYC\WRS$<4&%]2&B_;\::OE!! MJPW_:#8:::#5+)`.J""!P%<3%;@AO`;K$"=I3!TVZ5,8>:U1FS^':3*=1"WK MYJ75!>MFSVK3VOX+_`<OX,A.U+5())R?C<&7/D1H)1G'9O8/:#5PPQ@2J1,> MZN/_RKDJ,'OO#LQARH76TU:QX#ELM]LXW(AB9,YM/:-3%D*##,34DT[OK\$S M9D=Z6FY:%X3)RMKJ^?]\#=N'I8CY.(G)#%66/G\-_[IW;;-^>!+.9K5#\\D3 MXD8%,U88#J&NTBC1Y<)"WU:I[WN4]GTZ>TA?WT0<(%,'S-6ZTAJWS2>/S^_Y MH'E[CG+=WR_^#W9&.]MY_-_9&0PH_N\.MA_C_V_Q;&UM`8:-]&9KV!OT1KM] M$=OSOAJ]W.U?R3B07C^)1:1[=N,L#.!,+`%V,&,?6#L'@WT8[._O-3N=CMGB M;MH/L3*T^S`<'(RL`\SX3/OV+6P-N[O0&7;WX>W;)F!P7]LLVX4FS8+C,%K& M:C9/H'7<IHT&7?J/E<,IDFKX&L;7PG-TLX,4':*@P[:LG2UK#^5`?U>8JIQP M@MZ/"6RZA$MEVR)V0O@@;'LNDT1AI(4D7M++43KRD'L=^I*VPW2GI9MZ0'$Q M]D6B4#4JT(D4#H0N)',)H>?`3`8R5C:F+ZW%3/:(^7X3FH!)C@6W6/)1=X]% M+W.L48`=!JZ:4:9=FTJ4+^.-,[Y/PYVU8>%YH;V10OO17>,3I+G:.*D"E=`$ MBS':Z0Y>DB#[W>%PAV7!@H!H)\8/6ACJX18E[R#8$M0(5013X6!>GVA)AIXX M82!-O0!88>`A5Z@QN`Y582>=Q*F=0)1,8CG3:%1Z=<$+,>=AL@OCB1TZLMW$ M>F3+Y)\KSE&<:4#/PP418HTC8]TB6F0*]>0&CG3A^//YA_''R?CC^>?+DPE2 M-3OWU32527N.X>,%LF$+;Q(1TZ_A_)?3TTV+:'H2)?$]2U`E8;R<R,`I%S4[ M?>/&[Y6F[+F2XF$1JX0R_P`'8:H2V$,O9((HC!/.]3WX)E&1G((7`N5!MYZ+ MZY6M4*5V&FMTYQZ3'P7+!?K]0I+Z4O1HX<726<)4TDE<`#B&)0?(LO)9%_Y& MI1GNCFL0%0@%WDD+%S=1CN2-^RCXIO*OE/2=1&01QR27");)G#Y0==%%6"4, ML>D2RT,W#OU<S-T!M+XLT<`^O`L1S;S3N/\9+G"^W8-QDLN!T$JP>*T"6(.8 M(D^PF(L$;($(=U@Y+9'P/IX4)-A<:<`_7L4BFR&">RQ=&<O`EN"+(!4>C(V* M\1SD,C#;8'CP9;O0PEW55^<']`#E-E`EB#VWXJ)?SB[(/R?C\S\=G2+0"*:N ME^KY)/&FD]B^9K#]P(48W.W>)41^F<_3>8]E1?-+=8W5&;P7?T?Y1<"J<DD9 M79BB=C`BDB'0OJ1"#`72%'+E=G\.4XCB<(I>L33R"WS%SD*@/6G"0_,L5#*' M99C&<'ETAJZO(E1A#&)ULRA<R!B=YYH.]1'>*_4C.DP5ZJ4`Q73F3U^Q3\B@ M04+M<O-PQEB#"X'X6=+YY"O'<Q%@R#(AI;`3U<*52MBZ.;:H\2FVS]Q"(`<B MHR4-.8I<JXN9`QVT\"XS'=J(-823@5I1*,_1APAQKD(^$UJ.;&L8$M]])!N1 M"Y4.3\V(1D!@#GLW_OPEVTP:S1/:T50TCZ*G$:TR$1EHWY"F,9,@5MGA<7VP M%1EMF#C$NRV4YYE<EO=C+(!F*Y)0PD[0W;T\+AC-P=$,$=;-@XZQ&^^'V,6S M6*J"'XY/M@@X4'C+K,VAI;[12,[BPHC&&[EAFNL(%RY7=<&6Y@E61H9IAFLA M1&'@=0N_-!;.FQGT,/+5S%F.Y]*^.LBT!)G.S(ZE9W(W2R_R$%-*U!TA(R?_ M)^]QA:(.KI?3?".4U.Q!XI.6N#`A03@NY@3]M5-CJ;-@F;71J]R"ZXD9M!@9 M[9R*E4^(H^$A^1N[&CL=RC#(%1O0-ZL\O+'6`M/078UM;7G6!M^[GF=K>?;* ME#6MBZ./)Y,OX[^<=.'CAXO)'T\NST].-Q@AQP6%+S(@*%.L53:E6'XE.!JH M)*?+TH7.'+]7`1A0@F0N!.=@P4F^U"1A0J>Q-&Z*^LP/P&_8%_V('H%Y@B'& M+!649%WF*,_N%N53K+HJPF39+*:Z$[?F`!T2XO!+F;1]<65XR"EQBDD*M7$J MU81=*G$A+Y-Z\,GW8?R3GQ,2D)%??87L(I0XBH^&["9":^DCPF-HC>$J"!<5 M]65\3/E8BA-:^9$G34;!$B(,?BJK$B<LR(@7Y:@PBYCM7LW5T)O1N5NE[=!3 MNJ5,FS`HLUNC#4#8[,6K69EG[XD41:BHIY83AAI:/)HOM4)^C66MFQ\CC!9= M:*U4@>UK%2>3))S0^HJ$[0PVN4PLE(F4A&_"<B^?,))L`N2]B-P(R0<PV;AR M8RFK?&9D&XOB1N-VS3*+N?),ND+_*+64V8GB')I..@?Y^OQA-S:0,Y6@H3A< M74?D!':L)$W%B]BB`HL2+@XO)3827*K6R;`5I:*O@&&"(0])I^$L10)C:_1S MO4Y'(H!P'`S`>HV;3H=V/*RY'#E515W/G\/3]0:I<+.*_=\SVKGJIA:*\OFJ M#VSLM`:%]2J;?4D$Y2>WHGF6!(%%'4DQ41#D"UI!ZK.W$O<:7KW*@/AI_.%K M>X6=2A=$%.3GY.\M*W>;6@]46W+?*84\.08)[EPW\G8'U;Q<D]E$)\JLGFJU M^TC4:INBXTVQB+NG:IC"8(:M3Y+&4T1MBJ6P5SA0HVCC,K_CR(JE[XR\`0LC MS!8+KJ(K!-KT+8LPOL)8"JFF!H)2/=(Y*?84:2!O(FDC"@J:LA1;M;CY;U#5 M*O3]JM)=%JY4J**(D)P4\^R#;RHB8NX*QFZYE%-9EU[$9=Y05=V#]2"B"!5$ MI8/FLF&QHLC*4E0.U:A4\_6*X4P@QL<%,G29,=,BC\;=.V='V`]=%D*VVZ5D MI:=U7I>)X3"?S3N8?"`/2W65%'N@)E!21SG<]+$'<,;F"GZ%6V3.CI:UW)3O MLY*B&HW[\DTA^EWYYM?).*4R#S<Y23WCL%E-;#')-<PJC4Q]98[5ZXK:F)\> MR%!WY*B'J&ZS]WU.<5O+3_68W+X[UZUDLS*B1")0-D83JOC?5`HW@@PZK[G& MP!1FXAFMRJX/N54Q8.KF=%0MB6(YTE,[X%&6I(Z`RDM*GD1-#45.1?E*.$75 MF%WID*&H2/.X/<!@I&$6WMU'7/Z_]1&9B=>@M;W6]%7O!+*NCX;L;$@X(L)2 MN=[[U727%[C978CMI7PS-D?MYY=P!63(7G=<297](>>FPJ"GWV?!>B=XIP05 M.^YNMN/HO[;CR__0C@^OORTN8.C'!>JTA(N2,.JR#%ZT:B+([UV"6M]M1BH* MX?TRI=#-#>5#;KMQ.[JQPO@ONI7V2B=A5"`OLP1"J[A9N.5KR\IET:=T#F_> M5!(ZF^3ITXR`!%NYF_O^V[C2`^^[CWOP6HT#(3L/\LN_+-]YZ6S5+YT;U5MG M_EJ[[*W\]@SY%6?V@27??$W/OQUL^EW`D=-T]MV_##S^VOOX/#Z/S^-3/O\& (\0)+W``H``#Y ` end
| |