lkml.org 
[lkml]   [2012]   [May]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRE: [PATCH 1/3] xen/mce: Add mcelog support for Xen platform (v2)
    Date
    Borislav Petkov wrote:
    > On Tue, May 22, 2012 at 05:45:04AM +0000, Liu, Jinsong wrote:
    >> From 4df7496eea9e92a3e267ffb0a4b8f5e6e0c29c36 Mon Sep 17 00:00:00
    >> 2001
    >> From: Liu, Jinsong <jinsong.liu@intel.com>
    >> Date: Mon, 21 May 2012 05:07:47 +0800
    >> Subject: [PATCH 1/3] xen/mce: Add mcelog support for Xen platform
    >>
    >> When MCA error occurs, it would be handled by Xen hypervisor first,
    >> and then the error information would be sent to initial domain for
    >> logging.
    >>
    >> This patch gets error information from Xen hypervisor and convert
    >> Xen format error into Linux format mcelog. This logic is basically
    >> self-contained, not touching other kernel components.
    >>
    >> By using tools like mcelog tool users could read specific error
    >> information,
    >> like what they did under native Linux.
    >>
    >> To test follow directions outlined in
    >> Documentation/acpi/apei/einj.txt
    >>
    >> Signed-off-by: Liu, Jinsong <jinsong.liu@intel.com>
    >> Signed-off-by: Ke, Liping <liping.ke@intel.com>
    >> Signed-off-by: Jiang, Yunhong <yunhong.jiang@intel.com>
    >> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
    >
    > If you're sending the patch, you need to be the last on the SOB-chain
    > and the SOB-chain has to show the proper path the patch took. See
    > <Documentation/SubmittingPatches>.

    Thanks! I will update it.
    But I'm not quite clear 'the SOB-chain has to show the proper path the patch took', would you elaborate more?

    >
    >> ---
    >> arch/x86/include/asm/xen/hypercall.h | 8 +
    >> arch/x86/kernel/cpu/mcheck/mce.c | 4 +-
    >> arch/x86/xen/enlighten.c | 9 +-
    >> drivers/xen/Kconfig | 8 +
    >> drivers/xen/Makefile | 1 +
    >> drivers/xen/mcelog.c | 395
    >> ++++++++++++++++++++++++++++++++++ include/linux/miscdevice.h
    >> | 1 + include/xen/interface/xen-mca.h | 389
    >> +++++++++++++++++++++++++++++++++ 8 files changed, 809
    >> insertions(+), 6 deletions(-) create mode 100644
    >> drivers/xen/mcelog.c create mode 100644
    >> include/xen/interface/xen-mca.h
    >>
    >> diff --git a/arch/x86/include/asm/xen/hypercall.h
    >> b/arch/x86/include/asm/xen/hypercall.h index 5728852..59c226d 100644
    >> --- a/arch/x86/include/asm/xen/hypercall.h +++
    >> b/arch/x86/include/asm/xen/hypercall.h @@ -48,6 +48,7 @@
    >> #include <xen/interface/sched.h>
    >> #include <xen/interface/physdev.h>
    >> #include <xen/interface/platform.h>
    >> +#include <xen/interface/xen-mca.h>
    >>
    >> /*
    >> * The hypercall asms have to meet several constraints:
    >> @@ -302,6 +303,13 @@ HYPERVISOR_set_timer_op(u64 timeout) }
    >>
    >> static inline int
    >> +HYPERVISOR_mca(struct xen_mc *mc_op)
    >> +{
    >> + mc_op->interface_version = XEN_MCA_INTERFACE_VERSION;
    >> + return _hypercall1(int, mca, mc_op);
    >> +}
    >> +
    >> +static inline int
    >> HYPERVISOR_dom0_op(struct xen_platform_op *platform_op) {
    >> platform_op->interface_version = XENPF_INTERFACE_VERSION;
    >> diff --git a/arch/x86/kernel/cpu/mcheck/mce.c
    >> b/arch/x86/kernel/cpu/mcheck/mce.c
    >> index d086a09..24b2e86 100644
    >> --- a/arch/x86/kernel/cpu/mcheck/mce.c
    >> +++ b/arch/x86/kernel/cpu/mcheck/mce.c
    >> @@ -57,8 +57,6 @@ static DEFINE_MUTEX(mce_chrdev_read_mutex);
    >>
    >> int mce_disabled __read_mostly;
    >>
    >> -#define MISC_MCELOG_MINOR 227
    >> -
    >> #define SPINUNIT 100 /* 100ns */
    >>
    >> atomic_t mce_entry;
    >> @@ -1791,7 +1789,7 @@ static const struct file_operations
    >> mce_chrdev_ops = { .llseek = no_llseek, };
    >>
    >> -static struct miscdevice mce_chrdev_device = {
    >> +struct miscdevice mce_chrdev_device = {
    >> MISC_MCELOG_MINOR,
    >> "mcelog",
    >> &mce_chrdev_ops,
    >
    > You're still reusing those - pls, define your own 'struct miscdevice
    > mce_chrdev_device' in drivers/xen/ or somewhere convenient and
    > your own mce_chrdev_ops. The only thing you should be touching in
    > arch/x86/.../mcheck/ is the export of MISC_MCELOG_MINOR.
    >
    > Thanks.

    I'm *not* reuse native code.
    I have defined 'struct miscdevice xen_mce_chrdev_device' in drivers/xen, and I also implement xen_mce_chrdev_ops, they are all xen-self-contained.

    The patch just redirect native mce_chrdev_device to xen_mce_chrdev_device when running under xen environment.
    It didn't change any native code (except just cancel mce_chrdev_device 'static'), and will not break native logic.

    The benefit is, userspace tools like mcelog can use the unified interface (/dev/mcelog) to get mcelog, no matter it running under bare metal or xen virtual platform.

    Thanks,
    Jinsong

    \
     
     \ /
      Last update: 2012-05-24 13:01    [W:4.409 / U:0.520 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site