diff mbox

build: convert CONFIG_COMPAT to Kconfig

Message ID 1450469218-24860-1-git-send-email-cardoe@cardoe.com (mailing list archive)
State New, archived
Headers show

Commit Message

Doug Goldstein Dec. 18, 2015, 8:06 p.m. UTC
Use the Kconfig generated CONFIG_COMPAT defines in the code base.

CC: Keir Fraser <keir@xen.org>
CC: Jan Beulich <jbeulich@suse.com>
CC: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
---
This was previously Acked-by: Jan Beulich <jbeulich@suse.com> but then
there was a request to change it to xen/common/Kconfig from
xen/arch/x86/Kconfig. Unfortunately a small typo ('def_bool y' instead of
'bool') caused it to break on ARM. This resolves the issue and should be
ready to merge.
---
 config/x86_64.mk     | 1 -
 xen/arch/x86/Kconfig | 1 +
 xen/common/Kconfig   | 7 +++++++
 3 files changed, 8 insertions(+), 1 deletion(-)

Comments

Andrew Cooper Dec. 18, 2015, 9:35 p.m. UTC | #1
On 18/12/2015 20:06, Doug Goldstein wrote:
> Use the Kconfig generated CONFIG_COMPAT defines in the code base.
>
> CC: Keir Fraser <keir@xen.org>
> CC: Jan Beulich <jbeulich@suse.com>
> CC: Andrew Cooper <andrew.cooper3@citrix.com>
> Signed-off-by: Doug Goldstein <cardoe@cardoe.com>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>, although I have
a slight quibble.

> ---
> This was previously Acked-by: Jan Beulich <jbeulich@suse.com> but then
> there was a request to change it to xen/common/Kconfig from
> xen/arch/x86/Kconfig. Unfortunately a small typo ('def_bool y' instead of
> 'bool') caused it to break on ARM. This resolves the issue and should be
> ready to merge.
> ---
>  config/x86_64.mk     | 1 -
>  xen/arch/x86/Kconfig | 1 +
>  xen/common/Kconfig   | 7 +++++++
>  3 files changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/config/x86_64.mk b/config/x86_64.mk
> index f12d549..85fa27c 100644
> --- a/config/x86_64.mk
> +++ b/config/x86_64.mk
> @@ -2,7 +2,6 @@ CONFIG_X86 := y
>  CONFIG_X86_64 := y
>  CONFIG_X86_$(XEN_OS) := y
>  
> -CONFIG_COMPAT := y
>  CONFIG_MIGRATE := y
>  CONFIG_XCUTILS := y
>  
> diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
> index 07e366d..7d2ed96 100644
> --- a/xen/arch/x86/Kconfig
> +++ b/xen/arch/x86/Kconfig
> @@ -3,6 +3,7 @@ config X86_64
>  
>  config X86
>  	def_bool y
> +	select COMPAT
>  	select HAS_ACPI
>  	select HAS_CPUFREQ
>  	select HAS_EHCI
> diff --git a/xen/common/Kconfig b/xen/common/Kconfig
> index 7d0e9a9..046e257 100644
> --- a/xen/common/Kconfig
> +++ b/xen/common/Kconfig
> @@ -1,6 +1,13 @@
>  
>  menu "Common Features"
>  
> +config COMPAT
> +	bool
> +	help
> +	  32-bit interface support on 64-bit Xen which is used for both
> +	  HVM and PV guests. HVMLoader makes 32-bit hypercalls irrespective
> +	  of the destination runmode of the guest.

As this is now common, probably want to specify x86 HVM and PV guests. 
Arm guests are technically HVM, although the term is rather less common
on their side.

~Andrew
Doug Goldstein Dec. 18, 2015, 9:49 p.m. UTC | #2
On 12/18/15 3:35 PM, Andrew Cooper wrote:
> On 18/12/2015 20:06, Doug Goldstein wrote:
>> Use the Kconfig generated CONFIG_COMPAT defines in the code base.
>>
>> CC: Keir Fraser <keir@xen.org>
>> CC: Jan Beulich <jbeulich@suse.com>
>> CC: Andrew Cooper <andrew.cooper3@citrix.com>
>> Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
> 
> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>, although I have
> a slight quibble.
> 
>> ---
>> This was previously Acked-by: Jan Beulich <jbeulich@suse.com> but then
>> there was a request to change it to xen/common/Kconfig from
>> xen/arch/x86/Kconfig. Unfortunately a small typo ('def_bool y' instead of
>> 'bool') caused it to break on ARM. This resolves the issue and should be
>> ready to merge.
>> ---
>>  config/x86_64.mk     | 1 -
>>  xen/arch/x86/Kconfig | 1 +
>>  xen/common/Kconfig   | 7 +++++++
>>  3 files changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/config/x86_64.mk b/config/x86_64.mk
>> index f12d549..85fa27c 100644
>> --- a/config/x86_64.mk
>> +++ b/config/x86_64.mk
>> @@ -2,7 +2,6 @@ CONFIG_X86 := y
>>  CONFIG_X86_64 := y
>>  CONFIG_X86_$(XEN_OS) := y
>>  
>> -CONFIG_COMPAT := y
>>  CONFIG_MIGRATE := y
>>  CONFIG_XCUTILS := y
>>  
>> diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
>> index 07e366d..7d2ed96 100644
>> --- a/xen/arch/x86/Kconfig
>> +++ b/xen/arch/x86/Kconfig
>> @@ -3,6 +3,7 @@ config X86_64
>>  
>>  config X86
>>  	def_bool y
>> +	select COMPAT
>>  	select HAS_ACPI
>>  	select HAS_CPUFREQ
>>  	select HAS_EHCI
>> diff --git a/xen/common/Kconfig b/xen/common/Kconfig
>> index 7d0e9a9..046e257 100644
>> --- a/xen/common/Kconfig
>> +++ b/xen/common/Kconfig
>> @@ -1,6 +1,13 @@
>>  
>>  menu "Common Features"
>>  
>> +config COMPAT
>> +	bool
>> +	help
>> +	  32-bit interface support on 64-bit Xen which is used for both
>> +	  HVM and PV guests. HVMLoader makes 32-bit hypercalls irrespective
>> +	  of the destination runmode of the guest.
> 
> As this is now common, probably want to specify x86 HVM and PV guests. 
> Arm guests are technically HVM, although the term is rather less common
> on their side.
> 
> ~Andrew
> 

How about:

32-bit interface support on 64-bit Xen which is used by x86 HVM and PV
guests and ARM HVM guests. The reason this is used for HVM guests is
that HVMLoader makes 32-bit hypercalls irrespective of the destination
run mode of the guest.
Andrew Cooper Dec. 18, 2015, 10:09 p.m. UTC | #3
On 18/12/2015 21:49, Doug Goldstein wrote:
> On 12/18/15 3:35 PM, Andrew Cooper wrote:
>> On 18/12/2015 20:06, Doug Goldstein wrote:
>>> Use the Kconfig generated CONFIG_COMPAT defines in the code base.
>>>
>>> CC: Keir Fraser <keir@xen.org>
>>> CC: Jan Beulich <jbeulich@suse.com>
>>> CC: Andrew Cooper <andrew.cooper3@citrix.com>
>>> Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
>> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>, although I have
>> a slight quibble.
>>
>>> ---
>>> This was previously Acked-by: Jan Beulich <jbeulich@suse.com> but then
>>> there was a request to change it to xen/common/Kconfig from
>>> xen/arch/x86/Kconfig. Unfortunately a small typo ('def_bool y' instead of
>>> 'bool') caused it to break on ARM. This resolves the issue and should be
>>> ready to merge.
>>> ---
>>>  config/x86_64.mk     | 1 -
>>>  xen/arch/x86/Kconfig | 1 +
>>>  xen/common/Kconfig   | 7 +++++++
>>>  3 files changed, 8 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/config/x86_64.mk b/config/x86_64.mk
>>> index f12d549..85fa27c 100644
>>> --- a/config/x86_64.mk
>>> +++ b/config/x86_64.mk
>>> @@ -2,7 +2,6 @@ CONFIG_X86 := y
>>>  CONFIG_X86_64 := y
>>>  CONFIG_X86_$(XEN_OS) := y
>>>  
>>> -CONFIG_COMPAT := y
>>>  CONFIG_MIGRATE := y
>>>  CONFIG_XCUTILS := y
>>>  
>>> diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
>>> index 07e366d..7d2ed96 100644
>>> --- a/xen/arch/x86/Kconfig
>>> +++ b/xen/arch/x86/Kconfig
>>> @@ -3,6 +3,7 @@ config X86_64
>>>  
>>>  config X86
>>>  	def_bool y
>>> +	select COMPAT
>>>  	select HAS_ACPI
>>>  	select HAS_CPUFREQ
>>>  	select HAS_EHCI
>>> diff --git a/xen/common/Kconfig b/xen/common/Kconfig
>>> index 7d0e9a9..046e257 100644
>>> --- a/xen/common/Kconfig
>>> +++ b/xen/common/Kconfig
>>> @@ -1,6 +1,13 @@
>>>  
>>>  menu "Common Features"
>>>  
>>> +config COMPAT
>>> +	bool
>>> +	help
>>> +	  32-bit interface support on 64-bit Xen which is used for both
>>> +	  HVM and PV guests. HVMLoader makes 32-bit hypercalls irrespective
>>> +	  of the destination runmode of the guest.
>> As this is now common, probably want to specify x86 HVM and PV guests. 
>> Arm guests are technically HVM, although the term is rather less common
>> on their side.
>>
>> ~Andrew
>>
> How about:
>
> 32-bit interface support on 64-bit Xen which is used by x86 HVM and PV
> guests and ARM HVM guests. The reason this is used for HVM guests is
> that HVMLoader makes 32-bit hypercalls irrespective of the destination
> run mode of the guest.
>

The complication here is that arm doesn't yet support compat.  There is
a hope to (which is, I guess, why Jan asked for it to be common), but it
shouldn't give any implication that it is available on ARM yet.

I am not overly familiar with the kconfig grammar.  Is there a sensible
way to limit the option to being visible only on x86, and only on 64bit
builds?  (even if arm supported compat, it wouldn't make sense to offer
it to arm32).

Or am I just talking my way back around to suggesting that it be an arch
specific option?

~Andrew
Doug Goldstein Dec. 20, 2015, 1:42 p.m. UTC | #4
On 12/18/15 4:09 PM, Andrew Cooper wrote:
> On 18/12/2015 21:49, Doug Goldstein wrote:
>> On 12/18/15 3:35 PM, Andrew Cooper wrote:
>>> On 18/12/2015 20:06, Doug Goldstein wrote:
>>>> Use the Kconfig generated CONFIG_COMPAT defines in the code base.
>>>>
>>>> CC: Keir Fraser <keir@xen.org>
>>>> CC: Jan Beulich <jbeulich@suse.com>
>>>> CC: Andrew Cooper <andrew.cooper3@citrix.com>
>>>> Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
>>> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>, although I have
>>> a slight quibble.
>>>
>>>> ---
>>>> This was previously Acked-by: Jan Beulich <jbeulich@suse.com> but then
>>>> there was a request to change it to xen/common/Kconfig from
>>>> xen/arch/x86/Kconfig. Unfortunately a small typo ('def_bool y' instead of
>>>> 'bool') caused it to break on ARM. This resolves the issue and should be
>>>> ready to merge.
>>>> ---
>>>>  config/x86_64.mk     | 1 -
>>>>  xen/arch/x86/Kconfig | 1 +
>>>>  xen/common/Kconfig   | 7 +++++++
>>>>  3 files changed, 8 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/config/x86_64.mk b/config/x86_64.mk
>>>> index f12d549..85fa27c 100644
>>>> --- a/config/x86_64.mk
>>>> +++ b/config/x86_64.mk
>>>> @@ -2,7 +2,6 @@ CONFIG_X86 := y
>>>>  CONFIG_X86_64 := y
>>>>  CONFIG_X86_$(XEN_OS) := y
>>>>  
>>>> -CONFIG_COMPAT := y
>>>>  CONFIG_MIGRATE := y
>>>>  CONFIG_XCUTILS := y
>>>>  
>>>> diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
>>>> index 07e366d..7d2ed96 100644
>>>> --- a/xen/arch/x86/Kconfig
>>>> +++ b/xen/arch/x86/Kconfig
>>>> @@ -3,6 +3,7 @@ config X86_64
>>>>  
>>>>  config X86
>>>>  	def_bool y
>>>> +	select COMPAT
>>>>  	select HAS_ACPI
>>>>  	select HAS_CPUFREQ
>>>>  	select HAS_EHCI
>>>> diff --git a/xen/common/Kconfig b/xen/common/Kconfig
>>>> index 7d0e9a9..046e257 100644
>>>> --- a/xen/common/Kconfig
>>>> +++ b/xen/common/Kconfig
>>>> @@ -1,6 +1,13 @@
>>>>  
>>>>  menu "Common Features"
>>>>  
>>>> +config COMPAT
>>>> +	bool
>>>> +	help
>>>> +	  32-bit interface support on 64-bit Xen which is used for both
>>>> +	  HVM and PV guests. HVMLoader makes 32-bit hypercalls irrespective
>>>> +	  of the destination runmode of the guest.
>>> As this is now common, probably want to specify x86 HVM and PV guests. 
>>> Arm guests are technically HVM, although the term is rather less common
>>> on their side.
>>>
>>> ~Andrew
>>>
>> How about:
>>
>> 32-bit interface support on 64-bit Xen which is used by x86 HVM and PV
>> guests and ARM HVM guests. The reason this is used for HVM guests is
>> that HVMLoader makes 32-bit hypercalls irrespective of the destination
>> run mode of the guest.
>>
> 
> The complication here is that arm doesn't yet support compat.  There is
> a hope to (which is, I guess, why Jan asked for it to be common), but it
> shouldn't give any implication that it is available on ARM yet.

So maybe just drop the "and ARM HVM guests" part of that statement and
when that gets added we can expand the language?

> 
> I am not overly familiar with the kconfig grammar.  Is there a sensible
> way to limit the option to being visible only on x86, and only on 64bit
> builds?  (even if arm supported compat, it wouldn't make sense to offer
> it to arm32).
> 
> Or am I just talking my way back around to suggesting that it be an arch
> specific option?
> 
> ~Andrew
> 

Not necessarily. Currently its not visible to users at all and x86 just
enables it. Should it be made to be visible we could keep it in the
common place and add depends like "depends on X86_64" or "depends on
64BIT" (both x86_64 and arm64).
Andrew Cooper Dec. 20, 2015, 3:47 p.m. UTC | #5
On 20/12/15 13:42, Doug Goldstein wrote:
> On 12/18/15 4:09 PM, Andrew Cooper wrote:
>> On 18/12/2015 21:49, Doug Goldstein wrote:
>>> On 12/18/15 3:35 PM, Andrew Cooper wrote:
>>>> On 18/12/2015 20:06, Doug Goldstein wrote:
>>>>> Use the Kconfig generated CONFIG_COMPAT defines in the code base.
>>>>>
>>>>> CC: Keir Fraser <keir@xen.org>
>>>>> CC: Jan Beulich <jbeulich@suse.com>
>>>>> CC: Andrew Cooper <andrew.cooper3@citrix.com>
>>>>> Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
>>>> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>, although I have
>>>> a slight quibble.
>>>>
>>>>> ---
>>>>> This was previously Acked-by: Jan Beulich <jbeulich@suse.com> but then
>>>>> there was a request to change it to xen/common/Kconfig from
>>>>> xen/arch/x86/Kconfig. Unfortunately a small typo ('def_bool y' instead of
>>>>> 'bool') caused it to break on ARM. This resolves the issue and should be
>>>>> ready to merge.
>>>>> ---
>>>>>  config/x86_64.mk     | 1 -
>>>>>  xen/arch/x86/Kconfig | 1 +
>>>>>  xen/common/Kconfig   | 7 +++++++
>>>>>  3 files changed, 8 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/config/x86_64.mk b/config/x86_64.mk
>>>>> index f12d549..85fa27c 100644
>>>>> --- a/config/x86_64.mk
>>>>> +++ b/config/x86_64.mk
>>>>> @@ -2,7 +2,6 @@ CONFIG_X86 := y
>>>>>  CONFIG_X86_64 := y
>>>>>  CONFIG_X86_$(XEN_OS) := y
>>>>>  
>>>>> -CONFIG_COMPAT := y
>>>>>  CONFIG_MIGRATE := y
>>>>>  CONFIG_XCUTILS := y
>>>>>  
>>>>> diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
>>>>> index 07e366d..7d2ed96 100644
>>>>> --- a/xen/arch/x86/Kconfig
>>>>> +++ b/xen/arch/x86/Kconfig
>>>>> @@ -3,6 +3,7 @@ config X86_64
>>>>>  
>>>>>  config X86
>>>>>  	def_bool y
>>>>> +	select COMPAT
>>>>>  	select HAS_ACPI
>>>>>  	select HAS_CPUFREQ
>>>>>  	select HAS_EHCI
>>>>> diff --git a/xen/common/Kconfig b/xen/common/Kconfig
>>>>> index 7d0e9a9..046e257 100644
>>>>> --- a/xen/common/Kconfig
>>>>> +++ b/xen/common/Kconfig
>>>>> @@ -1,6 +1,13 @@
>>>>>  
>>>>>  menu "Common Features"
>>>>>  
>>>>> +config COMPAT
>>>>> +	bool
>>>>> +	help
>>>>> +	  32-bit interface support on 64-bit Xen which is used for both
>>>>> +	  HVM and PV guests. HVMLoader makes 32-bit hypercalls irrespective
>>>>> +	  of the destination runmode of the guest.
>>>> As this is now common, probably want to specify x86 HVM and PV guests. 
>>>> Arm guests are technically HVM, although the term is rather less common
>>>> on their side.
>>>>
>>>> ~Andrew
>>>>
>>> How about:
>>>
>>> 32-bit interface support on 64-bit Xen which is used by x86 HVM and PV
>>> guests and ARM HVM guests. The reason this is used for HVM guests is
>>> that HVMLoader makes 32-bit hypercalls irrespective of the destination
>>> run mode of the guest.
>>>
>> The complication here is that arm doesn't yet support compat.  There is
>> a hope to (which is, I guess, why Jan asked for it to be common), but it
>> shouldn't give any implication that it is available on ARM yet.
> So maybe just drop the "and ARM HVM guests" part of that statement and
> when that gets added we can expand the language?
>
>> I am not overly familiar with the kconfig grammar.  Is there a sensible
>> way to limit the option to being visible only on x86, and only on 64bit
>> builds?  (even if arm supported compat, it wouldn't make sense to offer
>> it to arm32).
>>
>> Or am I just talking my way back around to suggesting that it be an arch
>> specific option?
>>
>> ~Andrew
>>
> Not necessarily. Currently its not visible to users at all and x86 just
> enables it. Should it be made to be visible we could keep it in the
> common place and add depends like "depends on X86_64" or "depends on
> 64BIT" (both x86_64 and arm64).

Ah ok.  In which case dropping the ARM bit is probably best, and leaving
everything else as it stands.

~Andrew
Jan Beulich Dec. 21, 2015, 11:32 a.m. UTC | #6
>>> On 18.12.15 at 23:09, <andrew.cooper3@citrix.com> wrote:
> On 18/12/2015 21:49, Doug Goldstein wrote:
>> On 12/18/15 3:35 PM, Andrew Cooper wrote:
>>> On 18/12/2015 20:06, Doug Goldstein wrote:
>>>> Use the Kconfig generated CONFIG_COMPAT defines in the code base.
>>>>
>>>> CC: Keir Fraser <keir@xen.org>
>>>> CC: Jan Beulich <jbeulich@suse.com>
>>>> CC: Andrew Cooper <andrew.cooper3@citrix.com>
>>>> Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
>>> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>, although I have
>>> a slight quibble.
>>>
>>>> ---
>>>> This was previously Acked-by: Jan Beulich <jbeulich@suse.com> but then
>>>> there was a request to change it to xen/common/Kconfig from
>>>> xen/arch/x86/Kconfig. Unfortunately a small typo ('def_bool y' instead of
>>>> 'bool') caused it to break on ARM. This resolves the issue and should be
>>>> ready to merge.
>>>> ---
>>>>  config/x86_64.mk     | 1 -
>>>>  xen/arch/x86/Kconfig | 1 +
>>>>  xen/common/Kconfig   | 7 +++++++
>>>>  3 files changed, 8 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/config/x86_64.mk b/config/x86_64.mk
>>>> index f12d549..85fa27c 100644
>>>> --- a/config/x86_64.mk
>>>> +++ b/config/x86_64.mk
>>>> @@ -2,7 +2,6 @@ CONFIG_X86 := y
>>>>  CONFIG_X86_64 := y
>>>>  CONFIG_X86_$(XEN_OS) := y
>>>>  
>>>> -CONFIG_COMPAT := y
>>>>  CONFIG_MIGRATE := y
>>>>  CONFIG_XCUTILS := y
>>>>  
>>>> diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
>>>> index 07e366d..7d2ed96 100644
>>>> --- a/xen/arch/x86/Kconfig
>>>> +++ b/xen/arch/x86/Kconfig
>>>> @@ -3,6 +3,7 @@ config X86_64
>>>>  
>>>>  config X86
>>>>  	def_bool y
>>>> +	select COMPAT
>>>>  	select HAS_ACPI
>>>>  	select HAS_CPUFREQ
>>>>  	select HAS_EHCI
>>>> diff --git a/xen/common/Kconfig b/xen/common/Kconfig
>>>> index 7d0e9a9..046e257 100644
>>>> --- a/xen/common/Kconfig
>>>> +++ b/xen/common/Kconfig
>>>> @@ -1,6 +1,13 @@
>>>>  
>>>>  menu "Common Features"
>>>>  
>>>> +config COMPAT
>>>> +	bool
>>>> +	help
>>>> +	  32-bit interface support on 64-bit Xen which is used for both
>>>> +	  HVM and PV guests. HVMLoader makes 32-bit hypercalls irrespective
>>>> +	  of the destination runmode of the guest.
>>> As this is now common, probably want to specify x86 HVM and PV guests. 
>>> Arm guests are technically HVM, although the term is rather less common
>>> on their side.
>>>
>>> ~Andrew
>>>
>> How about:
>>
>> 32-bit interface support on 64-bit Xen which is used by x86 HVM and PV
>> guests and ARM HVM guests. The reason this is used for HVM guests is
>> that HVMLoader makes 32-bit hypercalls irrespective of the destination
>> run mode of the guest.
>>
> 
> The complication here is that arm doesn't yet support compat.  There is
> a hope to (which is, I guess, why Jan asked for it to be common), but it
> shouldn't give any implication that it is available on ARM yet.

I don't think ARM is meant to ever use this layer - its interface was
made 32-bit clean from the beginning. The reason for wanting this
option to be common is an abstract one (i.e. considering just possible
future architectures).

Jan
Ian Campbell Jan. 4, 2016, 11:21 a.m. UTC | #7
On Mon, 2015-12-21 at 04:32 -0700, Jan Beulich wrote:
> > > > On 18.12.15 at 23:09, <andrew.cooper3@citrix.com> wrote:
> > On 18/12/2015 21:49, Doug Goldstein wrote:
> > > On 12/18/15 3:35 PM, Andrew Cooper wrote:
> > > > On 18/12/2015 20:06, Doug Goldstein wrote:
> > > > > Use the Kconfig generated CONFIG_COMPAT defines in the code base.
> > > > > 
> > > > > CC: Keir Fraser <keir@xen.org>
> > > > > CC: Jan Beulich <jbeulich@suse.com>
> > > > > CC: Andrew Cooper <andrew.cooper3@citrix.com>
> > > > > Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
> > > > Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>, although I
> > > > have
> > > > a slight quibble.
> > > > 
> > > > > ---
> > > > > This was previously Acked-by: Jan Beulich <jbeulich@suse.com> but
> > > > > then
> > > > > there was a request to change it to xen/common/Kconfig from
> > > > > xen/arch/x86/Kconfig. Unfortunately a small typo ('def_bool y'
> > > > > instead of
> > > > > 'bool') caused it to break on ARM. This resolves the issue and
> > > > > should be
> > > > > ready to merge.
> > > > > ---
> > > > >  config/x86_64.mk     | 1 -
> > > > >  xen/arch/x86/Kconfig | 1 +
> > > > >  xen/common/Kconfig   | 7 +++++++
> > > > >  3 files changed, 8 insertions(+), 1 deletion(-)
> > > > > 
> > > > > diff --git a/config/x86_64.mk b/config/x86_64.mk
> > > > > index f12d549..85fa27c 100644
> > > > > --- a/config/x86_64.mk
> > > > > +++ b/config/x86_64.mk
> > > > > @@ -2,7 +2,6 @@ CONFIG_X86 := y
> > > > >  CONFIG_X86_64 := y
> > > > >  CONFIG_X86_$(XEN_OS) := y
> > > > >  
> > > > > -CONFIG_COMPAT := y
> > > > >  CONFIG_MIGRATE := y
> > > > >  CONFIG_XCUTILS := y
> > > > >  
> > > > > diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
> > > > > index 07e366d..7d2ed96 100644
> > > > > --- a/xen/arch/x86/Kconfig
> > > > > +++ b/xen/arch/x86/Kconfig
> > > > > @@ -3,6 +3,7 @@ config X86_64
> > > > >  
> > > > >  config X86
> > > > >  	def_bool y
> > > > > +	select COMPAT
> > > > >  	select HAS_ACPI
> > > > >  	select HAS_CPUFREQ
> > > > >  	select HAS_EHCI
> > > > > diff --git a/xen/common/Kconfig b/xen/common/Kconfig
> > > > > index 7d0e9a9..046e257 100644
> > > > > --- a/xen/common/Kconfig
> > > > > +++ b/xen/common/Kconfig
> > > > > @@ -1,6 +1,13 @@
> > > > >  
> > > > >  menu "Common Features"
> > > > >  
> > > > > +config COMPAT
> > > > > +	bool
> > > > > +	help
> > > > > +	  32-bit interface support on 64-bit Xen which is used
> > > > > for both
> > > > > +	  HVM and PV guests. HVMLoader makes 32-bit hypercalls
> > > > > irrespective
> > > > > +	  of the destination runmode of the guest.
> > > > As this is now common, probably want to specify x86 HVM and PV
> > > > guests. 
> > > > Arm guests are technically HVM, although the term is rather less
> > > > common
> > > > on their side.
> > > > 
> > > > ~Andrew
> > > > 
> > > How about:
> > > 
> > > 32-bit interface support on 64-bit Xen which is used by x86 HVM and
> > > PV
> > > guests and ARM HVM guests. The reason this is used for HVM guests is
> > > that HVMLoader makes 32-bit hypercalls irrespective of the
> > > destination
> > > run mode of the guest.
> > > 
> > 
> > The complication here is that arm doesn't yet support compat.  There is
> > a hope to (which is, I guess, why Jan asked for it to be common), but
> > it
> > shouldn't give any implication that it is available on ARM yet.
> 
> I don't think ARM is meant to ever use this layer - its interface was
> made 32-bit clean from the beginning.

Correct. We went to some lengths to avoid the need for a compat layer for
supporting 32 bit guests on a 64 bit Xen ARM.

I also want to clarify that ARM guests are neither PV nor HVM(*), they are
something in between and we try to avoid the PV/HVM terminology when
speaking about ARM, they are just "guests" as there is only one kind. (Some
of the PV/HVM terminology has leaked into the implementation, due to not
fully refactoring some stuff or shaving various yaks by renaming stuff, but
that's irrelevant to the bigger picture IMHO).

Eventually we may end up with a thing like x86's HVM (i.e. pretending to be
real h/w) at which point we will need to retcon on a name for the existing
guest type.

(*) They are somewhat more like a PVH or dm-lite guest, but even that isn't
 quite right.

>  The reason for wanting this
> option to be common is an abstract one (i.e. considering just possible
> future architectures).

I would hope that most future arches would try very hard to follow ARM's
lead here and not have a compat layer at all, but that doesn't conflict
with your abstract point IMHO.

Ian.
diff mbox

Patch

diff --git a/config/x86_64.mk b/config/x86_64.mk
index f12d549..85fa27c 100644
--- a/config/x86_64.mk
+++ b/config/x86_64.mk
@@ -2,7 +2,6 @@  CONFIG_X86 := y
 CONFIG_X86_64 := y
 CONFIG_X86_$(XEN_OS) := y
 
-CONFIG_COMPAT := y
 CONFIG_MIGRATE := y
 CONFIG_XCUTILS := y
 
diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index 07e366d..7d2ed96 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -3,6 +3,7 @@  config X86_64
 
 config X86
 	def_bool y
+	select COMPAT
 	select HAS_ACPI
 	select HAS_CPUFREQ
 	select HAS_EHCI
diff --git a/xen/common/Kconfig b/xen/common/Kconfig
index 7d0e9a9..046e257 100644
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -1,6 +1,13 @@ 
 
 menu "Common Features"
 
+config COMPAT
+	bool
+	help
+	  32-bit interface support on 64-bit Xen which is used for both
+	  HVM and PV guests. HVMLoader makes 32-bit hypercalls irrespective
+	  of the destination runmode of the guest.
+
 # Select HAS_DEVICE_TREE if device tree is supported
 config HAS_DEVICE_TREE
 	bool