soc/intel/broadwell: Mask lower 20 bits of TOLUD and TOLM in systemagent.asl

Lower 20bits of TOLUD and TOLM registers include 19 reserved bits and
1 lock bit. If lock bit is set, then systemagent.asl would end up
reporting the base address of low MMIO incorrectly i.e. off by 1.

This change masks the lower 20 bits of TOLUD and TOM registers when
exposing it in the ACPI tables to ensure that the base address of low
MMIO region is reported correctly.

Change-Id: I11b3ef8deda21930998471ab6e712da4c62f5b02
Signed-off-by: Furquan Shaikh <furquan@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/41471
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
This commit is contained in:
Furquan Shaikh 2020-05-16 21:46:41 -07:00
parent 6dc858a01f
commit 66b9c0efb5
1 changed files with 6 additions and 2 deletions

View File

@ -147,13 +147,17 @@ Method (_CRS, 0, Serialized)
// Fix up PCI memory region
// Start with Top of Lower Usable DRAM
Local0 = ^MCHC.TLUD
// Lower 20 bits of TOLUD register need to be masked since they contain lock and
// reserved bits.
Local0 = ^MCHC.TLUD & (0xfff << 20)
Local1 = ^MCHC.MEBA
// Check if ME base is equal
If (Local0 == Local1) {
// Use Top Of Memory instead
Local0 = ^MCHC.TOM
// Lower 20 bits of TOM register need to be masked since they contain lock and
// reserved bits.
Local0 = ^MCHC.TOM & (0x7ffff << 20)
}
PMIN = Local0