* Re: [PATCH v3 00/11] xen: Initial kexec/kdump implementation
@ 2012-12-27 23:40 Daniel Kiper
0 siblings, 0 replies; 8+ messages in thread
From: Daniel Kiper @ 2012-12-27 23:40 UTC (permalink / raw)
To: hpa-YMNOUZJC4hwAvxtiuMwx3w
Cc: xen-devel-GuqFBffKawuULHF6PoxzQEEOCMrvLtNR,
konrad.wilk-QHcLZuEGTsvQT0dZR+AlfA,
andrew.cooper3-Sxgqhf6Nn4DQT0dZR+AlfA, x86-DgEjT+Ai2ygdnm+yROfE0A,
kexec-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
mingo-H+wXaHxf7aLQT0dZR+AlfA, ebiederm-aS9lmoZGLiVWk0Htik3J/w,
jbeulich-IBi9RG/b67k, maxim.uvarov-QHcLZuEGTsvQT0dZR+AlfA,
tglx-hfZtesqFncYOwBW4kG4KsQ, vgoyal-H+wXaHxf7aLQT0dZR+AlfA
> On 12/26/2012 06:18 PM, Daniel Kiper wrote:
> > Hi,
> >
> > This set of patches contains initial kexec/kdump implementation for Xen v3.
> > Currently only dom0 is supported, however, almost all infrustructure
> > required for domU support is ready.
> >
> > Jan Beulich suggested to merge Xen x86 assembler code with baremetal x86 code.
> > This could simplify and reduce a bit size of kernel code. However, this solution
> > requires some changes in baremetal x86 code. First of all code which establishes
> > transition page table should be moved back from machine_kexec_$(BITS).c to
> > relocate_kernel_$(BITS).S. Another important thing which should be changed in that
> > case is format of page_list array. Xen kexec hypercall requires to alternate physical
> > addresses with virtual ones. These and other required stuff have not been done in that
> > version because I am not sure that solution will be accepted by kexec/kdump maintainers.
> > I hope that this email spark discussion about that topic.
>
> I want a detailed list of the constraints that this assumes and
> therefore imposes on the native implementation as a result of this. We
> have had way too many patches where Xen PV hacks effectively nailgun
> arbitrary, and sometimes poor, design decisions in place and now we
> can't fix them.
OK but now I think that we should leave this discussion
until all details regarding kexec/kdump generic code
will be agreed. Sorry for that.
Daniel
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 00/11] xen: Initial kexec/kdump implementation
@ 2012-12-28 0:53 Daniel Kiper
0 siblings, 0 replies; 8+ messages in thread
From: Daniel Kiper @ 2012-12-28 0:53 UTC (permalink / raw)
To: ebiederm
Cc: xen-devel, linux-kernel, konrad.wilk, andrew.cooper3, hpa, kexec,
x86, virtualization, mingo, jbeulich, maxim.uvarov, tglx, vgoyal
> Andrew Cooper <andrew.cooper3@citrix.com> writes:
>
> > On 27/12/2012 07:53, Eric W. Biederman wrote:
> >> The syscall ABI still has the wrong semantics.
> >>
> >> Aka totally unmaintainable and umergeable.
> >>
> >> The concept of domU support is also strange. What does domU support even mean, when the dom0 > support is loading a kernel to pick up Xen when Xen falls over.
> >
> > There are two requirements pulling at this patch series, but I agree
> > that we need to clarify them.
>
> It probably make sense to split them apart a little even.
>
> > When dom0 loads a crash kernel, it is loading one for Xen to use. As a
> > dom0 crash causes a Xen crash, having dom0 set up a kdump kernel for
> > itself is completely useless. This ability is present in "classic Xen
> > dom0" kernels, but the feature is currently missing in PVOPS.
>
> > Many cloud customers and service providers want the ability for a VM
> > administrator to be able to load a kdump/kexec kernel within a
> > domain[1]. This allows the VM administrator to take more proactive
> > steps to isolate the cause of a crash, the state of which is most likely
> > discarded while tearing down the domain. The result being that as far
> > as Xen is concerned, the domain is still alive, while the kdump
> > kernel/environment can work its usual magic. I am not aware of any
> > feature like this existing in the past.
>
> Which makes domU support semantically just the normal kexec/kdump
> support. Got it.
To some extent. It is true on HVM and PVonHVM guests. However,
PV guests requires a bit different kexec/kdump implementation
than plain kexec/kdump. Proposed firmware support has almost
all required features. PV guest specific features (a few) will
be added later (after agreeing generic firmware support which
is sufficient at least for dom0).
It looks that I should replace domU by PV guest in patch description.
> The point of implementing domU is for those times when the hypervisor
> admin and the kernel admin are different.
Right.
> For domU support modifying or adding alternate versions of
> machine_kexec.c and relocate_kernel.S to add paravirtualization support
> make sense.
It is not sufficient. Please look above.
> There is the practical argument that for implementation efficiency of
> crash dumps it would be better if that support came from the hypervisor
> or the hypervisor environment. But this gets into the practical reality
I am thinking about that.
> that the hypervisor environment does not do that today. Furthermore
> kexec all by itself working in a paravirtualized environment under Xen
> makes sense.
>
> domU support is what Peter was worrying about for cleanliness, and
> we need some x86 backend ops there, and generally to be careful.
As I know we do not need any additional pv_ops stuff
if we place all needed things in kexec firmware support.
Daniel
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 00/11] xen: Initial kexec/kdump implementation
@ 2012-12-27 2:18 Daniel Kiper
2012-12-27 4:02 ` H. Peter Anvin
0 siblings, 1 reply; 8+ messages in thread
From: Daniel Kiper @ 2012-12-27 2:18 UTC (permalink / raw)
To: andrew.cooper3-Sxgqhf6Nn4DQT0dZR+AlfA,
ebiederm-aS9lmoZGLiVWk0Htik3J/w, hpa-YMNOUZJC4hwAvxtiuMwx3w,
jbeulich-IBi9RG/b67k, konrad.wilk-QHcLZuEGTsvQT0dZR+AlfA,
maxim.uvarov-QHcLZuEGTsvQT0dZR+AlfA, mingo-H+wXaHxf7aLQT0dZR+AlfA,
tglx-hfZtesqFncYOwBW4kG4KsQ, vgoyal-H+wXaHxf7aLQT0dZR+AlfA,
x86-DgEjT+Ai2ygdnm+yROfE0A,
kexec-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
linux-kernel-u79uwXL29TY76Z2rM5mHXA,
virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA,
xen-devel-GuqFBffKawuULHF6PoxzQEEOCMrvLtNR
Hi,
This set of patches contains initial kexec/kdump implementation for Xen v3.
Currently only dom0 is supported, however, almost all infrustructure
required for domU support is ready.
Jan Beulich suggested to merge Xen x86 assembler code with baremetal x86 code.
This could simplify and reduce a bit size of kernel code. However, this solution
requires some changes in baremetal x86 code. First of all code which establishes
transition page table should be moved back from machine_kexec_$(BITS).c to
relocate_kernel_$(BITS).S. Another important thing which should be changed in that
case is format of page_list array. Xen kexec hypercall requires to alternate physical
addresses with virtual ones. These and other required stuff have not been done in that
version because I am not sure that solution will be accepted by kexec/kdump maintainers.
I hope that this email spark discussion about that topic.
Daniel
arch/x86/Kconfig | 3 +
arch/x86/include/asm/kexec.h | 10 +-
arch/x86/include/asm/xen/hypercall.h | 6 +
arch/x86/include/asm/xen/kexec.h | 79 ++++
arch/x86/kernel/machine_kexec_64.c | 12 +-
arch/x86/kernel/vmlinux.lds.S | 7 +-
arch/x86/xen/Kconfig | 1 +
arch/x86/xen/Makefile | 3 +
arch/x86/xen/enlighten.c | 11 +
arch/x86/xen/kexec.c | 150 +++++++
arch/x86/xen/machine_kexec_32.c | 226 +++++++++++
arch/x86/xen/machine_kexec_64.c | 318 +++++++++++++++
arch/x86/xen/relocate_kernel_32.S | 323 +++++++++++++++
arch/x86/xen/relocate_kernel_64.S | 309 ++++++++++++++
drivers/xen/sys-hypervisor.c | 42 ++-
include/linux/kexec.h | 26 ++-
include/xen/interface/xen.h | 33 ++
kernel/Makefile | 1 +
kernel/kexec-firmware.c | 743 ++++++++++++++++++++++++++++++++++
kernel/kexec.c | 46 ++-
20 files changed, 2331 insertions(+), 18 deletions(-)
Daniel Kiper (11):
kexec: introduce kexec firmware support
x86/kexec: Add extra pointers to transition page table PGD, PUD, PMD and PTE
xen: Introduce architecture independent data for kexec/kdump
x86/xen: Introduce architecture dependent data for kexec/kdump
x86/xen: Register resources required by kexec-tools
x86/xen: Add i386 kexec/kdump implementation
x86/xen: Add x86_64 kexec/kdump implementation
x86/xen: Add kexec/kdump Kconfig and makefile rules
x86/xen/enlighten: Add init and crash kexec/kdump hooks
drivers/xen: Export vmcoreinfo through sysfs
x86: Add Xen kexec control code size check to linker script
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH v3 00/11] xen: Initial kexec/kdump implementation
2012-12-27 2:18 Daniel Kiper
@ 2012-12-27 4:02 ` H. Peter Anvin
2012-12-27 7:53 ` Eric W. Biederman
0 siblings, 1 reply; 8+ messages in thread
From: H. Peter Anvin @ 2012-12-27 4:02 UTC (permalink / raw)
To: Daniel Kiper
Cc: xen-devel, konrad.wilk, andrew.cooper3, x86, kexec, linux-kernel,
virtualization, mingo, ebiederm, jbeulich, maxim.uvarov, tglx,
vgoyal
On 12/26/2012 06:18 PM, Daniel Kiper wrote:
> Hi,
>
> This set of patches contains initial kexec/kdump implementation for Xen v3.
> Currently only dom0 is supported, however, almost all infrustructure
> required for domU support is ready.
>
> Jan Beulich suggested to merge Xen x86 assembler code with baremetal x86 code.
> This could simplify and reduce a bit size of kernel code. However, this solution
> requires some changes in baremetal x86 code. First of all code which establishes
> transition page table should be moved back from machine_kexec_$(BITS).c to
> relocate_kernel_$(BITS).S. Another important thing which should be changed in that
> case is format of page_list array. Xen kexec hypercall requires to alternate physical
> addresses with virtual ones. These and other required stuff have not been done in that
> version because I am not sure that solution will be accepted by kexec/kdump maintainers.
> I hope that this email spark discussion about that topic.
>
I want a detailed list of the constraints that this assumes and
therefore imposes on the native implementation as a result of this. We
have had way too many patches where Xen PV hacks effectively nailgun
arbitrary, and sometimes poor, design decisions in place and now we
can't fix them.
-hpa
--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel. I don't speak on their behalf.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 00/11] xen: Initial kexec/kdump implementation
2012-12-27 4:02 ` H. Peter Anvin
@ 2012-12-27 7:53 ` Eric W. Biederman
2012-12-27 14:18 ` Andrew Cooper
0 siblings, 1 reply; 8+ messages in thread
From: Eric W. Biederman @ 2012-12-27 7:53 UTC (permalink / raw)
To: H. Peter Anvin, Daniel Kiper
Cc: xen-devel, konrad.wilk, andrew.cooper3, x86, kexec, linux-kernel,
virtualization, mingo, jbeulich, maxim.uvarov, tglx, vgoyal
The syscall ABI still has the wrong semantics.
Aka totally unmaintainable and umergeable.
The concept of domU support is also strange. What does domU support even mean, when the dom0 support is loading a kernel to pick up Xen when Xen falls over.
I expect a lot of decisions about what code can be shared and what code can't is going to be driven by the simple question what does the syscall mean.
Sharing machine_kexec.c and relocate_kernel.S does not make much sense to me when what you are doing is effectively passing your arguments through to the Xen version of kexec.
Either Xen has it's own version of those routines or I expect the Xen version of kexec is buggy. I can't imagine what sharing that code would mean. By the same token I can't any need to duplicate the code either.
Furthermore since this is just passing data from one version of the syscall to another I expect you can share the majority of the code across all architectures that implement Xen. The only part I can see being arch specific is the Xen syscall stub.
With respect to the proposed semantics of silently giving the kexec system call different meaning when running under Xen,
/sbin/kexec has to act somewhat differently when loading code into the Xen hypervisor so there is no point not making that explicit in the ABI.
Eric
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 00/11] xen: Initial kexec/kdump implementation
2012-12-27 7:53 ` Eric W. Biederman
@ 2012-12-27 14:18 ` Andrew Cooper
2012-12-27 18:02 ` Eric W. Biederman
[not found] ` <50DC58C4.3000307-Sxgqhf6Nn4DQT0dZR+AlfA@public.gmane.org>
0 siblings, 2 replies; 8+ messages in thread
From: Andrew Cooper @ 2012-12-27 14:18 UTC (permalink / raw)
To: Eric W. Biederman
Cc: x86@kernel.org, konrad.wilk@oracle.com, Daniel Kiper,
H. Peter Anvin, kexec@lists.infradead.org,
linux-kernel@vger.kernel.org,
virtualization@lists.linux-foundation.org, mingo@redhat.com,
jbeulich@suse.com, maxim.uvarov@oracle.com, tglx@linutronix.de,
xen-devel@lists.xensource.com, vgoyal@redhat.com
On 27/12/2012 07:53, Eric W. Biederman wrote:
> The syscall ABI still has the wrong semantics.
>
> Aka totally unmaintainable and umergeable.
>
> The concept of domU support is also strange. What does domU support even mean, when the dom0 support is loading a kernel to pick up Xen when Xen falls over.
There are two requirements pulling at this patch series, but I agree
that we need to clarify them.
When dom0 loads a crash kernel, it is loading one for Xen to use. As a
dom0 crash causes a Xen crash, having dom0 set up a kdump kernel for
itself is completely useless. This ability is present in "classic Xen
dom0" kernels, but the feature is currently missing in PVOPS.
Many cloud customers and service providers want the ability for a VM
administrator to be able to load a kdump/kexec kernel within a
domain[1]. This allows the VM administrator to take more proactive
steps to isolate the cause of a crash, the state of which is most likely
discarded while tearing down the domain. The result being that as far
as Xen is concerned, the domain is still alive, while the kdump
kernel/environment can work its usual magic. I am not aware of any
feature like this existing in the past.
~Andrew
[1] http://lists.xen.org/archives/html/xen-devel/2012-11/msg01274.html
>
> I expect a lot of decisions about what code can be shared and what code can't is going to be driven by the simple question what does the syscall mean.
>
> Sharing machine_kexec.c and relocate_kernel.S does not make much sense to me when what you are doing is effectively passing your arguments through to the Xen version of kexec.
>
> Either Xen has it's own version of those routines or I expect the Xen version of kexec is buggy. I can't imagine what sharing that code would mean. By the same token I can't any need to duplicate the code either.
>
> Furthermore since this is just passing data from one version of the syscall to another I expect you can share the majority of the code across all architectures that implement Xen. The only part I can see being arch specific is the Xen syscall stub.
>
> With respect to the proposed semantics of silently giving the kexec system call different meaning when running under Xen,
> /sbin/kexec has to act somewhat differently when loading code into the Xen hypervisor so there is no point not making that explicit in the ABI.
>
> Eric
>
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH v3 00/11] xen: Initial kexec/kdump implementation
2012-12-27 14:18 ` Andrew Cooper
@ 2012-12-27 18:02 ` Eric W. Biederman
[not found] ` <50DC58C4.3000307-Sxgqhf6Nn4DQT0dZR+AlfA@public.gmane.org>
1 sibling, 0 replies; 8+ messages in thread
From: Eric W. Biederman @ 2012-12-27 18:02 UTC (permalink / raw)
To: Andrew Cooper
Cc: x86@kernel.org, konrad.wilk@oracle.com, Daniel Kiper,
H. Peter Anvin, kexec@lists.infradead.org,
linux-kernel@vger.kernel.org,
virtualization@lists.linux-foundation.org, mingo@redhat.com,
jbeulich@suse.com, maxim.uvarov@oracle.com, tglx@linutronix.de,
xen-devel@lists.xensource.com, vgoyal@redhat.com
Andrew Cooper <andrew.cooper3@citrix.com> writes:
> On 27/12/2012 07:53, Eric W. Biederman wrote:
>> The syscall ABI still has the wrong semantics.
>>
>> Aka totally unmaintainable and umergeable.
>>
>> The concept of domU support is also strange. What does domU support even mean, when the dom0 support is loading a kernel to pick up Xen when Xen falls over.
>
> There are two requirements pulling at this patch series, but I agree
> that we need to clarify them.
It probably make sense to split them apart a little even.
> When dom0 loads a crash kernel, it is loading one for Xen to use. As a
> dom0 crash causes a Xen crash, having dom0 set up a kdump kernel for
> itself is completely useless. This ability is present in "classic Xen
> dom0" kernels, but the feature is currently missing in PVOPS.
> Many cloud customers and service providers want the ability for a VM
> administrator to be able to load a kdump/kexec kernel within a
> domain[1]. This allows the VM administrator to take more proactive
> steps to isolate the cause of a crash, the state of which is most likely
> discarded while tearing down the domain. The result being that as far
> as Xen is concerned, the domain is still alive, while the kdump
> kernel/environment can work its usual magic. I am not aware of any
> feature like this existing in the past.
Which makes domU support semantically just the normal kexec/kdump
support. Got it.
The point of implementing domU is for those times when the hypervisor
admin and the kernel admin are different.
For domU support modifying or adding alternate versions of
machine_kexec.c and relocate_kernel.S to add paravirtualization support
make sense.
There is the practical argument that for implementation efficiency of
crash dumps it would be better if that support came from the hypervisor
or the hypervisor environment. But this gets into the practical reality
that the hypervisor environment does not do that today. Furthermore
kexec all by itself working in a paravirtualized environment under Xen
makes sense.
domU support is what Peter was worrying about for cleanliness, and
we need some x86 backend ops there, and generally to be careful.
For dom0 support we need to extend the kexec_load system call, and
get it right.
When we are done I expect both dom0 and domU support of kexec to work
in dom0. I don't know if the normal kexec or kdump case will ever make
sense in dom0 but there is no reason for that case to be broken.
> ~Andrew
>
> [1] http://lists.xen.org/archives/html/xen-devel/2012-11/msg01274.html
Eric
^ permalink raw reply [flat|nested] 8+ messages in thread[parent not found: <50DC58C4.3000307-Sxgqhf6Nn4DQT0dZR+AlfA@public.gmane.org>]
* Re: [PATCH v3 00/11] xen: Initial kexec/kdump implementation
[not found] ` <50DC58C4.3000307-Sxgqhf6Nn4DQT0dZR+AlfA@public.gmane.org>
@ 2013-01-02 15:27 ` Ian Campbell
0 siblings, 0 replies; 8+ messages in thread
From: Ian Campbell @ 2013-01-02 15:27 UTC (permalink / raw)
To: Andrew Cooper
Cc: xen-devel-GuqFBffKawuULHF6PoxzQEEOCMrvLtNR@public.gmane.org,
konrad.wilk-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org, Daniel Kiper,
x86-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
kexec-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, Eric W. Biederman,
jbeulich-IBi9RG/b67k@public.gmane.org, H. Peter Anvin,
maxim.uvarov-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org,
tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org,
vgoyal-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
On Thu, 2012-12-27 at 14:18 +0000, Andrew Cooper wrote:
> Many cloud customers and service providers want the ability for a VM
> administrator to be able to load a kdump/kexec kernel within a
> domain[1]. This allows the VM administrator to take more proactive
> steps to isolate the cause of a crash, the state of which is most likely
> discarded while tearing down the domain. The result being that as far
> as Xen is concerned, the domain is still alive, while the kdump
> kernel/environment can work its usual magic. I am not aware of any
> feature like this existing in the past.
I have a feeling that some versions of the classic-Xen port supported
domU kexec as well. Certainly there was some work on that back in 2005,
although I can't see much evidence that that attempt ever went anywhere
so maybe I'm imagining things.
It's possible that I'm confusing domU kexec support with support for
domU kexec in some dom0 kernels. That was/is used to support "kexec"
from a PV bootloader into the real kernel (which looks to the host a lot
like a domU kexec would).
Ian.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2013-01-02 15:27 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-27 23:40 [PATCH v3 00/11] xen: Initial kexec/kdump implementation Daniel Kiper
-- strict thread matches above, loose matches on Subject: below --
2012-12-28 0:53 Daniel Kiper
2012-12-27 2:18 Daniel Kiper
2012-12-27 4:02 ` H. Peter Anvin
2012-12-27 7:53 ` Eric W. Biederman
2012-12-27 14:18 ` Andrew Cooper
2012-12-27 18:02 ` Eric W. Biederman
[not found] ` <50DC58C4.3000307-Sxgqhf6Nn4DQT0dZR+AlfA@public.gmane.org>
2013-01-02 15:27 ` Ian Campbell
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).