> It seems the _UID() in case of matching is present and not empty ("0" vs. ""). > The question is why we have no UID is not there? Looking at the IOMMU IVRS spec: ``` Unique ID Format 0= UID not present 1= UID is an integer 2= UID is a character string ``` So it's optional. I added a bit of logging here: https://source.chromium.org/chromiumos/chromiumos/codesearch/+/master:src/third_party/kernel/v5.4/drivers/iommu/amd_iommu_init.c;l=1353 ``` [ 11.730159] AMD-Vi: UID is not present. [ 11.734422] AMD-Vi: DEV_ACPI_HID(AMDI0040[]) devid: 00:13.1 [ 11.740913] AMD-Vi: ivrs, add hid:AMDI0040, uid:, rdevid:152 ``` > The quick fix looks like > > - if (acpi_dev_hid_uid_match(adev, p->hid, p->uid)) { > + if (acpi_dev_hid_uid_match(adev, p->hid, *p->uid ? p->uid : NULL)) { > > Can you test it? > Your patch works and fixes the matching. Thanks!