All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Vrabel <dvrabel@cantab.net>
To: Daniel Kiper <dkiper@net-space.pl>,
	David Vrabel <david.vrabel@citrix.com>
Cc: daniel.kiper@oracle.com, Keir Fraser <keir@xen.org>,
	Jan Beulich <jbeulich@suse.com>,
	xen-devel@lists.xen.org
Subject: Re: [PATCHv9 0/9] Xen: extend kexec hypercall for use with pv-ops kernels
Date: Sat, 19 Oct 2013 00:14:24 +0100	[thread overview]
Message-ID: <5261C0D0.4090606@cantab.net> (raw)
In-Reply-To: <20131018184031.GA12658@router-fw-old.local.net-space.pl>

On 18/10/2013 19:40, Daniel Kiper wrote:
> On Tue, Oct 08, 2013 at 05:55:01PM +0100, David Vrabel wrote:
>> The series (for Xen 4.4) improves the kexec hypercall by making Xen
>> responsible for loading and relocating the image.  This allows kexec
>> to be usable by pv-ops kernels and should allow kexec to be usable
>> from a HVM or PVH privileged domain.
> 
> I could not load panic image because Xen crashes in following way:
> 
> (XEN) ----[ Xen-4.4-unstable  x86_64  debug=y  Tainted:    C ]----
[...]
> (XEN) Xen call trace:
> (XEN)    [<ffff82d080114ef2>] kimage_free+0x67/0xd2
> (XEN)    [<ffff82d0801151f9>] do_kimage_alloc+0x29c/0x2f0
> (XEN)    [<ffff82d0801152fe>] kimage_alloc+0xb1/0xe6
> (XEN)    [<ffff82d0801144c0>] do_kexec_op_internal+0x68e/0x789
> (XEN)    [<ffff82d0801145c9>] do_kexec_op+0xe/0x12
> (XEN)    [<ffff82d0802268cb>] syscall_enter+0xeb/0x145

The appended patch should fix this crash which only occurs if there's an
error in do_kimage_alloc().

> Normal kernel could be loaded but when it is executed something
> crashes very early. Following message is displayed

Both normal and panic images work fine for me.  You're going to have to
provide more details.

David

8<---------------------------------
--- a/xen/common/kimage.c
+++ b/xen/common/kimage.c
@@ -179,7 +179,7 @@ static int do_kimage_alloc(struct kexec_image
**rimage, paddr_t entry,

page_to_maddr(image->control_code_page),

page_to_maddr(image->control_code_page));
     if ( result < 0 )
-        return result;
+        goto out;

     /* Add an empty indirection page. */
     image->entry_page = kimage_alloc_control_page(image, 0);
@@ -188,7 +188,7 @@ static int do_kimage_alloc(struct kexec_image
**rimage, paddr_t entry,
     result = machine_kexec_add_page(image,
page_to_maddr(image->entry_page),
                                     page_to_maddr(image->entry_page));
     if ( result < 0 )
-        return result;
+        goto out;

     image->head = page_to_maddr(image->entry_page);

@@ -510,15 +510,14 @@ static void kimage_free_entry(kimage_entry_t entry)
     free_domheap_page(page);
 }

-void kimage_free(struct kexec_image *image)
+static void kimage_free_all_entries(struct kexec_image *image)
 {
     kimage_entry_t *ptr, entry;
     kimage_entry_t ind = 0;

-    if ( !image )
+    if ( !image->head )
         return;

-    kimage_free_extra_pages(image);
     for_each_kimage_entry(image, ptr, entry)
     {
         if ( entry & IND_INDIRECTION )
@@ -537,8 +536,15 @@ void kimage_free(struct kexec_image *image)
     /* Free the final indirection page. */
     if ( ind & IND_INDIRECTION )
         kimage_free_entry(ind);
+}

-    /* Free the kexec control pages. */
+void kimage_free(struct kexec_image *image)
+{
+    if ( !image )
+        return;
+
+    kimage_free_extra_pages(image);
+    kimage_free_all_entries(image);
     kimage_free_page_list(&image->control_pages);
     xfree(image->segments);
     xfree(image);

  reply	other threads:[~2013-10-18 23:14 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-08 16:55 [PATCHv9 0/9] Xen: extend kexec hypercall for use with pv-ops kernels David Vrabel
2013-10-08 16:55 ` [PATCH 1/9] x86: give FIX_EFI_MPF its own fixmap entry David Vrabel
2013-10-08 16:55 ` [PATCH 2/9] kexec: add public interface for improved load/unload sub-ops David Vrabel
2013-10-08 16:55 ` [PATCH 3/9] kexec: add infrastructure for handling kexec images David Vrabel
2013-11-05 22:39   ` Don Slutz
2013-11-06  8:12     ` Jan Beulich
2013-10-08 16:55 ` [PATCH 4/9] kexec: extend hypercall with improved load/unload ops David Vrabel
2013-11-05 22:43   ` Don Slutz
2013-10-08 16:55 ` [PATCH 5/9] xen: kexec crash image when dom0 crashes David Vrabel
2013-10-08 16:55 ` [PATCH 6/9] libxc: add hypercall buffer arrays David Vrabel
2013-10-08 16:55 ` [PATCH 7/9] libxc: add API for kexec hypercall David Vrabel
2013-10-08 16:55 ` [PATCH 8/9] x86: check kexec relocation code fits in a page David Vrabel
2013-10-08 16:55 ` [PATCH 9/9] MAINTAINERS: Add KEXEC maintainer David Vrabel
2013-10-08 17:03 ` [PATCHv9 0/9] Xen: extend kexec hypercall for use with pv-ops kernels Andrew Cooper
2013-10-09 15:26 ` Daniel Kiper
2013-10-09 15:52   ` Andrew Cooper
2013-10-09 16:03   ` David Vrabel
2013-10-10 15:45     ` Daniel Kiper
2013-10-10 16:35       ` David Vrabel
2013-10-10 21:24         ` Daniel Kiper
2013-10-11  6:49           ` Jan Beulich
2013-10-11  8:58             ` Daniel Kiper
2013-10-11  9:56             ` David Vrabel
2013-10-11 11:15               ` Daniel Kiper
2013-10-11 14:06                 ` David Vrabel
2013-10-14 13:53                   ` Daniel Kiper
2013-10-14 14:14                     ` David Vrabel
2013-10-14 18:13                       ` Daniel Kiper
2013-10-16 21:09                         ` Daniel Kiper
2013-11-14 11:20                         ` Daniel Kiper
2013-11-14 11:27                           ` David Vrabel
2013-10-18 18:40 ` Daniel Kiper
2013-10-18 23:14   ` David Vrabel [this message]
2013-10-21 12:19     ` Daniel Kiper
2013-10-21 12:56       ` David Vrabel
2013-10-21 20:20         ` Daniel Kiper
2013-10-25  9:13           ` Daniel Kiper
2013-10-25 23:04             ` David Vrabel
2013-10-30 16:57           ` David Vrabel
2013-10-31 16:59             ` Don Slutz
2013-10-31 18:30               ` David Vrabel
2013-10-31 20:23                 ` Don Slutz
2013-10-31 22:21                 ` Daniel Kiper
2013-11-05 17:41                   ` Daniel Kiper
2013-11-05 18:01                     ` David Vrabel
2013-10-18 23:42   ` Andrew Cooper
2013-10-21  3:11 ` Xu, YongweiX
2013-10-21 10:21   ` David Vrabel
2013-10-21 12:26     ` David Vrabel

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=5261C0D0.4090606@cantab.net \
    --to=dvrabel@cantab.net \
    --cc=daniel.kiper@oracle.com \
    --cc=david.vrabel@citrix.com \
    --cc=dkiper@net-space.pl \
    --cc=jbeulich@suse.com \
    --cc=keir@xen.org \
    --cc=xen-devel@lists.xen.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.