diff mbox

[RESEND,V2,1/4] xen: build infrastructure for generating hypercall depending symbols

Message ID 1421826565-10826-2-git-send-email-jgross@suse.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jürgen Groß Jan. 21, 2015, 7:49 a.m. UTC
Today there are several places in the kernel which build tables
containing one entry for each possible Xen hypercall. Create an
infrastructure to be able to generate these tables at build time.

Based-on-patch-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: David Vrabel <david.vrabel@citrix.com>
---
 arch/x86/syscalls/Makefile |  9 +++++++++
 scripts/xen-hypercalls.sh  | 12 ++++++++++++
 2 files changed, 21 insertions(+)
 create mode 100644 scripts/xen-hypercalls.sh

Comments

Jürgen Groß Jan. 28, 2015, 5:11 a.m. UTC | #1
*Ping*

David wants a comment from the x86 maintainers.


Juergen

On 01/21/2015 08:49 AM, Juergen Gross wrote:
> Today there are several places in the kernel which build tables
> containing one entry for each possible Xen hypercall. Create an
> infrastructure to be able to generate these tables at build time.
>
> Based-on-patch-by: Jan Beulich <jbeulich@suse.com>
> Signed-off-by: Juergen Gross <jgross@suse.com>
> Reviewed-by: David Vrabel <david.vrabel@citrix.com>
> ---
>   arch/x86/syscalls/Makefile |  9 +++++++++
>   scripts/xen-hypercalls.sh  | 12 ++++++++++++
>   2 files changed, 21 insertions(+)
>   create mode 100644 scripts/xen-hypercalls.sh
>
> diff --git a/arch/x86/syscalls/Makefile b/arch/x86/syscalls/Makefile
> index 3323c27..a55abb9 100644
> --- a/arch/x86/syscalls/Makefile
> +++ b/arch/x86/syscalls/Makefile
> @@ -19,6 +19,9 @@ quiet_cmd_syshdr = SYSHDR  $@
>   quiet_cmd_systbl = SYSTBL  $@
>         cmd_systbl = $(CONFIG_SHELL) '$(systbl)' $< $@
>
> +quiet_cmd_hypercalls = HYPERCALLS $@
> +      cmd_hypercalls = $(CONFIG_SHELL) '$<' $@ $(filter-out $<,$^)
> +
>   syshdr_abi_unistd_32 := i386
>   $(uapi)/unistd_32.h: $(syscall32) $(syshdr)
>   	$(call if_changed,syshdr)
> @@ -47,10 +50,16 @@ $(out)/syscalls_32.h: $(syscall32) $(systbl)
>   $(out)/syscalls_64.h: $(syscall64) $(systbl)
>   	$(call if_changed,systbl)
>
> +$(out)/xen-hypercalls.h: $(srctree)/scripts/xen-hypercalls.sh
> +	$(call if_changed,hypercalls)
> +
> +$(out)/xen-hypercalls.h: $(srctree)/include/xen/interface/xen*.h
> +
>   uapisyshdr-y			+= unistd_32.h unistd_64.h unistd_x32.h
>   syshdr-y			+= syscalls_32.h
>   syshdr-$(CONFIG_X86_64)		+= unistd_32_ia32.h unistd_64_x32.h
>   syshdr-$(CONFIG_X86_64)		+= syscalls_64.h
> +syshdr-$(CONFIG_XEN)		+= xen-hypercalls.h
>
>   targets	+= $(uapisyshdr-y) $(syshdr-y)
>
> diff --git a/scripts/xen-hypercalls.sh b/scripts/xen-hypercalls.sh
> new file mode 100644
> index 0000000..676d922
> --- /dev/null
> +++ b/scripts/xen-hypercalls.sh
> @@ -0,0 +1,12 @@
> +#!/bin/sh
> +out="$1"
> +shift
> +in="$@"
> +
> +for i in $in; do
> +	eval $CPP $LINUXINCLUDE -dD -imacros "$i" -x c /dev/null
> +done | \
> +awk '$1 == "#define" && $2 ~ /__HYPERVISOR_[a-z][a-z_0-9]*/ { v[$3] = $2 }
> +	END {   print "/* auto-generated by scripts/xen-hypercall.sh */"
> +		for (i in v) if (!(v[i] in v))
> +			print "HYPERCALL("substr(v[i], 14)")"}' | sort -u >$out
>

--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jürgen Groß Feb. 6, 2015, 3 p.m. UTC | #2
Hey, x86 maintainers!

could you please comment?


Juergen

On 01/28/2015 06:11 AM, Juergen Gross wrote:
> *Ping*
>
> David wants a comment from the x86 maintainers.
>
>
> Juergen
>
> On 01/21/2015 08:49 AM, Juergen Gross wrote:
>> Today there are several places in the kernel which build tables
>> containing one entry for each possible Xen hypercall. Create an
>> infrastructure to be able to generate these tables at build time.
>>
>> Based-on-patch-by: Jan Beulich <jbeulich@suse.com>
>> Signed-off-by: Juergen Gross <jgross@suse.com>
>> Reviewed-by: David Vrabel <david.vrabel@citrix.com>
>> ---
>>   arch/x86/syscalls/Makefile |  9 +++++++++
>>   scripts/xen-hypercalls.sh  | 12 ++++++++++++
>>   2 files changed, 21 insertions(+)
>>   create mode 100644 scripts/xen-hypercalls.sh
>>
>> diff --git a/arch/x86/syscalls/Makefile b/arch/x86/syscalls/Makefile
>> index 3323c27..a55abb9 100644
>> --- a/arch/x86/syscalls/Makefile
>> +++ b/arch/x86/syscalls/Makefile
>> @@ -19,6 +19,9 @@ quiet_cmd_syshdr = SYSHDR  $@
>>   quiet_cmd_systbl = SYSTBL  $@
>>         cmd_systbl = $(CONFIG_SHELL) '$(systbl)' $< $@
>>
>> +quiet_cmd_hypercalls = HYPERCALLS $@
>> +      cmd_hypercalls = $(CONFIG_SHELL) '$<' $@ $(filter-out $<,$^)
>> +
>>   syshdr_abi_unistd_32 := i386
>>   $(uapi)/unistd_32.h: $(syscall32) $(syshdr)
>>       $(call if_changed,syshdr)
>> @@ -47,10 +50,16 @@ $(out)/syscalls_32.h: $(syscall32) $(systbl)
>>   $(out)/syscalls_64.h: $(syscall64) $(systbl)
>>       $(call if_changed,systbl)
>>
>> +$(out)/xen-hypercalls.h: $(srctree)/scripts/xen-hypercalls.sh
>> +    $(call if_changed,hypercalls)
>> +
>> +$(out)/xen-hypercalls.h: $(srctree)/include/xen/interface/xen*.h
>> +
>>   uapisyshdr-y            += unistd_32.h unistd_64.h unistd_x32.h
>>   syshdr-y            += syscalls_32.h
>>   syshdr-$(CONFIG_X86_64)        += unistd_32_ia32.h unistd_64_x32.h
>>   syshdr-$(CONFIG_X86_64)        += syscalls_64.h
>> +syshdr-$(CONFIG_XEN)        += xen-hypercalls.h
>>
>>   targets    += $(uapisyshdr-y) $(syshdr-y)
>>
>> diff --git a/scripts/xen-hypercalls.sh b/scripts/xen-hypercalls.sh
>> new file mode 100644
>> index 0000000..676d922
>> --- /dev/null
>> +++ b/scripts/xen-hypercalls.sh
>> @@ -0,0 +1,12 @@
>> +#!/bin/sh
>> +out="$1"
>> +shift
>> +in="$@"
>> +
>> +for i in $in; do
>> +    eval $CPP $LINUXINCLUDE -dD -imacros "$i" -x c /dev/null
>> +done | \
>> +awk '$1 == "#define" && $2 ~ /__HYPERVISOR_[a-z][a-z_0-9]*/ { v[$3] =
>> $2 }
>> +    END {   print "/* auto-generated by scripts/xen-hypercall.sh */"
>> +        for (i in v) if (!(v[i] in v))
>> +            print "HYPERCALL("substr(v[i], 14)")"}' | sort -u >$out
>>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
>
>

--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jürgen Groß Feb. 13, 2015, 5:33 a.m. UTC | #3
######   ###  #     #   #####
  #     #   #   ##    #  #     #
  #     #   #   # #   #  #
  ######    #   #  #  #  #  ####
  #         #   #   # #  #     #
  #         #   #    ##  #     #
  #        ###  #     #   #####

David still wants a comment from the x86 maintainers...

Juergen

On 01/21/2015 08:49 AM, Juergen Gross wrote:
> Today there are several places in the kernel which build tables
> containing one entry for each possible Xen hypercall. Create an
> infrastructure to be able to generate these tables at build time.
>
> Based-on-patch-by: Jan Beulich <jbeulich@suse.com>
> Signed-off-by: Juergen Gross <jgross@suse.com>
> Reviewed-by: David Vrabel <david.vrabel@citrix.com>
> ---
>   arch/x86/syscalls/Makefile |  9 +++++++++
>   scripts/xen-hypercalls.sh  | 12 ++++++++++++
>   2 files changed, 21 insertions(+)
>   create mode 100644 scripts/xen-hypercalls.sh
>
> diff --git a/arch/x86/syscalls/Makefile b/arch/x86/syscalls/Makefile
> index 3323c27..a55abb9 100644
> --- a/arch/x86/syscalls/Makefile
> +++ b/arch/x86/syscalls/Makefile
> @@ -19,6 +19,9 @@ quiet_cmd_syshdr = SYSHDR  $@
>   quiet_cmd_systbl = SYSTBL  $@
>         cmd_systbl = $(CONFIG_SHELL) '$(systbl)' $< $@
>
> +quiet_cmd_hypercalls = HYPERCALLS $@
> +      cmd_hypercalls = $(CONFIG_SHELL) '$<' $@ $(filter-out $<,$^)
> +
>   syshdr_abi_unistd_32 := i386
>   $(uapi)/unistd_32.h: $(syscall32) $(syshdr)
>   	$(call if_changed,syshdr)
> @@ -47,10 +50,16 @@ $(out)/syscalls_32.h: $(syscall32) $(systbl)
>   $(out)/syscalls_64.h: $(syscall64) $(systbl)
>   	$(call if_changed,systbl)
>
> +$(out)/xen-hypercalls.h: $(srctree)/scripts/xen-hypercalls.sh
> +	$(call if_changed,hypercalls)
> +
> +$(out)/xen-hypercalls.h: $(srctree)/include/xen/interface/xen*.h
> +
>   uapisyshdr-y			+= unistd_32.h unistd_64.h unistd_x32.h
>   syshdr-y			+= syscalls_32.h
>   syshdr-$(CONFIG_X86_64)		+= unistd_32_ia32.h unistd_64_x32.h
>   syshdr-$(CONFIG_X86_64)		+= syscalls_64.h
> +syshdr-$(CONFIG_XEN)		+= xen-hypercalls.h
>
>   targets	+= $(uapisyshdr-y) $(syshdr-y)
>
> diff --git a/scripts/xen-hypercalls.sh b/scripts/xen-hypercalls.sh
> new file mode 100644
> index 0000000..676d922
> --- /dev/null
> +++ b/scripts/xen-hypercalls.sh
> @@ -0,0 +1,12 @@
> +#!/bin/sh
> +out="$1"
> +shift
> +in="$@"
> +
> +for i in $in; do
> +	eval $CPP $LINUXINCLUDE -dD -imacros "$i" -x c /dev/null
> +done | \
> +awk '$1 == "#define" && $2 ~ /__HYPERVISOR_[a-z][a-z_0-9]*/ { v[$3] = $2 }
> +	END {   print "/* auto-generated by scripts/xen-hypercall.sh */"
> +		for (i in v) if (!(v[i] in v))
> +			print "HYPERCALL("substr(v[i], 14)")"}' | sort -u >$out
>

--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ingo Molnar Feb. 18, 2015, 11:59 p.m. UTC | #4
* Juergen Gross <jgross@suse.com> wrote:

> Today there are several places in the kernel which build tables
> containing one entry for each possible Xen hypercall. Create an
> infrastructure to be able to generate these tables at build time.
> 
> Based-on-patch-by: Jan Beulich <jbeulich@suse.com>
> Signed-off-by: Juergen Gross <jgross@suse.com>
> Reviewed-by: David Vrabel <david.vrabel@citrix.com>
> ---
>  arch/x86/syscalls/Makefile |  9 +++++++++
>  scripts/xen-hypercalls.sh  | 12 ++++++++++++
>  2 files changed, 21 insertions(+)
>  create mode 100644 scripts/xen-hypercalls.sh
> 
> diff --git a/arch/x86/syscalls/Makefile b/arch/x86/syscalls/Makefile
> index 3323c27..a55abb9 100644
> --- a/arch/x86/syscalls/Makefile
> +++ b/arch/x86/syscalls/Makefile
> @@ -19,6 +19,9 @@ quiet_cmd_syshdr = SYSHDR  $@
>  quiet_cmd_systbl = SYSTBL  $@
>        cmd_systbl = $(CONFIG_SHELL) '$(systbl)' $< $@
>  
> +quiet_cmd_hypercalls = HYPERCALLS $@
> +      cmd_hypercalls = $(CONFIG_SHELL) '$<' $@ $(filter-out $<,$^)
> +
>  syshdr_abi_unistd_32 := i386
>  $(uapi)/unistd_32.h: $(syscall32) $(syshdr)
>  	$(call if_changed,syshdr)
> @@ -47,10 +50,16 @@ $(out)/syscalls_32.h: $(syscall32) $(systbl)
>  $(out)/syscalls_64.h: $(syscall64) $(systbl)
>  	$(call if_changed,systbl)
>  
> +$(out)/xen-hypercalls.h: $(srctree)/scripts/xen-hypercalls.sh
> +	$(call if_changed,hypercalls)
> +
> +$(out)/xen-hypercalls.h: $(srctree)/include/xen/interface/xen*.h
> +
>  uapisyshdr-y			+= unistd_32.h unistd_64.h unistd_x32.h
>  syshdr-y			+= syscalls_32.h
>  syshdr-$(CONFIG_X86_64)		+= unistd_32_ia32.h unistd_64_x32.h
>  syshdr-$(CONFIG_X86_64)		+= syscalls_64.h
> +syshdr-$(CONFIG_XEN)		+= xen-hypercalls.h
>  
>  targets	+= $(uapisyshdr-y) $(syshdr-y)

From a core x86 perspective:

Acked-by: Ingo Molnar <mingo@kernel.org>

Thanks,

	Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ingo Molnar Feb. 19, 2015, midnight UTC | #5
* Juergen Gross <jgross@suse.com> wrote:

> *Ping*
> 
> David wants a comment from the x86 maintainers.

Well, I guess the 'xen: ...' title made us all to skip it 
and then it was all just shouting at us within a Xen thread 
we never read? :-)

You could change the title to something more exciting next 
time around.

Thanks,

	Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/x86/syscalls/Makefile b/arch/x86/syscalls/Makefile
index 3323c27..a55abb9 100644
--- a/arch/x86/syscalls/Makefile
+++ b/arch/x86/syscalls/Makefile
@@ -19,6 +19,9 @@  quiet_cmd_syshdr = SYSHDR  $@
 quiet_cmd_systbl = SYSTBL  $@
       cmd_systbl = $(CONFIG_SHELL) '$(systbl)' $< $@
 
+quiet_cmd_hypercalls = HYPERCALLS $@
+      cmd_hypercalls = $(CONFIG_SHELL) '$<' $@ $(filter-out $<,$^)
+
 syshdr_abi_unistd_32 := i386
 $(uapi)/unistd_32.h: $(syscall32) $(syshdr)
 	$(call if_changed,syshdr)
@@ -47,10 +50,16 @@  $(out)/syscalls_32.h: $(syscall32) $(systbl)
 $(out)/syscalls_64.h: $(syscall64) $(systbl)
 	$(call if_changed,systbl)
 
+$(out)/xen-hypercalls.h: $(srctree)/scripts/xen-hypercalls.sh
+	$(call if_changed,hypercalls)
+
+$(out)/xen-hypercalls.h: $(srctree)/include/xen/interface/xen*.h
+
 uapisyshdr-y			+= unistd_32.h unistd_64.h unistd_x32.h
 syshdr-y			+= syscalls_32.h
 syshdr-$(CONFIG_X86_64)		+= unistd_32_ia32.h unistd_64_x32.h
 syshdr-$(CONFIG_X86_64)		+= syscalls_64.h
+syshdr-$(CONFIG_XEN)		+= xen-hypercalls.h
 
 targets	+= $(uapisyshdr-y) $(syshdr-y)
 
diff --git a/scripts/xen-hypercalls.sh b/scripts/xen-hypercalls.sh
new file mode 100644
index 0000000..676d922
--- /dev/null
+++ b/scripts/xen-hypercalls.sh
@@ -0,0 +1,12 @@ 
+#!/bin/sh
+out="$1"
+shift
+in="$@"
+
+for i in $in; do
+	eval $CPP $LINUXINCLUDE -dD -imacros "$i" -x c /dev/null
+done | \
+awk '$1 == "#define" && $2 ~ /__HYPERVISOR_[a-z][a-z_0-9]*/ { v[$3] = $2 }
+	END {   print "/* auto-generated by scripts/xen-hypercall.sh */"
+		for (i in v) if (!(v[i] in v))
+			print "HYPERCALL("substr(v[i], 14)")"}' | sort -u >$out