Messages in this thread Patch in this message | | | Date | Mon, 28 Mar 2011 17:52:47 +0200 | Subject | Linux 2.6.38 freeze because of sound/core/pcm_lib.c commit 59ff878ffb26bc0be812ca8295799164f413ae88 | From | "Christopher K." <> |
| |
Hi
Kernel 2.6.38 has been freezing ever since rc1 on my asus p7p55d. After booting up, the kernel seems to use a lot of cpu-time and after 20-30 seconds the system comes to a complete halt.
I just finished bisecting 2.6.37 - 2.6.38-rc1 and found this commit to be responsible:
59ff878ffb26bc0be812ca8295799164f413ae88
I attached a patch that reverts this commit, although I don't quite understand how it could cause a complete system-lockup. A friend of mine owns exactly the same motherboard, cpu and ram as me but is not affected.
I noticed this in my logs, but I don't think it's related:
WARNING: at drivers/pci/dmar.c:634 warn_invalid_dmar+0x8a/0xa0() Hardware name: System Product Name Your BIOS is broken; DMAR reported at address fed90000 returns all ones! BIOS vendor: American Megatrends Inc.; Ver: 2003 ; Product Version: System Version Modules linked in: Pid: 0, comm: swapper Not tainted 2.6.38.2-ARCH #1 Call Trace: [<ffffffff8105c07a>] ? warn_slowpath_common+0x7a/0xb0 [<ffffffff81627c47>] ? __early_set_fixmap+0x96/0x9d [<ffffffff8105c10a>] ? warn_slowpath_fmt_taint+0x3a/0x40 [<ffffffff81627c47>] ? __early_set_fixmap+0x96/0x9d [<ffffffff812337ea>] ? warn_invalid_dmar+0x8a/0xa0 [<ffffffff81628143>] ? early_iounmap+0xf4/0x13d [<ffffffff8163d2b7>] ? check_zero_address+0xd4/0x116 [<ffffffff81276bad>] ? acpi_get_table_with_size+0x53/0xb4 [<ffffffff813bb55a>] ? _etext+0x0/0x256aa6 [<ffffffff8163d310>] ? detect_intel_iommu+0x17/0x84 [<ffffffff81619865>] ? pci_iommu_alloc+0x47/0x72 [<ffffffff81627a7c>] ? mem_init+0x19/0xec [<ffffffff81612ace>] ? start_kernel+0x203/0x40d [<ffffffff81612347>] ? x86_64_start_reservations+0x132/0x136 [<ffffffff8161244c>] ? x86_64_start_kernel+0x101/0x110 ---[ end trace a7919e7f17c0a725 ]---
I'd be glad to help debug this. Hope I'm not doing anything wrong, this is my first time posting to lkml.
Regards Chris
--- a/sound/core/pcm_lib.c 2011-03-27 20:37:20.000000000 +0200 +++ b/sound/core/pcm_lib.c 2011-03-28 17:14:26.000000000 +0200 @@ -374,25 +374,8 @@ (unsigned long)runtime->hw_ptr_base); }
- if (runtime->no_period_wakeup) { - /* - * Without regular period interrupts, we have to check - * the elapsed time to detect xruns. - */ - jdelta = jiffies - runtime->hw_ptr_jiffies; - if (jdelta < runtime->hw_ptr_buffer_jiffies / 2) - goto no_delta_check; - hdelta = jdelta - delta * HZ / runtime->rate; - while (hdelta > runtime->hw_ptr_buffer_jiffies / 2 + 1) { - delta += runtime->buffer_size; - hw_base += runtime->buffer_size; - if (hw_base >= runtime->boundary) - hw_base = 0; - new_hw_ptr = hw_base + pos; - hdelta -= runtime->hw_ptr_buffer_jiffies; - } + if (runtime->no_period_wakeup) goto no_delta_check; - }
/* something must be really wrong */ if (delta >= runtime->buffer_size + runtime->period_size) {
| |