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

Re: [Xen-devel] [PATCH] arm/monitor vm-events: Implement guest-request support



>>> On 19.02.16 at 17:25, <czuzu@xxxxxxxxxxxxxxx> wrote:
> On 2/19/2016 4:26 PM, Jan Beulich wrote:
>>>>> On 18.02.16 at 20:35, <czuzu@xxxxxxxxxxxxxxx> wrote:
>>> ---
>>>   MAINTAINERS                     |   1 +
>>>   xen/arch/arm/hvm.c              |   8 +++
>>>   xen/arch/x86/hvm/event.c        | 116 
>>> ++++++----------------------------------
>>>   xen/arch/x86/hvm/hvm.c          |   1 +
>>>   xen/arch/x86/monitor.c          |  14 -----
>>>   xen/arch/x86/vm_event.c         |   1 +
>>>   xen/common/Makefile             |   2 +-
>>>   xen/common/hvm/Makefile         |   3 +-
>>>   xen/common/hvm/event.c          |  96 +++++++++++++++++++++++++++++++++
>> So here you _again_ try to introduce something HVM-ish for ARM.
>> Why? Why can't this code live in common/vm_event.c?
> 
> Are you referring to "xen/arch/arm/hvm.c"? If so, I did not introduce 
> that file, it was already there, all I did is add handling of 
> HVMOP_guest_request_vm_event to ARM-side's already existing do_hvm_op :).

No, I'm referring to your initial attempt to create arch/arm/hvm/...

> On the "HVM-ish" note, is there some incompatibility between ARM and the 
> concept of HVM?

ARM guests are neither PV nor HVM right now, but somewhere in
the middle (PVHv2 may come closest).

>>> --- a/xen/include/asm-x86/domain.h
>>> +++ b/xen/include/asm-x86/domain.h
>>> @@ -376,17 +376,15 @@ struct arch_domain
>>>       unsigned long *pirq_eoi_map;
>>>       unsigned long pirq_eoi_map_mfn;
>>>   
>>> -    /* Monitor options */
>>> +    /* Arch-specific monitor options */
>>>       struct {
>>> -        unsigned int write_ctrlreg_enabled       : 4;
>>> -        unsigned int write_ctrlreg_sync          : 4;
>>> -        unsigned int write_ctrlreg_onchangeonly  : 4;
>>> -        unsigned int mov_to_msr_enabled          : 1;
>>> -        unsigned int mov_to_msr_extended         : 1;
>>> -        unsigned int singlestep_enabled          : 1;
>>> -        unsigned int software_breakpoint_enabled : 1;
>>> -        unsigned int guest_request_enabled       : 1;
>>> -        unsigned int guest_request_sync          : 1;
>>> +        uint16_t write_ctrlreg_enabled       : 4;
>>> +        uint16_t write_ctrlreg_sync          : 4;
>>> +        uint16_t write_ctrlreg_onchangeonly  : 4;
>>> +        uint16_t mov_to_msr_enabled          : 1;
>>> +        uint16_t mov_to_msr_extended         : 1;
>>> +        uint16_t singlestep_enabled          : 1;
>>> +        uint16_t software_breakpoint_enabled : 1;
>>>       } monitor;
>> What is this type change supposed to achieve in general, and in
>> particular in the context of this patch?
> 
> Some time before this patch there was a discussion I had w/ ARM 
> maintainer Ian Campbell who made the suggestion to try and move parts of 
> the monitor vm-events code to the common-side.
> (you can find that discussion here: 
> https://www.mail-archive.com/xen-devel@xxxxxxxxxxxxx/msg54139.html).
> In short, the reason for his suggestion was that that previous attempt 
> of mine to add guest-request support for ARM highlighted code 
> duplication between X86 and ARM if I were to leave the monitor vm-events 
> code as it was (that is, completely arch-specific). In an effort to 
> avoid that, I first submitted a 7 patch-series which tried to move as 
> much as possible to the common-side.
> "As much as possible" meant guest-request, ctrl-reg write, single-step 
> and software breakpoints, all moved to the common-side. That also meant 
> introducing some Kconfigs to selectively activate some parts of that 
> now-common code, since not all of it was used on ARM at that moment. 
> Although conceptually that code could have remained on the common-side, 
> Tamas pointed out that we could get rid of the Kconfigs (which in his 
> opinion bloated the code) by only moving at the moment what is 
> implemented on both X86 and ARM. As for the rest, he noted that when I 
> add implementations for the other monitor vm-events on ARM as well, I 
> could move that to common as well. The above is a result of that - 
> guest-request is implemented on both X86 and ARM with this patch, hence 
> I also moved it to common.

I agree there are two fields being removed. But the question was
why you also change the type of the other fields.

>>> --- a/xen/include/asm-x86/hvm/event.h
>>> +++ b/xen/include/asm-x86/hvm/event.h
>>> @@ -1,5 +1,9 @@
>>>   /*
>>> - * event.h: Hardware virtual machine assist events.
>>> + * include/asm-x86/hvm/event.h
>>> + *
>>> + * Arch-specific hardware virtual machine event abstractions.
>>> + *
>>> + * Copyright (c) 2016, Bitdefender S.R.L.
>> Is this true? Namely, was _all_ of the code here written by people
>> on your company, including what may have got moved here from
>> elsewhere?
> 
> My bad. Removing that line would be satisfactory, yes?

To me, yes.

Jan

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.