lkml.org 
[lkml]   [2008]   [Nov]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH] [WATCHDOG] [hpwdt] Set the mapped BIOS address space as executable
    Hi All,

    > * Andrew Morton [2008-11-19 09:30]:
    > > >
    > >
    > > (top-posting repaired. Please don't top-post!)
    > >
    > > I haven't seen any patch which alters hpwdt_pretimeout() and there is
    > > no such patch in linux-next. Perhaps it got lost?

    This was the patch (see below). It's in the linux-2.6-watchdog-next tree now,
    so it should go into the linux-next tree soon.

    The other patch is in the linux-2.6-watchdog-next tree also.

    Kind regards,
    Wim.

    ----------------------------------------------------------
    commit ed22ea64f9efe4531be5130c0f77130c2ad74130
    Author: Bernhard Walle <bwalle@suse.de>
    Date: Sun Oct 26 15:59:37 2008 +0100

    [WATCHDOG] hpwdt: Fix kdump when using hpwdt

    When the "hpwdt" module is loaded (even if the /dev/watchdog device is not
    opened), then kdump does not work. The panic kernel either does not start at
    all or crash in various places.

    The problem is that hpwdt_pretimeout is registered with register_die_notifier()
    with the highest possible priority. Because it returns NOTIFY_STOP, the
    crash_nmi_callback which is also registered with register_die_notifier()
    is never executed. This causes the shutdown of other CPUs to fail.

    Reverting the order is no option: The crash_nmi_callback executes HLT
    and so never returns normally. Because of that, it must be executed as
    last notifier, which currently is done.

    So, that patch returns NOTIFY_OK in case allow_kdump is set as module parameter
    in the hpwdt module. Also, it changes the default of allow_kdump to 1. Kdump is
    quite common and should be working as default.

    Signed-off-by: Bernhard Walle <bwalle@suse.de>
    Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
    Signed-off-by: Thomas Mingarelli <thomas.mingarelli@hp.com>
    Cc: Vivek Goyal <vgoyal@redhat.com>

    diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c
    index f6cff7b..e83e1ac 100644
    --- a/drivers/watchdog/hpwdt.c
    +++ b/drivers/watchdog/hpwdt.c
    @@ -117,7 +117,7 @@ static unsigned int reload; /* the computed soft_margin */
    static int nowayout = WATCHDOG_NOWAYOUT;
    static char expect_release;
    static unsigned long hpwdt_is_open;
    -static unsigned int allow_kdump;
    +static unsigned int allow_kdump = 1;

    static void __iomem *pci_mem_addr; /* the PCI-memory address */
    static unsigned long __iomem *hpwdt_timer_reg;
    @@ -485,7 +485,11 @@ static int hpwdt_pretimeout(struct notifier_block *nb, unsigned long ulReason,
    "Management Log for details.\n");
    }

    - return NOTIFY_STOP;
    + /*
    + * for kdump, we must return NOTIFY_OK here to execute the
    + * crash_nmi_callback afterwards, see arch/x86/kernel/crash.c
    + */
    + return allow_kdump ? NOTIFY_OK : NOTIFY_STOP;
    }

    /*

    \
     
     \ /
      Last update: 2008-11-20 00:03    [W:6.403 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site