I am using ARM9 core & Linux 2.6 kernel. I want to utilize the cache lockdown mechanism for locking some of my critical data & ISR permanently on to the cache.

I donot want to want to keep my critical data in process's heap/data segement, as during every process context swicth, cache would be flushed. In this case even if cache lines are locked, it will be flushed without the knowledge of user.

Is it possible that i alloc (kalloc) memory in kernel space (i..e above 3GB) and keep my data there. I understand that kernel virtual memory (above 0xC0000000) will not be flushed from cache during process's context switch.

I have couple of questions,

1. Firstly, is my above understanding correct? Is there any other better way of doing this??

2. What are the conditions in which linux kernel will do cache_flush_all()?