Author: cem
Date: Tue Jul 12 21:52:26 2016
New Revision: 302677
URL: https://svnweb.freebsd.org/changeset/base/302677

Log:
  ioat(4): Print some more useful information about the ring from ddb "show 
ioat"

Modified:
  head/sys/dev/ioat/ioat.c

Modified: head/sys/dev/ioat/ioat.c
==============================================================================
--- head/sys/dev/ioat/ioat.c    Tue Jul 12 21:49:08 2016        (r302676)
+++ head/sys/dev/ioat/ioat.c    Tue Jul 12 21:52:26 2016        (r302677)
@@ -2203,7 +2203,7 @@ DB_SHOW_COMMAND(ioat, db_show_ioat)
        if (!have_addr)
                goto usage;
        idx = (unsigned)addr;
-       if (addr >= ioat_channel_index)
+       if (idx >= ioat_channel_index)
                goto usage;
 
        sc = ioat_channel[idx];
@@ -2251,6 +2251,35 @@ DB_SHOW_COMMAND(ioat, db_show_ioat)
        db_printf(" last_seen: 0x%lx\n", sc->last_seen);
        db_printf(" ring: %p\n", sc->ring);
 
+       db_printf("  ring[%u] (tail):\n", sc->tail %
+           (1 << sc->ring_size_order));
+       db_printf("   id: %u\n", ioat_get_ring_entry(sc, sc->tail)->id);
+       db_printf("   addr: 0x%lx\n",
+           ioat_get_ring_entry(sc, sc->tail)->hw_desc_bus_addr);
+       db_printf("   next: 0x%lx\n",
+           ioat_get_ring_entry(sc, sc->tail)->u.generic->next);
+
+       db_printf("  ring[%u] (head - 1):\n", (sc->head - 1) %
+           (1 << sc->ring_size_order));
+       db_printf("   id: %u\n", ioat_get_ring_entry(sc, sc->head - 1)->id);
+       db_printf("   addr: 0x%lx\n",
+           ioat_get_ring_entry(sc, sc->head - 1)->hw_desc_bus_addr);
+       db_printf("   next: 0x%lx\n",
+           ioat_get_ring_entry(sc, sc->head - 1)->u.generic->next);
+
+       db_printf("  ring[%u] (head):\n", (sc->head) %
+           (1 << sc->ring_size_order));
+       db_printf("   id: %u\n", ioat_get_ring_entry(sc, sc->head)->id);
+       db_printf("   addr: 0x%lx\n",
+           ioat_get_ring_entry(sc, sc->head)->hw_desc_bus_addr);
+       db_printf("   next: 0x%lx\n",
+           ioat_get_ring_entry(sc, sc->head)->u.generic->next);
+
+       for (idx = 0; idx < (1 << sc->ring_size_order); idx++)
+               if ((*sc->comp_update & IOAT_CHANSTS_COMPLETED_DESCRIPTOR_MASK)
+                   == ioat_get_ring_entry(sc, idx)->hw_desc_bus_addr)
+                       db_printf("  ring[%u] == hardware tail\n", idx);
+
        db_printf(" cleanup_lock: ");
        db_show_lock(&sc->cleanup_lock);
 
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to