Re: [Xen-devel] [PATCH 1/4] xen: build infrastructure for generating hypercall depending symbols

2014-12-16 Thread Juergen Gross

On 12/15/2014 12:38 PM, David Vrabel wrote:

On 11/12/14 18:04, 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.


Does arm and arm64 need something similar?  If so are the tools here
suitable for them?


I don't think arm* needs this. But in case it does, the tools would
support arm as well.


Juergen




--- a/arch/x86/syscalls/Makefile
+++ b/arch/x86/syscalls/Makefile


Why are these changes here and not in arch/x86/xen/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


The generated header should end up in asm/xen/


--- /dev/null
+++ b/scripts/xen-hypercalls.sh
@@ -0,0 +1,11 @@
+#!/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 {for (i in v) if (!(v[i] in v))
+   print HYPERCALL(substr(v[i], 14))}' | sort -u $out


Include a comment in the generated output saying what generated it. e.g.,

/* auto-generated by scripts/xen-hypercall.sh */

David

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/




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


Re: [Xen-devel] [PATCH 1/4] xen: build infrastructure for generating hypercall depending symbols

2014-12-15 Thread David Vrabel
On 11/12/14 18:04, 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.

Does arm and arm64 need something similar?  If so are the tools here
suitable for them?

 --- a/arch/x86/syscalls/Makefile
 +++ b/arch/x86/syscalls/Makefile

Why are these changes here and not in arch/x86/xen/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

The generated header should end up in asm/xen/

 --- /dev/null
 +++ b/scripts/xen-hypercalls.sh
 @@ -0,0 +1,11 @@
 +#!/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 {for (i in v) if (!(v[i] in v))
 + print HYPERCALL(substr(v[i], 14))}' | sort -u $out

Include a comment in the generated output saying what generated it. e.g.,

/* auto-generated by scripts/xen-hypercall.sh */

David


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


Re: [Xen-devel] [PATCH 1/4] xen: build infrastructure for generating hypercall depending symbols

2014-12-15 Thread Jan Beulich
 On 15.12.14 at 12:38, david.vra...@citrix.com wrote:
 On 11/12/14 18:04, Juergen Gross wrote:
 --- a/arch/x86/syscalls/Makefile
 +++ b/arch/x86/syscalls/Makefile
 
 Why are these changes here and not in arch/x86/xen/Makefile?

Because this needs to be done in a step that (afaict) has no hook
in the Xen-specific Makefile.

 @@ -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
 
 The generated header should end up in asm/xen/

Why is generated/asm/ not good enough?

Jan


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


Re: [Xen-devel] [PATCH 1/4] xen: build infrastructure for generating hypercall depending symbols

2014-12-14 Thread Juergen Gross

On 12/12/2014 11:48 PM, Boris Ostrovsky wrote:

On 12/11/2014 01:04 PM, Juergen Gross wrote:

diff --git a/scripts/xen-hypercalls.sh b/scripts/xen-hypercalls.sh
new file mode 100644
index 000..e6447b7
--- /dev/null
+++ b/scripts/xen-hypercalls.sh
@@ -0,0 +1,11 @@
+#!/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 {for (i in v) if (!(v[i] in v))
+print HYPERCALL(substr(v[i], 14))}' | sort -u $out


Why do you 'sort -u'? Do you expect multiple definitions of the same
hypercall?


Paranoia related to the use of wildcards for files scanned:

$(srctree)/include/xen/interface/xen*.h


Juergen

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


Re: [Xen-devel] [PATCH 1/4] xen: build infrastructure for generating hypercall depending symbols

2014-12-12 Thread Boris Ostrovsky

On 12/11/2014 01:04 PM, Juergen Gross wrote:

diff --git a/scripts/xen-hypercalls.sh b/scripts/xen-hypercalls.sh
new file mode 100644
index 000..e6447b7
--- /dev/null
+++ b/scripts/xen-hypercalls.sh
@@ -0,0 +1,11 @@
+#!/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 {for (i in v) if (!(v[i] in v))
+   print HYPERCALL(substr(v[i], 14))}' | sort -u $out


Why do you 'sort -u'? Do you expect multiple definitions of the same 
hypercall?


-boris

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