[PATCH] bios: pciirq: make table dump more compact, fix formatting
IvanHu
ivan.hu at canonical.com
Thu Dec 20 01:43:37 UTC 2012
On 12/12/2012 09:09 AM, Colin King wrote:
> From: Colin Ian King <colin.king at canonical.com>
>
> The PCI IRQ table dump is really rather verbose and confusing. This
> patch dumps it out in a more compact and useful format. Also fix
> the formatting of the reserved field. Remove an incorrect test when
> the links are zero (unused) which was producing false positives.
>
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
> src/bios/pciirq/pciirq.c | 39 +++++++++++++++++++++------------------
> 1 file changed, 21 insertions(+), 18 deletions(-)
>
> diff --git a/src/bios/pciirq/pciirq.c b/src/bios/pciirq/pciirq.c
> index 3cdb532..e510e86 100644
> --- a/src/bios/pciirq/pciirq.c
> +++ b/src/bios/pciirq/pciirq.c
> @@ -61,14 +61,14 @@ typedef struct {
>
> static const char *pciirq_reserved(uint8_t *data)
> {
> - static char buf[1+ (RESERVED_SIZE * 3)];
> - char tmp[4];
> + static char buf[1+ (RESERVED_SIZE * 5)];
> + char tmp[6];
> int i;
>
> *buf = '\0';
>
> for (i=0; i < RESERVED_SIZE; i++) {
> - snprintf(tmp, sizeof(tmp), "%s%2.2x", *buf ? ",": "", data[i]);
> + snprintf(tmp, sizeof(tmp), "%s0x%2.2x", *buf ? ",": "", data[i]);
> strcat(buf, tmp);
> }
> return buf;
> @@ -149,25 +149,34 @@ static int pciirq_test1(fwts_framework *fw)
> fwts_log_info_verbatum(fw, " Miniport Data : 0x%8.8x%s",
> pciirq->miniport_data,
> pciirq->miniport_data ? "" : " (none)");
> - fwts_log_info_verbatum(fw, " Reserved : 0x%s",
> + fwts_log_info_verbatum(fw, " Reserved : %s",
> pciirq_reserved(pciirq->reserved));
> fwts_log_info_verbatum(fw, " Checksum : 0x%2.2x",
> pciirq->checksum);
> fwts_log_nl(fw);
>
> + /*
> + * Dump table
> + */
> + fwts_log_info_verbatum(fw, "Bus:Dev Slot INTA# INTB# INTC# INTD#");
> for (slot = pciirq->slots, j = 0; j < slot_count; j++, slot++) {
> - fwts_log_info_verbatum(fw, " Slot Entry %d:", j);
> - fwts_log_info_verbatum(fw, " ID: %2.2x:%2.2x, Slot Number : 0x%2.2x%s",
> + char buffer[80];
> + char *ptr = buffer;
> +
> + ptr += snprintf(ptr, sizeof(buffer),
> + " %2.2x:%2.2x %2.2x ",
> slot->pci_bus_number, slot->pci_dev_number >> 3,
> - slot->slot_number, slot->slot_number ? "" : " (on-board)");
> + slot->slot_number);
> for (k = 0; k < 4; k++) {
> - fwts_log_info_verbatum(fw, " INT%c# Link Value : 0x%2.2x%s, "
> - "IRQ Bitmap 0x%4.4x (%s)", 'A' + k,
> - slot->INT[k].link, slot->INT[k].link ? "" : " (not connected)",
> - slot->INT[k].bitmap, pciirq_irq_bitmap(slot->INT[k].bitmap));
> + if (slot->INT[k].link)
> + ptr += snprintf(ptr, sizeof(buffer) - (ptr - buffer),
> + "%2.2x/%4.4x ", slot->INT[k].link, slot->INT[k].bitmap);
> + else
> + ptr += snprintf(ptr, sizeof(buffer) - (ptr - buffer), " ");
> }
> - fwts_log_nl(fw);
> + fwts_log_info_verbatum(fw, "%s", buffer);
> }
> + fwts_log_nl(fw);
>
> found++;
>
> @@ -202,12 +211,6 @@ static int pciirq_test1(fwts_framework *fw)
> slot_ok = true;
> for (slot = pciirq->slots, j = 0; j < slot_count; j++, slot++) {
> for (k = 0; k < 4; k++) {
> - if ((slot->INT[k].link == 0) && (slot->INT[k].bitmap != 0)) {
> - fwts_failed(fw, LOG_LEVEL_MEDIUM, "PCIIRQLinkBitmap",
> - "Slot %d INT%c# has a has an IRQ bitmap defined "
> - "but the link is not connected.", j, k + 'A');
> - slot_ok = false;
> - }
> if ((slot->INT[k].link != 0) && (slot->INT[k].bitmap == 0)) {
> fwts_failed(fw, LOG_LEVEL_MEDIUM, "PCIIRQLinkBitmap",
> "Slot %d INT%c# has a has an link connected "
>
Acked-by: Ivan Hu <ivan.hu at canonical.com>
More information about the fwts-devel
mailing list