From ec61b9b5a68947bf1078ccb2b3523f14af573ded Mon Sep 17 00:00:00 2001 From: Daniel Gnoutcheff Date: Wed, 17 Dec 2008 13:09:21 -0500 Subject: [PATCH] Experiment with forcing a panic to get a crashdump of schedule_timeout. --- drivers/ata/ahci.c | 3 +++ include/ahci-force-panic.h | 2 ++ kernel/timer.c | 8 ++++++++ 3 files changed, 13 insertions(+), 0 deletions(-) create mode 100644 include/ahci-force-panic.h diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index a67b8e7..1af5e3e 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c @@ -45,6 +45,7 @@ #include #include #include +#include #define DRV_NAME "ahci" #define DRV_VERSION "3.0" @@ -2311,6 +2312,8 @@ static int ahci_pci_device_resume(struct pci_dev *pdev) struct ata_host *host = dev_get_drvdata(&pdev->dev); int rc; + schedule_timeout_force_panic = 1; + rc = ata_pci_device_do_resume(pdev); if (rc) return rc; diff --git a/include/ahci-force-panic.h b/include/ahci-force-panic.h new file mode 100644 index 0000000..85cce42 --- /dev/null +++ b/include/ahci-force-panic.h @@ -0,0 +1,2 @@ +extern int schedule_timeout_force_panic; + diff --git a/kernel/timer.c b/kernel/timer.c index dbd50fa..c239a60 100644 --- a/kernel/timer.c +++ b/kernel/timer.c @@ -19,6 +19,7 @@ * Designed by David S. Miller, Alexey Kuznetsov and Ingo Molnar */ +#include #include #include #include @@ -44,6 +45,10 @@ #include #include +#include +int schedule_timeout_force_panic = 0; +EXPORT_SYMBOL(schedule_timeout_force_panic); + u64 jiffies_64 __cacheline_aligned_in_smp = INITIAL_JIFFIES; EXPORT_SYMBOL(jiffies_64); @@ -1284,6 +1289,9 @@ signed long __sched schedule_timeout(signed long timeout) setup_timer_on_stack(&timer, process_timeout, (unsigned long)current); __mod_timer(&timer, expire); + if (schedule_timeout_force_panic) { + panic("schedule_timeout: panic forced."); + } schedule(); del_singleshot_timer_sync(&timer); -- 1.5.6.3