home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / os / linux / 8443 < prev    next >
Encoding:
Text File  |  1992-08-17  |  8.5 KB  |  273 lines

  1. Path: sparky!uunet!nwnexus!remote!Gatekeeper
  2. From: Bert.Sainz@f55.n135.z1.fidonet.org (Bert Sainz)
  3. Newsgroups: comp.os.linux
  4. Subject: AMD386 vs. Intel386 & external cache problems
  5. Message-ID: <714047163.F00152@remote.halcyon.com>
  6. Date: Sat, 15 Aug 1992 13:50:18 -0800
  7. Sender: Gatekeeper@remote.halcyon.com
  8. Lines: 263
  9.  
  10.  > From: herr@hp11.iti.informatik.th-darmstadt.de (Gabor Herr)
  11.  >
  12.  > Hello Linuxers,
  13.  >
  14.  > two weeks ago I posted to this newsgroup, that I had problems with
  15. my
  16.  > new 386
  17.  > motherboard (AMD386, 40MHz, ETEQ Cougar chipset, 64KB cache, 8MB
  18.  > memory).
  19.  > Running Linux on it, from time to time some processes or even
  20.  > the kernel died with a signal SIGSEGV, which was caused by a
  21. `general
  22.  > protection
  23.  > error'. After turning off the onboard external cache everything
  24.  > workedfine.
  25.  >
  26.  > To localize the error and make it reproducible I tested the machine
  27.  > with the following two endless loops under Linux 0.96cp2:
  28.  >
  29.  
  30. Your message rang a bell. In the last few days a message was posted in
  31. the 
  32. C_ECHO conference of FidoNet that might shed some light on your
  33. problems. I 
  34. can't help beyond posting this. Please note the data file is missing and
  35.  
  36. would have to be downloaded from the PKWare bbs.
  37.  
  38. Please note the similarity between your statement that when cache is
  39. turned 
  40. off the problems disappear and a similar statement in MC's message.
  41.  
  42. >--- cut here
  43.  
  44. By: Martin Connelly
  45. To: All
  46. Re: External Cache Fault  1/
  47. St:
  48. ----------------------------------------------------------------------------
  49. @MSGID: 1:340/15.0 2a8115a8
  50.    During the development of PKZIP v. 2.0 for MS-DOS, PKWARE has
  51.   discovered hardware faults in newer 80386 & 80486 computers.
  52.   These faults can cause anomalies in the operation of PKWARE
  53.   software as well as other software.
  54.     PKWARE has been endeavoring to locate an anomaly that has been
  55.   observed by a number of customers and associated vendors.  The intial
  56.   symptoms of the problem were:
  57.     - Particular files extracting with  errors on one machine, but not
  58.       on another.
  59.    - Installs of some products failing.
  60.     These problems have been observed primarily on newer, fast (33Mhz
  61.     or faster) 80386 and 80486 machines.  Investigation of the problem
  62.     revealed no difference in software or hardware between machines
  63. that
  64.     failed and machines which did not.  The files which fail do not
  65. fail
  66.     every time. To further test where the problem was occuring, a very
  67.     simple program which would load a test file into a RAM buffer and
  68.     then copy it to a second RAM buffer was created.  The program then
  69.     compares the two buffers one byte at a time and reports any
  70.     discrepancies. Discrepancies with even the simple copy were noted.
  71.     If the EXTERNAL CACHE is turned off through the BIOS configuration,
  72.     the problem does not occur. This is a hardware flaw. Here are the
  73.     test programs. Pkware supplies test data BBS number 1-414-354-8670
  74.     and is looking for bug reports on external caches that cause this.
  75.  
  76. two test programs
  77.  
  78. // test1.c
  79. #include "stdlib.h"
  80. #include "fcntl.h"
  81. #include "memory.h"
  82. #include "stdio.h"
  83. #include "io.h"
  84. #include "func.h"
  85.  
  86. boolean is386;
  87.  
  88. #define SIZE 16384U
  89. unsigned char buff1[SIZE];
  90. unsigned char buff2[SIZE];
  91.  
  92. // Simply compare the two buffers byte by byte,
  93. // and report any mismatches.  The buffers should be identical,
  94. // but due to faulty external caches, the data can become corrupted.
  95.  
  96. void compare(char *p1,char *p2,unsigned size,unsigned long pos)
  97. {
  98. char *save=p1;
  99.  
  100. while (size--)
  101.   { if (*p1 != *p2)
  102.       { printf(
  103. "Mismatch at: %5u  Pos: %7lu  adr1: %4x adr2: %4x  buff1=%3u
  104. buff2=%3u\n",
  105.               p1-save,pos+(unsigned)p1-(unsigned)save,p1,p2,*p1,*p2);
  106.       }
  107.     p1++;
  108.     p2++;
  109.   }
  110. }
  111.  
  112. void do_file(int fh,unsigned size)
  113. {
  114. unsigned count;
  115. unsigned long pos;
  116. char *ptr;
  117. unsigned i;
  118.  
  119. _lseek(fh,pos=0L,SEEK_SET);
  120.  
  121. printf("Buffer: %5u\n",size);
  122.  
  123. while (count=_read(fh,buff1,size))      // standard read routine
  124.   { for (i=0;i<32;i++)
  125.       memcpy(buff2,buff1,count);        // standard memcpy routine
  126.  
  127.     compare(buff1,buff2,count,pos);
  128.     pos += count;
  129.   }
  130. }
  131.  
  132. unsigned main(unsigned argc,char *argv[])
  133. {
  134. int fh;
  135. unsigned i;
  136.  
  137. if ((fh=_open(argv[1],O_RDONLY|O_BINARY)) == -1)
  138.   { printf("Can't open %s\n",argv[1]);
  139.     return 1;
  140.   }
  141.  
  142. for (i=64; i<=SIZE; i<<=1)
  143.   do_file(fh,i);
  144.  
  145. return 0;
  146. }
  147.  
  148. //test2.c
  149.  
  150. #include "stdlib.h"
  151. #include "fcntl.h"
  152. #include "memory.h"
  153. #include "stdio.h"
  154. #include "io.h"
  155. #include "func.h"
  156. #include "dos.h"
  157. #include "share.h"
  158.  
  159. #define SIZE 16384U
  160. unsigned char buff1[SIZE];
  161. unsigned char buff2[SIZE];
  162.  
  163. unsigned long crc_tab[] = {
  164. 0x00000000,0x77073096,0xEE0E612C,0x990951BA,0x076DC419,0x706AF48F,
  165. 0xE963A535,0x9E6495A3,0x0EDB8832,0x79DCB8A4,0xE0D5E91E,0x97D2D988,
  166. 0x09B64C2B,0x7EB17CBD,0xE7B82D07,0x90BF1D91,0x1DB71064,0x6AB020F2,
  167. 0xF3B97148,0x84BE41DE,0x1ADAD47D,0x6DDDE4EB,0xF4D4B551,0x83D385C7,
  168. 0x136C9856,0x646BA8C0,0xFD62F97A,0x8A65C9EC,0x14015C4F,0x63066CD9,
  169. 0xFA0F3D63,0x8D080DF5,0x3B6E20C8,0x4C69105E,0xD56041E4,0xA2677172,
  170. 0x3C03E4D1,0x4B04D447,0xD20D85FD,0xA50AB56B,0x35B5A8FA,0x42B2986C,
  171. 0xDBBBC9D6,0xACBCF940,0x32D86CE3,0x45DF5C75,0xDCD60DCF,0xABD13D59,
  172. 0x26D930AC,0x51DE003A,0xC8D75180,0xBFD06116,0x21B4F4B5,0x56B3C423,
  173. 0xCFBA9599,0xB8BDA50F,0x2802B89E,0x5F058808,0xC60CD9B2,0xB10BE924,
  174. 0x2F6F7C87,0x58684C11,0xC1611DAB,0xB6662D3D,0x76DC4190,0x01DB7106,
  175. 0x98D220BC,0xEFD5102A,0x71B18589,0x06B6B51F,0x9FBFE4A5,0xE8B8D433,
  176. 0x7807C9A2,0x0F00F934,0x9609A88E,0xE10E9818,0x7F6A0DBB,0x086D3D2D,
  177. 0x91646C97,0xE6635C01,0x6B6B51F4,0x1C6C6162,0x856530D8,0xF262004E,
  178. 0x6C0695ED,0x1B01A57B,0x8208F4C1,0xF50FC457,0x65B0D9C6,0x12B7E950,
  179. 0x8BBEB8EA,0xFCB9887C,0x62DD1DDF,0x15DA2D49,0x8CD37CF3,0xFBD44C65,
  180. 0x4DB26158,0x3AB551CE,0xA3BC0074,0xD4BB30E2,0x4ADFA541,0x3DD895D7,
  181. 0xA4D1C46D,0xD3D6F4FB,0x4369E96A,0x346ED9FC,0xAD678846,0xDA60B8D0,
  182. 0x44042D73,0x33031DE5,0xAA0A4C5F,0xDD0D7CC9,0x5005713C,0x270241AA,
  183. 0xBE0B1010,0xC90C2086,0x5768B525,0x206F85B3,0xB966D409,0xCE61E49F,
  184. 0x5EDEF90E,0x29D9C998,0xB0D09822,0xC7D7A8B4,0x59B33D17,0x2EB40D81,
  185. 0xB7BD5C3B,0xC0BA6CAD,0xEDB88320,0x9ABFB3B6,0x03B6E20C,0x74B1D29A,
  186. 0xEAD54739,0x9DD277AF,0x04DB2615,0x73DC1683,0xE3630B12,0x94643B84,
  187. 0x0D6D6A3E,0x7A6A5AA8,0xE40ECF0B,0x9309FF9D,0x0A00AE27,0x7D079EB1,
  188. 0xF00F9344,0x8708A3D2,0x1E01F268,0x6906C2FE,0xF762575D,0x806567CB,
  189. 0x196C3671,0x6E6B06E7,0xFED41B76,0x89D32BE0,0x10DA7A5A,0x67DD4ACC,
  190. 0xF9B9DF6F,0x8EBEEFF9,0x17B7BE43,0x60B08ED5,0xD6D6A3E8,0xA1D1937E,
  191. 0x38D8C2C4,0x4FDFF252,0xD1BB67F1,0xA6BC5767,0x3FB506DD,0x48B2364B,
  192. 0xD80D2BDA,0xAF0A1B4C,0x36034AF6,0x41047A60,0xDF60EFC3,0xA867DF55,
  193. 0x316E8EEF,0x4669BE79,0xCB61B38C,0xBC66831A,0x256FD2A0,0x5268E236,
  194. 0xCC0C7795,0xBB0B4703,0x220216B9,0x5505262F,0xC5BA3BBE,0xB2BD0B28,
  195. 0x2BB45A92,0x5CB36A04,0xC2D7FFA7,0xB5D0CF31,0x2CD99E8B,0x5BDEAE1D,
  196. 0x9B64C2B0,0xEC63F226,0x756AA39C,0x026D930A,0x9C0906A9,0xEB0E363F,
  197. 0x72076785,0x05005713,0x95BF4A82,0xE2B87A14,0x7BB12BAE,0x0CB61B38,
  198. 0x92D28E9B,0xE5D5BE0D,0x7CDCEFB7,0x0BDBDF21,0x86D3D2D4,0xF1D4E242,
  199. 0x68DDB3F8,0x1FDA836E,0x81BE16CD,0xF6B9265B,0x6FB077E1,0x18B74777,
  200. 0x88085AE6,0xFF0F6A70,0x66063BCA,0x11010B5C,0x8F659EFF,0xF862AE69,
  201. 0x616BFFD3,0x166CCF45,0xA00AE278,0xD70DD2EE,0x4E048354,0x3903B3C2,
  202. 0xA7672661,0xD06016F7,0x4969474D,0x3E6E77DB,0xAED16A4A,0xD9D65ADC,
  203. 0x40DF0B66,0x37D83BF0,0xA9BCAE53,0xDEBB9EC5,0x47B2CF7F,0x30B5FFE9,
  204. 0xBDBDF21C,0xCABAC28A,0x53B39330,0x24B4A3A6,0xBAD03605,0xCDD70693,
  205. 0x54DE5729,0x23D967BF,0xB3667A2E,0xC4614AB8,0x5D681B02,0x2A6F2B94,
  206. 0xB40BBE37,0xC30C8EA1,0x5A05DF1B,0x2D02EF8D
  207. };
  208.  
  209. unsigned long crc32(unsigned long crc,unsigned char *s,unsigned n)
  210. {
  211. while (n--)
  212.   { crc = (crc>>8) ^ crc_tab[(s[0] ^ crc) & 0xff];
  213.     s++;
  214.   }
  215. return crc;
  216. }
  217. unsigned do_file(int fh,unsigned size)
  218. {
  219. unsigned count;
  220. unsigned long crc1,crc2;
  221. unsigned i;
  222. _lseek(fh,0L,SEEK_SET);
  223.  
  224. count=_read(fh,buff1,size);
  225.  
  226. crc1=crc2=0xffffffffL;
  227.  
  228. while (count)
  229.   { for (i=0;i<16;i++)
  230.       memcpy(buff2,buff1,count);        // standard memcpy
  231.  
  232.     crc1=crc32(crc1,buff1,count);
  233.     crc2=crc32(crc2,buff2,count);
  234.  
  235.     count=_read(fh,buff1,size);
  236.   }
  237.  
  238. // CRC values should be the same, for all buffer sizes!
  239.  
  240. printf("%5u byte buffer. CRC1 = %8lx  CRC2 = %8lx\n",
  241. size,~crc1,~crc2);
  242. }
  243.  
  244. unsigned main(unsigned argc,char *argv[])
  245. {
  246. int fh;
  247. unsigned i;
  248. unsigned err=0;
  249.  
  250. if ((_dos_open(argv[1],O_RDONLY|SH_DENYNO,&fh)))
  251.   { printf("Can't open %s\n",argv[1]);
  252.     return 1;
  253.   }
  254. for (i=64; i<=16384; i<<=1) do_file(fh,i);
  255. }
  256.  
  257. * Origin: Other Worlds BBS (604) 478-5529 (1:340/15)
  258.  
  259. >---- cut here
  260.  
  261. I hope this might shed some light on your problem. If the problem is
  262. traced 
  263. to a hardware bug, it might help others trying to run LINUX and running
  264.  
  265. into intermittent problems.
  266.  
  267. The origin address (1:340/15) is a FidoNet address.
  268.  
  269. Bert
  270.  
  271.  * Origin: Tech-80, Miami, FL (1:135/55)
  272.  
  273.