KVM: PPC: Maintain a doubly-linked list of guest HPTEs for each gfn
authorPaul Mackerras <paulus@samba.org>
Mon, 12 Dec 2011 12:33:07 +0000 (12:33 +0000)
committerAvi Kivity <avi@redhat.com>
Mon, 5 Mar 2012 12:52:37 +0000 (14:52 +0200)
commit06ce2c63d933e347f8a199f123a8a293619ab3d2
tree455cd4b0e245675f542649fe509797f60adfe76f
parent9d0ef5ea043d1242897d15c71bd1a15da79b4a5d
KVM: PPC: Maintain a doubly-linked list of guest HPTEs for each gfn

This expands the reverse mapping array to contain two links for each
HPTE which are used to link together HPTEs that correspond to the
same guest logical page.  Each circular list of HPTEs is pointed to
by the rmap array entry for the guest logical page, pointed to by
the relevant memslot.  Links are 32-bit HPT entry indexes rather than
full 64-bit pointers, to save space.  We use 3 of the remaining 32
bits in the rmap array entries as a lock bit, a referenced bit and
a present bit (the present bit is needed since HPTE index 0 is valid).
The bit lock for the rmap chain nests inside the HPTE lock bit.

Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Avi Kivity <avi@redhat.com>
arch/powerpc/include/asm/kvm_book3s_64.h
arch/powerpc/include/asm/kvm_host.h
arch/powerpc/kvm/book3s_hv_rm_mmu.c