Cross-CPU TLB flush problem with Fiasco.OC (r56, r58; exynos5)

Christian Prochaska <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <[email protected]>
Hello,

I had a situation where CPU 1 accessed the wrong (same as before)
physical memory location after it was idle while CPU 0 unmapped the
memory page and mapped a different page at the same virtual address
afterwards.

When a CPU is idle, its TLB gets marked as 'inactive' in the kernel and
the CPU doesn't receive cross-CPU TLB flush requests during this time.
It seems there is a TLB flush missing somewhere after CPU 1 leaves the
idle thread, to compensate for any missed flush requests during the idle
time.

When I added a 'Mem_unit::tlb_flush()' call after 'enable_tlb(cpu)' in
'Kernel_thread::idle_op()' as a test, this problem did not occur anymore.

Christian
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.