Skip to content

Commit a07771a

Browse files
committed
x86/apic/vector: Print APIC control bits in debugfs
Extend the debugability of the vector management by adding the state bits to the debugfs output. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Tested-by: Song Liu <songliubraving@fb.com> Cc: Joerg Roedel <jroedel@suse.de> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Song Liu <liu.song.a23@gmail.com> Cc: Dmitry Safonov <0x7f454c46@gmail.com> Cc: Mike Travis <mike.travis@hpe.com> Cc: Borislav Petkov <bp@alien8.de> Cc: Tariq Toukan <tariqt@mellanox.com> Link: https://lkml.kernel.org/r/20180604162224.908136099@linutronix.de
1 parent 12f4707 commit a07771a

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

arch/x86/kernel/apic/vector.c

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -588,8 +588,7 @@ static int x86_vector_alloc_irqs(struct irq_domain *domain, unsigned int virq,
588588
static void x86_vector_debug_show(struct seq_file *m, struct irq_domain *d,
589589
struct irq_data *irqd, int ind)
590590
{
591-
unsigned int cpu, vector, prev_cpu, prev_vector;
592-
struct apic_chip_data *apicd;
591+
struct apic_chip_data apicd;
593592
unsigned long flags;
594593
int irq;
595594

@@ -605,24 +604,26 @@ static void x86_vector_debug_show(struct seq_file *m, struct irq_domain *d,
605604
return;
606605
}
607606

608-
apicd = irqd->chip_data;
609-
if (!apicd) {
607+
if (!irqd->chip_data) {
610608
seq_printf(m, "%*sVector: Not assigned\n", ind, "");
611609
return;
612610
}
613611

614612
raw_spin_lock_irqsave(&vector_lock, flags);
615-
cpu = apicd->cpu;
616-
vector = apicd->vector;
617-
prev_cpu = apicd->prev_cpu;
618-
prev_vector = apicd->prev_vector;
613+
memcpy(&apicd, irqd->chip_data, sizeof(apicd));
619614
raw_spin_unlock_irqrestore(&vector_lock, flags);
620-
seq_printf(m, "%*sVector: %5u\n", ind, "", vector);
621-
seq_printf(m, "%*sTarget: %5u\n", ind, "", cpu);
622-
if (prev_vector) {
623-
seq_printf(m, "%*sPrevious vector: %5u\n", ind, "", prev_vector);
624-
seq_printf(m, "%*sPrevious target: %5u\n", ind, "", prev_cpu);
615+
616+
seq_printf(m, "%*sVector: %5u\n", ind, "", apicd.vector);
617+
seq_printf(m, "%*sTarget: %5u\n", ind, "", apicd.cpu);
618+
if (apicd.prev_vector) {
619+
seq_printf(m, "%*sPrevious vector: %5u\n", ind, "", apicd.prev_vector);
620+
seq_printf(m, "%*sPrevious target: %5u\n", ind, "", apicd.prev_cpu);
625621
}
622+
seq_printf(m, "%*smove_in_progress: %u\n", ind, "", apicd.move_in_progress ? 1 : 0);
623+
seq_printf(m, "%*sis_managed: %u\n", ind, "", apicd.is_managed ? 1 : 0);
624+
seq_printf(m, "%*scan_reserve: %u\n", ind, "", apicd.can_reserve ? 1 : 0);
625+
seq_printf(m, "%*shas_reserved: %u\n", ind, "", apicd.has_reserved ? 1 : 0);
626+
seq_printf(m, "%*scleanup_pending: %u\n", ind, "", !hlist_unhashed(&apicd.clist));
626627
}
627628
#endif
628629

0 commit comments

Comments
 (0)