[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";
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 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
`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
-------------- 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