VOGONS


First post, by mkarcher

User metadata
Rank l33t
Rank
l33t

I recently got a PCChips M787CLR mainboard. This is an embedded/ultra-low-cost board with an VIA Apollo PLE133 (VT8601) chipset, including the Trident Cyberblade i1 graphics core, and a Via C3 ("Samuel 2") CPU at 666 MHz. Some marketing freaks sold these kind of sytems as "1 Giga Pro", which is what I also see in the POST screen. The board seems to be also known as Elitegroup P6VEM2.

There are three issues with how the BIOS (Date: 07/31/2001) initializes the CPU when it boots the operating system:

  • It leaves the Alternate Instruction Set enabled. This causes crashes with programs that try to detect the Virtualization Environment "Microsoft VirtualPC".The Alternate Instruction Set got some press coverage when a hacker at Black Hat described that it can be abused by userspace to get unrestricted access to the CPU core and system memory. That hacker called it "God Mode". Modern Operating Systems fix that during boot. Windows 98 does not.
  • It does not indicate the presence of the CMPXCHG8B instruction (which was introduced with the Pentium processor) in the CPUID data. This capability of the C3 CPU is meant to work around an issue with some old Windows NT kernel.
  • It sets up a non-cacheable area at 15MB-16MB.

I fixed these issues using the MSR patching capabilities of RayeR's CPUID tool:

CPUID wrmsr:1107:2:2:0
CPUID wrmsr:205:0:1:11

The first invocation disables ALTINST and enables CMPXCHG8B using the VIA C3 Feature Control Register 1; the second invocation disables the third MTRR, which is used by the BIOS version on this board to declare the range 15MB-16MB as non-cacheable.