Jeremy Fitzhardinge wrote:
>
> @@ -261,10 +261,12 @@ void pgd_ctor(void *pgd, struct kmem_cac
> spin_unlock_irqrestore(&pgd_lock, flags);
> }
>
> -/* never called when PTRS_PER_PMD > 1 */
> -void pgd_dtor(void *pgd, struct kmem_cache *cache, unsigned long unused)
> +static void pgd_dtor(pgd_t *pgd)
> {
> unsigned long flags; /* can be called from interrupt context */
> +
> + if (PTRS_PER_PMD == 1)
> + return;
>
> paravirt_release_pd(__pa(pgd) >> PAGE_SHIFT);
> spin_lock_irqsave(&pgd_lock, flags);
>
Acked, with exceptions. This bit breaks VMI. The paravirt_release_pd
must happen unconditionally. But I would rather fix it after patches
get applied just to make sure the entire allocation / deallocation order
constraints are intact.
Zach