IKVM on AST2400

Wim Vervoorn wvervoorn at eltan.com
Wed May 29 22:09:58 AEST 2019


Hello Eddie,

Thanks for your response.

It clears things up a bit.

Just to make sure I understand the mechanism correctly.

The " gfx_memory" is used to buffer the actual framebuffer content is that right?

The "video_engine_memory" are is the compression buffer.

The driver allocates the memory from these reserved areas. Is there a way to release these area's for general use when the iKVM is shutdown. This would allow me to update the system right now these two area's are already occupying a large part of the system memory and I need approx. 32 MB to perform the update.

Best Regards,
Wim Vervoorn


-----Original Message-----
From: openbmc [mailto:openbmc-bounces+wvervoorn=eltan.com at lists.ozlabs.org] On Behalf Of Eddie James
Sent: Tuesday, May 28, 2019 5:33 PM
To: Alexander A. Filippov <a.filippov at yadro.com>; openbmc at lists.ozlabs.org
Subject: Re: IKVM on AST2400


On 5/27/19 7:40 AM, Alexander A. Filippov wrote:
> On Mon, May 27, 2019 at 08:19:44AM +0000, Wim Vervoorn wrote:
>> Hello Alexander,
>>
>> We are supporting the AST2400 as well.
>>
>> I am also wondering what the correct changes are to get iKVM working properly on the AST2400.
>>
>> The errors caused by create_usbhid.sh are caused by usb gadget support that isn't enabled. This should be done in the Linux kernel. We are using the following options:
>>
>> CONFIG_USB_GADGET=y
>> CONFIG_USB_F_HID=y
>> CONFIG_USB_GADGET=y
>> CONFIG_USB_ASPEED_VHUB=y
>> CONFIG_USB_CONFIGFS=y
>> CONFIG_USB_CONFIGFS_MASS_STORAGE=y
>> CONFIG_USB_CONFIGFS_F_HID=y
>>
>> The CONFIG_USB_CONFIGFS_MASS_STORAGE is not really needed for this. This is only required if you also want to support emulation of a USB storage device.
>>
>> Besides this you need a small change to the aspeed-g4.dtsi and the system dts to add the VHUB device. You can copy that from the aspeed-g5.dtsi.
> Yes, I've done it too.
>
>> I am wondering which support you enabled for the actual iKVM support to work and which code you are actually using. (which kernel etc).
> We use linux-aspeed recipe from OpenBMC mainline.
> So, our kernel is 5.1.3.
>
> I've also enabled these options:
>      CONFIG_DRM=y
>      CONFIG_DRM_ASPEED_GFX=y
>      CONFIG_FRAME_VECTOR=y
>      CONFIG_MEDIA_SUPPORT=y
>      CONFIG_MEDIA_CAMERA_SUPPORT=y
>      CONFIG_VIDEO_DEV=y
>      CONFIG_VIDEO_V4L2=y
>      CONFIG_V4L_PLATFORM_DRIVERS=y
>      CONFIG_VIDEO_ASPEED=y
>      CONFIG_VIDEOBUF2_CORE=y
>      CONFIG_VIDEOBUF2_V4L2=y
>      CONFIG_VIDEOBUF2_MEMOPS=y
>      CONFIG_VIDEOBUF2_DMA_CONTIG=y
>      CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
>
> and copied vga_scratch and video nodes from aspeed-g5.dtsi.
> I've sent these changes to correspond maillists.
>    https://lore.kernel.org/patchwork/patch/1079462/
>
>> As far as I have understood these memory area's are required but I am not really sure about it.
>>
>> 		gfx_memory: framebuffer {
>> 			size = <0x00800000>;
>> 			alignment = <0x01000000>;
>> 			compatible = "shared-dma-pool";
>> 			reusable;
>> 		};
>>
>> 		video_engine_memory: jpegbuffer {
>> 			size = <0x02000000>;	/* 32MM */
>> 			alignment = <0x01000000>;
>> 			compatible = "shared-dma-pool";
>> 			reusable;
>> 		};
>>
>> The questions I have are :
>>
>> The "gfx_memory" area seems double to me we also have the "vga_memory" area which also is the video memory, why do we need to define a 2nd one that as far as I understand it points to the same physical part of RAM.
>>
> If I understand right, this node is not required for AST2400 because 
> GFX is unsupported by SoC.
>
>> I can understand where the "video_engine_memory" is for but it is not clear how I can determine the required size. As the total amount of memory is limited we are trying to reduce memory usage where possible and so far I haven't been able to find out what is defining the size of this block of memory.
> I can't say anything about choosing buffer's size. I just copied it 
> from AST2500 and it works for me.

Hi Wim,

In order to detect the resolution, the driver allocates a buffer for the largest possible resolution (1920x1200x32bpp). Once detected, the memory is reduced down to what is needed (double buffer of the detected resolution, as well as the compression buffer, which is small in comparison). So that is why that reserved memory block is that size, though I think it is larger than it needs to be. I had issues with attempting to reliably allocate DMA without the reserved memory (memory is probably too fragmented).

Hope that helps,

Eddie

>
>> Best regards,
>>
>> Wim Vervoorn
>>
>>
>>
>>
>>
>>
>> Date: Fri, 24 May 2019 15:03:28 +0300
>> From: "Alexander A. Filippov" <a.filippov at yadro.com>
>> To: OpenBMC Maillist <openbmc at lists.ozlabs.org>
>> Subject: IKVM on AST2400
>> Message-ID: <20190524120328.GA648 at bbwork.lan>
>> Content-Type: text/plain; charset="utf-8"
>>
>> Some time ago the obmc-ikvm service was added to the firmware. It causes some problems on our VESNIN hardware. As it based on AST2400 it does not have support for IKVM in the DTS. The system log contains messages that create_usbhid.sh is unable to find some items in the sysfs and then obmc-ikvm service crashes. It causes fail in QEMU_CI test.
>>
>> I belive that this issue also present on other platforms based on AST2400.
>>
>> IBM Guys: Do you run tests for Palmetto?
>> Is there anybody else who uses AST2400?
>>
>> Well, my proposal is to make the IKVM support optional by moving it to the distrofeature.
>>
>> Besides, I've solved these problems for our hardware by adding required kernel modules and modifying DTS.
>> IKVM works, but bring a lot of warnings after the host was shut down while the VNC-client is still connected.
>>
>> During the solving I copied some records from aspeed-g5.dtsi to aspeed-g4.dtsi.
>> Should I commit these changes to Torvalds or OpenBMC repo?
>>
>> --
>> Regards
>> Alexander Filippov
>> Software Engineer, YADRO
>>
>>
>>





More information about the openbmc mailing list