On the Lenovo X13s attaching to the multiport USB controller leads to hard
authorpatrick <patrick@openbsd.org>
Sun, 30 Oct 2022 15:34:54 +0000 (15:34 +0000)
committerpatrick <patrick@openbsd.org>
Sun, 30 Oct 2022 15:34:54 +0000 (15:34 +0000)
resets.  Previously this was only seen with smmu(4) enabled, probably as
there is no IORT reference to that controller and hence no IOMMU mapping
established.  Since recent BIOS updates, this now also happens without
smmu(4) enabled.  Let's skip this node for now to keep machines running.

Prompted by deraadt@
ok phessler@

sys/dev/acpi/xhci_acpi.c

index b0196a8..a1d696e 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: xhci_acpi.c,v 1.10 2022/09/09 08:30:32 kettenis Exp $ */
+/*     $OpenBSD: xhci_acpi.c,v 1.11 2022/10/30 15:34:54 patrick Exp $  */
 /*
  * Copyright (c) 2018 Mark Kettenis
  *
@@ -88,6 +88,14 @@ xhci_acpi_attach(struct device *parent, struct device *self, void *aux)
        sc->sc_node = aaa->aaa_node;
        printf(" %s", sc->sc_node->name);
 
+       /* XXX: Attaching on that specific controller resets the X13s */
+       extern char *hw_ver;
+       if (hw_ver && strcmp(hw_ver, "ThinkPad X13s Gen 1") == 0 &&
+           strncmp(sc->sc_node->name, "USB2", 4) == 0) {
+               printf(": disabled\n");
+               return;
+       }
+
        /*
         * The Qualcomm dual role controller has the interrupt on a
         * child node.  Find it and parse its resources to find the