|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCHv9 0/9] Xen: extend kexec hypercall for use with pv-ops kernels
On 31/10/2013 16:59, Don Slutz wrote:
> On 10/30/13 12:57, David Vrabel wrote:
>> On 21/10/13 21:20, Daniel Kiper wrote:
>>> On Mon, Oct 21, 2013 at 01:56:09PM +0100, David Vrabel wrote:
>>>> On 21/10/13 13:19, Daniel Kiper wrote:
>>>>> On Sat, Oct 19, 2013 at 12:14:24AM +0100, David Vrabel wrote:
>>>>>> 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
> I get the same thing.
>>>>>> The appended patch should fix this crash which only occurs if there's an
>>>>>> error in do_kimage_alloc().
>>>>> Patch had wrapped lines. I hope that I fixed it properly.
>>>>> I cannot load panic kernel. kexec fails with following message:
> My version of this patch is attached (0001...). It has both crashed
> right away and not:
>
> (XEN) [2013-10-30 21:26:39] ----[ Xen-4.4-unstable x86_64 debug=y
> Not tainted ]----
> (XEN) [2013-10-30 21:26:39] CPU: 7
> (XEN) [2013-10-30 21:26:39] RIP: e008:[<ffff82d08012fd72>]
> xmem_pool_free+0x6f/0x2e9
Looks like heap corruption. I'll look into this.
>>>>> kexec_load failed: Cannot assign requested address
>>>> This is -EADDRINVALID which means one of
>>>>
>>>> a) the entry point isn't within a segment.
>>>> b) one of the segments is not page aligned.
>>>> c) one of the segments is not within the crash region.
>>>>
>>>> But the segments kexec has constructed all looked fine to me (and
>>>> similar to the segments I see).
> I have tracked this down to in kexec-tools:
>
> + if (info->kexec_flags & KEXEC_ON_CRASH) {
> + set_xen_guest_handle(xen_segs[s].buf.h, HYPERCALL_BUFFER_NULL);
> + xen_segs[s].buf_size = 0;
> + xen_segs[s].dest_maddr = info->backup_src_start;
> + xen_segs[s].dest_size = info->backup_src_size;
> + nr_segments++;
> + }
>
> Which in some cases passes the 1st e820 line which for me is:
>
> (XEN) Xen-e820 RAM map:
> (XEN) 0000000000000000 - 000000000009b800 (usable)
> (XEN) 000000000009b800 - 00000000000a0000 (reserved)
> (XEN) 00000000000e0000 - 0000000000100000 (reserved)
> (XEN) 0000000000100000 - 00000000bf63f000 (usable)
> ...
>
> 000000000009b800 is not page aligned and so the test:
>
> if ( (mstart & ~PAGE_MASK) || (mend & ~PAGE_MASK) )
> goto out;
>
> Fails.
>
> A possible fix is attached as (0002...) this does allow me to get into
> the crash kernel.
Thanks for tracking this down. This should be fixed in the tools by
correctly aligning that segment.
David
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |