[Bug 269228] coretemp: incorrect tjmax for desktop and server Core 2 Duo/Xeon 51xx 2 cores 65nm (Conroe, Woodcrest, possible Allen dale): 85°C, but must be 100°C
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 269228] coretemp: incorrect tjmax for desktop and server Core 2 Duo/Xeon 51xx 2 cores 65nm (Conroe, Woodcrest, possible Allen dale): 85°C, but must be 100°C"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 269228] coretemp: incorrect tjmax for desktop and server Core 2 Duo/Xeon 51xx/3 0xx 2cores 65nm (Conroe, Woodcrest, possible Allendale): 85°C, but must be 100°C"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 29 Jan 2023 16:59:50 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=269228 Bug ID: 269228 Summary: coretemp: incorrect tjmax for desktop and server Core 2 Duo/Xeon 51xx 2cores 65nm (Conroe, Woodcrest, possible Allendale): 85°C, but must be 100°C Product: Base System Version: 13.1-RELEASE Hardware: amd64 OS: Any Status: New Severity: Affects Some People Priority: --- Component: kern Assignee: bugs@FreeBSD.org Reporter: vvd@unislabs.com FreeBSD 13.1-p amd64. On some Core 2 Duo and "same" Xeons I found very low temperature. For example 13°C on CPU cores in server room with 16°C air temperature, or 33°C on desktop with 28°C in room. In same server room Core 2 Quad, Core i7 920/930, Xeon X3430, Xeon 3104 have temperature from 24 to 50. I started explore. dev.cpu.X.temperature = dev.cpu.X.coretemp.tjmax - dev.cpu.X.coretemp.delta For other Core 2 Quad Q6600 tjmax = 100, but for Core 2 Duo 85 - weird… Check sources: https://cgit.freebsd.org/src/tree/sys/dev/coretemp/coretemp.c if ((cpu_model == 0xf && cpu_stepping >= 2) || cpu_model == 0xe) { /* * On some Core 2 CPUs, there's an undocumented MSR that * can tell us if Tj(max) is 100 or 85. * * The if-clause for CPUs having the MSR_IA32_EXT_CONFIG was adapted * from the Linux coretemp driver. */ msr = rdmsr(MSR_IA32_EXT_CONFIG); if (msr & (1 << 30)) sc->sc_tjmax = 85; } else if (cpu_model == 0x17) { Open linux driver: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/hwmon/coretemp.c /* * Now we can detect the mobile CPU using Intel provided table * http://softwarecommunity.intel.com/Wiki/Mobility/720.htm * For Core2 cores, check MSR 0x17, bit 28 1 = Mobile CPU */ err = rdmsr_safe_on_cpu(id, 0x17, &eax, &edx); if (err) { dev_warn(dev, "Unable to access MSR 0x17, assuming desktop" " CPU\n"); usemsr_ee = 0; } else if (c->x86_model < 0x17 && !(eax & 0x10000000)) { /* * Trust bit 28 up to Penryn, I could not find any * documentation on that; if you happen to know * someone at Intel please ask */ usemsr_ee = 0; } else { Look like very different logic - use different MSR. I think FreeBSD's coretemp have incorrect check of tjmax for Conroe. I'll do more test a bit later with Linux and FreeBSD on different CPUs - Core 2 Duo E6xxx/E4xxx, Pentium Dual-Core E2xxx, and on Wolfdale Core 2 Duo E7xxx. I want to try, but I can't promise to do this: apply Linux's logic with MSR 0x17 (MSR_IA32_PLATFORM_ID) to coretemp and test it on my hardware. P.S. I hope my poor english won't hurt to understand me… -- You are receiving this mail because: You are the assignee for the bug.