diff --git a/src/topology-linux.c b/src/topology-linux.c
--- a/src/topology-linux.c
+++ b/src/topology-linux.c
@@ -4656,6 +4656,11 @@
       /* restore parent path */
       pathlen -= devicedlen;
       path[pathlen] = '\0';
+    } else if (strcmp(devicedirent->d_name, "block") == 0) {
+      /* found a block device - lookup block class for real */
+      res += hwloc_linux_class_readdir(backend, pcidev, path,
+                                       HWLOC_OBJ_OSDEV_BLOCK, "block",
+                                       hwloc_linux_block_class_fillinfos);
     }
   }
   closedir(devicedir);
