Am 13.09.2013 um 21:21 schrieb Paul Mackerras <pau...@samba.org>:

> On Fri, Sep 13, 2013 at 01:36:25PM -0500, Alexander Graf wrote:
>> 
>> On 05.09.2013, at 22:21, Paul Mackerras wrote:
>> 
>>> This adds the ability for userspace to read and write the LPCR
>>> (Logical Partitioning Control Register) value relating to a guest
>>> via the GET/SET_ONE_REG interface.  There is only one LPCR value
>>> for the guest, which can be accessed through any vcpu.  Userspace
>>> can only modify the following fields of the LPCR value:
>>> 
>>> DPFD    Default prefetch depth
>>> ILE    Interrupt little-endian
>>> TC    Translation control (secondary HPT hash group search disable)
>>> 
>>> Signed-off-by: Paul Mackerras <pau...@samba.org>
>> 
>> There are 3 things I dislike about this patch :)
>> 
>>  1) A vcpu one_reg should only change the state of the vcpu it's targeting. 
>> You want a vm wide thing.
> 
> In hardware there is in fact an LPCR per hardware CPU thread, though
> the architecture says that on threaded processors many of the fields
> have to be the same on each thread, including the three fields
> mentioned here.

Ok. Is it mandatory to be identical per core? Or per vm?

> 
>>  2) If anyone gets crazy enough to implement HV emulation in PR KVM this 
>> would overlap with the guest's guest LPCR, so we need to name it 
>> differently. It's really VM configuration, not a register. Maybe ENABLE_CAP 
>> is a better fit?
> 
> If we were doing HV emulation in PR KVM then there would still only be
> one LPCR per guest vcpu.  If there was a hypervisor running as the PR
> guest, it would be its job to context switch the LPCR between its
> guests.  So I don't see why there would be any need for the top-level
> KVM to know about the guest's guest LPCR.
> 
> In that situation we would need a one_reg to get and set the guest's
> LPCR, which would be per vcpu, and there would be no restriction on
> which bits could be set by the host.

Thinking about this a bit more I think you might be correct.

> 
> It sounds to me like the best option would be to keep an LPCR per vcpu
> and use the one_reg interface to let the host get and set it.  The
> actual LPCR applied when the guest runs would use some bits from the
> per-vcpu value plus some bits set by the KVM host code (for the host's
> protection).  How does that sound?

Sounds similar to what you have, just that it's on vcpu level now :). I think 
that would work, yeah.

Alex

> 
> Alternatively I could define a new per-VM ioctl.  ENABLE_CAP doesn't
> really help since it also is per-vcpu, not per-VM.
> 
>>  3) Checkpatch fails:
>> 
>> WARNING: please, no space before tabs
>> #59: FILE: arch/powerpc/include/asm/reg.h:295:
>> +#define   LPCR_TC      ^I0x00000200^I/* Translation control */$
> 
> Oops, will fix.
> 
> Paul.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to