Merge branch 'for-upstream' of git://github.com/agraf/linux-2.6 into next
PPC updates from Alex. * 'for-upstream' of git://github.com/agraf/linux-2.6: KVM: PPC: Emulator: clean up SPR reads and writes KVM: PPC: Emulator: clean up instruction parsing kvm/powerpc: Add new ioctl to retreive server MMU infos kvm/book3s: Make kernel emulated H_PUT_TCE available for "PR" KVM KVM: PPC: bookehv: Fix r8/r13 storing in level exception handler KVM: PPC: Book3S: Enable IRQs during exit handling KVM: PPC: Fix PR KVM on POWER7 bare metal KVM: PPC: Fix stbux emulation KVM: PPC: bookehv: Use lwz/stw instead of PPC_LL/PPC_STL for 32-bit fields KVM: PPC: Book3S: PR: No isync in slbie path KVM: PPC: Book3S: PR: Optimize entry path KVM: PPC: booke(hv): Fix save/restore of guest accessible SPRGs. KVM: PPC: Restrict PPC_[L|ST]D macro to asm code KVM: PPC: bookehv: Use a Macro for saving/restoring guest registers to/from their 64 bit copies. KVM: PPC: Use clockevent multiplier and shifter for decrementer KVM: Use minimum and maximum address mapped by TLB1 Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
@@ -1860,6 +1860,76 @@ See KVM_GET_PIT2 for details on struct kvm_pit_state2.
|
||||
This IOCTL replaces the obsolete KVM_SET_PIT.
|
||||
|
||||
|
||||
4.74 KVM_PPC_GET_SMMU_INFO
|
||||
|
||||
Capability: KVM_CAP_PPC_GET_SMMU_INFO
|
||||
Architectures: powerpc
|
||||
Type: vm ioctl
|
||||
Parameters: None
|
||||
Returns: 0 on success, -1 on error
|
||||
|
||||
This populates and returns a structure describing the features of
|
||||
the "Server" class MMU emulation supported by KVM.
|
||||
This can in turn be used by userspace to generate the appropariate
|
||||
device-tree properties for the guest operating system.
|
||||
|
||||
The structure contains some global informations, followed by an
|
||||
array of supported segment page sizes:
|
||||
|
||||
struct kvm_ppc_smmu_info {
|
||||
__u64 flags;
|
||||
__u32 slb_size;
|
||||
__u32 pad;
|
||||
struct kvm_ppc_one_seg_page_size sps[KVM_PPC_PAGE_SIZES_MAX_SZ];
|
||||
};
|
||||
|
||||
The supported flags are:
|
||||
|
||||
- KVM_PPC_PAGE_SIZES_REAL:
|
||||
When that flag is set, guest page sizes must "fit" the backing
|
||||
store page sizes. When not set, any page size in the list can
|
||||
be used regardless of how they are backed by userspace.
|
||||
|
||||
- KVM_PPC_1T_SEGMENTS
|
||||
The emulated MMU supports 1T segments in addition to the
|
||||
standard 256M ones.
|
||||
|
||||
The "slb_size" field indicates how many SLB entries are supported
|
||||
|
||||
The "sps" array contains 8 entries indicating the supported base
|
||||
page sizes for a segment in increasing order. Each entry is defined
|
||||
as follow:
|
||||
|
||||
struct kvm_ppc_one_seg_page_size {
|
||||
__u32 page_shift; /* Base page shift of segment (or 0) */
|
||||
__u32 slb_enc; /* SLB encoding for BookS */
|
||||
struct kvm_ppc_one_page_size enc[KVM_PPC_PAGE_SIZES_MAX_SZ];
|
||||
};
|
||||
|
||||
An entry with a "page_shift" of 0 is unused. Because the array is
|
||||
organized in increasing order, a lookup can stop when encoutering
|
||||
such an entry.
|
||||
|
||||
The "slb_enc" field provides the encoding to use in the SLB for the
|
||||
page size. The bits are in positions such as the value can directly
|
||||
be OR'ed into the "vsid" argument of the slbmte instruction.
|
||||
|
||||
The "enc" array is a list which for each of those segment base page
|
||||
size provides the list of supported actual page sizes (which can be
|
||||
only larger or equal to the base page size), along with the
|
||||
corresponding encoding in the hash PTE. Similarily, the array is
|
||||
8 entries sorted by increasing sizes and an entry with a "0" shift
|
||||
is an empty entry and a terminator:
|
||||
|
||||
struct kvm_ppc_one_page_size {
|
||||
__u32 page_shift; /* Page shift (or 0) */
|
||||
__u32 pte_enc; /* Encoding in the HPTE (>>12) */
|
||||
};
|
||||
|
||||
The "pte_enc" field provides a value that can OR'ed into the hash
|
||||
PTE's RPN field (ie, it needs to be shifted left by 12 to OR it
|
||||
into the hash PTE second double word).
|
||||
|
||||
5. The kvm_run structure
|
||||
------------------------
|
||||
|
||||
|
Reference in New Issue
Block a user