writing custom driver for VGA emulation ?

Christian König ckoenig.leichtzumerken at gmail.com
Tue Feb 18 19:22:56 UTC 2020


Hi Yusuf,

> Is that means driver can do its job without powerplay support ?
No, the driver tries to bind to the device but fails to load correctly. 
You won't get any functionality from this.

> If so, how does userspace programs like Xorg or as you mentioned Vesa 
> can interact with driver.
No, sounds like you misunderstood what Vesa driver is here.

Vesa is driver the hardware without the amdgpu kernel driver through 
calls into the video BIOS.

You wouldn't have any acceleration and only limited display modes, but 
at least you get a picture on the screen.

> I see no driver node named 'amdgpu' under '/dev/' directory or 
> subdirectories ?
That's normal. The driver doesn't have a dedicated node.

Take a look under /dev/dri instead. The graphics cards in the system are 
just named card0, card1, card2....

Regards,
Christian.

Am 18.02.20 um 19:59 schrieb Yusuf Altıparmak:
> Hello Christian,
>
> Even if powerplay fails, gpu driver seems still working according to 
> output of "lsmod' command. I can see amdgpu there. Is that means 
> driver can do its job without powerplay support ?
>
> If so, how does userspace programs like Xorg or as you mentioned Vesa 
> can interact with driver. I see no driver node named 'amdgpu' under 
> '/dev/' directory or subdirectories ? Does this driver provide a 
> driver node ?
>
> By the way, thanks for your interest.
>
> Best regards.
>
>
> Christian König <ckoenig.leichtzumerken at gmail.com 
> <mailto:ckoenig.leichtzumerken at gmail.com>>, 18 Şub 2020 Sal, 18:33 
> tarihinde şunu yazdı:
>
>     Hi Yusuf,
>
>     good to hear that you were able to solve your MMIO problems.
>
>     And yes amdgpu has unfortunately some bugs on big endian systems.
>
>     But as John noted when you solved the issues with the MMIO BARs
>     you can also use the Vesa driver with the VGA emulation.
>
>     Regards,
>     Christian.
>
>     Am 18.02.20 um 16:00 schrieb Yusuf Altıparmak:
>>     *Hello Mr. Alex, Mr. Cönig and Mr. Bridgman, *
>>     *
>>     *
>>     *Mr. Cönig, we have talked about MMIO problem before. You helped
>>     me a lot about that and now driver is not giving any error about
>>     MMIO. That problem was about bus configuration of my embedded
>>     system. It does not proceed more than 4GB besides 0x0 adress is
>>     aligned for I/O and MMIO is allowed between 0xE0000000 and
>>     0xffffffff. Fortunately, I now am able to claim 256 MB and other
>>     4 BARs adress between this range. I can attach lspci -v output. *
>>     *
>>     *
>>     *Mr. Bridgman, I am using U-boot as bootloader and the system is
>>     64 bit PowerPc e5500 core. This means big endian kernel. *
>>     *
>>     *
>>     *Right now, the driver 'amdgpu' is having error when *
>>     *it tries to load smc firmware. I ve been trying to solve this
>>     problem for months but I haven't solve it yet. *
>>     *
>>     *
>>     *Other firmwares seems loading without any error. I was
>>     suspecting that endianness is causing this problem but if it was
>>     shouldn't other firmwares get fail before smc firmware gets loaded? *
>>     *
>>     *
>>     *I tried all of the firmwares in repository but result remained
>>     same. *
>>     *
>>     *
>>     *Full dmesg:*
>>     [    5.426009] [drm] amdgpu kernel modesetting enabled.
>>     [    5.430109] [drm] initializing kernel modesetting (POLARIS12
>>     0x1002:0x6987 0x1787:0x2389 0x80).
>>     [    5.437591] [drm] register mmio base: 0x20200000
>>     [    5.440899] [drm] register mmio size: 262144
>>     [    5.443888] [drm] add ip block number 0 <vi_common>
>>     [    5.447465] [drm] add ip block number 1 <gmc_v8_0>
>>     [    5.450953] [drm] add ip block number 2 <tonga_ih>
>>     [    5.454442] [drm] add ip block number 3 <powerplay>
>>     [    5.458018] [drm] add ip block number 4 <dm>
>>     [    5.460979] [drm] add ip block number 5 <gfx_v8_0>
>>     [    5.464466] [drm] add ip block number 6 <sdma_v3_0>
>>     [    5.468042] [drm] add ip block number 7 <uvd_v6_0>
>>     [    5.471531] [drm] add ip block number 8 <vce_v3_0>
>>     [    5.475047] [drm] UVD is enabled in VM mode
>>     [    5.477928] [drm] UVD ENC is enabled in VM mode
>>     [    5.481154] [drm] VCE enabled in VM mode
>>     [    5.712355] ATOM BIOS: 113-ER16BFC-001
>>     [    5.714830] [drm] GPU posting now...
>>     [    5.833704] [drm] vm size is 64 GB, 2 levels, block size is
>>     10-bit, fragment size is 9-bit
>>     [    5.840950] amdgpu 0001:01:00.0: BAR 2: releasing [mem
>>     0x220000000-0x2201fffff 64bit pref]
>>     [    5.847930] amdgpu 0001:01:00.0: BAR 0: releasing [mem
>>     0x210000000-0x21fffffff 64bit pref]
>>     [    5.855688] [drm:.amdgpu_device_resize_fb_bar [amdgpu]]
>>     *ERROR* Problem resizing BAR0 (-2).
>>     [    5.855706] amdgpu 0001:01:00.0: BAR 0: assigned [mem
>>     0x230000000-0x23fffffff 64bit pref]
>>     [    5.869663] amdgpu 0001:01:00.0: BAR 2: assigned [mem
>>     0x240000000-0x2401fffff 64bit pref]
>>     [    5.876582] amdgpu 0001:01:00.0: VRAM: 4096M
>>     0x000000F400000000 - 0x000000F4FFFFFFFF (4096M used)
>>     [    5.884160] amdgpu 0001:01:00.0: GART: 256M 0x0000000000000000
>>     - 0x000000000FFFFFFF
>>     [    5.890519] [drm] Detected VRAM RAM=4096M, BAR=256M
>>     [    5.894093] [drm] RAM width 128bits GDDR5
>>     [    5.896941] [TTM] Zone  kernel: Available graphics memory:
>>     4062380 kiB
>>     [    5.902177] [TTM] Zone   dma32: Available graphics memory:
>>     2097152 kiB
>>     [    5.907402] [TTM] Initializing pool allocator
>>     [    5.910464] [TTM] Initializing DMA pool allocator
>>     [    5.919973] [drm] amdgpu: 4096M of VRAM memory ready
>>     [    5.923659] [drm] amdgpu: 4096M of GTT memory ready.
>>     [    5.927358] [drm] GART: num cpu pages 65536, num gpu pages 65536
>>     [    5.932957] [drm] PCIE GART of 256M enabled (table at
>>     0x000000F400000000).
>>     [    5.939122] [drm] Chained IB support enabled!
>>     [    5.948873] [drm] Found UVD firmware Version: 1.79 Family ID: 16
>>     [    5.953647] [drm] UVD ENC is disabled
>>     [    5.975818] [drm] Found VCE firmware Version: 52.4 Binary ID: 3
>>     [    6.404774] amdgpu: [powerplay] Failed to send Message.
>>     [    6.835902] amdgpu: [powerplay] SMU Firmware start failed!
>>     [    6.840086] amdgpu: [powerplay] Failed to load SMU ucode.
>>     [    6.844184] amdgpu: [powerplay] smc start failed
>>     *[    6.847498] amdgpu: [powerplay] powerplay hw init failed *
>>     *[    6.852281] [drm:.amdgpu_device_init [amdgpu]] *ERROR*
>>     hw_init of IP block <powerplay> failed -22*
>>     *[    6.859883] amdgpu 0001:01:00.0: amdgpu_device_ip_init failed * *
>>     [    6.864330] amdgpu 0001:01:00.0: Fatal error during GPU init * *
>>     [    6.868689] [drm] amdgpu: finishing device. *
>>     *[    7.339427] pcieport 0001:00:00.0: AER: Corrected error
>>     received: 0001:00:00.0
>>     [    7.345374] pcieport 0001:00:00.0: PCIe Bus Error:
>>     severity=Corrected, type=Data Link Layer, (Transmitter ID)
>>     [    7.353993] pcieport 0001:00:00.0:   device [1957:0824] error
>>     status/mask=00001000/00002000
>>     [    7.361047] pcieport 0001:00:00.0:    [12] Timeout *
>>     [    7.706137] amdgpu: [powerplay]
>>                     last message was failed ret is 0
>>     [    8.127667] amdgpu: [powerplay]
>>                     failed to send message 261 ret is 0
>>     [    8.966331] amdgpu: [powerplay]
>>                     last message was failed ret is 0
>>     [    9.320290] pcieport 0001:00:00.0: AER: Corrected error
>>     received: 0001:00:00.0
>>     [    9.326226] pcieport 0001:00:00.0: PCIe Bus Error:
>>     severity=Corrected, type=Data Link Layer, (Transmitter ID)
>>     [    9.334845] pcieport 0001:00:00.0:   device [1957:0824] error
>>     status/mask=00001000/00002000
>>     [    9.341899] pcieport 0001:00:00.0:    [12] Timeout
>>     [    9.387975] amdgpu: [powerplay]
>>                     failed to send message 261 ret is 0
>>     [   10.226636] amdgpu: [powerplay]
>>                     last message was failed ret is 0
>>     [   10.648275] amdgpu: [powerplay]
>>                     failed to send message 261 ret is 0
>>     [   11.486932] amdgpu: [powerplay]
>>                     last message was failed ret is 0
>>     [   11.908570] amdgpu: [powerplay]
>>                     failed to send message 261 ret is 0
>>     [   12.747228] amdgpu: [powerplay]
>>                     last message was failed ret is 0
>>     [   13.168866] amdgpu: [powerplay]
>>                     failed to send message 261 ret is 0
>>     [   14.007523] amdgpu: [powerplay]
>>                     last message was failed ret is 0
>>     [   14.429161] amdgpu: [powerplay]
>>                     failed to send message 261 ret is 0
>>     [   15.267816] amdgpu: [powerplay]
>>                     last message was failed ret is 0
>>     [   15.689456] amdgpu: [powerplay]
>>                     failed to send message 261 ret is 0
>>     [   16.528114] amdgpu: [powerplay]
>>                     last message was failed ret is 0
>>     [   16.949756] amdgpu: [powerplay]
>>                     failed to send message 261 ret is 0
>>     [   17.788411] amdgpu: [powerplay]
>>                     last message was failed ret is 0
>>     [   18.210051] amdgpu: [powerplay]
>>                     failed to send message 261 ret is 0
>>     [   19.048710] amdgpu: [powerplay]
>>                     last message was failed ret is 0
>>     [   19.470347] amdgpu: [powerplay]
>>                     failed to send message 261 ret is 0
>>     [   19.786774] [TTM] Finalizing pool allocator
>>     [   19.789696] [TTM] Finalizing DMA pool allocator
>>     [   19.793004] [TTM] Zone  kernel: Used memory at exit: 0 kiB
>>     [   19.797209] [TTM] Zone   dma32: Used memory at exit: 0 kiB
>>     [   19.801410] [drm] amdgpu: ttm finalized *
>>     [   19.804496] amdgpu: probe of 0001:01:00.0 failed with error -22 *
>>
>>
>>     18 Şub 2020 Sal 17:43 tarihinde Bridgman, John
>>     <John.Bridgman at amd.com <mailto:John.Bridgman at amd.com>> şunu yazdı:
>>
>>         [AMD Official Use Only - Internal Distribution Only]
>>
>>
>>         >And we already checked, 256MB is unfortunately the minimum
>>         you can resize the VRAM BAR on the E9171 to.
>>
>>         Ahh, OK... I didn't realize we had already looked into that.
>>         I guess that approach isn't going to work.
>>
>>         Yusef, guessing you are using a 32-bit CPU ? Is it possible
>>         to talk to whoever does SBIOS for your platform to see if you
>>         could maybe reduce address space allocated to RAM and bump up
>>         the MMIO space ?
>>
>>         ------------------------------------------------------------------------
>>         *From:* Christian König <ckoenig.leichtzumerken at gmail.com
>>         <mailto:ckoenig.leichtzumerken at gmail.com>>
>>         *Sent:* February 18, 2020 9:19 AM
>>         *To:* Bridgman, John <John.Bridgman at amd.com
>>         <mailto:John.Bridgman at amd.com>>; Alex Deucher
>>         <alexdeucher at gmail.com <mailto:alexdeucher at gmail.com>>; Yusuf
>>         Altıparmak <yusufalti1997 at gmail.com
>>         <mailto:yusufalti1997 at gmail.com>>
>>         *Cc:* amd-gfx list <amd-gfx at lists.freedesktop.org
>>         <mailto:amd-gfx at lists.freedesktop.org>>
>>         *Subject:* Re: writing custom driver for VGA emulation ?
>>         The problem Yusuf runs into is that his platform has multiple
>>         PCIe root hubs, but only 512MB of MMIO address space. That is
>>         not enough to fit all the BARs of an E9171 into.
>>
>>         But without the BARs neither the VGA emulation nor amdgpu not
>>         anything else will work correctly.
>>
>>         And we already checked, 256MB is unfortunately the minimum
>>         you can resize the VRAM BAR on the E9171 to.
>>
>>         What could maybe work is to trick the upstream bridge of the
>>         VGA device into not routing all the addresses to the BARs and
>>         actually use only a smaller portion of visible VRAM. But that
>>         would be highly experimental and requires a rather big hack
>>         into the PCI(e) subsystem in the Linux kernel.
>>
>>         Regards,
>>         Christian.
>>
>>         Am 18.02.20 um 15:08 schrieb Bridgman, John:
>>>
>>>         [AMD Official Use Only - Internal Distribution Only]
>>>
>>>
>>>         Does the VBIOS come up with something like a splash screen,
>>>         ie is VBIOS able to initialize and drive the card ?
>>>
>>>         If so then another option might be to use a VESA driver
>>>         rather than VGA.
>>>
>>>
>>>         ------------------------------------------------------------------------
>>>         *From:* amd-gfx <amd-gfx-bounces at lists.freedesktop.org>
>>>         <mailto:amd-gfx-bounces at lists.freedesktop.org> on behalf of
>>>         Alex Deucher <alexdeucher at gmail.com>
>>>         <mailto:alexdeucher at gmail.com>
>>>         *Sent:* February 18, 2020 8:50 AM
>>>         *To:* Yusuf Altıparmak <yusufalti1997 at gmail.com>
>>>         <mailto:yusufalti1997 at gmail.com>
>>>         *Cc:* amd-gfx list <amd-gfx at lists.freedesktop.org>
>>>         <mailto:amd-gfx at lists.freedesktop.org>
>>>         *Subject:* Re: writing custom driver for VGA emulation ?
>>>         On Tue, Feb 18, 2020 at 2:56 AM Yusuf Altıparmak
>>>         <yusufalti1997 at gmail.com> <mailto:yusufalti1997 at gmail.com>
>>>         wrote:
>>>         >
>>>         > Hello AMD team;
>>>         >
>>>         > I have E 9171 GPU and want to use it on a embedded system
>>>         which has limited MMIO space on PCIe bus (MAX 512 MB).
>>>         >
>>>         > I received feedbacks that I can only use VGA emulation
>>>         with this memory space. I was unable to get 'amdgpu' driver
>>>         working with Xorg due to I had many errors(firmwares are not
>>>         loading) in each step and tired of solving them one by one.
>>>         >
>>>         > I want to write a simple custom driver for this GPU with
>>>         kernel version 4.19.
>>>         > Is it possible to print some colors on screen with a
>>>         custom driver over PCIe communication ? or writing some
>>>         words on screen as VGA ?
>>>         >
>>>         > If answer is yes, then which code pieces (on amdgpu driver
>>>         folder) or reference documentation should I use? I have
>>>         Register Reference Guide.pdf.
>>>         >
>>>         > I will be appreciated for your guidance.
>>>
>>>         That is not going to do what you want on your platform. The VGA
>>>         emulation requires that you set up the card first to enable
>>>         it, which
>>>         in turn requires MMIO access and thus you are back to square
>>>         one.
>>>
>>>         Alex
>>>         _______________________________________________
>>>         amd-gfx mailing list
>>>         amd-gfx at lists.freedesktop.org
>>>         <mailto:amd-gfx at lists.freedesktop.org>
>>>         https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&data=02%7C01%7Cjohn.bridgman%40amd.com%7Ce7bf224775ad487d240708d7b47992f4%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637176306561328560&sdata=QbfaIN%2F6LvgUihz5O0x41TwvdGYy7QTS5IVJq3RXYlA%3D&reserved=0
>>>         <https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&data=02%7C01%7CJohn.Bridgman%40amd.com%7Ccda5469b6f5f4ae43e6d08d7b47d899a%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637176323587003958&sdata=6eKo51jnHbE1QWkDB%2BN%2FFLMLB40HA2wVN3mU1l%2FeFhk%3D&reserved=0>
>>>
>>>         _______________________________________________
>>>         amd-gfx mailing list
>>>         amd-gfx at lists.freedesktop.org  <mailto:amd-gfx at lists.freedesktop.org>
>>>         https://lists.freedesktop.org/mailman/listinfo/amd-gfx  <https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&data=02%7C01%7CJohn.Bridgman%40amd.com%7Ccda5469b6f5f4ae43e6d08d7b47d899a%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637176323587003958&sdata=6eKo51jnHbE1QWkDB%2BN%2FFLMLB40HA2wVN3mU1l%2FeFhk%3D&reserved=0>
>>
>>
>>
>>     _______________________________________________
>>     amd-gfx mailing list
>>     amd-gfx at lists.freedesktop.org  <mailto:amd-gfx at lists.freedesktop.org>
>>     https://lists.freedesktop.org/mailman/listinfo/amd-gfx
>
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20200218/e84b7cf2/attachment-0001.htm>


More information about the amd-gfx mailing list