Bug 22700

Summary: IDE disk driver ad has defect when doing kernel dump using reboot -d on large memory system
Product: Base System Reporter: twatson <twatson>
Component: kernAssignee: Søren Schmidt <sos>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Unspecified   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
file.diff none

Description twatson 2000-11-08 21:00:01 UTC
The function addump in file ata-disk.c is called with interrupts off to do a crashdump. This function calls ad_transfer to transfer a page size chunk. Ad_transfer calls timeout if panicstr is NULL. Not all dump situations result from a panic, e.g. "reboot -d", meaning panicstr isn't always NULL when doing a dump. The timeouts are never cleared by the interrupt handler since interrupts are disabled. Consequently, on large memory machines, the timeout table overflows and you panic during the crashdump with panic("timeout table full").

Fix: I changed the ata-disk.c driver as follows (calling untimeout in addump):
How-To-Repeat: Do a "reboot -d" with crash dumps configured on a 256 MB. machine with IDE swap device.
Comment 1 Doug Barton freebsd_committer freebsd_triage 2000-11-10 06:12:12 UTC
Responsible Changed
From-To: freebsd-bugs->sos


Soren is Mr. ATA
Comment 2 Søren Schmidt freebsd_committer freebsd_triage 2000-11-14 09:05:16 UTC
State Changed
From-To: open->closed

fixed in 4.2