Software Archive
Read-only legacy content
17061 Discussions

How to get and alter specific CPU-Register with WinDBG?

KKötz
Beginner
1,305 Views

Hi all,

I have the following issue: A System of mine has not propperly implemented Turboboost for the CPU (i3-8130U). There is no option to enable it in the BIOS and Intel XTU is locked to disabled). I would like to check and if possible change the MCHBAR TURBO Register of the CPU.

According to the Intel Datasheet  (https://www.intel.com/content/www/us/en/processors/core/7th-gen-core-family-mobile-u-y-processor-lines-datasheet-vol-2.html) the default value for this Register is 0h. Which according to the actual description of the register disables Turboboost. So my hope is that just nothing is set there and the BIOS did not set the Lock Bit.

Be aware that i have no clue what i am doing what-soever.

According to the Intel CPU Datasheet, the Register in Question resides in the PCI Bus ID 0x00, Device ID 00000b and Function ID 000b. Having an Memory Offset of +5F54h.

So if i have understood the Datasheet correctly, my task can be split up in two things:

  1. How can i access the Memory Space of a Specific PCI Device using WinDBG?
  2. How can i access and alter a specific location in this Memory Space?

Test installation and Kernel Debugging via network is already in place. Would appreciate your Help or any hints to Resources with helpfull knowledge.

I was able to Read Out the PCI Configuration Memory Space of the Host Bridge at Bus:0 Device:0 Function:0 using the command

!pci 5 0 0 0 0 1

It returned exactly what i have expected: 

2: kd> !pci 4 0 0 0 0 1
PCI Segment 0 Bus 0
00:0  8086:5914.08  Cmd[0006:.mb...]  Sts[2090:c....]  Intel Host Bridge  SubID:1028:0817
 00000000: 86 80

The Vendor ID of the Intel Host Bridge in Little Endian Encoding.

If i understand the Datasheet correctly (i highly doubt that), the Base Address for the Memory Mapped Registers should be located at 48-4Fh. So i tried

!pci 4 0 0 0 48 4F

and got

2: kd> !pci 4 0 0 0 48 4F
PCI Segment 0 Bus 0
00:0  8086:5914.08  Cmd[0006:.mb...]  Sts[2090:c....]  Intel Host Bridge  SubID:1028:0817
 00000048: 01 00 d1 fe 00 00 00 00- 

This should be Little Endian again so swapping it all around gets me 

00 00 00 00 fe d1 00 01

According the Datashe Bit 38:15 are the Base Address, so it should be:

1FDA2

right?

Guess the Issue is already somewhere here or in my understanding. But if i then try to access 1FDA2 + 5F3C (Base + Offset for first MCHBAR Package Thermal DPPM Status) using

!db 25FA2

i only get the emptyness off all 0. This shouldn´t be the case. There should at least be the hard Coded 0001 from Bits 30:27 according to the Datasheet.

This Question is a duplicate of my Stack Overflow Question regarding that Topic:
https://stackoverflow.com/questions/51370585/how-to-get-and-alter-specific-cpu-register-with-windbg

But i figured asking in the Intel Forum directly could be better.

Please help me to understand were my misconception is.

0 Kudos
0 Replies
Reply