You need some file compare tool for comparing two binary images, not ME Analyzer. If you do not have hardware SPI programmer you should (re)consider messing with modded BIOSes. With software flashing, even if it is capable of writing whole image/all BIOS regions correctly, you got only one try. You screw something and your board won't start. Then you will need hardware programmer for recovery.
Changing SKU will result in changing some bytes in the "Descriptor region" (not ME region). You should flash the image using SPI method to make changes to Descriptor/ME regions.
@dsanke I updated first post with your findings. It is interesting to know that swapping just one module from different board works. Unfortunately, knowing the last debug code is not enough, at least (whole) sequence of debug codes from power on to stop with not working CPU/from power on to POST with working CPU is needed to begin with. And then it will still not guarantee any success..
That symptoms suggest that some other modules need to be patched (at least on that boards). There are some suspicious modules (i.e. FCCCE259-07E1-417A-A755-E0F2CF39295E) but the options are limited - no access to not-working board here.
@wonderfool Looks like the changes in CpuMpPei in non working BIOSes are the same as in your BIOS. Therefore I suggest you to try PRIME-Z270M-PLUS-ASUS-0607 BIOS. This will probably work.
@dsanke Debug code that high suggest that the board is in DXE phase, probably some other module(s) needs to be patched on these versions, unfortunately no access to mentioned boards. Can you confirm that the patched BIOS (CpuMpPei) that does not work with i7 (12 threads) works with some other CPU (< 9 threads)? It could be helpful if someone could record slow motion video (240 fps) of the Q-Code sequence from boot to crash/stop with i7, from boot to the end with some working CPU.
By the way, for a Z270 board that looks the same as Z370 board (M9A, M10A), can you just replace the whole BIOS with a Z370 one?
@wonderfool It looks like there are more parts different, in the two uploaded BIOSes, not just CpuMpPei + ACPI tables. The first occurrence of patched CpuMpPei in your modded BIOS was rebased (probably bug in UEFITool). When I got this module rebased, if I recall correctly, the board would not POST. But you are writing that on i5 everything works - so I am confused. This would mean that patch is not working. The code on your board is slightly different but it should work, I think. I updated "patches.txt" from first post, try reverting to working BIOS before CpuMpPei patch, then patch it with UEFIPatch (step 1). 2 locations should be patched. Don't fix ACPI now - flash the BIOS and try if it will POST. Also if you have access to i5 and i7 at the same time, you can test if the i7 works - enter the BIOS setup with i5 and try changing number of active cores to 3. Save changes, turn off the power, swap CPUs. i7 should boot with 3cores/6threads even without patching CpuMpPei.
@wonderfool You need to be more specific. The board does not power on, does not POST or does not boot into OS (Windows)? What changes have you done to BIOS? You can boot i5, with BIOS before or after mod? You posted only one BIOS file, I asked you for two - before mod/after mod.
@mcf In my BIOS, I have stripped ME (me_cleaner) and SKU changed to Z370. I don't know if changing SKU only/cleaning ME only is sufficient and I can't experiment now. But wrong microcode/pcie fix/vbios will let the board power on - it will probably not POST but the fans will be spinning/leds flashing. So in your case it is probably ME issue or 2 CPU pins not connected/shorted. On my ASUS board, turning power button without connected pins resulted in no draw of power from wall socket (no led on board turned on), with connected pins but wrong ME/SKU there were very brief (fraction of second) draw of power (and some led lighted up).
>I am no programmer or coder at all I mean no offence, but this can be the problem. It's not about what tools do you use. You need to have some (good) knowledge about how computer/cpu works. You need to create and insert your own (or borrowed) code into some existing code (which you need to locate first), test it for bugs... Although it is not a rocket science, it is too complex for a newbie. I'm sure you can google thousands of pages about programming/assembler..
>Active Core Count Expanding code/entries can be a problem - if you insert something in the middle, then all that follows will change its offset. And things (that depends on exact offset) might stop to work. But, I think, the existing entries could be (easily) modified - if you don't like 1,2,3,all active cores, you can replace it with 2,4,6,all. But it is too much work for no reward, I think. Whats the point of buying 6 core cpu and run it with only 4/less than all active cores?
@oldirdey >Core Ratio Limit It can't be done by modifying varstore only. The BIOS only cares for 4 cores. You also need to add code, in some PEI module(s), to support other cores (5-8). Forget about it, you better use XTU if you really need this feature. Or start learning assembler...
>The default value for core 5 and 6 is always the core ratio from core 1 and 2 choosen in bios. This is because, I guess, you used my modded BIOS with sync all cores patch (this patch was meant to be used with sync all cores option) - did you read the readme.txt?
- sync all cores patched to work on 5+ cores cpus - patched module C654E340-2DB5-4896-BBC4-6EA45CFEB434 (on 2 locations) - core ratio for cores 1,2,3,4 is copied for cores 5,6,7,8 - notice that if ratio 50 for 1 core, 40 for 2 cores, 30 for 3 cores, 20 for 4 cores is set, in bios setup, then ratio 50 for 5 cores, 40 for 6 cores, 30 for 7 cores, 20 for 8 cores will be also set. Now ratio for 5 cores (50) is more than ratio for 4 cores (20) but the cpu expects the ratio for (x + 1) cores to be less or equal then ratio for x cores so we set unexpected/undocumented state. The cpu, for 5 cores, won't have ratio 50 in this case. When the ratio is fixed - 50 for cores 1,2,3,4 then ratio 50 will be set for cores 5,6,7,8 and will work as expected
>Active processor cores This will work, I think. If you expand menu with other entries/values (4, 5, 6, 7), the existing code will handle it (if you change var 4d0 to 5 then 5 cores will be active with 8700K).
@aleban Make sure you save your original BIOS file (read image using SPI) so you don't loose your board specific information (serial number, MAC address). Use FD44Editor to copy this information to new BIOS before flashing via SPI.
I have the same observations - I can set lower but not higher (than what is set in BIOS setup) ratios in Windows (via writing to MSR). Neither for cache nor for core. The Intel XTU utility can set higher core ratios but not cache. Try setting cache min ratio in BIOS setup, if you have this option. The Z370 BIOSes have the option for locking cache ratio to core ratio, I think.
The guide was meant for advanced users. If you don't know how to use a disassembler, there is no need for using it. It looks like the code is similar among vendors (ASUS, MSI, GIGABYTE) - the step 1 can be automated. I updated step 1 with info. Follow the steps on your risk - make sure you know (and there is a way) how to recover when something goes wrong (flashing not working BIOS).
@dsanke About uncore ratios. It looks like it is expected for cache ratio to have offset -3 from core ratio. If I set cache max ratio at 48, core at 48 I only get cache ratio of 45. If I set core at 45 I get cache 42. I must set higher cache min ratio to come closer to core ratio - if cache min ratio is set to 47, core to 48 then I get cache ratio of 47 all time (won't downclock).
Z170 BIOS knows only 4 cores CPUs so it sets only bits 0..31 (eax). Bits 32..63 (edx) will be 0 (or previous values read from CPU). We can move to edx the same value that is being moved to eax ([ebp-00000010]):
If we set "Sync All Cores", ratio 50 in BIOS setup, then in eax is four bytes with value 50, this is copied also into edx and on 6 (8) core CPU we are setting ratio 50 for 5,6 (7,8) active cores.