match unknown ATI display devices as amdgpu in fw_update
authorjsg <jsg@openbsd.org>
Tue, 24 Jan 2023 01:40:22 +0000 (01:40 +0000)
committerjsg <jsg@openbsd.org>
Tue, 24 Jan 2023 01:40:22 +0000 (01:40 +0000)
For recent devices amdgpu matches via the hardware ip discovery table,
not with a table of pci vendor and product ids.

So amdgpu_devlist.h and pcidevs do not cover all devices that amdgpu
may match.

in dmesg amdgpu with an unknown product takes the form:

ramdisk kernel, bios/mbr:
vga1 at pci12 dev 0 function 0 vendor "ATI", unknown product 0x687f rev 0xc3

ramdisk kernel, efi or non-x86 arch:
vendor "ATI", unknown product 0x687f (class display subclass VGA, rev 0x03) at pci12 dev 0 function 0 not configured

non-ramdisk kernel:
amdgpu0 at pci12 dev 0 function 0 vendor "ATI", unknown product 0x687f rev 0xc3

ok deraadt@ on an earlier version

usr.sbin/fw_update/patterns.c

index 34d0ff2..3d30457 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: patterns.c,v 1.6 2022/12/06 17:33:27 patrick Exp $    */
+/*     $OpenBSD: patterns.c,v 1.7 2023/01/24 01:40:22 jsg Exp $        */
 
 /*
  * Copyright (c) 1995, 1996 Christopher G. Demetriou.  All rights reserved.
@@ -90,6 +90,8 @@ main(void)
        printf("%s\n", "acx");
        printf("%s\n", "amdgpu");
        print_devices("amdgpu", amdgpu_devices, nitems(amdgpu_devices));
+       printf("%s\n", "amdgpu ^vga*vendor \"ATI\", unknown product"); 
+       printf("%s\n", "amdgpu ^vendor \"ATI\", unknown product*class display");
        printf("%s\n", "apple-boot ^cpu0*Apple");
        printf("%s\n", "arm64-qcom-dtb ^qcgpio0");
        printf("%s\n", "athn");