#12 20210522: Speedstep doesn't work on T500 quadcore

Closed
opened 2 years ago by ripvoid · 8 comments
ripvoid commented 2 years ago

I flashed 'grub_t500_8mb_libgfxinit_corebootfb_usquerty.rom' on my quad-core T500 with a qx9300. Speedstep works fine on my custom Coreboot build (4.13). Libreboot 20210522 is stuck at 1.6ghz (which is the lowest speed GM45 quad cores can run, as they don't have a super-low-frequency mode for 800mhz). Behavior is the same if I boot directly from libreboot-grub, or load Seabios.

I'm willing to spend time and help debug this issue, but I have a very full schedule for the next several weeks.

I flashed 'grub_t500_8mb_libgfxinit_corebootfb_usquerty.rom' on my quad-core T500 with a qx9300. Speedstep works fine on my custom Coreboot build (4.13). Libreboot 20210522 is stuck at 1.6ghz (which is the lowest speed GM45 quad cores can run, as they don't have a super-low-frequency mode for 800mhz). Behavior is the same if I boot directly from libreboot-grub, or load Seabios. I'm willing to spend time and help debug this issue, but I have a very full schedule for the next several weeks.
Leah Rowe commented 2 years ago
Owner

I believe you mentioned on libreboot IRC that a coreboot ROM gave you the possibility to use those cores at the maximum speed. Do you still have that ROM? If so, please send it to me. I would like to look inside it, to see what coreboot revision you were on.

One of two possibilities likely: configuration option that I overlooked, or regression in recent coreboot 4.14 release. With the above info requested, I can look into this.

I believe you mentioned on libreboot IRC that a coreboot ROM gave you the possibility to use those cores at the maximum speed. Do you still have that ROM? If so, please send it to me. I would like to look inside it, to see what coreboot revision you were on. One of two possibilities likely: configuration option that I overlooked, or regression in recent coreboot 4.14 release. With the above info requested, I can look into this.
ripvoid commented 2 years ago
Poster

Here's a copy of the coreboot ROM I built. I reflashed it on my T500 and confirmed it allows running all 4 cores at maximum speed (2.53ghz in my case). The build date is 7/21/2020. I don't have the original build directory or config files. It boots straight to SeaBIOS, no grub, no proprietary VBIOS, no microcode. The SeaBIOS 'nvramcui' and 'coreinfo' boot options show the first screen but are buggy and aren't interactive. Booting from SATA or USB works fine.

I hope this helps, and thanks for taking a look!

EDIT - notabug only seems to support uploading jpegs and pngs, not binaries or compressed files. I'll send via email.

Here's a copy of the coreboot ROM I built. I reflashed it on my T500 and confirmed it allows running all 4 cores at maximum speed (2.53ghz in my case). The build date is 7/21/2020. I don't have the original build directory or config files. It boots straight to SeaBIOS, no grub, no proprietary VBIOS, no microcode. The SeaBIOS 'nvramcui' and 'coreinfo' boot options show the first screen but are buggy and aren't interactive. Booting from SATA or USB works fine. I hope this helps, and thanks for taking a look! EDIT - notabug only seems to support uploading jpegs and pngs, not binaries or compressed files. I'll send via email.

QX9300 is a Intel Xtreme processor, which may be undervolting itself due to thermal conditions(how hot is it running?) Coreboot may not be doing this due to a different Temperature/throttling curve(inside a blob?), try using a Blobless coreboot and send logs here.

Also if you have enough time and money, try using a Q9100 (non Xtreme and lower TDP, same or superior performance) and tell us how it goes

QX9300 is a Intel Xtreme processor, which may be undervolting itself due to thermal conditions(how hot is it running?) Coreboot may not be doing this due to a different Temperature/throttling curve(inside a blob?), try using a Blobless coreboot and send logs here. Also if you have enough time and money, try using a Q9100 (non Xtreme and lower TDP, same or superior performance) and tell us how it goes
ripvoid commented 2 years ago
Poster

Thanks for the troubleshooting ideas. I'm certain that throttling and undervolting are not the issue for the following reasons: 1) With my blobless coreboot ROM, the machine runs stable at 2.53ghz with 100% load on all cores, and maxes out at 85C. No thermal throttling was observed from either reported clockspeed or benchmarks. 2) Core 2 shouldn't thermal throttle until 100C. 3) I even did some basic overclocking; 3.06ghz appears to be stable with 100% load on all 4 cores, no voltage increase, with a max temp of 97C. I doubt higher clocks are possible due to thermal limits. I ran some basic benchmarks and the performance improvement was consistent with the clock increase (linear). A significant powerdraw increase was measured from the wall outlet while overclocked. 4) Speedstep works as expected with this blobless coreboot ROM.

I doubt the Q9100 would help - it has the same 45W TDP. The slightly lower clock might help keep temps a bit lower, but 85C should be fine anyway.

Side note in case someone else is trying to use a QX9300: I'm using a W500 heatsink with a Intel-only T500 motherboard. I had to desolder and remove some of the 56k modem components from the motherboard to get the W500 heatsink to fit. The W500 heatsink has more heat pipes and likely performs significantly better than the T500 intel-only heatsink, although I have not measured this.

Thanks for the troubleshooting ideas. I'm certain that throttling and undervolting are not the issue for the following reasons: 1) With my blobless coreboot ROM, the machine runs stable at 2.53ghz with 100% load on all cores, and maxes out at 85C. No thermal throttling was observed from either reported clockspeed or benchmarks. 2) Core 2 shouldn't thermal throttle until 100C. 3) I even did some basic overclocking; 3.06ghz appears to be stable with 100% load on all 4 cores, no voltage increase, with a max temp of 97C. I doubt higher clocks are possible due to thermal limits. I ran some basic benchmarks and the performance improvement was consistent with the clock increase (linear). A significant powerdraw increase was measured from the wall outlet while overclocked. 4) Speedstep works as expected with this blobless coreboot ROM. I doubt the Q9100 would help - it has the same 45W TDP. The slightly lower clock might help keep temps a bit lower, but 85C should be fine anyway. Side note in case someone else is trying to use a QX9300: I'm using a W500 heatsink with a Intel-only T500 motherboard. I had to desolder and remove some of the 56k modem components from the motherboard to get the W500 heatsink to fit. The W500 heatsink has more heat pipes and likely performs significantly better than the T500 intel-only heatsink, although I have not measured this.

Try using old 2016***** libreboot version and send logs here, maybe there was a regression.

Offtopic: A guide on how to quad-core a T500 the way you did can be useful

Try using old 2016***** libreboot version and send logs here, maybe there was a regression. Offtopic: A guide on how to quad-core a T500 the way you did can be useful
ripvoid commented 2 years ago
Poster

Are there any 2016**** releases known to work with quadcores? I thought they all had MAX_CPUS=2.

Are there any 2016**** releases known to work with quadcores? I thought they all had MAX_CPUS=2.
Leah Rowe commented 2 years ago
Owner

ok, the speedstep bug is a regression. Can someone bisect? coreboot 4.4 should work. coreboot 4.15 is broken.

any gm45 machine, but i tested x200. speedstep is broken in libreboot 20211122 which uses coreboot 4.15. i believe libreboot 20160907 used coreboot 4.4

tested on my x200:

  • 20160907 no-microcode: speedstep works
  • 20211122 no-microcode: steepstep broken, cpu stuck at 1600mhz
  • 20211122 with microcode added in cbfs: speedstep works

works means: on idle my x200 was like, 1ghz. on stress, it went up to 2.4ghz

watch grep cpu\ MHz /proc/cpuinfo

and do stuff with the cpu, including stress, and idle. watch the cpu speed go up and down. that's how you know speedstep is working. it's broken in the latest coreboot(when not using microcode), but worked in libreboot 20160907(without microcode also)

21:36 <leah> confirmed!
21:36 <leah> 20211122 speedstep is broken on gm45
21:36 <leah> but
21:36 <leah> i add microcode: works perfect
21:36 <leah> speedstep works in 20160907 without microcode
21:37 <leah> i regard lack of microcode as a bug. it is a fact that libreboot is technically deficient
21:37 <leah> however
21:37 <leah> this is still a libreboot regression. and worth fixing
21:37 <leah> my hunch is probably coreboot fixed some actually technically incorrect code, and made something work according to intel specs
21:38 <leah> tl;dr we got lucky in 2016
21:38 <leah> but it's probably an easy hack like the reset bug
21:38 <leah> i will bisect this myself when i get time, if nobody else does
21:38 <leah> but
21:39 <leah> biovoid: belgin whistler can you bisect?
21:39 <leah> coreboot... version 4.4 i think was used on 2016 libreboot, for gm45 machines
21:39 <leah> coreboot 4.4 and coreboot 4.15
21:39 <leah> between those
21:39 <leah> bisect to find what commit in coreboot broke speedstep
21:39 <leah> how to test:
21:40 <leah> watch grep cpu\ MHz /proc/cpuinfo
21:40 <penaiple> sorry i was busy im here now 
21:40 <leah> you see cpu at like. maybe 1GHz on idle
21:40 <leah> when you do stuff, or stress test, it shoots up
21:40 <leah> stress -c $(nproc)
21:40 <leah> this shoots it up to 100% cpu usage, and should result in cpuinfo showing the cpu speed going to max

ok, the speedstep bug is a regression. Can someone bisect? coreboot 4.4 should work. coreboot 4.15 is broken. any gm45 machine, but i tested x200. speedstep is broken in libreboot 20211122 which uses coreboot 4.15. i believe libreboot 20160907 used coreboot 4.4 tested on my x200: * 20160907 no-microcode: speedstep works * 20211122 no-microcode: steepstep broken, cpu stuck at 1600mhz * 20211122 with microcode added in cbfs: speedstep works works means: on idle my x200 was like, 1ghz. on stress, it went up to 2.4ghz `watch grep cpu\ MHz /proc/cpuinfo` and do stuff with the cpu, including stress, and idle. watch the cpu speed go up and down. that's how you know speedstep is working. it's broken in the latest coreboot(when not using microcode), but worked in libreboot 20160907(without microcode also) ```` 21:36 <leah> confirmed! 21:36 <leah> 20211122 speedstep is broken on gm45 21:36 <leah> but 21:36 <leah> i add microcode: works perfect 21:36 <leah> speedstep works in 20160907 without microcode 21:37 <leah> i regard lack of microcode as a bug. it is a fact that libreboot is technically deficient 21:37 <leah> however 21:37 <leah> this is still a libreboot regression. and worth fixing 21:37 <leah> my hunch is probably coreboot fixed some actually technically incorrect code, and made something work according to intel specs 21:38 <leah> tl;dr we got lucky in 2016 21:38 <leah> but it's probably an easy hack like the reset bug 21:38 <leah> i will bisect this myself when i get time, if nobody else does 21:38 <leah> but 21:39 <leah> biovoid: belgin whistler can you bisect? 21:39 <leah> coreboot... version 4.4 i think was used on 2016 libreboot, for gm45 machines 21:39 <leah> coreboot 4.4 and coreboot 4.15 21:39 <leah> between those 21:39 <leah> bisect to find what commit in coreboot broke speedstep 21:39 <leah> how to test: 21:40 <leah> watch grep cpu\ MHz /proc/cpuinfo 21:40 <penaiple> sorry i was busy im here now 21:40 <leah> you see cpu at like. maybe 1GHz on idle 21:40 <leah> when you do stuff, or stress test, it shoots up 21:40 <leah> stress -c $(nproc) 21:40 <leah> this shoots it up to 100% cpu usage, and should result in cpuinfo showing the cpu speed going to max ````
Leah Rowe commented 1 year ago
Owner

see; osboot merger

see; osboot merger
Sign in to join this conversation.
No Label
No Milestone
No assignee
3 Participants
Loading...
Cancel
Save
There is no content yet.