Re: crash vs irqs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux