Re: MIPS: We need to clear MMU contexts of all other processes when asid_cache(cpu) wraps to 0.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 07/10/2016 06:04 AM, yhb@xxxxxxxxxxxxx wrote:
Subject: [PATCH] MIPS: We need to clear MMU contexts of all other processes
  when asid_cache(cpu) wraps to 0.

Suppose that asid_cache(cpu) wraps to 0 every n days.
case 1:
(1)Process 1 got ASID 0x101.
(2)Process 1 slept for n days.
(3)asid_cache(cpu) wrapped to 0x101, and process 2 got ASID 0x101.
(4)Process 1 is woken,and ASID of process 1 is same as ASID of process 2.

case 2:
(1)Process 1 got ASID 0x101 on CPU 1.
(2)Process 1 migrated to CPU 2.
(3)Process 1 migrated to CPU 1 after n days.
(4)asid_cache on CPU 1 wrapped to 0x101, and process 2 got ASID 0x101.
(5)Process 1 is scheduled, and ASID of process 1 is same as ASID of process 2.

So we need to clear MMU contexts of all other processes when asid_cache(cpu) wraps to 0.

Signed-off-by: yhb <yhb@xxxxxxxxxxxxx>

I think a more clear description should be given here - there is no indication that wrap happens over 32bit integer.

And taking into account "n days" frequency - can we just kill all local ASIDs in all processes (additionally to local_flush_tlb_all) and enforce reassignment if wrap happens? It should be a very rare event, you are first to hit this.

It seems to be some localized stuff in get_new_mmu_context() instead of widespread patching.

- Leonid.




[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux