summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* systemd: Don't start without configfsHEADmasterBrad Bishop2019-11-141-0/+1
| | | | | | | | We cannot run without configfs. Don't attempt to start if we find ourselves in that situation. Change-Id: I67515d2eaaf982f6750aae6e90a939873338a77c Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
* build: drop autotools supportBrad Bishop2019-11-143-78/+0
| | | | | | | | | It made sense to support both build systems while OpenBMC transitioned but that has been complete for some time - No need to support multiple build systems any longer. Change-Id: Ib698163f53a4f493f20491c54851247c5700f13e Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
* Prevent excessive journal logging by wakeup signalEddie James2019-09-302-48/+50
| | | | | | | | | | | | | | | When the application is waiting for timings, it restarts the video to try and get a signal. Part of this process sends a wake-up signal on the virtual keyboard and pointer in case host VGA has slept. But if the host is shut down, this causes repeated errors in the journal as the HID gadgets return errors. Fix this by consolidating the keyboard/pointer write functions and therefore closing the HID gadget file handles when the host is shut down, preventing further wake-up attempts until host returns. Change-Id: Id5fe484c976eccefa6a72393d4d6b2b301d28a1a Signed-off-by: Eddie James <eajames@linux.ibm.com>
* Remove frame rate limitJae Hyun Yoo2019-09-271-1/+1
| | | | | | | | | | | | | Since we have flow control logic, better remove the frame rate limit to improve frame update speed as faster as it can provide. So this commit removes the limit parameter so that it can use the default 30fps setting. Tested: It didn't make bmcweb crash which is caused by frame data flooding. Frame update speed little bit faster than before. Change-Id: I30ec8f2c4124e27c20261b87042fb094160d27f8 Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
* Add flow control to prevent buffer over runJae Hyun Yoo2019-09-122-0/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This service uses direct frame update with bypassing image compression and invalidating logic in libvncserver to achieve better performance by using of H/W compressed JPEG frames as those come from the video engine driver. This behavior helps quick frame update using very small amount of CPU resources but it causes a side effect which crashes bmcweb by OOM killer due to a buffer over run issue. Usually, this issue happens often in a slow speed connection because this service keeps sending all frames without any handshaking with clients so a session buffer in the bmcweb gets bigger and bigger since the low speed connection can't send all stream data on time. To fix this issue, this commit adds flow control logic to make frame updating handshakes with client so that it'll send frames only when it recieved client frame update messages. All other frames when the client doesn't request will be dropped out to prevent the buffer over run issue. Tested: bmcweb didn't keep increasing its KVM session buffer. KVM worked well with showing good refresh speed. resolves https://github.com/openbmc/bmcweb/issues/80 Change-Id: I6b09a711137d15a38fce59adada9bf3d00afde86 Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
* Add keypad input supportJae Hyun Yoo2019-08-202-0/+61
| | | | | | | This commit makes keypad inputs available. Change-Id: I95a9268cd930c85846947b6bd49c97087121ca8a Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
* Add a maintainerJae Hyun Yoo2019-08-091-0/+1
| | | | | | | Add Jae as a maintainer. Change-Id: I520b8da04d64ccd186ec22a68e0e38929c7bed68 Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
* eliminate excessive journal errorsEddie James2019-08-094-4/+64
| | | | | | | | | | When the USB gadget is shut down, the application needs to avoid writes to it in order to avoid lots of errors in the kernel log. Close the file handle and re-open it when timings are detected again. Also, prevent logging the failed timings query more than once. Change-Id: Ic126828fe26ef44ebb0a5cb65cc47b23bb84f7f3 Signed-off-by: Eddie James <eajames@linux.ibm.com>
* Reduce framerate to prevent lagEddie James2019-04-191-1/+1
| | | | | | | | Reduce the framerate to 16 from the default 30. In testing with high latency or low bandwidth situations, 30 fps is unusable. Signed-off-by: Eddie James <eajames@linux.ibm.com> Change-Id: Idf6ce9da4556a53500507dcf9d02a4425cba9a1b
* Switch pointer gadget to non-blockingEddie James2019-04-182-3/+10
| | | | | | | | | Writes to the pointer gadget can hang if the host has no cursor. Using non-blocking mode prevents this hanging. Also prevent repeated error logging due to pointer write failures in this case. Change-Id: I9c423a4a0af4b37a69ae20650b86a6266e5b4b41 Signed-off-by: Eddie James <eajames@linux.ibm.com>
* meson: install create_usbhid.shJohn Wang2019-04-171-0/+6
| | | | | Change-Id: If9d19f24c568f4befa6c8b3acc1148149e59daef Signed-off-by: John Wang <wangzqbj@inspur.com>
* Fix host video wake up failure issueJae Hyun Yoo2019-04-151-12/+8
| | | | | | | | | | | Mouse and Keyboard wake up event were being sent only when an error happens while opening the video dev entry so KVM service can't wake up the host video. To fix this issue, this commit makes video::start send the wake up packet always at the beginning of video streaming. Change-Id: I1004b7a3cc552d210080a12157e66233b33293bf Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
* systemd: Add unit fileBrad Bishop2019-04-032-0/+19
| | | | | | | Add a unit file for starting obmc-ikvm with systemd. Change-Id: I85bc8c5d9682b48aedeb3670a61179267798d4f7 Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
* meson: Add alternative to autotools build systemBrad Bishop2019-04-021-0/+30
| | | | | Change-Id: Ib22d670aed7b17cd1722e8cc915bd8850ce22475 Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
* Restart video when mode detection is failedJae Hyun Yoo2019-03-222-0/+7
| | | | | | | | | | | | | KVM sometimes stops when video mode is changed. This commit adds video restarting logic for the case. Tested: 1. Open BMCWeb -> Server control -> KVM 2. Checked KVM screen update while restarting the host. It updates all frames even when video mode changes happen. Change-Id: If986394110986e49a6eaac1ae2859208fa7681f5 Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
* Fix video restarting sync issueJae Hyun Yoo2019-03-212-1/+2
| | | | | | | | | | | | | | | There is a video start/stop sync issue inbetween ikvm server and ikvm manager because newClient and clientGone callbacks are called by a different thread from libvncserver. To fix this issue, this commit moves the video.start() call from server to manager to unify video control thread. Tested: Open KVM web page and reload the web page by pressing F5. KVM page should be reloaded correctly. Change-Id: Ic0d14ea712510318e9e8f45615a95e82aeaaddf1 Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
* Change license to GPL 2Eddie James2019-03-201-201/+340
| | | | | | | | This application links with libvncserver, which is GPL 2, and therefore needs to be licensed as GPL 2 also. Change-Id: I8807e110653782773263e36b94f69af885901aee Signed-off-by: Eddie James <eajames@linux.ibm.com>
* Fix mouse button mapping issueJae Hyun Yoo2019-03-191-1/+2
| | | | | | | | | | | Mapping of a mouse button event delivered from libvncserver is different from HID gadget driver so this patch swaps bit position 1 and 2 to map center and right button correctly. Tested: KVM mouse buttons worked correctly. Change-Id: Ia1771df6763b906b5cff3041df9095e0c72c892b Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
* Fix pointer position mismatch issueJae Hyun Yoo2019-02-251-2/+2
| | | | | | | | | | | | | | | | In case of big size resolution of host video, mouse pointer indicates slightly upper left than client GUI pointer. It's caused by rounding off value below the decimal point on the coordinate unit. For an example, in 1600x1200 screen size, the x coordinate unit is 32768 / 1600 = 20.48 but we use 20 after rounding off the 0.48. To prevent this issue, this commit changes logic of the calculation. It uses integer operations instead of using floating point operations for better performance. Change-Id: Ie1fbb6b41ace997c50982d9542b0b03280b2220f Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
* Send a keyboard event too for a wake-up eventJae Hyun Yoo2019-02-201-10/+34
| | | | | | | | | This commit adds a keyboard event sending for waking up the host. So both keyboard and mouse events will be triggered for a case when the host is in mode that doesn't support mouse. Change-Id: I90d9a1e53706cd860340dfd8be688128fa95c4fc Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
* build: pkg anti-pattern: use defaultsPatrick Venture2019-02-131-4/+4
| | | | | | | | Use the defaults in the pkg check where the default error message is sufficient to identify which package is missing. Change-Id: Ic4e819ff68c05e70b51a8212236def7d33f6d750 Signed-off-by: Patrick Venture <venture@google.com>
* Fix HID issuesJae Hyun Yoo2019-01-1510-116/+267
| | | | | | | | | | | | | | Mixed type HID report descriptor in the current trunk doesn't work well so this patch fixes the HID creation logic to make it use composite configuration which has separated keyboard and mouse HID descriptor using a single USB port. ikvm service also should be changed using below setting after applying this patch: ExecStart=/usr/bin/env obmc-ikvm -v /dev/video0 -k /dev/hidg0 -p /dev/hidg1 Change-Id: I9b2975f4fdade2c6030def829951d02b24bea562 Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
* Add installed bash script to create a USB gadget deviceEddie James2018-12-112-0/+66
| | | | | | | | This device acts like a USB mouse and keyboard to the host processor to allow input from the remote user Change-Id: I932cb6aebb9a0b5e27a35afc6d7f6a4ad989f417 Signed-off-by: Eddie James <eajames@linux.ibm.com>
* Add manager class to run the server and videoEddie James2018-12-114-0/+181
| | | | | Change-Id: Ie69e995dd56f8d2aa7e3828504e29f9993bb2b3c Signed-off-by: Eddie James <eajames@linux.ibm.com>
* Add RFB server class implementationEddie James2018-12-112-1/+243
| | | | | Change-Id: I3532b5ecdef87cb8f64327de6bd22a175b68f865 Signed-off-by: Eddie James <eajames@linux.ibm.com>
* Add V4L2 video class implementationEddie James2018-12-112-0/+563
| | | | | Change-Id: I9fd9cdbc711fb48de542efcaf02d0630ae0872b2 Signed-off-by: Eddie James <eajames@linux.ibm.com>
* Add input handling classEddie James2018-12-118-1/+725
| | | | | | | | The Input class depends on the RFB server and V4L2 video classes, so add outlines for those as well. Change-Id: I2826f3da78dee10826e378dfc2c773b891da1f03 Signed-off-by: Eddie James <eajames@linux.ibm.com>
* Add build infrastructure and argument parsing classEddie James2018-12-116-0/+243
| | | | | Change-Id: Ifb8f283733fe4de531859dc895da35a3a01071a0 Signed-off-by: Eddie James <eajames@linux.ibm.com>
* Add LICENSE and MAINTAINERS files and update README.mdEddie James2018-12-113-0/+263
| | | | | Change-Id: I2e22b954d82817884b5827d23a110a04b74134f3 Signed-off-by: Eddie James <eajames@linux.ibm.com>
* Initial commitEddie James2018-08-271-0/+1
Change-Id: I674f6aa1d85341496ceb352cdecfb35071671508 Signed-off-by: Eddie James <eajames@us.ibm.com>
OpenPOWER on IntegriCloud