-
Notifications
You must be signed in to change notification settings - Fork 126
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Intel: Gen 12,13,14] Memory Controller data #488
Comments
@BugReporterZ: #486
|
In branch Decoder has been programmed from the Core Ultra Processor datasheets I will appreciate if anyone could show me the result, either |
Not sure if that was meant for Meteor Lake users, but on my own I get this:
|
@BugReporterZ thanks; it was indeed meant for Meteor Lake I also want to debug previous generations IMC; your output helps a lot but I need other combinations of DDR4, DDR5, 32 or 64 bits DIMM, LP-DDR and so on to solve my decoders. |
|
@paulzzh Thank you for your Raptor output
|
|
|
It did however with AlderLake & DDR4 That's why this issue remains opened: I wish new developers could work straight on HW and finalize those IMC decoders. Also notice that Virtualization section is now showing up in "Technologies" Thank you for the star |
@BugReporterZ Hello, Can you please pull the latest commits from the CC: @paulzzh |
I got this:
|
Thank you Can you tell if the Feel free to post the BIOS screenshot then I can compare all the other timings |
|
I'm reading this @paulzzh @BugReporterZ Can you please pull latest commit 36adf0e and post |
After pulling and recompiling:
|
WR 100 -> 96
|
Great; as your BIOS. |
Great; no regression on your I still have no clue how to handle the second channel timings |
Thank you. |
@cyring Here's my output (DDR5):
EDIT: Oops, that's with |
Thank you. Also noticed that |
Great! Feel free to ask again if you need something else. I'm rather busy with other things at the moment, but CoreFreq is a nice system monitoring tool and I'm happy to help with small tests like this when I can. |
|
To solve the empty DIMM, can you please trace variables ? Go to the code at this line (still in branch Line 5744 in 6401e7d
And change statement as below case 1 ... 4:
/*TODO*/
printf("D0: %7d %7d %7d %d\n",
mc, RO(Proc)->Uncore.MC[mc].ADL.MADC0.Dimm_L_Map,
DimmWidthToRows(RO(Proc)->Uncore.MC[mc].ADL.MADD0.DLW),
512 * RO(Proc)->Uncore.MC[mc].ADL.MADD0.Dimm_L_Size );
printf("D1: %7d %7d %7d %d\n",
mc, !RO(Proc)->Uncore.MC[mc].ADL.MADC0.Dimm_L_Map,
DimmWidthToRows(RO(Proc)->Uncore.MC[mc].ADL.MADD0.DSW),
512 * RO(Proc)->Uncore.MC[mc].ADL.MADD0.Dimm_S_Size );
printf("D2: %7d %7d %7d %d\n",
mc, RO(Proc)->Uncore.MC[mc].ADL.MADC1.Dimm_L_Map,
DimmWidthToRows(RO(Proc)->Uncore.MC[mc].ADL.MADD1.DLW),
512 * RO(Proc)->Uncore.MC[mc].ADL.MADD1.Dimm_L_Size );
printf("D3: %7d %7d %7d %d\n",
mc, !RO(Proc)->Uncore.MC[mc].ADL.MADC1.Dimm_L_Map,
DimmWidthToRows(RO(Proc)->Uncore.MC[mc].ADL.MADD1.DSW),
512 * RO(Proc)->Uncore.MC[mc].ADL.MADD1.Dimm_S_Size );
/*TODO*/
RO(Shm)->Uncore.MC[mc].Channel[
RO(Proc)->Uncore.MC[mc].ADL.MADC0.Dimm_L_Map
].DIMM[0].Rows = DimmWidthToRows(RO(Proc)->Uncore.MC[mc].ADL.MADD0.DLW);
RO(Shm)->Uncore.MC[mc].Channel[
!RO(Proc)->Uncore.MC[mc].ADL.MADC0.Dimm_L_Map
].DIMM[0].Rows = DimmWidthToRows(RO(Proc)->Uncore.MC[mc].ADL.MADD0.DSW);
RO(Shm)->Uncore.MC[mc].Channel[
RO(Proc)->Uncore.MC[mc].ADL.MADC1.Dimm_L_Map
].DIMM[0].Rows = DimmWidthToRows(RO(Proc)->Uncore.MC[mc].ADL.MADD1.DLW);
RO(Shm)->Uncore.MC[mc].Channel[
!RO(Proc)->Uncore.MC[mc].ADL.MADC1.Dimm_L_Map
].DIMM[0].Rows = DimmWidthToRows(RO(Proc)->Uncore.MC[mc].ADL.MADD1.DSW);
RO(Shm)->Uncore.MC[mc].Channel[
RO(Proc)->Uncore.MC[mc].ADL.MADC0.Dimm_L_Map
].DIMM[0].Size = 512 * RO(Proc)->Uncore.MC[mc].ADL.MADD0.Dimm_L_Size;
RO(Shm)->Uncore.MC[mc].Channel[
!RO(Proc)->Uncore.MC[mc].ADL.MADC0.Dimm_L_Map
].DIMM[0].Size = 512 * RO(Proc)->Uncore.MC[mc].ADL.MADD0.Dimm_S_Size;
RO(Shm)->Uncore.MC[mc].Channel[
RO(Proc)->Uncore.MC[mc].ADL.MADC1.Dimm_L_Map
].DIMM[0].Size = 512 * RO(Proc)->Uncore.MC[mc].ADL.MADD1.Dimm_L_Size;
RO(Shm)->Uncore.MC[mc].Channel[
!RO(Proc)->Uncore.MC[mc].ADL.MADC1.Dimm_L_Map
].DIMM[0].Size = 512 * RO(Proc)->Uncore.MC[mc].ADL.MADD1.Dimm_S_Size;
break; In the daemon Thank you |
The daemon outputted this
|
All of these mean that I should not process a second channel with DDR4 but I have to include a second channel with DDR5 |
This new commit 54a044f now processes the channels decoding with DDR4 differently than DDR5 @BugReporterZ @paulzzh : can you please show me if the DIMMs layout is ok ? |
Getting this now.
|
It's tuf to debug why the previous time all DIMM slots were blank EDIT OK I see the issue: with DDR4, VirtualCount is one but ChannelCount is two. Thus Bank and Cols were computed only once. |
|
@BugReporterZ |
Result:
|
Thanks. |
@Technologicat |
I guess it's confusing that memory channels are referred to as "controllers". |
100% agreed I don't remember when Intel or AMD started to mix up the so called dual channels. When I began to design CoreFreq, Intel Nehalem architecture was perfectly coherent. Btw, my next nightmare issue is the new DIMM of 12, 24, 48 GB size. |
Sure! Here's
|
@Technologicat (i7-12700H)
Hello, Can you guys please test commit ff50d18 which probes Intel Watchdog but also activates remaining memory controllers from mobile segment. You will find the "Watchdog" state in the "Technologies" window |
Using
and here's a screenshot of the Technologies window: |
|
|
@Technologicat Thank you for your return. Can you toggle its state within UI; set it to |
I can toggle it on, but I don't know what it does exactly. |
It reports about the hardware state of the watchdog. |
I do have these:
|
I'm wondering why code has detected TCO as disabled at first ? |
I can toggle TCO in CoreFreq, too, but I don't have any of those modules loaded. |
Great! that's the expecting result because CoreFreq toggles directly the registers. |
Decoder has reporting issues among DDR4 and DDR5, two or four DIMMs, 32 or 64 bits per channel
Based on latest version
1.97.2
; Owners of Intel Processors of 12th, 13th, 14th and above, please post the output of:The text was updated successfully, but these errors were encountered: