Re: [PATCH v3 5/5] mips/kvm: Fix ABI by moving manipulation of CP0 registers to KVM_{G,S}ET_MSRS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 05/21/2013 09:28 AM, Gleb Natapov wrote:
On Tue, May 21, 2013 at 09:21:06AM -0700, David Daney wrote:
On 05/21/2013 08:37 AM, Gleb Natapov wrote:
On Mon, May 20, 2013 at 02:01:26PM -0700, David Daney wrote:
From: David Daney <david.daney@xxxxxxxxxx>

Because not all 256 CP0 registers are ever implemented, we need a
different method of manipulating them.  Use the
KVM_GET_MSRS/KVM_SET_MSRS mechanism as x86 does for its MSRs.

Have you looked at KVM_(GET|SET)_ONE_REG interface (not used by x86, but is
used bu arm/ppc/s390). It looks like it is more suitable for your case.
Actually you can use it instead of KVM_(GET|SET)_REGS for all registers.

Yes, I suppose it could be used.  One problem it has is that there
is no way to query the set of supported registers.
KVM_GET_REG_LIST

OK, I guess we can switch to KVM_GET_REG_LIST/KVM_(GET|SET)_ONE_REG.

I will revise this patch.

Thanks.


                                                     Also you have to
make multiple calls to set multiple registers, which involves
vcpu_{load,put} for each register.

How often this happens on the fast path on mips?

Rarely, if ever once, the VCPU is running.

Only when initializing the VCPU do we need to set a bunch of registers.


On x86 this never
happens on the fast path so it uses KVM_(GET|SET)_REGS mostly for
historical reasons.

We will definitely implement it for all the FP and General Purpose
registers.


Code related to implementing KVM_GET_MSRS/KVM_SET_MSRS is consolidated


--
			Gleb.





[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux