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";
acpigen_write_scope(pscope); 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); acpigen_pop_len(); }
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!
Regards!
Jorge
________________________________ De: Nico Huber nico.h@gmx.de Enviado: viernes, 29 de junio de 2018 15:47:09 Para: Jorge Fernandez Monteagudo; coreboot@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 `nb/amd/pi/00660F01/northbridge.c`.
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`.
Nico