Changes of Revision 13
[-] [+] | Deleted | memtest86+.changes |
@@ -1,180 +0,0 @@ -------------------------------------------------------------------- -Fri Aug 10 12:57:40 CEST 2007 - duwe@suse.de - -- Do not fail to install if update-bootloader is not there. - -------------------------------------------------------------------- -Thu Aug 9 18:34:00 CEST 2007 - duwe@suse.de - -- Add memtest86+ to boot menu even if installed later - (Feature #301969) - -------------------------------------------------------------------- -Mon Feb 19 16:06:08 CET 2007 - trenn@suse.de - -- added .gnu.hash section - -------------------------------------------------------------------- -Thu Jan 25 16:57:23 CET 2007 - duwe@suse.de - -+ update to 1.70: -- Added new DMI polling feature (Thanks to Joachim D.) -- Added Support for Core/Core2 Solo/Duo/Quad CPU -- Added Support for AMD K8 with DDR2 Memory -- Added Support for Intel CPU with 192/384 KB L2 Cache -- Added Support for FB-DIMM based memory (DMI) -- Added Detection for ALI CyberAladdin-T (M1644) -- Added Detection for Turion 64 X2 -- Added Detection for AMD K8 with unknown chipsets -- Added Support for ATi Radeon xPress 3200 -- Added Support for Intel i975X -- Added Support for Intel Q965/P965 -- Added Support for Intel Q963/Q965 - -------------------------------------------------------------------- -Thu Nov 16 19:35:12 CET 2006 - mrueckert@suse.de - -- switch to memtest86+ (http://www.memtest.org) - Compared to memtest86 3.2 it supports more hardware. and has - additional fixes. see http://www.memtest.org/#change for all - details. This upgrade fixes bug (#148481). -- rediffed memtest86-3.2.diff to apply cleanly. - new name: memtest86+-1.65.diff -- rediffed memtest86-3.2-timeout-serialconsole.diff to apply cleanly. - new name: memtest86+-1.65_timeout-serialconsole.diff -- rediffed memtest86-include-linkonce to apply cleanly. - new name: memtest86+-1.65_include-linkonce.patch -- cleaned up build section and directly use install instead of the - broken install target -- added changelog and FAQ to the docs - -------------------------------------------------------------------- -Wed Jan 25 21:44:27 CET 2006 - mls@suse.de - -- converted neededforbuild to BuildRequires - -------------------------------------------------------------------- -Tue May 10 12:38:17 CEST 2005 - duwe@suse.de - -- include *.gnu.linkonce.t.* sections in ld script, - to build cleanly on amd64 with gcc4 - -------------------------------------------------------------------- -Mon Mar 14 16:21:39 CET 2005 - duwe@suse.de - -- update to current version 3.2: - more support for current CPUs and chipsets - fix Bugs #60303 (duped #72202), #71215 - -------------------------------------------------------------------- -Mon Mar 22 16:41:36 CET 2004 - stepan@suse.de - -- update to 3.1a. This fixes compilation with gcc 3.x -- drop precompiled binary completely -- add ExclusiveArch for x86 and AMD64 - -------------------------------------------------------------------- -Fri Mar 19 16:37:37 CET 2004 - stepan@suse.de - -- update to v3.1 -- remove gcc 2.95 exceptions - -------------------------------------------------------------------- -Sun Sep 8 14:47:28 CEST 2002 - kukuk@suse.de - -- Add splitt alias [Bug #19111] - -------------------------------------------------------------------- -Thu Sep 5 18:16:53 MEST 2002 - garloff@suse.de - -- memtest86-3.0 seems to hang on some machines if the serial - console support is enabled, but no serial console connected. - Add a timeout waiting for the serial console. (Bug #18302) - -------------------------------------------------------------------- -Mon Sep 2 09:37:11 MEST 2002 - garloff@suse.de - -- Supply complete image (compiled by gcc-2.95), as I don't succeed - solving the gcc-3.2 problems at this moment. (#18302) - -------------------------------------------------------------------- -Sat Aug 31 13:09:52 MEST 2002 - garloff@suse.de - -- Supply main.s compiled with gcc-2.95 to work around problem with - gcc-3.2. - -------------------------------------------------------------------- -Tue Jul 30 16:20:14 MEST 2002 - garloff@suse.de - -- Split off lilo package. - -------------------------------------------------------------------- -Tue Jul 30 13:06:57 CEST 2002 - sf@suse.de - -- added -m32 to compiler and linker for x86_64 -- added --32 to as -- added glibc-devel-32bit for x86_64 - -------------------------------------------------------------------- -Fri Jun 7 13:26:36 MEST 2002 - garloff@suse.de - -- Update to memtest86-3.0: - * Testing more than 2GB should work now. - * Use PIC instead of two copies - * Serial code avoid redundant writes now - * ^l/l gives screen refresh (after connecting serial console) - * Netbooting operational again - * LinuxBIOS support (memory sizing) - -------------------------------------------------------------------- -Mon Apr 22 20:55:47 MEST 2002 - garloff@suse.de - -- Update to memtest86-2.9: - * Provide three memory sizing modes; default is conservative one - probably not testing all memory on some boards - * Testing more than 2GB supported - * Memory testing in segments. Minor bug fixes. - -------------------------------------------------------------------- -Fri Feb 15 16:20:34 CET 2002 - mantel@suse.de - -- remove x bit from memtest.bin since it's not a Linux executable - -------------------------------------------------------------------- -Wed Dec 12 00:52:56 MET 2001 - garloff@suse.de - -- Update to memtest86-2.8(a): - * Reworked build process; a network bootable boot image can be - produced - * mem and cache speed detection code rewritten (should work now) - * CPU detection for Pentium 4 - * Serial console disabled by default -- Reenabled memtest86 serial console (9600 8n1) ;-) -- Clean up .spec file a bit - -------------------------------------------------------------------- -Mon Jul 16 17:17:14 CEST 2001 - uli@suse.de - -- update memtest -> 2.7 - -------------------------------------------------------------------- -Mon Apr 9 16:45:54 MEST 2001 - garloff@suse.de - -- memtest86: Correct units (cosmetic) - -------------------------------------------------------------------- -Thu Dec 21 14:16:44 MET 2000 - garloff@suse.de - -- Update memtest86 to v2.5 final. - -------------------------------------------------------------------- -Wed Nov 29 15:40:31 MET 2000 - garloff@suse.de - -- Update memtest86 to v2.5-beta (Athlon/Duron support) - -------------------------------------------------------------------- -Mon Aug 28 15:49:45 CEST 2000 - garloff@suse.de - -- Added memtest86-2.4. - -------------------------------------------------------------------- | ||
[-] [+] | Changed | memtest86+.spec ^ |
[-] [+] | Added | fix-overflows.diff ^ |
@@ -0,0 +1,341 @@ +diff -urp memtest86+-2.01.mm/io.h memtest86+-2.01/io.h +--- memtest86+-2.01.mm/io.h 2008-02-21 12:26:05.000000000 +0100 ++++ memtest86+-2.01/io.h 2008-04-30 12:32:34.787275000 +0200 +@@ -31,7 +31,7 @@ + */ + + #define __OUT1(s,x) \ +-extern inline void __out##s(unsigned x value, unsigned short port) { ++static inline void __out##s(unsigned x value, unsigned short port) { + + #define __OUT2(s,s1,s2) \ + __asm__ __volatile__ ("out" #s " %" s1 "0,%" s2 "1" +@@ -43,7 +43,7 @@ __OUT1(s##_p,x) __OUT2(s,s1,"w") : : "a" + __OUT1(s##c_p,x) __OUT2(s,s1,"") : : "a" (value), "id" (port)); SLOW_DOWN_IO; } + + #define __IN1(s) \ +-extern inline RETURN_TYPE __in##s(unsigned short port) { RETURN_TYPE _v; ++static inline RETURN_TYPE __in##s(unsigned short port) { RETURN_TYPE _v; + + #define __IN2(s,s1,s2) \ + __asm__ __volatile__ ("in" #s " %" s2 "1,%" s1 "0" +@@ -55,7 +55,7 @@ __IN1(s##_p) __IN2(s,s1,"w") : "=a" (_v) + __IN1(s##c_p) __IN2(s,s1,"") : "=a" (_v) : "id" (port) ,##i ); SLOW_DOWN_IO; return _v; } + + #define __OUTS(s) \ +-extern inline void outs##s(unsigned short port, const void * addr, unsigned long count) \ ++static inline void outs##s(unsigned short port, const void * addr, unsigned long count) \ + { __asm__ __volatile__ ("cld ; rep ; outs" #s \ + : "=S" (addr), "=c" (count) : "d" (port),"0" (addr),"1" (count)); } + +diff -urp memtest86+-2.01.mm/test.c memtest86+-2.01/test.c +--- memtest86+-2.01.mm/test.c 2008-02-21 12:26:05.000000000 +0100 ++++ memtest86+-2.01/test.c 2008-04-30 14:15:56.666389000 +0200 +@@ -25,6 +25,22 @@ void poll_errors(); + + int ecount = 0; + ++static inline volatile ulong * sat_add(volatile ulong *ptr, ulong i, volatile ulong *end) ++{ ++ if ((ulong)ptr + i * sizeof(*ptr) > (ulong)ptr) ++ return ptr + i; ++ else ++ return end; ++} ++ ++static inline volatile ulong * sat_sub(volatile ulong *ptr, ulong i, volatile ulong *start) ++{ ++ if ((ulong)ptr > i * sizeof(*ptr)) ++ return ptr - i; ++ else ++ return start; ++} ++ + static inline ulong roundup(ulong value, ulong mask) + { + return (value + mask) & ~mask; +@@ -150,11 +166,7 @@ void addr_tst2() + done = 0; + do { + /* Check for overflow */ +- if (pe + SPINSZ > pe) { +- pe += SPINSZ; +- } else { +- pe = end; +- } ++ pe = sat_add(pe, SPINSZ, end); + if (pe >= end) { + pe = end; + done++; +@@ -194,11 +206,7 @@ void addr_tst2() + done = 0; + do { + /* Check for overflow */ +- if (pe + SPINSZ > pe) { +- pe += SPINSZ; +- } else { +- pe = end; +- } ++ pe = sat_add(pe, SPINSZ, end); + if (pe >= end) { + pe = end; + done++; +@@ -280,11 +288,7 @@ void movinvr() + done = 0; + do { + /* Check for overflow */ +- if (pe + SPINSZ > pe) { +- pe += SPINSZ; +- } else { +- pe = end; +- } ++ pe = sat_add(pe, SPINSZ, end); + if (pe >= end) { + pe = end; + done++; +@@ -331,11 +335,7 @@ void movinvr() + done = 0; + do { + /* Check for overflow */ +- if (pe + SPINSZ > pe) { +- pe += SPINSZ; +- } else { +- pe = end; +- } ++ pe = sat_add(pe, SPINSZ, end); + if (pe >= end) { + pe = end; + done++; +@@ -419,7 +419,8 @@ void movinv1(int iter, ulong p1, ulong p + hprint(LINE_PAT, COL_PAT, p1); + + /* Initialize memory with the initial pattern. */ +- for (j=0; j<segs; j++) { ++ for (j=0; j<segs; j++) ++ { + start = v->map[j].start; + end = v->map[j].end; + pe = start; +@@ -427,11 +428,7 @@ void movinv1(int iter, ulong p1, ulong p + done = 0; + do { + /* Check for overflow */ +- if (pe + SPINSZ > pe) { +- pe += SPINSZ; +- } else { +- pe = end; +- } ++ pe = sat_add(pe, SPINSZ, end); + if (pe >= end) { + pe = end; + done++; +@@ -440,17 +437,19 @@ void movinv1(int iter, ulong p1, ulong p + if (p == pe ) { + break; + } +-/* Original C code replaced with hand tuned assembly code +- * for (; p < pe; p++) { +- * *p = p1; +- * } +- */ ++/* Original C code replaced with hand tuned assembly code */ ++#if 0 ++ for (; p < pe; p++) { ++ *p = p1; ++ } ++#else + asm __volatile__ ( + "rep\n\t" \ + "stosl\n\t" + : "=D" (p) + : "c" (len), "0" (p), "a" (p1) + ); ++#endif + do_tick(); + BAILR + } while (!done); +@@ -460,7 +459,8 @@ void movinv1(int iter, ulong p1, ulong p + * write the complement for each memory location. Test from bottom + * up and then from the top down. */ + for (i=0; i<iter; i++) { +- for (j=0; j<segs; j++) { ++ for (j=0; j<segs; j++) ++ { + start = v->map[j].start; + end = v->map[j].end; + pe = start; +@@ -468,11 +468,7 @@ void movinv1(int iter, ulong p1, ulong p + done = 0; + do { + /* Check for overflow */ +- if (pe + SPINSZ > pe) { +- pe += SPINSZ; +- } else { +- pe = end; +- } ++ pe = sat_add(pe, SPINSZ, end); + if (pe >= end) { + pe = end; + done++; +@@ -480,14 +476,16 @@ void movinv1(int iter, ulong p1, ulong p + if (p == pe ) { + break; + } +-/* Original C code replaced with hand tuned assembly code +- * for (; p < pe; p++) { +- * if ((bad=*p) != p1) { +- * error((ulong*)p, p1, bad); +- * } +- * *p = p2; +- * } +- */ ++/* Original C code replaced with hand tuned assembly code */ ++#if 0 ++ for (; p < pe; p++) { ++ ulong bad; ++ if ((bad=*p) != p1) { ++ error((ulong*)p, p1, bad); ++ } ++ *p = p2; | ||
[-] [+] | Changed | serial-enable ^ |
@@ -1,6 +1,5 @@ -diff -ur memtest86+-1.70.orig/config.h memtest86+-1.70/config.h ---- memtest86+-1.70.orig/config.h 2006-12-27 02:33:06.000000000 +0100 -+++ memtest86+-1.70/config.h 2007-01-25 16:34:01.000000000 +0100 +--- memtest86+-2.01/config.h ++++ memtest86+-2.01/config.h @@ -13,7 +13,7 @@ /* SERIAL_CONSOLE_DEFAULT - The default state of the serial console. */ /* This is normally off since it slows down testing. Change to a 1 */ @@ -8,20 +7,19 @@ -#define SERIAL_CONSOLE_DEFAULT 0 +#define SERIAL_CONSOLE_DEFAULT 1 - /* SERIAL_BAUD_RATE - Baud rate for the serial console */ - #define SERIAL_BAUD_RATE 9600 -diff -ur memtest86+-1.70.orig/init.c memtest86+-1.70/init.c ---- memtest86+-1.70.orig/init.c 2007-01-04 08:19:43.000000000 +0100 -+++ memtest86+-1.70/init.c 2007-01-25 16:34:31.000000000 +0100 -@@ -29,6 +29,7 @@ - static void cpu_type(void); + /* SERIAL_TTY - The default serial port to use. 0=ttyS0, 1=ttyS1 */ + #define SERIAL_TTY 0 +--- memtest86+-2.01/init.c ++++ memtest86+-2.01/init.c +@@ -40,6 +40,7 @@ static void cacheable(void); static int cpuspeed(void); + int beepmode; +extern short serial_cons; static void display_init(void) { -@@ -65,6 +66,9 @@ +@@ -76,6 +77,9 @@ } serial_echo_print("\x1B[0m"); @@ -31,11 +29,10 @@ } /* -diff -ur memtest86+-1.70.orig/serial.h memtest86+-1.70/serial.h ---- memtest86+-1.70.orig/serial.h 2006-12-27 02:33:06.000000000 +0100 -+++ memtest86+-1.70/serial.h 2007-01-25 16:34:31.000000000 +0100 +--- memtest86+-2.01/serial.h ++++ memtest86+-2.01/serial.h @@ -140,10 +140,12 @@ - #define serial_echo_inb(a) inb((a)+0x3f8) + #define serial_echo_inb(a) inb((a)+serial_base_ports[serial_tty]) #define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) /* Wait for transmitter & holding register to empty */ -#define WAIT_FOR_XMITR \ | ||
[-] [+] | Added | work-around-4G-virtual-overflow ^ |
@@ -0,0 +1,42 @@ +--- memtest86+-2.01/init.c.orig 2008-11-26 13:28:22.000000000 +0100 ++++ memtest86+-2.01/init.c 2008-11-28 16:06:50.000000000 +0100 +@@ -238,7 +238,7 @@ + unsigned long addr_hi; + }; + extern unsigned char pdp[]; +- extern struct pde pd2[]; ++ extern struct pde pd1[]; + unsigned long window = page >> 19; + if (FLAT || (window == mapped_window)) { + return 0; +@@ -266,11 +266,11 @@ + * Bit 6 = Dirty. 1 = memory has been written to. + * Bit 7 = Page Size. 1 = page size is 2 MBytes + * --------------------------------------------------*/ +- pd2[i].addr_lo = ((window & 1) << 31) + ((i & 0x3ff) << 21) + 0xE3; +- pd2[i].addr_hi = (window >> 1); ++ pd1[i].addr_lo = ((window & 1) << 31) + ((i & 0x3ff) << 21) + 0xE3; ++ pd1[i].addr_hi = (window >> 1); + } + paging_off(); +- if (window > 1) { ++ if (window > 0) { + paging_on(pdp); + } + mapped_window = window; +@@ -281,13 +281,13 @@ + { + void *result; + if (FLAT || (page_addr < 0x80000)) { +- /* If the address is less that 1GB directly use the address */ ++ /* If the address is less than 2GB directly use the address */ + result = (void *)(page_addr << 12); + } + else { + unsigned long alias; + alias = page_addr & 0x7FFFF; +- alias += 0x80000; ++ alias += 0x40000; + result = (void *)(alias << 12); + } + return result; |