Re: [PATCH 27/27] KVM: PPC: Add Documentation about PV interface

Segher Boessenkool
2010-07-02T16:27:20Z

> +To find out if we're running on KVM or not, we overlay the PVR
> register. Usually
> +the PVR register contains an id that identifies your CPU type. If,
> however, you
> +pass KVM_PVR_PARA in the register that you want the PVR result in,
> the register
> +still contains KVM_PVR_PARA after the mfpvr call.
> +
> + LOAD_REG_IMM(r5, KVM_PVR_PARA)
> + mfpvr r5
> + [r5 still contains KVM_PVR_PARA]

I love this part :-)

> + __u64 scratch3;
> + __u64 critical; /* Guest may not get interrupts if == r1 */
> + __u64 sprg0;
> + __u64 sprg1;
> + __u64 sprg2;
> + __u64 sprg3;
> + __u64 srr0;
> + __u64 srr1;
> + __u64 dar;
> + __u64 msr;
> + __u32 dsisr;
> + __u32 int_pending; /* Tells the guest if we have an interrupt */
> +};
> +
> +Additions to the page must only occur at the end. Struct fields
> are always 32
> +bit aligned.

The u64s are 64-bit aligned, should they always be?

> +The "ld" and "std" instructions are transormed to "lwz" and "stw"
> instructions
> +respectively on 32 bit systems with an added offset of 4 to
> accomodate for big
> +endianness.

Will this add never overflow? Is there anything that checks for it?

> +mtmsrd rX, 0 b <special mtmsr section>
> +mtmsr b <special mtmsr section>

mtmsr rX

Segher