12-11-2017, 10:02 PM
(02-19-2017, 08:30 PM)Better late than never..... I\m still pushing this almost 10 year old laptop to the limits, and I've crossed a bridge again where I could really use virtualization enabled on this machine. Honestly, I don't quite understand the recommendation below, but I think the suggestion is to modify the file NCWxx111.FD, specifically at c0010114, to all zeros? If I end up bricking this laptop, I almost don't care anymore at this point. It is really losing its ability to do anything efficiently anymore. I'm at the point where I'm ready to just take my 750 evo, and dropping into something a bit newer. Although, if I can take advantage of virtualization, I'm sure I could squeeze out another year or two for some work related projects.Thanks to all for the support. joseant Wrote:(02-09-2017, 05:36 AM)s⚡dub Wrote: Well, the settings for my Acer Apire E 15
According with the link you posted
I have the values in the CPUID Information box:
Code:
CPUID -- EAX ---- EBX ---- ECX ---- EDX ----
80000001 00660f51 00000000 2FaBBFFF 2FD3FBFF
For the step (skipping the second step because we know no software is currently using SVM):
Code:
if (CPUID Fn8000_000A_EDX[SVML] == 0)
2FaBBFFFf is the value of ECX (0010 1111 1010 1011 1011 1111 1111 1111 in binary), and this shows a value of 1 for the SVM bit. The table is in Volume 3, page 607 (643).
I have the values:
Code:
CPUID -- EAX ---- EBX ---- ECX ---- EDX ----
8000000a 00000001 00008000 00000000 0001BCFF
Bits Field Name Description
2 SVML SVM lock. Indicates support for SVM-Lock. See “Enabling SVM.”
0001BCFFis the value of EDX (0000 0000 0000 0001 1011 1100 1111 1111 in binary), and this shows a value of 0 for the SVML bit. This table is in Volume 3, page 617 (653).
So "F" in EDX register means it does support SVM lock.
So what should I do from here?
Only to get a sense for how much effort making a proper, fully-functional modification would take, I downloaded a copy of the appropriate manuals for my processor family (I have the AMD Turion TL-64) and perused it for steps to enable virtualization. These are:
- AMD64 Architecture Programmer’s Manual, Volume 2: System Programming
- AMD64 Architecture Programmer’s Manual Volume 3: General Purpose and System Instructions
Page 447 (499 in Acrobat Reader) of Volume 2 contains a C snippet illustrating how to detect whether or not SVM can be enabled. I emulated the steps using Crystal CPUID to access the model-specific register and the feature flags.
For the step:
Code:if (CPUID Fn8000_0001_ECX[SVM] == 0)
I have the values in the CPUID Information box:
Code:CPUID -- EAX ---- EBX ---- ECX ---- EDX ----
80000001 00060f81 000005a3 0000011f ebd3fbff
0000011f is the value of ECX (100011111 in binary), and this shows a value of 1 for the SVM bit. The table is in Volume 3, page 607 (643).
For the step (skipping the second step because we know no software is currently using SVM):
Code:if (CPUID Fn8000_000A_EDX[SVML] == 0)
I have the values:
Code:CPUID -- EAX ---- EBX ---- ECX ---- EDX ----
8000000a 00000001 00000040 00000000 00000002
00000002 is the value of EDX (10 in binary), and this shows a value of 0 for the SVML bit. This table is in Volume 3, page 617 (653). I understand this to mean that the Turion doesn't support unlocking SVM after the lock bit has been set. According to Volume 2, some architectures do support unlocking after the lock has been set by writing a 64-bit key into a register in the next segment or two prior to resetting the lock and SVM enable/disable bits.
The MSR address c0010114 is responsible for these states, and it has a value of 00000018 (11000 in binary). Volume 2, page 525 (577) shows what these bits are for; the bits SVMDIS and LOCK both being set confirms that the BIOS explicitly disables this feature in all cases and can't be altered by the MSR Editor or any other software.
I used the Phoenix BIOS Tool 2.5.6 to disassemble the NCWxx111.FD file into individual modules and examine the overall structure of the BIOS in an easy-to-read format. I've noted the layout of the driver modules and the various executables within, including one for the POST. While I haven't examined enough BIOSes to know whether or not I'm missing a large driver, I have a hunch that simply changing the data that is written into c0010114 to all zeroes would be sufficient to enable virtualization. It isn't as professional a hack as would be a full integration with the appropriate menu, but it provides the needed feature, and editing data is far less risky than altering any of the actual code.
I'm willing to continue poking around with this if any of the experienced members of this forum are willing guide me in this undertaking.