Large page TLB flush master
authorPaul Brook <paul@codesourcery.com>
Wed, 17 Mar 2010 02:14:28 +0000 (02:14 +0000)
committerPaul Brook <paul@codesourcery.com>
Wed, 17 Mar 2010 02:44:41 +0000 (02:44 +0000)
commitd4c430a80f000d722bb70287af4d4c184a8d7006
tree9b9d059b2158f25fc0629fddcef192e3d791b187
parent409dbce54b57b85bd229174da86d77ca08508508
Large page TLB flush

QEMU uses a fixed page size for the CPU TLB.  If the guest uses large
pages then we effectively split these into multiple smaller pages, and
populate the corresponding TLB entries on demand.

When the guest invalidates the TLB by virtual address we must invalidate
all entries covered by the large page.  However the address used to
invalidate the entry may not be present in the QEMU TLB, so we do not
know which regions to clear.

Implementing a full vaiable size TLB is hard and slow, so just keep a
simple address/mask pair to record which addresses may have been mapped by
large pages.  If the guest invalidates this region then flush the
whole TLB.

Signed-off-by: Paul Brook <paul@codesourcery.com>
14 files changed:
cpu-defs.h
exec-all.h
exec.c
hw/alpha_palcode.c
target-arm/helper.c
target-cris/helper.c
target-i386/helper.c
target-m68k/helper.c
target-microblaze/helper.c
target-mips/helper.c
target-ppc/helper.c
target-s390x/helper.c
target-sh4/helper.c
target-sparc/helper.c