64
Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and Xen Linux.Conf.Au, Sydney, Australia http://www.vergenet.net/linux/kexec/ Simon Horman (Horms) <[email protected]> Magnus Damm <[email protected]> VA Linux Systems Japan K.K. http://www.valinux.co.jp/en/ 18th January 2007 Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 1 / 34

Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

  • Upload
    others

  • View
    3

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Kexec: Soft-Reboot and Crash-Dump Analysisfor Linux and Xen

Linux.Conf.Au, Sydney, Australiahttp://www.vergenet.net/linux/kexec/

Simon Horman (Horms) <[email protected]>Magnus Damm <[email protected]>

VA Linux Systems Japan K.K.http://www.valinux.co.jp/en/

18th January 2007

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 1 / 34

Page 2: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

A Tale in Three Parts

Part I: Crash-Dump Analysis

Part II: Kexec

Part III: Port of Kexec to Xen

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 2 / 34

Page 3: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

A Tale in Three Parts

Part I: Crash-Dump Analysis

Part II: Kexec

Part III: Port of Kexec to Xen

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 2 / 34

Page 4: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

A Tale in Three Parts

Part I: Crash-Dump Analysis

Part II: Kexec

Part III: Port of Kexec to Xen

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 2 / 34

Page 5: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Part I

Crash-Dump Analysis

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 3 / 34

Page 6: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Crash-Dump Analysis

User-Space Core-Dump

When an application crashes it is useful to analyse the state of theprogramme at the time of the crashOperating systems provide a facility to dump the memory core ofapplicationsThe core can be analysed using tools such as gdb

Operating System Crash-Dump

When an operating system crashes it is also useful to analyse the stateof the system at the time of the crashThe difficulty arises because it is the operating system that wouldnaturally collect the memory dump, however it has crashed

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 4 / 34

Page 7: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Crash-Dump Analysis

User-Space Core-Dump

When an application crashes it is useful to analyse the state of theprogramme at the time of the crashOperating systems provide a facility to dump the memory core ofapplicationsThe core can be analysed using tools such as gdb

Operating System Crash-Dump

When an operating system crashes it is also useful to analyse the stateof the system at the time of the crashThe difficulty arises because it is the operating system that wouldnaturally collect the memory dump, however it has crashed

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 4 / 34

Page 8: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Who is Interested In It?

Enterprise Users

Want deep analysis of crashesAre willing to go to third parties for analysisBut they want to use vendor-supplied kernelsSo a standardised solution is needed

Kernel Developers

If end-users could collect crash dumps, it could be useful for kerneldevelopers to isolate bugs.The facility would need to be provided by distributions.Crash-Dump size may be a problem when transferring betweenend-users and kernel-developers

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 5 / 34

Page 9: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Who is Interested In It?

Enterprise Users

Want deep analysis of crashesAre willing to go to third parties for analysisBut they want to use vendor-supplied kernelsSo a standardised solution is needed

Kernel Developers

If end-users could collect crash dumps, it could be useful for kerneldevelopers to isolate bugs.The facility would need to be provided by distributions.Crash-Dump size may be a problem when transferring betweenend-users and kernel-developers

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 5 / 34

Page 10: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Some Crash-Dump Solutions for Linux

LKCD — Linux Kernel Crash Dumphttp://lkcd.sourceforge.net/

netdumphttp://www.redhat.com/support/wpapers/redhat/netdump/

diskdumphttp://sourceforge.net/projects/lkdump/

Mini Kernel Dumphttp://mkdump.sourceforge.net/

Kexec/Kdump

Full Disclosure: Mini Kernel Dump was developed in part by my employer, VA Linux Systems Japan K.K.

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 6 / 34

Page 11: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Part II

Kexec

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 7 / 34

Page 12: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Kexec

Kexec is a feature of the Linux kernel that allows a new kernel to runin place of the running kernel

Kernel kexecSecond

Kernel

It is named after exec(2), the system call which allows a process toreplace a running process

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 8 / 34

Page 13: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Motivation for Kexec

Allows rebooting to skip the BIOS and hardware initialisation

Some hardware has buggy BIOSes that do not allow reboot to occurreliablySome hardware takes a really long time to rebootRebooting using kexec can be really fast

Can be very useful for bootstrapping and rebooting in developmentenvironments.

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 9 / 34

Page 14: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Performing Kexec

The new kernel is loaded into the running kernel from user-spaceusing kexec-tool# kexec -l /boot/vmlinuz

The new kernel can then be kexeced using the same tool# kexec -e

Kexec is a method of warm or soft-booting machines

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 10 / 34

Page 15: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Kexec Flow

Purgatory

1. Kexec Load

Segments

Kernel ImageInitramfs / InitrdCommand LinePurgatory

Kernelkexec-toolFiles

Kernel ImageInitramfs / Initrd

Loadfile system

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 11 / 34

Page 16: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Kexec Flow

kexec−tool

2. Kexec Execute

Kernel

Point of

No Return

Purgatory SecondKernel

Segments

Kernel ImageInitramfs / InitrdCommand LinePurgatory

Boot Param

Kernel ImageInitramfs / InitrdCommand Line

Execute

Purgatory

1. Kexec Load

Segments

Kernel ImageInitramfs / InitrdCommand LinePurgatory

Kernelkexec-toolFiles

Kernel ImageInitramfs / Initrd

Loadfile system

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 12 / 34

Page 17: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Kdump

Kdump is an extension of kexec with allows a crash kernel to beexecuted in place of a running kernel if the running kernel panics

kdump Crash KernelKernel

crash

Kdump and kexec use separate kernel images,which may be loaded independently of each other

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 13 / 34

Page 18: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Kexec vs Kdump

Kexec

Uses (all) system memory as any booting kernel wouldThe second kernel runs when triggered by kexec-tool

Kdump

Runs the crash kernel in a reserved area of memory,so as to leave the panicked kernel’s memory untouchedfor forensic analysisThe crash kernel runs when the running kernel panics

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 14 / 34

Page 19: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Kdump Flow

Purgatory

1. Kdump Load

Segments

Kernel ImageInitramfs / InitrdCommand LinePurgatory

Kernelkexec-toolFiles

Kernel ImageInitramfs / Initrd

Loadfile system

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 15 / 34

Page 20: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Kdump Flow

Kernel

2. Kdump Execute

Kernel

Point of

No Return

Purgatory CrashKernel

Segments

Kernel ImageInitramfs / InitrdCommand LinePurgatory

Boot Param

Kernel ImageInitramfs / InitrdCommand Line

Execute

Panic!

Purgatory

1. Kdump Load

Segments

Kernel ImageInitramfs / InitrdCommand LinePurgatory

Kernelkexec-toolFiles

Kernel ImageInitramfs / Initrd

Loadfile system

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 16 / 34

Page 21: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Triggering Kdump

Usually triggered by the kernel on panic

But may be triggered from user-space (for testing purposes? :-)echo c > /proc/sysrq-trigger

sysrq−trigger Kernel

Point of

No Return

Purgatory CrashKernel

Segments

Kernel ImageInitramfs / InitrdCommand LinePurgatory

Boot Param

Kernel ImageInitramfs / InitrdCommand Line

Execute

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 17 / 34

Page 22: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Triggering Kdump

Usually triggered by the kernel on panic

But may be triggered from user-space (for testing purposes? :-)echo c > /proc/sysrq-trigger

sysrq−trigger Kernel

Point of

No Return

Purgatory CrashKernel

Segments

Kernel ImageInitramfs / InitrdCommand LinePurgatory

Boot Param

Kernel ImageInitramfs / InitrdCommand Line

Execute

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 17 / 34

Page 23: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

VMCore

Visible as /proc/vmcorefrom within a crash kernel run by kdump

Includes the entire physical memory,as visible to the panicked kernel

kdumpKernel

crash

Preamble

Crash Notes

Physical

Memory

Crash Kernel

vmcore

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 18 / 34

Page 24: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Core Files

Preamble

Crash Notes

Memory

Linux core files are generally ELF format

They start with an ELF preamble

Then there is a crash notes section whichincludes the pid of the crashing process,cpu registers, and the like

And then there is the memory core of thecrashed process

Core files may be analysed using tools suchas gdb

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 19 / 34

Page 25: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Core Files

Preamble

Crash Notes

Memory

Linux core files are generally ELF format

They start with an ELF preamble

Then there is a crash notes section whichincludes the pid of the crashing process,cpu registers, and the like

And then there is the memory core of thecrashed process

Core files may be analysed using tools suchas gdb

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 19 / 34

Page 26: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Core Files

Preamble

Crash Notes

Memory

Linux core files are generally ELF format

They start with an ELF preamble

Then there is a crash notes section whichincludes the pid of the crashing process,cpu registers, and the like

And then there is the memory core of thecrashed process

Core files may be analysed using tools suchas gdb

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 19 / 34

Page 27: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Core Files

Preamble

Crash Notes

Memory

Linux core files are generally ELF format

They start with an ELF preamble

Then there is a crash notes section whichincludes the pid of the crashing process,cpu registers, and the like

And then there is the memory core of thecrashed process

Core files may be analysed using tools suchas gdb

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 19 / 34

Page 28: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Core Files

Preamble

Crash Notes

Memory

Linux core files are generally ELF format

They start with an ELF preamble

Then there is a crash notes section whichincludes the pid of the crashing process,cpu registers, and the like

And then there is the memory core of thecrashed process

Core files may be analysed using tools suchas gdb

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 19 / 34

Page 29: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

VMCore Files

Preamble

Crash Notes

Physical

Memory

Kexec’s vmcore is also ELF format

Preamble

Then per-CPU crash notes

And then the entire physical memory of thecrashed machine

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 20 / 34

Page 30: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

VMCore Files

Preamble

Crash Notes

Physical

Memory

Kexec’s vmcore is also ELF format

Preamble

Then per-CPU crash notes

And then the entire physical memory of thecrashed machine

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 20 / 34

Page 31: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

VMCore Files

Preamble

Crash Notes

Physical

Memory

Kexec’s vmcore is also ELF format

Preamble

Then per-CPU crash notes

And then the entire physical memory of thecrashed machine

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 20 / 34

Page 32: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

VMCore Files

Preamble

Crash Notes

Physical

Memory

Kexec’s vmcore is also ELF format

Preamble

Then per-CPU crash notes

And then the entire physical memory of thecrashed machine

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 20 / 34

Page 33: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Using Kexec for Crash-Dump Analysis

Kdump can be used to capture the state of a system when a panicoccurs

VMcore can be used to save this state to disk or a remote host

The resulting image than then be analysed off-line using tools likecrashhttp://people.redhat.com/anderson/crash whitepaper/

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 21 / 34

Page 34: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Using Kexec for Crash-Dump Analysis

Kdump can be used to capture the state of a system when a panicoccurs

VMcore can be used to save this state to disk or a remote host

The resulting image than then be analysed off-line using tools likecrashhttp://people.redhat.com/anderson/crash whitepaper/

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 21 / 34

Page 35: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Using Kexec for Crash-Dump Analysis

Kdump can be used to capture the state of a system when a panicoccurs

VMcore can be used to save this state to disk or a remote host

The resulting image than then be analysed off-line using tools likecrashhttp://people.redhat.com/anderson/crash whitepaper/

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 21 / 34

Page 36: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Part III

Port of Kexec to Xen

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 22 / 34

Page 37: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Motivation for Porting Kexec to Xen

Provide a crash-dump facility for both domain 0and the hypervisor

kexec for domain U is being developed separately by Gerd Hoffmann

Kexec is a strong solution for hypervisor crash-dump

And for free it can also provide crash-dump for domain 0

It is has an active developer community (for Linux)

And as a further bonus, provides a method of soft-booting

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 23 / 34

Page 38: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Motivation for Porting Kexec to Xen

Provide a crash-dump facility for both domain 0and the hypervisor

kexec for domain U is being developed separately by Gerd Hoffmann

Kexec is a strong solution for hypervisor crash-dump

And for free it can also provide crash-dump for domain 0

It is has an active developer community (for Linux)

And as a further bonus, provides a method of soft-booting

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 23 / 34

Page 39: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Motivation for Porting Kexec to Xen

Provide a crash-dump facility for both domain 0and the hypervisor

kexec for domain U is being developed separately by Gerd Hoffmann

Kexec is a strong solution for hypervisor crash-dump

And for free it can also provide crash-dump for domain 0

It is has an active developer community (for Linux)

And as a further bonus, provides a method of soft-booting

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 23 / 34

Page 40: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Motivation for Porting Kexec to Xen

Provide a crash-dump facility for both domain 0and the hypervisor

kexec for domain U is being developed separately by Gerd Hoffmann

Kexec is a strong solution for hypervisor crash-dump

And for free it can also provide crash-dump for domain 0

It is has an active developer community (for Linux)

And as a further bonus, provides a method of soft-booting

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 23 / 34

Page 41: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Motivation for Porting Kexec to Xen

Provide a crash-dump facility for both domain 0and the hypervisor

kexec for domain U is being developed separately by Gerd Hoffmann

Kexec is a strong solution for hypervisor crash-dump

And for free it can also provide crash-dump for domain 0

It is has an active developer community (for Linux)

And as a further bonus, provides a method of soft-booting

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 23 / 34

Page 42: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Implementation in Brief

Linux’s kexec code has a generic core and architectures implementseveral hooks

The implementation of these hooks have been moved into thehypervisor

Accessed via a hypercallOnly the hypervisor has access to the machine’s physical memorywhich is a requirement for implementing kexecAllows the hypervisor to trigger kdump if it panics

Additional hooks were added to load and unload kernels into thehypervisor

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 24 / 34

Page 43: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Implementation in Brief

Linux’s kexec code has a generic core and architectures implementseveral hooks

The implementation of these hooks have been moved into thehypervisor

Accessed via a hypercallOnly the hypervisor has access to the machine’s physical memorywhich is a requirement for implementing kexecAllows the hypervisor to trigger kdump if it panics

Additional hooks were added to load and unload kernels into thehypervisor

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 24 / 34

Page 44: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Implementation in Brief

Linux’s kexec code has a generic core and architectures implementseveral hooks

The implementation of these hooks have been moved into thehypervisor

Accessed via a hypercallOnly the hypervisor has access to the machine’s physical memorywhich is a requirement for implementing kexecAllows the hypervisor to trigger kdump if it panics

Additional hooks were added to load and unload kernels into thehypervisor

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 24 / 34

Page 45: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Xen Kexec Flow

Purgatory

1. Kexec Load

Domain 0Kernel

kexec-toolFiles

Hypervisor Image*Kernel ImageInitramfs / Initrd

Load

Segments

Hypervisor Image*Kernel ImageInitramfs / InitrdCommand LinePurgatory

Hypervisor

* Hypervisor Image is only needed if kexecing into Xen, it should be omitted when kexecing into Linux

Segments

Hypervisor Image*Kernel ImageInitramfs / InitrdCommand LinePurgatory

file system

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 25 / 34

Page 46: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Kexec Flow

kexec−tool

2. Kexec Execute

Domain 0Kernel

Point of

No Return

HypervsiorExecute

Linuxor

XenPurgatory

Segments

Hypervisor Image*Kernel ImageInitramfs / InitrdCommand LinePurgatory

Boot Param

Hypervisor Image*Kernel ImageInitramfs / InitrdCommand Line

Purgatory

1. Kexec Load

Domain 0Kernel

kexec-toolFiles

Hypervisor Image*Kernel ImageInitramfs / Initrd

Load

Segments

Hypervisor Image*Kernel ImageInitramfs / InitrdCommand LinePurgatory

Hypervisor

* Hypervisor Image is only needed if kexecing into Xen, it should be omitted when kexecing into Linux

Segments

Hypervisor Image*Kernel ImageInitramfs / InitrdCommand LinePurgatory

file system

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 26 / 34

Page 47: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Xen Kdump Flow

Purgatory

1. Kdump Load

Domain 0Kernel

kexec-tool HypervisorSegments

Kernel ImageInitramfs / InitrdCommand LinePurgatory

Files

Kernel ImageInitramfs / Initrd

Segments

Kernel ImageInitramfs / InitrdCommand LinePurgatory

file system

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 27 / 34

Page 48: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Xen Kdump Flow

Domain 0

Kernel

2a. Kdump Execute - Domain 0 Panics

Domain 0Kernel

Point of

No Return

HypervsiorExecuteCrashKernel

Purgatory

Panic!

Segments

Kernel ImageInitramfs / InitrdCommand LinePurgatory

Boot Param

Kernel ImageInitramfs / InitrdCommand Line

Purgatory

1. Kdump Load

Domain 0Kernel

kexec-tool HypervisorSegments

Kernel ImageInitramfs / InitrdCommand LinePurgatory

Files

Kernel ImageInitramfs / Initrd

Segments

Kernel ImageInitramfs / InitrdCommand LinePurgatory

file system

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 28 / 34

Page 49: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Xen Kdump Flow

Hypervisor

2b. Kdump Execute - Hypervisor Panics

Point of

No Return

HypervsiorExecuteCrashKernel

Purgatory

Panic!

Segments

Kernel ImageInitramfs / InitrdCommand LinePurgatory

Boot Param

Kernel ImageInitramfs / InitrdCommand Line

Domain 0Kernel

2a. Kdump Execute - Domain 0 Panics

Domain 0Kernel

Point of

No Return

HypervsiorExecuteCrashKernel

Purgatory

Panic!

Segments

Kernel ImageInitramfs / InitrdCommand LinePurgatory

Boot Param

Kernel ImageInitramfs / InitrdCommand Line

Purgatory

1. Kdump Load

Domain 0Kernel

kexec-tool HypervisorSegments

Kernel ImageInitramfs / InitrdCommand LinePurgatory

Files

Kernel ImageInitramfs / Initrd

Segments

Kernel ImageInitramfs / InitrdCommand LinePurgatory

file system

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 29 / 34

Page 50: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

VMCore Files for Xen

Preamble

Crash Notes

Physical

Memory

Hypervisor

Domain 0

Domain 1

Domain N

Note that domain memory is not linear

The same as Linux’s (for now)

memory includes the hypervisor,domain 0 and domain U

Kazuo Moriwaka is working ondumpread, which allows thememory of the hypervisor, orany of the domains to beextracted from the vmcore

Itsuro Oda is working onxencrash, a fork of crash forhandling xen crash-dumps.

* Full Disclosure: Both Kazuo Moriwaka and Itsuro Oda are colleagues of mine

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 30 / 34

Page 51: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Implementation Problems: Constants

Some constants differ between Linux and Xene.g. PAGE OFFSET (ia64)

Compile time constants in kexec-tool: purgatory

Compile time constants in the Kernel: relocate kernel()

Globals the Kernel: relocate kernel()

In practice this has not been a problem for the i386 and x86 64implementations, but it does manifest in ia64

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 31 / 34

Page 52: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Implementation Problems: Constants

Some constants differ between Linux and Xene.g. PAGE OFFSET (ia64)

Compile time constants in kexec-tool: purgatory

Compile time constants in the Kernel: relocate kernel()

Globals the Kernel: relocate kernel()

In practice this has not been a problem for the i386 and x86 64implementations, but it does manifest in ia64

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 31 / 34

Page 53: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Implementation Problems: Constants

Some constants differ between Linux and Xene.g. PAGE OFFSET (ia64)

Compile time constants in kexec-tool: purgatory

Compile time constants in the Kernel: relocate kernel()

Globals the Kernel: relocate kernel()

In practice this has not been a problem for the i386 and x86 64implementations, but it does manifest in ia64

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 31 / 34

Page 54: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Implementation Problems: Constants

Some constants differ between Linux and Xene.g. PAGE OFFSET (ia64)

Compile time constants in kexec-tool: purgatory

Compile time constants in the Kernel: relocate kernel()

Globals the Kernel: relocate kernel()

In practice this has not been a problem for the i386 and x86 64implementations, but it does manifest in ia64

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 31 / 34

Page 55: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Implementation Problems: Constants

Some constants differ between Linux and Xene.g. PAGE OFFSET (ia64)

Compile time constants in kexec-tool: purgatory

Compile time constants in the Kernel: relocate kernel()

Globals the Kernel: relocate kernel()

In practice this has not been a problem for the i386 and x86 64implementations, but it does manifest in ia64

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 31 / 34

Page 56: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Implementation Problems: Crash Notes

ProblemPer-cpu memory reserved at kernel boot time

Crash note mapping for VMcore is set up at kexec-load time/sys/devices/system/cpu/cpu*/crash notesWritten to at crash-time for each cpuWhen using xen, the domain U kernels see virtual cpus

May only be a subset of physical cpusPhysical to virtual mapping may change at any time

SolutionLeave crash notes as-is in the domain 0 kernel

The virtual cpus at the time of kexec-load will be visible in the VMCoreThe virtual cpus at the time of crash will be saved, if the domain 0kernel crashes

A separate area is reserved by the hypervisor to save per-cpucrash-note-like information

Saved regardless of if it is the hypervisor or domain 0 kernel that crashVisible as ELF sections in the VMCoreBut a customised tool is needed anyway

N.B: This is probably broken if cpus are hotpluged, regardless of Xen

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 32 / 34

Page 57: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Implementation Problems: Crash Notes

ProblemPer-cpu memory reserved at kernel boot timeCrash note mapping for VMcore is set up at kexec-load time/sys/devices/system/cpu/cpu*/crash notes

Written to at crash-time for each cpuWhen using xen, the domain U kernels see virtual cpus

May only be a subset of physical cpusPhysical to virtual mapping may change at any time

SolutionLeave crash notes as-is in the domain 0 kernel

The virtual cpus at the time of kexec-load will be visible in the VMCoreThe virtual cpus at the time of crash will be saved, if the domain 0kernel crashes

A separate area is reserved by the hypervisor to save per-cpucrash-note-like information

Saved regardless of if it is the hypervisor or domain 0 kernel that crashVisible as ELF sections in the VMCoreBut a customised tool is needed anyway

N.B: This is probably broken if cpus are hotpluged, regardless of Xen

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 32 / 34

Page 58: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Implementation Problems: Crash Notes

ProblemPer-cpu memory reserved at kernel boot timeCrash note mapping for VMcore is set up at kexec-load time/sys/devices/system/cpu/cpu*/crash notesWritten to at crash-time for each cpu

When using xen, the domain U kernels see virtual cpusMay only be a subset of physical cpusPhysical to virtual mapping may change at any time

SolutionLeave crash notes as-is in the domain 0 kernel

The virtual cpus at the time of kexec-load will be visible in the VMCoreThe virtual cpus at the time of crash will be saved, if the domain 0kernel crashes

A separate area is reserved by the hypervisor to save per-cpucrash-note-like information

Saved regardless of if it is the hypervisor or domain 0 kernel that crashVisible as ELF sections in the VMCoreBut a customised tool is needed anyway

N.B: This is probably broken if cpus are hotpluged, regardless of Xen

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 32 / 34

Page 59: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Implementation Problems: Crash Notes

ProblemPer-cpu memory reserved at kernel boot timeCrash note mapping for VMcore is set up at kexec-load time/sys/devices/system/cpu/cpu*/crash notesWritten to at crash-time for each cpuWhen using xen, the domain U kernels see virtual cpus

May only be a subset of physical cpusPhysical to virtual mapping may change at any time

SolutionLeave crash notes as-is in the domain 0 kernel

The virtual cpus at the time of kexec-load will be visible in the VMCoreThe virtual cpus at the time of crash will be saved, if the domain 0kernel crashes

A separate area is reserved by the hypervisor to save per-cpucrash-note-like information

Saved regardless of if it is the hypervisor or domain 0 kernel that crashVisible as ELF sections in the VMCoreBut a customised tool is needed anyway

N.B: This is probably broken if cpus are hotpluged, regardless of Xen

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 32 / 34

Page 60: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Implementation Problems: Crash Notes

ProblemPer-cpu memory reserved at kernel boot timeCrash note mapping for VMcore is set up at kexec-load time/sys/devices/system/cpu/cpu*/crash notesWritten to at crash-time for each cpuWhen using xen, the domain U kernels see virtual cpus

May only be a subset of physical cpusPhysical to virtual mapping may change at any time

SolutionLeave crash notes as-is in the domain 0 kernel

The virtual cpus at the time of kexec-load will be visible in the VMCoreThe virtual cpus at the time of crash will be saved, if the domain 0kernel crashes

A separate area is reserved by the hypervisor to save per-cpucrash-note-like information

Saved regardless of if it is the hypervisor or domain 0 kernel that crashVisible as ELF sections in the VMCoreBut a customised tool is needed anyway

N.B: This is probably broken if cpus are hotpluged, regardless of Xen

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 32 / 34

Page 61: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Implementation Problems: Crash Notes

ProblemPer-cpu memory reserved at kernel boot timeCrash note mapping for VMcore is set up at kexec-load time/sys/devices/system/cpu/cpu*/crash notesWritten to at crash-time for each cpuWhen using xen, the domain U kernels see virtual cpus

May only be a subset of physical cpusPhysical to virtual mapping may change at any time

SolutionLeave crash notes as-is in the domain 0 kernel

The virtual cpus at the time of kexec-load will be visible in the VMCoreThe virtual cpus at the time of crash will be saved, if the domain 0kernel crashes

A separate area is reserved by the hypervisor to save per-cpucrash-note-like information

Saved regardless of if it is the hypervisor or domain 0 kernel that crashVisible as ELF sections in the VMCoreBut a customised tool is needed anyway

N.B: This is probably broken if cpus are hotpluged, regardless of Xen

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 32 / 34

Page 62: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Implementation Problems: Crash Notes

ProblemPer-cpu memory reserved at kernel boot timeCrash note mapping for VMcore is set up at kexec-load time/sys/devices/system/cpu/cpu*/crash notesWritten to at crash-time for each cpuWhen using xen, the domain U kernels see virtual cpus

May only be a subset of physical cpusPhysical to virtual mapping may change at any time

SolutionLeave crash notes as-is in the domain 0 kernel

The virtual cpus at the time of kexec-load will be visible in the VMCoreThe virtual cpus at the time of crash will be saved, if the domain 0kernel crashes

A separate area is reserved by the hypervisor to save per-cpucrash-note-like information

Saved regardless of if it is the hypervisor or domain 0 kernel that crashVisible as ELF sections in the VMCoreBut a customised tool is needed anyway

N.B: This is probably broken if cpus are hotpluged, regardless of Xen

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 32 / 34

Page 63: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Status of the Xen Port

Working with the port, all combinations ofXen/Linux→Xen/Linux transitions possible

Without the port, onlyLinux→Xen/Linux transitionsare possible

Status

x86 32 included in Xen 3.0.4

x86 64 included in Xen 3.0.4

ia64 work in progress

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 33 / 34

Page 64: Kexec: Soft-Reboot and Crash-Dump Analysis for Linux and ... · Kernel Developers If end-users could collect crash dumps, it could be useful for kernel developers to isolate bugs

Questions?

Horms (VA Linux Systems Japan K.K.) Kexec 18th January 2007 34 / 34