virt-install/virt-manager have had this check forever: def is_blktap_capable(conn): # Ideally we would get this from libvirt capabilities XML if conn.is_remote(): return False f = open("/proc/modules") lines = f.readlines() f.close() for line in lines: if line.startswith("blktap ") or line.startswith("xenblktap "): return True return False If True, we use driver name='tap' for <disk> XML. As the comment above suggestions, libvirt should expose some tag in capabilities so we know a host supports blktap, and tools don't need to probe lsmod or similar.
blktap is apparently not the favored xen driver anymore, as detailed in bug 1171550, so while in theory libvirt should provide this info I don't think anyone practically cares about it anymore.