David Hendricks (dhendrix(a)chromium.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2950
-gerrit
commit c745467db847968fd1d8ca356acc1feff5a9d724
Author: David Hendricks <dhendrix(a)chromium.org>
Date: Thu Mar 28 19:05:29 2013 -0700
snow: explicitly configure L2 cache
This adds a call to explicitly configure L2 cache (though defaults
should be set correctly).
Change-Id: I120e29c986918c2904a0332e46fcf9f1c5380d85
Signed-off-by: David Hendricks <dhendrix(a)chromium.org>
---
src/mainboard/google/snow/ramstage.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/mainboard/google/snow/ramstage.c b/src/mainboard/google/snow/ramstage.c
index 1751a1b..1459279 100644
--- a/src/mainboard/google/snow/ramstage.c
+++ b/src/mainboard/google/snow/ramstage.c
@@ -21,6 +21,7 @@
#include <cbmem.h>
#include <arch/exception.h>
#include <cpu/samsung/exynos5250/clk.h>
+#include <cpu/samsung/exynos5250/cpu.h>
#include <cpu/samsung/exynos5250/power.h>
#include <arch/cache.h>
@@ -45,6 +46,7 @@ void main(void)
/* set up dcache and MMU */
/* FIXME: this should happen via resource allocator */
+ exynos5_config_l2_cache();
mmu_init();
mmu_config_range(0, DRAM_START, DCACHE_OFF);
mmu_config_range(DRAM_START, DRAM_SIZE, DCACHE_WRITEBACK);
David Hendricks (dhendrix(a)chromium.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2947
-gerrit
commit c11b51b5ef9983d9dac3fe51ed3680f8ee3b0f23
Author: David Hendricks <dhendrix(a)chromium.org>
Date: Thu Mar 28 18:37:29 2013 -0700
armv7: set cache level explicitly for dcache/unified cache case
This adds a missing CSSELR write in the case of a dcache or unified
cache being invalidated by armv7_invalidate_caches(), ensuring that
all levels of dcache/unified cache are invalidated as expected when
the function is called.
Change-Id: Ie90184bf8a8181afa3afe0786897455b30b7f022
Signed-off-by: David Hendricks <dhendrix(a)chromium.org>
---
src/arch/armv7/lib/cache.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/arch/armv7/lib/cache.c b/src/arch/armv7/lib/cache.c
index da03a81..d65e021 100644
--- a/src/arch/armv7/lib/cache.c
+++ b/src/arch/armv7/lib/cache.c
@@ -310,6 +310,8 @@ void armv7_invalidate_caches(void)
case 0x2:
case 0x4:
/* dcache only or unified cache */
+ csselr = level << 1;
+ write_csselr(csselr);
dcache_invalidate_all();
break;
case 0x3:
David Hendricks (dhendrix(a)chromium.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2946
-gerrit
commit b641366b56ef72edcdcf327f7264730d88ff25e1
Author: David Hendricks <dhendrix(a)chromium.org>
Date: Thu Mar 28 18:28:30 2013 -0700
armv7: invalidate TLB after changing translation table entries
This adds a call to tlb_invalidate_all() after configuring a range
of memory.
Change-Id: I558402e7e54b6bf9e0b013f153d9b84c0873a6cf
Signed-off-by: David Hendricks <dhendrix(a)chromium.org>
---
src/arch/armv7/lib/mmu.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/arch/armv7/lib/mmu.c b/src/arch/armv7/lib/mmu.c
index d55d4bd..224b566 100644
--- a/src/arch/armv7/lib/mmu.c
+++ b/src/arch/armv7/lib/mmu.c
@@ -88,6 +88,9 @@ void mmu_config_range(unsigned long start_mb, unsigned long size_mb,
for (i = start_mb; i < start_mb + size_mb; i++)
ttb_entry[i] = (i << 20) | attr;
+
+ /* TODO: add helper to invalidate TLB by MVA */
+ tlb_invalidate_all();
}
void mmu_init(void)
David Hendricks (dhendrix(a)chromium.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2944
-gerrit
commit dbbb10664f0657c045c971ced22b322328e3eee8
Author: David Hendricks <dhendrix(a)chromium.org>
Date: Thu Mar 28 18:07:30 2013 -0700
armv7: use stdint.h in cache and MMU files
This makes it easier to copy + paste code into libpayload since
libpayload since both coreboot and libpayload have stdint.h and
it defines the types needed.
Change-Id: Ifa55f04a9bdddd17bc1a2679321a6744c75f25a8
Signed-off-by: David Hendricks <dhendrix(a)chromium.org>
---
src/arch/armv7/lib/cache.c | 2 +-
src/arch/armv7/lib/mmu.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/arch/armv7/lib/cache.c b/src/arch/armv7/lib/cache.c
index 7bb337d..8709daf 100644
--- a/src/arch/armv7/lib/cache.c
+++ b/src/arch/armv7/lib/cache.c
@@ -31,7 +31,7 @@
* Reference: ARM Architecture Reference Manual, ARMv7-A and ARMv7-R edition
*/
-#include <types.h>
+#include <stdint.h>
#include <arch/cache.h>
diff --git a/src/arch/armv7/lib/mmu.c b/src/arch/armv7/lib/mmu.c
index 34a484f..d55d4bd 100644
--- a/src/arch/armv7/lib/mmu.c
+++ b/src/arch/armv7/lib/mmu.c
@@ -28,7 +28,7 @@
*/
#include <stdlib.h>
-#include <types.h>
+#include <stdint.h>
#include <cbmem.h>
#include <console/console.h>
the following patch was just integrated into master:
commit eca48438fcac64d3b68f6028bcbe98b24547f033
Author: David Hendricks <dhendrix(a)chromium.org>
Date: Tue Mar 26 21:26:51 2013 -0700
armv7: added paranoia for cache library
This adds some paranoia to cache manipulation routines:
- "memory" is added to the clobber list for functions which clean
and/or invalidate dcache or TLB entries.
- Remove unneeded clobber list for read_sctlr()
Change-Id: Iaa82ef78bfdad4119f097c3b6db8219f29f832bc
Signed-off-by: David Hendricks <dhendrix(a)chromium.org>
Reviewed-on: http://review.coreboot.org/2928
Tested-by: build bot (Jenkins)
Reviewed-by: Ronald G. Minnich <rminnich(a)gmail.com>
Build-Tested: build bot (Jenkins) at Wed Mar 27 09:23:54 2013, giving +1
Reviewed-By: Ronald G. Minnich <rminnich(a)gmail.com> at Fri Mar 29 00:26:25 2013, giving +2
See http://review.coreboot.org/2928 for details.
-gerrit
Paul Menzel (paulepanter(a)users.sourceforge.net) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2942
-gerrit
commit 153f968e4c0b536f8a8a4934b3acfe74ad078d67
Author: Paul Menzel <paulepanter(a)users.sourceforge.net>
Date: Thu Mar 28 14:59:34 2013 +0100
Winbond W83627HF: ACPI: Make `AddressMax` a multiple of `AddressAlignment`
Hooking the ASL into the DSDT of the ASRock E350M1, building fails
with the following error.
[…]
Warning 1126 - ResourceTag larger than Field ^ (Size mismatch, Tag: 16 bits, Field: 8 bits)
dsdt.ramstage.asl 1281: IO (Decode16, 0x0100, 0x0FFC, 0x08, 0x08)
Error 4001 - ^ Must be a multiple of alignment/granularity value
dsdt.ramstage.asl 1415: CreateByteField (Arg0, IRQX._INT, IRQL)
Warning 1126 - ResourceTag larger than Field ^ (Size mismatch, Tag: 16 bits, Field: 8 bits)
dsdt.ramstage.asl 1524: CreateByteField (Arg0, IRQX._INT, IRQL)
Warning 1126 - ResourceTag larger than Field ^ (Size mismatch, Tag: 16 bits, Field: 8 bits)
dsdt.ramstage.asl 1633: CreateByteField (Arg0, IRQX._INT, IRQL)
Warning 1126 - ResourceTag larger than Field ^ (Size mismatch, Tag: 16 bits, Field: 8 bits)
dsdt.ramstage.asl 1705: CreateByteField (Arg0, IRQX._INT, IRQL)
Warning 1126 - ResourceTag larger than Field ^ (Size mismatch, Tag: 16 bits, Field: 8 bits)
dsdt.ramstage.asl 1788: CreateByteField (Arg0, IRQX._INT, IRQL)
Warning 1126 - ResourceTag larger than Field ^ (Size mismatch, Tag: 16 bits, Field: 8 bits)
dsdt.ramstage.asl 1855: CreateByteField (Arg0, IRQX._INT, IRQL)
Warning 1126 - ResourceTag larger than Field ^ (Size mismatch, Tag: 16 bits, Field: 8 bits)
dsdt.ramstage.asl 2304: Method(_OSC,4)
Warning 1114 - ^ Not all control paths return a value (_OSC)
dsdt.ramstage.asl 2304: Method(_OSC,4)
Warning 1106 - ^ Reserved method must return a value (Buffer required for _OSC)
ASL Input: dsdt.ramstage.asl - 2885 lines, 58411 bytes, 1507 keywords
Hex Dump: dsdt.ramstage.hex - 155352 bytes
Compilation complete. 1 Errors, 9 Warnings, 0 Remarks, 547 Optimizations
make: *** [build/mainboard/asrock/e350m1/dsdt.ramstage.o] Fehler 255
According to the ACPI specification the maximum acceptable starting
address `AddressMax` has to be a multiple of the alignment
granularity for the I/O address. Citing ACPI specification 4.0a,
page 612 [1].
18.5.56 IO (IO Resource Descriptor Macro)
### Syntax
IO (Decode, AddressMin, AddressMax, AddressAlignment, RangeLength, DescriptorName) => Buffer
### Argument
[…]
AddressMax evaluates to a 16-bit integer that specifies the
maximum acceptable starting address for the I/O range. It must
be an even multiple of AddressAlignment. The field
DescriptorName._MAX is automatically created to refer to this
portion of the resource descriptor.
Use address 0x0FF0, a multiple of 0x08, instead of 0x0FFC, fixes the
error.
[1] http://acpi.info/DOWNLOADS/ACPIspec40a.pdf
Change-Id: I272e09d091149791f2867b1d06e4fc27bc1bb2cd
Signed-off-by: Paul Menzel <paulepanter(a)users.sourceforge.net>
---
src/superio/winbond/w83627hf/acpi/superio.asl | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/superio/winbond/w83627hf/acpi/superio.asl b/src/superio/winbond/w83627hf/acpi/superio.asl
index 69017fe..2e12ef8 100644
--- a/src/superio/winbond/w83627hf/acpi/superio.asl
+++ b/src/superio/winbond/w83627hf/acpi/superio.asl
@@ -556,7 +556,7 @@ Device(SIO) {
}
StartDependentFn (2,0)
{
- IO (Decode16, 0x0100, 0x0FFC, 0x08, 0x08)
+ IO (Decode16, 0x0100, 0x0FF0, 0x08, 0x08)
IRQNoFlags () {3,4,5,7,9,10,11,12}
}
StartDependentFn (2,1)