|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen/common: Drop function calls for Xen compile/version information
On Tue, Jan 17, 2017 at 01:42:54PM -0500, Konrad Rzeszutek Wilk wrote:
> On Tue, Jan 17, 2017 at 06:16:36PM +0000, Andrew Cooper wrote:
> > On 17/01/17 18:05, Konrad Rzeszutek Wilk wrote:
> > > On Mon, Jan 16, 2017 at 01:04:09PM +0000, Andrew Cooper wrote:
> > >> The chageset/version/compile information is currently exported as a set
> > >> of
> > >> function calls into a separate translation unit, which is inefficient
> > >> for all
> > >> callers.
> > >>
> > >> Replace the function calls with externs pointing appropriately into
> > >> .rodata,
> > >> which allows all users to generate code referencing the data directly.
> > >>
> > >> No functional change, but causes smaller and more efficient compiled
> > >> code.
> > >>
> > >> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> > > Ah crud. That breaks the livepatch test-cases (they patch the
> > > xen_extra_version
> > > function).
> >
> > Lucky I haven't pushed it then, (although the livepatch build seems to
> > still work fine for me, despite this change.)
>
> make tests should fail.
(which is not by built by default as requested by Jan - but the
OSSTest test cases I am working would do this).
>
> >
> > > Are there some other code that can be modified that is reported
> > > by 'xl info' on which the test-cases can run (and reported easily?).
> >
> > Patch do_version() itself to return the same difference of information?
>
> Ugh. That is going to make the building of test-cases quite complex.
>
> I guess it can just do it and .. return only one value :-)
As in something like this (not compile tested):
diff --git a/xen/arch/x86/test/xen_hello_world_func.c
b/xen/arch/x86/test/xen_hello_world_func.c
index 2e4af9c..3572600 100644
--- a/xen/arch/x86/test/xen_hello_world_func.c
+++ b/xen/arch/x86/test/xen_hello_world_func.c
@@ -10,7 +10,7 @@
static unsigned long *non_canonical_addr = (unsigned long
*)0xdead000000000000ULL;
/* Our replacement function for xen_extra_version. */
-const char *xen_hello_world(void)
+const char *xen_version_hello_world(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
{
unsigned long tmp;
int rc;
@@ -21,7 +21,19 @@ const char *xen_hello_world(void)
rc = __get_user(tmp, non_canonical_addr);
BUG_ON(rc != -EFAULT);
- return "Hello World";
+ if ( cmd == XENVER_extraversion )
+ {
+ xen_extraversion_t extraversion = "Hello World";
+
+ if ( copy_to_guest(arg, extraversion, ARRAY_SIZE(extraversion)) )
+ return -EFAULT;
+ return 0;
+ }
+ /*
+ * Can't return -EPERM as certain subversions can't deal with negative
+ * values.
+ */
+ return 0;
}
That will make three of the test-patches work but not for the last
one - the NOP one (which needs to patch the _whole_ function).
Argh.
Is this patch of yours that neccessary? Could at least some of the
functions still exist?
Like
xen_minor_version() and xen_extra_verison() ?
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |