diff options
| author | Christian Krinitsin <mail@krinitsin.com> | 2025-06-30 12:24:58 +0000 |
|---|---|---|
| committer | Christian Krinitsin <mail@krinitsin.com> | 2025-06-30 12:27:06 +0000 |
| commit | 33606b41d35115f887ea688b1a16f2ff85bf2fe4 (patch) | |
| tree | 406b2c7b19a087ba437c68f3dbf0b589fa1d6150 /results/scraper/launchpad-without-comments/1587535 | |
| parent | adedf8771bc4de3113041ca21bd4d0d1c0014b6a (diff) | |
| download | emulator-bug-study-33606b41d35115f887ea688b1a16f2ff85bf2fe4.tar.gz emulator-bug-study-33606b41d35115f887ea688b1a16f2ff85bf2fe4.zip | |
add launchpad bug reports without comments
Diffstat (limited to 'results/scraper/launchpad-without-comments/1587535')
| -rw-r--r-- | results/scraper/launchpad-without-comments/1587535 | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/results/scraper/launchpad-without-comments/1587535 b/results/scraper/launchpad-without-comments/1587535 new file mode 100644 index 00000000..19055122 --- /dev/null +++ b/results/scraper/launchpad-without-comments/1587535 @@ -0,0 +1,30 @@ +Incorrect MAS1_TSIZE_SHIFT in ppce500_spin.c causes incorrectly sized TLB. + +When e500 PPC is booted multi-core, the non-boot cores are started via +the spin table. ppce500_spin.c:spin_kick() calls +mmubooke_create_initial_mapping() to allocate a 64MB TLB entry, but +the created TLB entry is only 256KB. + +The root cause is that the function computing the size of the TLB +entry, namely booke206_page_size_to_tlb assumes MAS1.TSIZE as defined +by latter PPC cores, specifically n to the power of FOUR * 1KB. The +result is then used by mmubooke_create_initial_mapping using +MAS1_TSIZE_SHIFT, but MAS1_TSIZE_SHIFT is defined assuming TLB entries +are n to the power of TWO * 1KB. I.e., a difference of shift=7 or +shift=8. + +Simply changing MAS1_TSIZE_SHIFT from 7 to 8 is not appropriate since +the macro is used elsewhere. + +Removing the ">>1" from: + +> static inline hwaddr booke206_page_size_to_tlb(uint64_t size) +> { +> return ctz32(size >> 10) >> 1; + +and adding an appropriate comment is what I used as a work around: + +> static inline hwaddr booke206_page_size_to_tlb(uint64_t size) +> { +> // resulting size is based on MAS1_TSIZE_SHIFT=7 TLB size. +> return ctz32(size >> 10); \ No newline at end of file |