[Patch ] Kexec/Kdump support - POWER6
Benjamin Herrenschmidt
benh at kernel.crashing.org
Sat May 26 08:43:07 EST 2007
>
> /* TODO: Use bulk call */
> - for (i = 0; i < hpte_count; i++)
> - plpar_pte_remove_raw(0, i, 0, &dummy1, &dummy2);
> + for (i = 0; i < hpte_count; i++) {
> + /* dont remove HPTEs with VRMA mappings */
> + lpar_rc = plpar_pte_remove_raw(H_ANDCOND, i, VRMA_HPTE_B_1TB,
> + &dummy1, &dummy2);
If you're going to use the B (1T segment) bit instead of the bolted bit,
at least define a proper constant in line with the existing naming of
the hash table constants in mmu-hash64.h. I would suggest doing the same
with the VRMA_MASK/VALUE thing and calling it HPTE_V_VRMA_MASK or
something similar.
> + if (lpar_rc == H_NOT_FOUND) {
> + lpar_rc = plpar_pte_read_raw(0, i, &dword0, &dummy1);
> + if (!lpar_rc &&
> + (((dword0 >> 24) & VRMA_MASK) != VRMA_MASK))
> + /* Can be hpte for 1TB Seg. So remove it */
> + plpar_pte_remove_raw(0, i, 0, &dummy1, &dummy2);
> + }
> + }
> }
In addition, I would recommend following Michael's advice and using
using the bulk remove Hcall whenever possible.
Cheers,
Ben.
More information about the Linuxppc-dev
mailing list