Been using since yesterday a custom kernel with amdgpu, on a Ryzen 5 PRO 2500U, as I saw many commits. For me now the display is now usable and stable, still minor issues, so I can use the laptop with external monitor.
In exchange I tried to hibernate, which was working with the UEFI vesa driver, and seems that doesn't work (tried only once) and suspend still not working. I will keep using the amdgpu driver from now unless I see major issues, because being able to use two screens is important. Regards. Jonathan Gray <j...@jsg.id.au> writes: > On Fri, Aug 02, 2019 at 03:11:54AM -0500, Charlie Burnett wrote: >> Hey- >> I'd been messing around with the AMDGPU on current (which I'm aware is very >> experimental) and had very few issues with it using a Vega 56 GPU. I >> recently swapped to another Vega GPU (Radeon VII) and have issues with the >> display not showing anything. Still boots fine, in that I can still enter >> commands (i.e. reboot) so it has to be a display issue. I tried searching >> for the diff where the firmware was added which I'm certain I saw (for Vega >> 20) but can't seem to find it in the commit history. Anyone have a fix for >> it, and if not, who should I talk to if I wanted to help get it working? I >> saw most of the AMDGPU commits have been by @jonathangray if he would be >> the best option. >> Thanks! > > vega20 firmware was added when ports/sysutils/firmware/amdgpu was > updated to 20190312. > > vega20 is marked as experimental in the version of drm we have, but we > don't currently check the flag on probe like linux does. > > The following diff will prevent amdgpu from matching on devices > in the amdgpu_pciidlist table with the AMD_EXP_HW_SUPPORT flag > (currently these are all vega20 ids). > > Index: sys/dev/pci/drm/include/drm/drm_drv.h > =================================================================== > RCS file: /cvs/src/sys/dev/pci/drm/include/drm/drm_drv.h,v > retrieving revision 1.2 > diff -u -p -r1.2 drm_drv.h > --- sys/dev/pci/drm/include/drm/drm_drv.h 25 Jul 2019 05:48:16 -0000 > 1.2 > +++ sys/dev/pci/drm/include/drm/drm_drv.h 2 Aug 2019 03:29:58 -0000 > @@ -291,5 +291,7 @@ static inline bool drm_drv_uses_atomic_m > int drm_dev_register(struct drm_device *, unsigned long); > void drm_dev_unregister(struct drm_device *); > int drm_getpciinfo(struct drm_device *, void *, struct drm_file *); > +const struct drm_pcidev *drm_find_description(int, int, > + const struct drm_pcidev *); > > #endif > Index: sys/dev/pci/drm/amd/amdgpu/amdgpu_kms.c > =================================================================== > RCS file: /cvs/src/sys/dev/pci/drm/amd/amdgpu/amdgpu_kms.c,v > retrieving revision 1.3 > diff -u -p -r1.3 amdgpu_kms.c > --- sys/dev/pci/drm/amd/amdgpu/amdgpu_kms.c 4 Jul 2019 03:39:07 -0000 > 1.3 > +++ sys/dev/pci/drm/amd/amdgpu/amdgpu_kms.c 2 Aug 2019 03:35:35 -0000 > @@ -1337,10 +1337,23 @@ int amdgpu_debugfs_firmware_init(struct > int > amdgpu_probe(struct device *parent, void *match, void *aux) > { > + struct pci_attach_args *pa = aux; > + const struct drm_pcidev *id_entry; > + unsigned long flags = 0; > + > if (amdgpu_fatal_error) > return 0; > - if (drm_pciprobe(aux, amdgpu_pciidlist)) > - return 20; > + > + id_entry = drm_find_description(PCI_VENDOR(pa->pa_id), > + PCI_PRODUCT(pa->pa_id), amdgpu_pciidlist); > + if (id_entry != NULL) { > + flags = id_entry->driver_data; > + if (flags & AMD_EXP_HW_SUPPORT) > + return 0; > + else > + return 20; > + } > + > return 0; > } > -- Oriol Demaria 2FFED630C16E4FF8