Date: Thu, 28 Mar 2019 06:46:16 +0000 From: bugzilla-noreply@freebsd.org To: bugs@FreeBSD.org Subject: [Bug 236513] HP Thin clients T620/T730 ACPI: Only CPU core 0 detects C2 state Message-ID: <bug-236513-227-TDlegGMLJv@https.bugs.freebsd.org/bugzilla/> In-Reply-To: <bug-236513-227@https.bugs.freebsd.org/bugzilla/> References: <bug-236513-227@https.bugs.freebsd.org/bugzilla/>
next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D236513 --- Comment #32 from stockhausen@collogia.de --- Thanks for the helpful discussion. I think I'm getting a better knowledge a= bout it all. Reading across the AMD documents I think everything works as expect= ed. Or at least quite close. Comparing the T620 plus and the T730 I noticed that the C2 state port is different. 0x1771 and not 0x414. Reason is simple - this port is arbitrary = set by BIOS. Explanation comes from the AMD family 0x15 models 0x30-0x03F devel= oper guide 2.5.3.2.7 BIOS Requirements for Initialization: 1. Initialize MSRC001_0073[CstateAddr] with an available IO address. See 2.5.3.2.6.3 [_CRS]. -> HP chose port 0x1770 for the T730 and 0x413 for the T620 as can be seen = from cpucontrol output root@freebsd:~ # cpucontrol -m 0xC0010073 /dev/cpuctl0 MSR 0xc0010073: 0x00000000 0x00001770 2. Initialize D18F4x11[C:8]. -> I don't know how to read that indexed register 3. Generate ACPI objects as follows 3.a The _CST object should be generated for each core as follows: - Count =3D 1. - Register =3D MSRC001_0073[CstateAddr] + 1. - Type =3D 2. - Latency =3D 400.=20 - Power =3D 0. -> We can see that in the decoded ACPI dump ResourceTemplate () { Register (SystemIO, 0x08, // Bit Width 0x00, // Bit Offset 0x0000000000001771, // Address 0x01, // Access Size ) }, 3.b The _CSD object should be generated for each core as follows: - NumberOfEntries =3D 6. - Revision =3D 0. - Domain =3D CPUID Fn0000_0001_EBX[LocalApicId[7:1]]. - CoordType =3D FEh. (HW_ALL) - NumProcessors =3D 2. - Index =3D 0. -> Also inside the ACPI dump Name (_CSD, Package (0x01) // _CSD: C-State Dependencies { Package (0x06) { 0x06, 0x00, 0x00000000, 0x000000FE, 0x00000002, 0x00000000 } }) 3.b BIOS must declare in the root host bridge _CRS object that the IO addre= ss range from MSRC001_0073[CstateAddr] to MSRC001_0073[CstateAddr]+7 is consum= ed by the host bridge. -> This is missing in the ACPI tables. We need an entry for 8 ports starting from 0x1770.=20 4. Fixed ACPI Description Table (FADT) Entries -> Should not bee neded as FreeBSD is hopefully ACPI 2.0 aware and can read= the _CST object from above. So two question remain A. Is the current ACPI code able to compensate for the missing port allocat= ion ranges in BIOS? If you say yes we have found an error. B. My stupid fix may be totally wrong. Where should I place the port registration in the ACPI tables? --=20 You are receiving this mail because: You are the assignee for the bug.=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-236513-227-TDlegGMLJv>