summary refs log tree commit diff stats
path: root/results/classifier/118/ppc/1587535
diff options
context:
space:
mode:
Diffstat (limited to 'results/classifier/118/ppc/1587535')
-rw-r--r--results/classifier/118/ppc/158753569
1 files changed, 69 insertions, 0 deletions
diff --git a/results/classifier/118/ppc/1587535 b/results/classifier/118/ppc/1587535
new file mode 100644
index 000000000..c3bd58c29
--- /dev/null
+++ b/results/classifier/118/ppc/1587535
@@ -0,0 +1,69 @@
+ppc: 0.957
+boot: 0.860
+semantic: 0.774
+register: 0.765
+performance: 0.761
+graphic: 0.759
+device: 0.758
+architecture: 0.748
+mistranslation: 0.724
+PID: 0.714
+peripherals: 0.709
+network: 0.668
+socket: 0.667
+files: 0.645
+kernel: 0.642
+hypervisor: 0.628
+debug: 0.612
+permissions: 0.595
+assembly: 0.579
+arm: 0.565
+VMM: 0.557
+risc-v: 0.540
+user-level: 0.519
+x86: 0.518
+TCG: 0.507
+vnc: 0.499
+i386: 0.498
+KVM: 0.486
+virtual: 0.324
+
+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);
+
+Patch accepted.  
+
+Commit title is:
+
+Eliminate redundant and incorrect function booke206_page_size_to_tlb
+
+Patch had been released with QEMU 2.7
+