[Bug 236513] AMD Jaguar: Only CPU core 0 detects C2 state

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Mon Mar 25 20:16:55 UTC 2019


--- Comment #23 from stockhausen at collogia.de ---
ok. ignore comment #22 i try to explain it once again. The problem seems to be
the other way round.

CPU wants to register port 0x414 for C state handling. This should be covered
by BIOS ACPI tables starting at port 0x3e0 with a total of 2328 (0x918) ports.
Due to misconfiguaration this port range is attached to the PCIe bridge.
acpi_set_resource() simply ignores this registration

     * Ignore most resources for PCI root bridges.  Some BIOSes
     * incorrectly enumerate the memory ranges they decode as plain
     * memory resources instead of as ResourceProducer ranges.  Other
     * BIOSes incorrectly list system resource entries for I/O ranges
     * under the PCI bridge.  Do allow the one known-correct case on
     * x86 of a PCI bridge claiming the I/O ports used for PCI config
     * access.
#if defined(__i386__) || defined(__amd64__)
    if (type == SYS_RES_MEMORY || type == SYS_RES_IOPORT) {
        if (ACPI_SUCCESS(AcpiGetObjectInfo(ad->ad_handle, &devinfo))) {
            if ((devinfo->Flags & ACPI_PCI_ROOT_BRIDGE) != 0) {
                if (!(type == SYS_RES_IOPORT && start == CONF1_ADDR_PORT)) {
                    printf("ADBG: acpi_set_resource(%lx,%lu) inside root
bridge\n", start,count);
                    return (0);

So we are left without port 0x414. This gets registered later under CPU0. See

    cpu0 pnpinfo _HID=none _UID=0 at handle=\_PR_.P000
        I/O ports:

If registragtion works fine this should read "ACPI I/o port" and port 0x414
should be visible below acpi0 node.

To fix that situation in a clean way acpi_cpu_cx_cst() should re-register the
port below acpi0 just for safety.

No idea how to do that...

You are receiving this mail because:
You are the assignee for the bug.

More information about the freebsd-bugs mailing list