D. Hugh Redelmeier wrote:
I'm having a problem with the Fedora 7 kernel 2.6.21-1.3228.fc7 for x86_64. So I am trying to use crash-4.0-4.2 to analyze the problem. (The version of crash in F7 won't work with this kernel.) Since the kernel bug appears to be in irq handline, learning more about IRQ state is important. When I use the irq command I get this error message: irq: cannot determine size of irq_desc_t Is this a bug or a known limitation of crash?
Could be shifting sands syndrome, which happens all the time. Perhaps "irq_desc_t" has been removed from that kernel? I've got a slightly older 2.6.21-1.3125.fc7 source tree hanging around that shows this: /* * Migration helpers for obsolete names, they will go away: */ #define hw_interrupt_type irq_chip typedef struct irq_chip hw_irq_controller; #define no_irq_type no_irq_chip typedef struct irq_desc irq_desc_t; Interesting, the "go away" comment -- perhaps it's no longer there in -1.3228? Anyway presuming that the irq_desc structure is still in place, you could try rebuilding crash by changing all instances of the string arguments below that use "irq_desc_t" to "irq_desc": Text string: "irq_desc_t" File Line 0 kernel.c 281 MEMBER_OFFSET_INIT(irq_desc_t_status, "irq_desc_t", "status"); 1 kernel.c 282 if (MEMBER_EXISTS("irq_desc_t", "handler")) 2 kernel.c 283 MEMBER_OFFSET_INIT(irq_desc_t_handler, "irq_desc_t", "handler"); 3 kernel.c 285 MEMBER_OFFSET_INIT(irq_desc_t_chip, "irq_desc_t", "chip"); 4 kernel.c 286 MEMBER_OFFSET_INIT(irq_desc_t_action, "irq_desc_t", "action"); 5 kernel.c 287 MEMBER_OFFSET_INIT(irq_desc_t_depth, "irq_desc_t", "depth"); 6 kernel.c 349 STRUCT_SIZE_INIT(irq_desc_t, "irq_desc_t"); 7 ppc.c 111 STRUCT_SIZE_INIT(irq_desc_t, "irq_desc_t"); 8 ppc64.c 197 STRUCT_SIZE_INIT(irq_desc_t, "irq_desc_t"); For example, the 0'th line above would be: MEMBER_OFFSET_INIT(irq_desc_t_status, "irq_desc", "status"); You can test whether the structure sizes and structure member offsets have been successfully determined by entering "help -o", which gives the full dump of all member offsets, structure sizes and array sizes, or in this case, add a string qualifier argument to pare it down: crash> help -o irq_desc offset_table: irq_desc_t_status: 40 irq_desc_t_handler: -1 irq_desc_t_chip: 8 irq_desc_t_action: 32 irq_desc_t_depth: 44 size_table: irq_desc_t: 256 array_table: irq_desc: 239 crash> In the kernel above, the old "handler" member has been renamed to "chip" in later kernels. In your kernel, I would presume that you've got -1's in all but the irq_desc array_table entry. Dave -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility