Re: [PATCH] Split kvm_vcpu to support new archs.

Anthony Liguori
2007-10-18T21:31:01Z

Hollis Blanchard wrote:
> On Thu, 2007-10-18 at 16:04 -0500, Anthony Liguori wrote:
>
>> Hollis Blanchard wrote:
>>
>>> What is the problem with
>>> embedding an architecture-specific sub-structure, i.e.
>>> struct kvm_vcpu {
>>> ...
>>> struct arch_kvm_vcpu arch_vcpu;
>>> };
>>>
>>>
>> I think you want the opposite direction of nesting.
>>
> ...
>
>> We should move to:
>>
>> struct kvm_vcpu {
>> /* stuff common to x86/ppc/ia64 */
>> };
>>
>> struct vcpu_x86 {
>> struct kvm_vcpu vcpu;
>> /* stuff common to vt/svm */
>> }
>>
>> struct vcpu_svm {
>> struct vcpu_x86 vcpu;
>> /* svm specific stuff */
>> };
>>
>
> Why?
>

It provides better encapsulation. If you have a kvm_vcpu, unless you do
container_of(), you can't access the arch_vcpu. It helps make sure that
architecture common code remains common.

It also leaves open the possibility of supporting multiple architectures
at the same time. I don't know why you would want to do that :-)

Regards,

Anthony Liguori