Bug 164708
Summary: | "sleeping function called from invalid context" when resuming from S3 sleep | ||
---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Thomas M Steenholdt <tmus> |
Component: | kernel | Assignee: | Dave Jones <davej> |
Status: | CLOSED DUPLICATE | QA Contact: | Brian Brock <bbrock> |
Severity: | medium | Docs Contact: | |
Priority: | medium | ||
Version: | 4 | CC: | billcrawford1970, error27, pfrields, stefan.zechmeister, sundaram, wtogami |
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | i386 | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2005-10-06 21:50:12 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: | |||
Bug Depends On: | |||
Bug Blocks: | 165150 |
Description
Thomas M Steenholdt
2005-07-30 18:52:24 UTC
This is the same as bug 142598, bug 134905 and bug 140254. The problem is the irqrouter_resume() is called with interrupts off by the power management code. See the comment next to sysdev_resume() in drivers/base/sys.c. irqrouter_resume => acpi_pci_link_resume => acpi_pci_link_set => kmalloc => BOOM! It could be that the coder just made a typo and used GFP_KERNEL instead of GFP_ATOMIC, but another possibility is that there are other problems with the code. I don't understand the code well enough to fix the problem myself. Same problem here with desktop machine. I noticed it first just after install a new NIC, and I've had other problems related to that (card apparently "hanging" after resume) that seem to have been fixed by kernel updates. I can add another Debug: ... trace from /var/log/messages and lspci output. This should be fixed in the errata kernel currently in updates-testing The FC4 kernel is doing the exact same thing! I suspect the fix would be easy to copy to the FC4 kernel? This is from kernel-2.6.13-1.1526_FC4 : ----- Back to C! Debug: sleeping function called from invalid context at mm/slab.c:2129 in_atomic():0, irqs_disabled():1 [<c0176913>] kmem_cache_alloc+0x3c/0x4e [<c029927a>] acpi_pci_link_set+0x3f/0x17f [<c02997e2>] irqrouter_resume+0x1e/0x3c [<c02e792d>] sysdev_resume+0x3d/0xb5 [<c02ec261>] device_power_up+0x5/0xa [<c015eaf8>] suspend_enter+0x44/0x46 [<c015ea5a>] suspend_prepare+0x63/0xbd [<c015eb6e>] enter_state+0x49/0x54 [<c015ec69>] state_store+0x81/0x8f [<c015ebe8>] state_store+0x0/0x8f [<c020f24a>] subsys_attr_store+0x1e/0x22 [<c020f454>] flush_write_buffer+0x22/0x28 [<c020f4a8>] sysfs_write_file+0x4e/0x73 [<c020f45a>] sysfs_write_file+0x0/0x73 [<c01a1017>] vfs_write+0xa2/0x15a [<c01a117a>] sys_write+0x41/0x6a [<c0104465>] syscall_call+0x7/0xb ----- |