[coreboot] RV: Error booting with TPM enabled.

Jorge Fernandez Monteagudo jorgefm at cirsa.com
Fri Jun 29 16:13:15 CEST 2018

Hi Nico!

I'll give a try to your suggestion!

In 00730F01/northbridge.c I can see:

static const char *domain_acpi_name(const struct device *dev)
    if (dev->path.type == DEVICE_PATH_DOMAIN)
        return "PCI0";

    return NULL;

static struct device_operations pci_domain_ops = {
    .read_resources      = domain_read_resources,
    .set_resources      = domain_set_resources,
    .enable_resources = domain_enable_resources,
    .init          = NULL,
    .scan_bus      = pci_domain_scan_bus,
    .acpi_name        = domain_acpi_name,

and in 00660F01/northbridge.c there is no acpi_name! The most related to the previous one is:

static void northbridge_fill_ssdt_generator(device_t device)
    msr_t msr;
    char pscope[] = "\\_SB.PCI0";

    msr = rdmsr(TOP_MEM);
    acpigen_write_name_dword("TOM1", msr.lo);
    msr = rdmsr(TOP_MEM2);
     * Since XP only implements parts of ACPI 2.0, we can't use a qword
     * here.
     * See http://www.acpi.info/presentations/S01USMOBS169_OS%2520new.ppt
     * slide 22ff.
     * Shift value right by 20 bit to make it fit into 32bit,
     * giving us 1MB granularity and a limit of almost 4Exabyte of memory.
    acpigen_write_name_dword("TOM2", (msr.hi << 12) | msr.lo >> 20);

static struct device_operations northbridge_operations = {
    .read_resources      = read_resources,
    .set_resources      = set_resources,
    .enable_resources = pci_dev_enable_resources,
    .init          = northbridge_init,
    .acpi_fill_ssdt_generator = northbridge_fill_ssdt_generator,
    .write_acpi_tables = agesa_write_acpi_tables,
    .enable          = 0,
    .ops_pci      = 0,

On monday I'll try to add the method to 00660F01 code!



De: Nico Huber <nico.h at gmx.de>
Enviado: viernes, 29 de junio de 2018 15:47:09
Para: Jorge Fernandez Monteagudo; coreboot at coreboot.org; Zaolin
Asunto: Re: [coreboot] RV: Error booting with TPM enabled.

On 29.06.2018 12:48, Jorge Fernandez Monteagudo wrote:
> Ok, I think I've found the problem... If I force in 'src/drivers/pc80/tpm/tis.c'
> the path value to "\\_SB_.PCI0.LIBR" it works!
> Now, I'll try to guess from where the "\_SB.\_SB.LIBR" current value comes from...
> but now it's working.

This is expected if you still haven't implemented `.acpi_name` for
your northbridge device. In case you haven't tried it yet: Just copy
what `nb/amd/pi/00730F01/northbridge.c` does about `.acpi_name` to

Again, if the domain device doesn't implement `.acpi_name`, its parent
device will be asked. And in this case the parent, the root device,
always returns `\_SB`.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot/attachments/20180629/dd5cbc4b/attachment.html>

More information about the coreboot mailing list