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

Reply via email to