From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Jan Beulich <JBeulich@suse.com>
Cc: Keir Fraser <keir@xen.org>,
ross.lagerwall@citrix.com,
Andrew Cooper <andrew.cooper3@citrix.com>,
mpohlack@amazon.de, Julien Grall <julien.grall@arm.com>,
Stefano Stabellini <stefano.stabellini@citrix.com>,
sasha.levin@oracle.com, xen-devel@lists.xenproject.org
Subject: Re: [PATCH v6 09/24] xsplice: Implement payload loading
Date: Mon, 11 Apr 2016 14:21:55 -0400 [thread overview]
Message-ID: <20160411182155.GA1992@char.us.oracle.com> (raw)
In-Reply-To: <570BEC3D02000078000E6436@prv-mh.provo.novell.com>
On Mon, Apr 11, 2016 at 11:26:05AM -0600, Jan Beulich wrote:
> >>> On 11.04.16 at 19:08, <konrad.wilk@oracle.com> wrote:
> > If the system admin continously tried to unload and load the patchset
> > then we certainly would spam.
> >
> > But the 'loading' is (or ought to) be a single event. The applying
> > or reverting may be done more often.
> >
> > As such I would say that the operations that are tied to apply/reverting
> > should go through printk - to at least leave breadcrumbs if things
> > fall apart. I would say:
> >
> > printk(XENLOG_ERR XSPLICE "%s: unable to get cpu_maps lock!\n",
> > printk(XENLOG_ERR XSPLICE "%s: Timed out on %s semaphore %u/%u\n",
> > printk(XENLOG_ERR XSPLICE "%s: CPU%u - unable to get cpu_maps lock!\n",
> > printk(XENLOG_INFO XSPLICE "%s finished %s with rc=%d\n",
> > printk(XENLOG_INFO XSPLICE ": build-id: %*phN\n", len, binary_id);
> > dprintk(XENLOG_DEBUG, XSPLICE "%s: Applying %u functions.\n",
> > dprintk(XENLOG_DEBUG, XSPLICE "%s: Reverting.\n", data->name);
> > dprintk(XENLOG_DEBUG, XSPLICE "%s: timeout is %"PRI_stime"ms\n",
> > dprintk(XENLOG_DEBUG, XSPLICE "%s: CPU%u - IPIing the other %u CPUs\n",
> >
> > Should be come printk. And make them INFO (except on errors - they should be
> > ERR).
>
> Especially for the last one I don't see what use this has outside of
> debugging activities. For the others a primary question is: Can any
True, last one is very much debug.
> of these occur more than once for a single operation (hypercall)?
The apply/replace hypercall can
dprintk(XENLOG_DEBUG, XSPLICE "%s: timeout is %"PRI_stime"ms\n",
dprintk(XENLOG_DEBUG, XSPLICE "%s: Applying %u functions.\n",
printk(XENLOG_INFO XSPLICE "%s finished %s with rc=%d\n",
The replace can trigger a lot of "Reverting".. And one "Applying"
The uploading can trigger tons of them if payload is buggy.
The 'get' and 'list' are silent.
>
> > Then comes the question of payloads loading. In the fields all
> > the dprintk are gone - and that is exactly where the payloads would
> > be used. And that is the only _way_ to actually test the payload. But
> > if you don't have dprintk and something goes wrong you only get -EINVAL.
> >
> > As such I would think that all of the dprintk that deal with the payload
> > should be made printk. So these:
> >
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Unsupported ELF Machine type!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: SHT_REL relocation unsupported\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Section relative header is corrupted!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Relative entry %u in %s is past end!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Relative symbol wants symbol@%u which is past end!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: No WX sections!\n", elf->name);
> > + dprintk(XENLOG_DEBUG, XSPLICE "%s: Loaded %s at 0x%p\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Wrong size of .xsplice.funcs!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Wrong version (%u). Expected %d!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Address or size fields are zero!\n",
> > + dprintk(XENLOG_DEBUG, XSPLICE "%s: Resolved old address %s => %p\n",
> > + dprintk(XENLOG_DEBUG, XSPLICE "%s: Already loaded as %s!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Wrong size of .bug_frames.%u!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Wrong size of .alt_instr (exp:%lu vs %lu)!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s Alt patching outside payload: 0x%lx!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Wrong size of .ex_table (exp:%lu vs %lu)!\n",
> > + dprintk(XENLOG_DEBUG, XSPLICE "%s: new symbol %s\n",
> > + dprintk(XENLOG_DEBUG, XSPLICE "%s: overriding symbol %s\n",
> > + dprintk(XENLOG_ERR, "%s%s: check against %s build-id failed!\n",
> > + dprintk(XENLOG_ERR, "%s%s: can't unload. Top is %s!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Section table is past end of payload!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Section [%u] data is past end of payload!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Unsupported multiple symbol tables!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: No symbol table found!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Symbol table header is corrupted!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: String table section is corrupted\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Section string table is corrupted\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: shstrtab [%u] data is past end of payload!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Symbol [%u] data is past end of payload!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Unknown type=%#"PRIx16"\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Relative link of %s is incorrect (%d, expected=%d)\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Section header is bigger than payload!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Not an ELF payload!\n", elf->name);
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Invalid ELF payload!\n", elf->name);
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Section name idx is undefined!?\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Section name idx (%u) is past end of sections (%u)!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Too many (%u) sections!\n",
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Bogus e_shoff!\n", elf->name);
> > + dprintk(XENLOG_ERR, XSPLICE "%s: Section header size is %u! Expected %zu!?\n",
> >
> > Should be printk.
>
> I disagree - issues with the payload image should be diagnosed using
> user space tools. I.e. I'd rather question whether many of the above
> shouldn't go away altogether.
Lets wait with the deletion part. They will be useful when doing
the ARM part.
So all related to 'upload' should be dprintk.
>
> > Which would leave almost no dprintks in the code.
> >
> > but some of them are chatty.
> >
> > + dprintk(XENLOG_DEBUG, XSPLICE "%s: Loaded %s at 0x%p\n",
> > + dprintk(XENLOG_DEBUG, XSPLICE "%s: Resolved old address %s => %p\n",
> > + dprintk(XENLOG_DEBUG, XSPLICE "%s: new symbol %s\n",
> > + dprintk(XENLOG_DEBUG, XSPLICE "%s: overriding symbol %s\n",
> > + dprintk(XENLOG_DEBUG, XSPLICE "%s: Symbol resolved: %s => %#"PRIxElfAddr"(%s)\n",
> > + dprintk(XENLOG_DEBUG, XSPLICE "%s: Undefined symbol resolved: %s => %#"PRIxElfAddr"\n",
> > + dprintk(XENLOG_DEBUG, XSPLICE "%s: Absolute symbol: %s => %#"PRIxElfAddr"\n",
> >
> > and those could certainly be printk(XENLOG_DEBUG' perhaps? Or leave them as
> > dprintk?
>
> Afaic - leave as many dprintk() as possible.
OK, dprintk it is.
>
> Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2016-04-11 18:22 UTC|newest]
Thread overview: 85+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-07 3:49 [PATCH v6] xSplice v1 design and implementation Konrad Rzeszutek Wilk
2016-04-07 3:49 ` [PATCH v6 01/24] xsplice: Design document Konrad Rzeszutek Wilk
2016-04-07 16:34 ` Ian Jackson
2016-04-07 3:49 ` [PATCH v6 02/24] xen/xsplice: Hypervisor implementation of XEN_XSPLICE_op Konrad Rzeszutek Wilk
2016-04-07 14:47 ` Andrew Cooper
2016-04-08 18:30 ` Konrad Rzeszutek Wilk
2016-04-07 3:49 ` [PATCH v6 03/24] libxc: Implementation of XEN_XSPLICE_op in libxc Konrad Rzeszutek Wilk
2016-04-07 19:53 ` Andrew Cooper
2016-04-07 3:49 ` [PATCH v6 04/24] xen-xsplice: Tool to manipulate xsplice payloads Konrad Rzeszutek Wilk
2016-04-07 3:49 ` [PATCH v6 05/24] arm/x86: Use struct virtual_region to do bug, symbol, and (x86) exception tables lookup Konrad Rzeszutek Wilk
2016-04-07 20:12 ` Andrew Cooper
2016-04-08 15:30 ` Julien Grall
2016-04-07 3:49 ` [PATCH v6 06/24] x86: Alter nmi_callback_t typedef Konrad Rzeszutek Wilk
2016-04-07 16:35 ` Ian Jackson
2016-04-07 20:13 ` Andrew Cooper
2016-04-08 20:44 ` Konrad Rzeszutek Wilk
2016-04-07 3:49 ` [PATCH v6 07/24] arm/x86/vmap: Add vmalloc_type and vm_init_type Konrad Rzeszutek Wilk
2016-04-08 14:22 ` Andrew Cooper
2016-04-08 17:19 ` Jan Beulich
2016-04-09 1:10 ` Konrad Rzeszutek Wilk
2016-04-08 15:32 ` Julien Grall
2016-04-07 3:49 ` [PATCH v6 08/24] xsplice: Add helper elf routines Konrad Rzeszutek Wilk
2016-04-07 16:19 ` Ian Jackson
2016-04-07 17:23 ` Jan Beulich
2016-04-07 20:32 ` Andrew Cooper
2016-04-08 13:26 ` Ian Jackson
2016-04-07 20:43 ` Konrad Rzeszutek Wilk
2016-04-08 14:53 ` Andrew Cooper
2016-04-08 21:26 ` Konrad Rzeszutek Wilk
2016-04-08 22:10 ` Andrew Cooper
2016-04-08 22:48 ` Jan Beulich
2016-04-07 3:49 ` [PATCH v6 09/24] xsplice: Implement payload loading Konrad Rzeszutek Wilk
2016-04-08 15:31 ` Andrew Cooper
2016-04-08 21:10 ` Konrad Rzeszutek Wilk
2016-04-08 21:18 ` Jan Beulich
2016-04-08 22:45 ` Konrad Rzeszutek Wilk
2016-04-08 22:50 ` Jan Beulich
2016-04-09 0:37 ` Konrad Rzeszutek Wilk
2016-04-09 11:48 ` Konrad Rzeszutek Wilk
2016-04-11 15:53 ` Jan Beulich
2016-04-11 16:03 ` Konrad Rzeszutek Wilk
2016-04-11 16:34 ` Konrad Rzeszutek Wilk
2016-04-11 16:55 ` Jan Beulich
2016-04-11 17:08 ` Konrad Rzeszutek Wilk
2016-04-11 17:26 ` Jan Beulich
2016-04-11 18:21 ` Konrad Rzeszutek Wilk [this message]
2016-04-11 18:57 ` Konrad Rzeszutek Wilk
2016-04-08 15:35 ` Julien Grall
2016-04-07 3:49 ` [PATCH v6 10/24] xsplice: Implement support for applying/reverting/replacing patches Konrad Rzeszutek Wilk
2016-04-08 15:36 ` Julien Grall
2016-04-08 16:33 ` Andrew Cooper
2016-04-07 3:49 ` [PATCH v6 11/24] x86/xen_hello_world.xsplice: Test payload for patching 'xen_extra_version' Konrad Rzeszutek Wilk
2016-04-08 15:37 ` Julien Grall
2016-04-08 16:38 ` Andrew Cooper
2016-04-09 0:45 ` Konrad Rzeszutek Wilk
2016-04-07 3:49 ` [PATCH v6 12/24] xsplice, symbols: Implement symbol name resolution on address Konrad Rzeszutek Wilk
2016-04-08 16:55 ` Andrew Cooper
2016-04-07 3:49 ` [PATCH v6 13/24] x86, xsplice: Print payload's symbol name and payload name in backtraces Konrad Rzeszutek Wilk
2016-04-08 17:00 ` Andrew Cooper
2016-04-07 3:49 ` [PATCH v6 14/24] xsplice: Add support for bug frames Konrad Rzeszutek Wilk
2016-04-08 17:03 ` Andrew Cooper
2016-04-07 3:49 ` [PATCH v6 15/24] xsplice: Add support for exception tables Konrad Rzeszutek Wilk
2016-04-08 17:16 ` Andrew Cooper
2016-04-07 3:49 ` [PATCH v6 16/24] xsplice: Add support for alternatives Konrad Rzeszutek Wilk
2016-04-08 17:34 ` Andrew Cooper
2016-04-08 17:57 ` Jan Beulich
2016-04-07 3:49 ` [PATCH v6 17/24] build_id: Provide ld-embedded build-ids Konrad Rzeszutek Wilk
2016-04-08 15:39 ` Julien Grall
2016-04-08 18:07 ` Andrew Cooper
2016-04-08 19:34 ` Konrad Rzeszutek Wilk
2016-04-07 3:49 ` [PATCH v6 18/24] HYPERCALL_version_op: Add VERSION_build_id to retrieve build-id Konrad Rzeszutek Wilk
2016-04-08 18:07 ` Andrew Cooper
2016-04-07 3:49 ` [PATCH v6 19/24] libxl: info: Display build_id of the hypervisor using XEN_VERSION_build_id Konrad Rzeszutek Wilk
2016-04-07 3:49 ` [PATCH v6 20/24] xsplice: Print build_id in keyhandler and on bootup Konrad Rzeszutek Wilk
2016-04-08 18:12 ` Andrew Cooper
2016-04-07 3:49 ` [PATCH v6 21/24] xsplice: Stacking build-id dependency checking Konrad Rzeszutek Wilk
2016-04-08 18:19 ` Andrew Cooper
2016-04-09 1:43 ` Konrad Rzeszutek Wilk
2016-04-07 3:49 ` [PATCH v6 22/24] xsplice/xen_replace_world: Test-case for XSPLICE_ACTION_REPLACE Konrad Rzeszutek Wilk
2016-04-08 18:20 ` Andrew Cooper
2016-04-07 3:49 ` [PATCH v6 23/24] xsplice: Prevent duplicate payloads from being loaded Konrad Rzeszutek Wilk
2016-04-07 16:36 ` Ian Jackson
2016-04-08 18:21 ` Andrew Cooper
2016-04-07 3:49 ` [PATCH v6 24/24] MAINTAINERS/xsplice: Add myself and Ross as the maintainers Konrad Rzeszutek Wilk
2016-04-08 18:21 ` Andrew Cooper
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160411182155.GA1992@char.us.oracle.com \
--to=konrad.wilk@oracle.com \
--cc=JBeulich@suse.com \
--cc=andrew.cooper3@citrix.com \
--cc=julien.grall@arm.com \
--cc=keir@xen.org \
--cc=mpohlack@amazon.de \
--cc=ross.lagerwall@citrix.com \
--cc=sasha.levin@oracle.com \
--cc=stefano.stabellini@citrix.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.