Hi Jae,

It works. Found one issue which is explained below.

I have applied below 3 patches:
https://gerrit.openbmc-project.xyz/c/openbmc/obmc-ikvm/+/19392
https://gerrit.openbmc-project.xyz/c/openbmc/obmc-ikvm/+/19433
https://gerrit.openbmc-project.xyz/c/openbmc/obmc-ikvm/+/19393

I can confirm that:
1. KVM video appears fine in webui
2. All keyboard characters works fine.
3. Both mouse buttons works fine (with patch)

Now the issue is when host OS ( RHEL 7.5 in my case ) goes to power saving mode (black screen) after some N mins (depends on OS settings), looks like it does not accept the KVM HID events, it doesn't wake up from power saving mode through KVM. I see below error when this happens.

Mar 21 09:31:43  obmc-ikvm[1408]: Failed to query timings
Mar 21 09:31:43  kernel: aspeed-video 1e700000.video: Timed out; first mode detect
Mar 21 09:31:44  kernel: aspeed-video 1e700000.video: Timed out when stopping streaming
Mar 21 09:31:45  kernel: aspeed-video 1e700000.video: Timed out; first mode detect
Mar 21 09:31:46  kernel: aspeed-video 1e700000.video: Timed out; first mode detect
Mar 21 09:31:47  env[1408]: 21/03/2019 09:31:47 Sending rfbEncodingNewFBSize for resize to (640x480)
Mar 21 09:31:48  obmc-ikvm[1408]: Failed to query timings
Mar 21 09:31:49  kernel: aspeed-video 1e700000.video: Timed out; first mode detect
Mar 21 09:31:50  obmc-ikvm[1408]: Failed to query timings
Mar 21 09:31:51  kernel: aspeed-video 1e700000.video: Timed out; first mode detect
Mar 21 09:31:52  obmc-ikvm[1408]: Failed to query timings
Mar 21 09:31:53  kernel: aspeed-video 1e700000.video: Timed out; first mode detect

On this state, I used physical keyboard on the host OS to bring it back from power saving mode and I see KVM also comes back. I have also tried setting the power saving timeout to "never". It works fine.

To recreate this issue
1. Set power saving timeout to 1 min. (In RHEL 7.5, Settings > Power > Blank Screen)
2. Leave the host OS to idle for 1 min.
3. You will see screen goes black after 1 min and KVM stops responding. 

Hope you understood the issue. Thanks for your support.

Regards,
Thaj

On Thu, Mar 21, 2019 at 9:49 PM Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com> wrote:
Hi Lei,

Are you using a web browser from Windows OS? It seems that there is an
issue of Windows websockify/novnc. Use a browser from OS other than
Windows til the issue is resolved.

Did you test it using Tight VNC viewer after enabling external
connection? The reason why I suggested that is to identify whether
this issue comes from KVM web proxy or from KVM server.

Need more information of your test environment.
Server platform:
BMC SoC:
Host OS:

Regards,
Jae

On 3/21/2019 12:02 AM, Lei YU wrote:
>> Check journal (journalctl -f) while you're testing KVM if there is any
>> suspicious error. In normal opration, you should see logs like below:
>
> I see the same logs as Thaj, only below logs show when the issue occurs.
>
> Mar 21 05:26:02 romulus env[1564]: 21/03/2019 05:26:02 Unable to
> establish connection with systemd socket
> Mar 21 05:26:02 romulus env[1564]: 21/03/2019 05:26:02 Listening for
> VNC connections on TCP port 5900
> Mar 21 05:26:02 romulus env[1564]: 21/03/2019 05:26:02 Listening for
> VNC connections on TCP6 port 5900
> Mar 21 05:26:06 romulus env[1564]: 21/03/2019 05:26:06 Got connection
> from client 127.0.0.1
> Mar 21 05:26:06 romulus env[1564]: 21/03/2019 05:26:06   other clients:
> Mar 21 05:26:06 romulus env[1564]: 21/03/2019 05:26:06 Normal socket connection
>
> And sometimes it works, then I see logs like:
>
> Mar 21 06:54:12 romulus env[1957]: 21/03/2019 06:54:12 Normal socket connection
> Mar 21 06:54:12 romulus env[1957]: 21/03/2019 06:54:12 Client Protocol
> Version 3.8
> Mar 21 06:54:12 romulus env[1957]: 21/03/2019 06:54:12 Protocol
> version sent 3.8, using 3.8
> Mar 21 06:54:12 romulus env[1957]: 21/03/2019 06:54:12
> rfbProcessClientSecurityType: executing handler for type 1
> Mar 21 06:54:12 romulus env[1957]: 21/03/2019 06:54:12
> rfbProcessClientSecurityType: returning securityResult for client rfb
> version >= 3.8
> Mar 21 06:54:12 romulus env[1957]: 21/03/2019 06:54:12 Pixel format
> for client 192.168.10.11:
> Mar 21 06:54:12 romulus env[1957]: 21/03/2019 06:54:12   32 bpp, depth
> 24, little endian
> Mar 21 06:54:12 romulus env[1957]: 21/03/2019 06:54:12   true colour:
> max r 255 g 255 b 255, shift r 16 g 8 b 0
> Mar 21 06:54:12 romulus env[1957]: 21/03/2019 06:54:12 Using
> compression level 1 for client 192.168.10.11
> Mar 21 06:54:12 romulus env[1957]: 21/03/2019 06:54:12 Using image
> quality level 6 for client 192.168.10.11
> Mar 21 06:54:12 romulus env[1957]: 21/03/2019 06:54:12 Using JPEG
> subsampling 0, Q79 for client 192.168.10.11
> Mar 21 06:54:12 romulus env[1957]: 21/03/2019 06:54:12 Enabling
> X-style cursor updates for client 192.168.10.11
> Mar 21 06:54:12 romulus env[1957]: 21/03/2019 06:54:12 Enabling
> full-color cursor updates for client 192.168.10.11
> Mar 21 06:54:12 romulus env[1957]: 21/03/2019 06:54:12 Enabling cursor
> position updates for client 192.168.10.11
> Mar 21 06:54:12 romulus env[1957]: 21/03/2019 06:54:12 Enabling
> LastRect protocol extension for client 192.168.10.11
> Mar 21 06:54:12 romulus env[1957]: 21/03/2019 06:54:12 Using tight
> encoding for client 192.168.10.11
>
> It's found that the VNC server may work when the screen is changed, e.g.
> reboot the OS, or enter the OS.
> When OS is in idle, usually it will not work.
>
>> Also, try these two patches. I added one more patch.
>> https://gerrit.openbmc-project.xyz/c/openbmc/obmc-ikvm/+/19392
>> https://gerrit.openbmc-project.xyz/c/openbmc/obmc-ikvm/+/19433
>
> Tried the patches, still the same issue as above.
>