[2.4] [PATCH] hash_page rework, take 2

Olof Johansson olof at austin.ibm.com
Fri Feb 13 08:00:58 EST 2004


After feedback from Julie and Ben, here's a revised mainline patch.
Consider this last call for comments before I push. :-)


Changes:

* Add a smb_mb() in pte_free_sync(), to make sure that any 0-writes to
PTE/PMDs are seen on other processors before the free.

* Make sure "newpp" is never more than 3 bits. This saves us from
crashing older iSeries hypervisor. Shouldn't be a problem since we don't
do aging in 2.4, but I prefer the more conservative approach.

* Add an isync after the _PAGE_BUSY lock, to avoid out-of-order execution.

* Don't invalidate/update/validate a HPTE in hpte_updatepp unless the pp
bits have changed. This avoids a pileup of faults caused by other
processors faulting during the period when the HPTE is invalid and/or
several processors faulting at the same time and resolving the same fault.

* Other logic fixes based on discussions on this list, mostly dealing
with timing windows during which _PAGE_BUSY was cleared inappropriately.



-Olof



--
Olof Johansson                                        Office: 4F005/905
pSeries Linux Development                             IBM Systems Group
Email: olof at austin.ibm.com                          Phone: 512-838-9858
All opinions are my own and not those of IBM
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: hash_page-rework-feb12
Url: http://ozlabs.org/pipermail/linuxppc64-dev/attachments/20040212/a4abb01e/attachment.txt 


More information about the Linuxppc64-dev mailing list