Does obmc-ikvm work with bmcweb?
xiuzhi
1450335857 at qq.com
Tue Mar 19 14:05:58 AEDT 2019
Hi Joe,
The ikvm works now, thanks very much.
One issue, the right button of mouse operation has no response on bmc ikvm website page.
Best,
xiuzhi
------------------ Original ------------------
From: "jae.hyun.yoo";<jae.hyun.yoo at linux.intel.com>;
Send time: Tuesday, Mar 19, 2019 1:33 AM
To: "Lei YU"<mine260309 at gmail.com>;
Cc: "xiuzhi"<1450335857 at qq.com>; "openbmc"<openbmc at lists.ozlabs.org>; "ed"<ed at tanous.net>; "Eddie James"<eajames at linux.vnet.ibm.com>;
Subject: Re: Does obmc-ikvm work with bmcweb?
Attaching a patch file for back porting of Eddie's aspeed-video driver.
Diff in below doesn't include the newly created file so I'm attaching it
as a patch.
-Jae
On 3/18/2019 10:21 AM, Jae Hyun Yoo wrote:
> On 3/17/2019 7:25 PM, Lei YU wrote:
>>> openbmc: ae29d00f227e55192a69f66c87633e1b53fc6e68
>>>
>>> I'm using a custom build config for my machine. As you already know, for
>>> enabling the KVM feature, customization on kernel configs, adding a
>>> 'start-ipkvm' service, adding of libvncserver package and back-porting
>>> of aspeed video driver are also needed so there is no one-shot buildable
>>> TEMPLATECONF for KVM test.
>>
>> Could you kindly put everything together on a branch so others could
>> refer the
>> branch to know what the changes are for KVM to work?
>> Thanks a lot!
>>
>
> Well, I've already shared SHAs that are relating to KVM in this email
> thread, I'm sharing it again with some more details.
>
> openbmc: ae29d00f227e55192a69f66c87633e1b53fc6e68
>
> bmcweb: 9474b3788017bddd70e493e2b9b7674be30abc87
>
> phosphor-webui: 511a2bbc5540fccb883b8d0005c2b387a23c9d05
> Cherry picked
> https://gerrit.openbmc-project.xyz/#/c/openbmc/phosphor-webui/+/10268/
>
> libvncserver: 3348a7e42e86dfb98dd7458ad29def476cf6096f
> Need to remove 'x11' and 'gtk+' to reduce package size so I made:
> libvncserver_%.bbappend
> ----------------------------------------------------------------
> PACKAGECONFIG_remove = "gcrypt gnutls png sdl zlib"
>
> TARGET_CXXFLAGS += " -Dflto"
>
> do_install_append() {
> rm -rf ${D}${libdir}/libvncclient*
> }
>
> inherit cmake
>
> # Use the latest to support obmc-ikvm
> DEPENDS += "openssl"
> SRC_URI = "git://github.com/LibVNC/libvncserver"
> SRCREV = "3348a7e42e86dfb98dd7458ad29def476cf6096f"
> S = "${WORKDIR}/git"
>
> # Remove x11 and gtk+ that cause big image size
> # Actually, these aren't needed to support obmc-ikvm
> REQUIRED_DISTRO_FEATURES_remove = "x11"
> DEPENDS_remove = "gtk+"
> RDEPENDS_${PN}_remove = "gtk+"
> ----------------------------------------------------------------
>
> start-ipkvm: Cherry pick
> https://gerrit.openbmc-project.xyz/#/c/openbmc/meta-phosphor/+/13536/
> After cherry picking it, I changed start-ipkvm.service file like below:
> start-ipkvm.service
> ----------------------------------------------------------------
> [Unit]
> Description=OpenBMC ipKVM daemon
> StopWhenUnneeded=false
>
> [Service]
> Restart=always
> ExecStartPre=/usr/bin/create_usbhid.sh
> ExecStart=/usr/bin/env obmc-ikvm -v /dev/video0 -f 10 -k /dev/hidg0 -p
> /dev/hidg1
>
> [Install]
> WantedBy=multi-user.target
> -----------------------------------------------------------------
>
> obmc-ikvm: 2bc661d34abd1fda92a9d2b256ed88ca0e90d09a
>
> linux-aspeed: 7859d04be772a1d185de335a8e9d38ac03a89f3f
> Added these kernel configs:
> -----------------------------------------------------------------
> 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
> CONFIG_USB_GADGET_VBUS_DRAW=2
> CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
> CONFIG_USB_LIBCOMPOSITE=y
> CONFIG_USB_F_HID=y
> CONFIG_USB_GADGET=y
> CONFIG_U_SERIAL_CONSOLE=y
> CONFIG_USB_ASPEED_VHUB=y
> CONFIG_USB_CONFIGFS=y
> CONFIG_USB_CONFIGFS_MASS_STORAGE=y
> CONFIG_USB_CONFIGFS_F_FS=y
> CONFIG_USB_CONFIGFS_F_HID=y
> -------------------------------------------------------------------
> Back ported Eddie's aspeed-video driver
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index b98a5763f6c1..cdd8f824b6da 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -2358,6 +2358,14 @@ S: Maintained
> F: Documentation/hwmon/asc7621
> F: drivers/hwmon/asc7621.c
>
> +ASPEED VIDEO ENGINE DRIVER
> +M: Eddie James <eajames at linux.ibm.com>
> +L: linux-media at vger.kernel.org
> +L: openbmc at lists.ozlabs.org (moderated for non-subscribers)
> +S: Maintained
> +F: drivers/media/platform/aspeed-video.c
> +F: Documentation/devicetree/bindings/media/aspeed-video.txt
> +
> ASUS NOTEBOOKS AND EEEPC ACPI/WMI EXTRAS DRIVERS
> M: Corentin Chary <corentin.chary at gmail.com>
> L: acpi4asus-user at lists.sourceforge.net
> diff --git a/arch/arm/boot/dts/aspeed-g5.dtsi
> b/arch/arm/boot/dts/aspeed-g5.dtsi
> index d8a9d20cc4e0..d6da0a29ced3 100644
> --- a/arch/arm/boot/dts/aspeed-g5.dtsi
> +++ b/arch/arm/boot/dts/aspeed-g5.dtsi
> @@ -243,6 +243,17 @@
> interrupts = <0x19>;
> };
>
> + video: video at 1e700000 {
> + compatible = "aspeed,ast2500-video-engine";
> + reg = <0x1e700000 0x20000>;
> + clocks = <&syscon ASPEED_CLK_GATE_VCLK>,
> + <&syscon ASPEED_CLK_GATE_ECLK>;
> + clock-names = "vclk", "eclk";
> + resets = <&syscon ASPEED_RESET_VIDEO>;
> + interrupts = <7>;
> + status = "disabled";
> + };
> +
> adc: adc at 1e6e9000 {
> compatible = "aspeed,ast2500-adc";
> reg = <0x1e6e9000 0xb0>;
> diff --git a/drivers/clk/clk-aspeed.c b/drivers/clk/clk-aspeed.c
> index 596136793fc4..f16ce7dbd6ab 100644
> --- a/drivers/clk/clk-aspeed.c
> +++ b/drivers/clk/clk-aspeed.c
> @@ -87,7 +87,7 @@ struct aspeed_clk_gate {
> /* TODO: ask Aspeed about the actual parent data */
> static const struct aspeed_gate_data aspeed_gates[] = {
> /* clk rst name parent flags */
> - [ASPEED_CLK_GATE_ECLK] = { 0, -1, "eclk-gate",
> "eclk", 0 }, /* Video Engine */
> + [ASPEED_CLK_GATE_ECLK] = { 0, 6, "eclk-gate",
> "eclk", 0 }, /* Video Engine */
> [ASPEED_CLK_GATE_GCLK] = { 1, 7, "gclk-gate", NULL,
> 0 }, /* 2D engine */
> [ASPEED_CLK_GATE_MCLK] = { 2, -1, "mclk-gate", "mpll",
> CLK_IS_CRITICAL }, /* SDRAM */
> [ASPEED_CLK_GATE_VCLK] = { 3, 6, "vclk-gate", NULL,
> 0 }, /* Video Capture */
> @@ -113,6 +113,24 @@ static const struct aspeed_gate_data aspeed_gates[]
> = {
> [ASPEED_CLK_GATE_LHCCLK] = { 28, -1, "lhclk-gate",
> "lhclk", 0 }, /* LPC master/LPC+ */
> };
>
> +static const char * const eclk_parent_names[] = {
> + "mpll",
> + "hpll",
> + "dpll",
> +};
> +
> +static const struct clk_div_table ast2500_eclk_div_table[] = {
> + { 0x0, 2 },
> + { 0x1, 2 },
> + { 0x2, 3 },
> + { 0x3, 4 },
> + { 0x4, 5 },
> + { 0x5, 6 },
> + { 0x6, 7 },
> + { 0x7, 8 },
> + { 0 }
> +};
> +
> static const struct clk_div_table ast2500_mac_div_table[] = {
> { 0x0, 4 }, /* Yep, really. Aspeed confirmed this is correct */
> { 0x1, 4 },
> @@ -192,18 +210,21 @@ static struct clk_hw
> *aspeed_ast2500_calc_pll(const char *name, u32 val)
>
> struct aspeed_clk_soc_data {
> const struct clk_div_table *div_table;
> + const struct clk_div_table *eclk_div_table;
> const struct clk_div_table *mac_div_table;
> struct clk_hw *(*calc_pll)(const char *name, u32 val);
> };
>
> static const struct aspeed_clk_soc_data ast2500_data = {
> .div_table = ast2500_div_table,
> + .eclk_div_table = ast2500_eclk_div_table,
> .mac_div_table = ast2500_mac_div_table,
> .calc_pll = aspeed_ast2500_calc_pll,
> };
>
> static const struct aspeed_clk_soc_data ast2400_data = {
> .div_table = ast2400_div_table,
> + .eclk_div_table = ast2400_div_table,
> .mac_div_table = ast2400_div_table,
> .calc_pll = aspeed_ast2400_calc_pll,
> };
> @@ -317,6 +338,7 @@ static const u8 aspeed_resets[] = {
> [ASPEED_RESET_PECI] = 10,
> [ASPEED_RESET_I2C] = 2,
> [ASPEED_RESET_AHB] = 1,
> + [ASPEED_RESET_VIDEO] = 6,
>
> /*
> * SCUD4 resets start at an offset to separate them from
> @@ -522,6 +544,22 @@ static int aspeed_clk_probe(struct platform_device
> *pdev)
> return PTR_ERR(hw);
> aspeed_clk_data->hws[ASPEED_CLK_24M] = hw;
>
> + hw = clk_hw_register_mux(dev, "eclk-mux", eclk_parent_names,
> + ARRAY_SIZE(eclk_parent_names), 0,
> + scu_base + ASPEED_CLK_SELECTION, 2, 0x3, 0,
> + &aspeed_clk_lock);
> + if (IS_ERR(hw))
> + return PTR_ERR(hw);
> + aspeed_clk_data->hws[ASPEED_CLK_ECLK_MUX] = hw;
> +
> + hw = clk_hw_register_divider_table(dev, "eclk", "eclk-mux", 0,
> + scu_base + ASPEED_CLK_SELECTION, 28,
> + 3, 0, soc_data->eclk_div_table,
> + &aspeed_clk_lock);
> + if (IS_ERR(hw))
> + return PTR_ERR(hw);
> + aspeed_clk_data->hws[ASPEED_CLK_ECLK] = hw;
> +
> /*
> * TODO: There are a number of clocks that not included in this
> driver
> * as more information is required:
> @@ -531,7 +569,6 @@ static int aspeed_clk_probe(struct platform_device
> *pdev)
> * RGMII
> * RMII
> * UART[1..5] clock source mux
> - * Video Engine (ECLK) mux and clock divider
> */
>
> for (i = 0; i < ARRAY_SIZE(aspeed_gates); i++) {
> diff --git a/drivers/media/platform/Kconfig
> b/drivers/media/platform/Kconfig
> index 54fe90acb5b2..d6edf2d28f9b 100644
> --- a/drivers/media/platform/Kconfig
> +++ b/drivers/media/platform/Kconfig
> @@ -32,6 +32,15 @@ source "drivers/media/platform/davinci/Kconfig"
>
> source "drivers/media/platform/omap/Kconfig"
>
> +config VIDEO_ASPEED
> + tristate "Aspeed AST2400 and AST2500 Video Engine driver"
> + depends on VIDEO_V4L2
> + select VIDEOBUF2_DMA_CONTIG
> + help
> + Support for the Aspeed Video Engine (VE) embedded in the Aspeed
> + AST2400 and AST2500 SOCs. The VE can capture and compress video data
> + from digital or analog sources.
> +
> config VIDEO_SH_VOU
> tristate "SuperH VOU video output driver"
> depends on MEDIA_CAMERA_SUPPORT
> diff --git a/drivers/media/platform/Makefile
> b/drivers/media/platform/Makefile
> index 41322ab65802..205c33a004fc 100644
> --- a/drivers/media/platform/Makefile
> +++ b/drivers/media/platform/Makefile
> @@ -3,6 +3,7 @@
> # Makefile for the video capture/playback device drivers.
> #
>
> +obj-$(CONFIG_VIDEO_ASPEED) += aspeed-video.o
> obj-$(CONFIG_VIDEO_CADENCE) += cadence/
> obj-$(CONFIG_VIDEO_VIA_CAMERA) += via-camera.o
> obj-$(CONFIG_VIDEO_CAFE_CCIC) += marvell-ccic/
> diff --git a/include/dt-bindings/clock/aspeed-clock.h
> b/include/dt-bindings/clock/aspeed-clock.h
> index f43738607d77..15a9059d0303 100644
> --- a/include/dt-bindings/clock/aspeed-clock.h
> +++ b/include/dt-bindings/clock/aspeed-clock.h
> @@ -50,5 +50,6 @@
> #define ASPEED_RESET_I2C 7
> #define ASPEED_RESET_AHB 8
> #define ASPEED_RESET_CRT1 9
> +#define ASPEED_RESET_VIDEO 10
>
> #endif
> ------------------------------------------------------------------
>
> These are all I did for testing KVM.
>
> Cheers,
> Jae
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/openbmc/attachments/20190319/c3de701e/attachment-0001.htm>
More information about the openbmc
mailing list