All of lore.kernel.org
 help / color / mirror / Atom feed
From: xiuzhi <1450335857@qq.com>
To: "jae.hyun.yoo" <jae.hyun.yoo@linux.intel.com>,
	"Lei YU" <mine260309@gmail.com>
Cc: openbmc <openbmc@lists.ozlabs.org>, ed <ed@tanous.net>,
	"Eddie James" <eajames@linux.vnet.ibm.com>
Subject: Re:  Does obmc-ikvm work with bmcweb?
Date: Tue, 19 Mar 2019 11:05:58 +0800	[thread overview]
Message-ID: <tencent_14DF729947F8137027E44FCE@qq.com> (raw)
In-Reply-To: <e592f504-b7b4-ff40-543c-84e99502e1d1@linux.intel.com>

[-- Attachment #1: Type: text/plain, Size: 12026 bytes --]

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@linux.intel.com>;
Send time: Tuesday, Mar 19, 2019 1:33 AM
To: "Lei YU"<mine260309@gmail.com>; 
Cc: "xiuzhi"<1450335857@qq.com>; "openbmc"<openbmc@lists.ozlabs.org>; "ed"<ed@tanous.net>; "Eddie James"<eajames@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@linux.ibm.com>
> +L:    linux-media@vger.kernel.org
> +L:    openbmc@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@gmail.com>
>   L:    acpi4asus-user@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@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@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

[-- Attachment #2: Type: text/html, Size: 18694 bytes --]

  reply	other threads:[~2019-03-19  3:06 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-14  2:21 Does obmc-ikvm work with bmcweb? xiuzhi
2019-03-14 17:53 ` Jae Hyun Yoo
2019-03-15  7:18   ` xiuzhi
2019-03-15 17:11     ` Jae Hyun Yoo
2019-03-18  2:25       ` Lei YU
2019-03-18 17:21         ` Jae Hyun Yoo
2019-03-18 17:33           ` Jae Hyun Yoo
2019-03-19  3:05             ` xiuzhi [this message]
2019-03-19 18:04               ` Jae Hyun Yoo
2019-03-19  9:22             ` Lei YU
2019-03-19 18:09               ` Jae Hyun Yoo
2019-03-20  5:30                 ` Lei YU
2019-03-20 11:12                   ` Thaju
2019-03-20 17:43                     ` Jae Hyun Yoo
2019-03-21  7:02                       ` Lei YU
2019-03-21 16:19                         ` Jae Hyun Yoo
2019-03-21 16:27                           ` Thaju
2019-03-21 21:31                             ` Jae Hyun Yoo
2019-04-14  7:12                               ` xiuzhi
2019-04-15 19:26                                 ` Jae Hyun Yoo
2019-04-16  1:53                                   ` xiuzhi
2019-03-22  3:34                           ` Lei YU
2019-03-22 15:21                             ` Eddie James
2019-04-04  5:21     ` ikvm refresh failed on host screen 1680x1050 resolution xiuzhi
2019-04-04 17:16       ` Jae Hyun Yoo
2019-04-08  1:14         ` xiuzhi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=tencent_14DF729947F8137027E44FCE@qq.com \
    --to=1450335857@qq.com \
    --cc=eajames@linux.vnet.ibm.com \
    --cc=ed@tanous.net \
    --cc=jae.hyun.yoo@linux.intel.com \
    --cc=mine260309@gmail.com \
    --cc=openbmc@lists.ozlabs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.