Messages in this thread | | | Date | Tue, 14 Dec 1999 15:08:02 -0800 | From | "David S. Miller" <> | Subject | Re: 2.3 Pagedir allocation/free and update races |
| |
From: kanoj@google.engr.sgi.com (Kanoj Sarcar) Date: Tue, 14 Dec 1999 15:00:19 -0800 (PST)
Yes, I am sorry for the misleading logic in my note. Per-cpu caches are safe (I wonder why it was taken out for i386). For architectures that have to do set_pgdir() though, the pgdir update code might be racy, unless the arch code has locks to protect the page directory scanning.
Btw, Linus indicated to me he ran into problems with the patch, and will be pulling it out in the next pre-release. I will take a closer look at the code.
Just handle the set_pgdir() stuff like this:
pgcache_update_flag = 0; smp_call_func(ALL_CPUS, update_pgcaches_and_wait_on_flag); update_local_pgcache(); pgcache_update_flag = 1; for_each_task(tsk) update_pgdir(tsk);
That should give the correct synchronization with zero cost for the fast normal paths which can rely solely on the cpu localness of the data structure.
Later, David S. Miller davem@redhat.com
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |