linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* map_vm_area() correct dcache cleaning on ARMv7?
@ 2010-06-14 19:00 Bahadir Balban
  2010-06-14 19:30 ` Russell King - ARM Linux
  0 siblings, 1 reply; 3+ messages in thread
From: Bahadir Balban @ 2010-06-14 19:00 UTC (permalink / raw)
  To: linux-arm-kernel

I am looking at the path map_vm_area() takes with regard to cache
maintenance on ARMv7. It is not how I anticipated. map_vm_area() calls
vmap_pte_range() which has:

1. pte_alloc_one_kernel(), __get_free_page(): allocate pages for 2nd
level table.

2. clean_dcache_area(): clean data cache for pages allocated in (1)
conditionally if tlb cannot fetch from 1st level dcache.

3. __pmd_populate(): Set 1st level entries to point at 2nd level.

4. flush_pmd_entry(): Clean the dcache for 1st to 2nd
level pointer set in (3), conditionally if TLB needs it.

5. set_pte_ext(): Set each 2nd level entry to pages.

6. set_pte_ext(): Unconditionally clean the dcache for 2nd level to
page pointer set up in (5).

My remarks:
I would expect (2) to not exist at all, since we don't know if there is
any page table data in those newly allocated pages. How is this useful?

I would expect (6) to be doing what (2) and (4) is doing, e.g. only
conditionally clean the dcache in case tlb cannot fetch from L1. Am I
missing something?

-- 
Bahadir

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2010-06-14 21:52 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-06-14 19:00 map_vm_area() correct dcache cleaning on ARMv7? Bahadir Balban
2010-06-14 19:30 ` Russell King - ARM Linux
2010-06-14 21:52   ` Bahadir Balban

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).