18 Replies Latest reply on Jul 10, 2014 9:42 AM by LynnZ

    Intel EMGD Driver

    enienws Green Belt

      Hello all,

       

      I want to use Intel EMGD Driver on Ubuntu 12.04 LTS. Is this possible? Is there anyone who tried and succeeded? I want to enable hardware accelerated video decoding on a process coded Atom E3845.

       

      I am planning to apply suggested techniques in document named "Intel® Embedded Media and Graphics Driver and EPOG v36.40.21 (32-bit) & v37.40.21 (64-bit) for Intel® AtomTM Processor E3800 Product Family/ Intel® Celeron® Processor N2920/J1900 Linux* Release" to build and use EMGD driver on Ubuntu 12.04LTS. Is there any possibility for these instructions to work for that Ubuntu distribution?

       

      Best wishes.

        • Re: Intel EMGD Driver
          Kirk Brown Belt

          Unfortunately we are not able to support all of the various distributions of Linux that are available. It is simply not practical to do that, and we are not able to provide 100% of the source code due to some IP involved in the media and 3d acceleration portions of the driver.  We do provide a majority of the source so all is not lost. Ubuntu is not currently a POR distribution for us (our large customers dictate the distributions we support). That means we have not tried it specifically, and we may not provide all of the right "pieces" to make it possible.

           

          Here are the areas you will need to look into:

          1. kernel changes-  we provide scripts and patches for POR kernels to allow us to interface the driver to the hardware.  These patches are provided in code form.  If the Ubuntu kernel happens to match something that IS POR, then you just use that patch and this is easy to handle.  If the kernel is different (and most are), then you might need to look at what the patches are trying to do and create your own patch.  This is not impossible but difficult.  You are a programmer and Linux guru, right?

          2. X version - we provide pre-compiled libraries that interface into specific xorg versions for our POR distros, and sometimes for a few others if they are "easy" to support.  You will need to determine if the library will work with the X in your distribution.  If it is not a match, then your only recourse is to either up rev or back rev the X version in the distribution to match something that will work.

           

          Hope that helps.  Kirk

            • Re: Intel EMGD Driver
              enienws Green Belt

              Hello,

               

              First of all I am thankful for your valuable response.

               

              I understand your considerations about working on different distros.

               

              From your post I understand that I should give a try for Ubuntu and you are not guarentee whether suggested way would work or not.

               

              I am going to try patch and compile Linux kernel 3.8 (as specified in document named Intel® Embedded Media and Graphics Driver and EPOG v36.40.21 (32-bit) & v37.40.21 (64-bit) for Intel® AtomTM Processor E3800 Product Family/ Intel® Celeron® Processor N2920/J1900 Linux* Release). Below you can find the steps that I am planning to use. Could you please inspect them and warn me if there are any logical problems?

               

              1. Download the kernel 3.8 from kernel.org and patch it by using patches provided by Intel

              2. Compile it.

              3. Boot system by using that kernel

              4. Inspect X version from a similar Fedora distro, i.e. Fedora Remix from timesys

              5. Up rev or down rev if there are any problems

               

              Best wishes.

            • Re: Intel EMGD Driver
              Kirk Brown Belt

              Your process will work.   The patching step will either work, or bomb out if there are changes from what it is expecting.

               

              Sorry about the acronym.  Intel loves acronyms.  POR stands for "Plan of Record" which we publish that explains what is supported (features, OS, etc.) and what is not.  Our POR is available from your Intel Field Representative if you have one otherwise it is not generally available since it tlaks about future plans, etc that need you to have an NDA with us to share.  An Intel Field Rep manages the NDA process.

               

              Hope that helps.

              • Re: Intel EMGD Driver
                enienws Green Belt

                In the document specified previous messages, It says that

                 

                Section A.2 Item 4: Download the I/O component kernel AV_LSP patches from the Intel® AtomTM

                Processor E3800 Product Family/ Intel® Celeron® Processor N2920/J1900 driver

                guide (or your Intel representative).

                 

                I couldn't locate these patches. Could you please help me for locating them?

                  • Re: Intel EMGD Driver
                    Kirk Brown Belt

                    The patches are included with the driver when you download the driver directly from us here (rather than in any repository as those tend to be already patched).  When you unpack the driver install, you should have the patches already there with the driver pieces.  They may be unpacked as one of the RPM installs.  Hope that helps.

                      • Re: Intel EMGD Driver
                        enienws Green Belt

                        Hello,

                         

                        I have downloaded drivers from following link: https://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=23585

                         

                        All RPMs and TGZs are extracted and no patches named as

                        LSP_Patches/AV_LSP_3.8_ACPI_2013-04-26.patch

                        LSP_Patches/AV_LSP_3.8_CLK_2013-04-26.patch are found. Even there is no folder named LSP_Patches.

                         

                        Regards.

                          • Re: Intel EMGD Driver
                            Kirk Brown Belt

                            Open the IEMGD_HEAD_Linux.tgz in that download and go into the \patches directories.  The patch organization has changed a bit so that particular file name may have a slightly different name now.

                              • Re: Intel EMGD Driver
                                enienws Green Belt

                                Hello Kirk,

                                 

                                I have extracted IEMGD_HEAD_Linux.tgz before, but I couldn't find any patch file. By the way there is no patch named similar to AV_LSP... Below you can find tree output for patches folder:

                                 

                                .

                                ├── common

                                │   ├── LibDRM

                                │   │   ├── libDRM_2_4_34_VLV_Support

                                │   │   ├── libDRM_2_4_39_Atomic_Support

                                │   │   └── libDRM_2_4_39_VLV_Support

                                │   ├── Linux_Kernel_3_8

                                │   │   └── KERNEL_3_8_ATOMIC_Support

                                │   ├── MESA_i965

                                │   │   ├── MESA_OGL_Dri_8_0_4_VLV_Support

                                │   │   ├── MESA_OGL_Dri_9.1.1_VLV_Support

                                │   │   ├── MESA_OGL_Dri_9.1_VLV_Support

                                │   │   └── MESA_OGL_Dri_9.2.0_VLV_Support

                                │   ├── splash_video_support_3.8

                                │   │   ├── libva-intel-driver-1.0.20-headless.patch

                                │   │   ├── linux-3.8_drm_mode_setplane_symbol_export.patch

                                │   │   ├── mplayer-vaapi-headless.patch

                                │   │   └── README

                                │   └── VA_Driver_i965

                                │       ├── Intel_VA_Driver_1_0_17_VLV_Support

                                │       ├── Intel_VA_Driver_1_0_19_VLV_Support

                                │       ├── Intel_VA_Driver_1_0_20_VLV_Support

                                │       ├── Intel_VA_Driver_1_2_0_VLV_Support

                                │       ├── VAXV

                                │       │   ├── Gst_Plugins_VAAPI_pre_0_5_8_Adding_Rendermode_Patch

                                │       │   ├── Intel_VA_Driver_1_2_0_Add_VAXV_Feature_Patch

                                │       │   └── Mplayer_Adding_Rendermode_Patch

                                │       └── VC1_Interlace

                                │           ├── Gst_Codepatch

                                        └── drm_Makefile.patch

                                 

                                 

                                10 directories, 26 files

                                 

                                Which patch file should I use?

                                 

                                Regards.

                                  • Re: Intel EMGD Driver
                                    enienws Green Belt

                                    Sorry the following shall be accepted as a true one for tree command output:

                                     

                                    .

                                    ├── common

                                    │   ├── LibDRM

                                    │   │   ├── libDRM_2_4_34_VLV_Support

                                    │   │   ├── libDRM_2_4_39_Atomic_Support

                                    │   │   └── libDRM_2_4_39_VLV_Support

                                    │   ├── Linux_Kernel_3_8

                                    │   │   └── KERNEL_3_8_ATOMIC_Support

                                    │   ├── MESA_i965

                                    │   │   ├── MESA_OGL_Dri_8_0_4_VLV_Support

                                    │   │   ├── MESA_OGL_Dri_9.1.1_VLV_Support

                                    │   │   ├── MESA_OGL_Dri_9.1_VLV_Support

                                    │   │   └── MESA_OGL_Dri_9.2.0_VLV_Support

                                    │   ├── splash_video_support_3.8

                                    │   │   ├── libva-intel-driver-1.0.20-headless.patch

                                    │   │   ├── linux-3.8_drm_mode_setplane_symbol_export.patch

                                    │   │   ├── mplayer-vaapi-headless.patch

                                    │   │   └── README

                                    │   └── VA_Driver_i965

                                    │       ├── Intel_VA_Driver_1_0_17_VLV_Support

                                    │       ├── Intel_VA_Driver_1_0_19_VLV_Support

                                    │       ├── Intel_VA_Driver_1_0_20_VLV_Support

                                    │       ├── Intel_VA_Driver_1_2_0_VLV_Support

                                    │       ├── VAXV

                                    │       │   ├── Gst_Plugins_VAAPI_pre_0_5_8_Adding_Rendermode_Patch

                                    │       │   ├── Intel_VA_Driver_1_2_0_Add_VAXV_Feature_Patch

                                    │       │   └── Mplayer_Adding_Rendermode_Patch

                                    │       └── VC1_Interlace

                                    │           ├── Gst_Codecparser_VAAPI_pre_0_5_8_VC1_Interlace_Patch

                                    │           ├── Gst_Plugins_VAAPI_pre_0_5_8_VC1_Interlace_Patch

                                    │           └── Intel_VA_Driver_1_2_1_Gen7_VC1_Interlace_Patch

                                    └── drm

                                        ├── EMGD_CHANGES.txt

                                        └── Linux_Kernel_3_8_0

                                            ├── atomic_support.patch

                                            ├── drm_KConfig.patch

                                            └── drm_Makefile.patch

                                     

                                     

                                    10 directories, 26 files

                                      • Re: Intel EMGD Driver
                                        Kirk Brown Belt

                                        Ah well there you go- I see a DRM folder and .PATCH files.  These are what is used to patch the kernel to support our necessary DRM changes.  Have fun!!

                                          • Re: Intel EMGD Driver
                                            enienws Green Belt

                                            Hello Kirk,

                                             

                                            I have patched kernel 3.8.0 by using patches you have pointed before and then built kernel.

                                            As the next step, I have been trying to compile emgd driver and obtain emgd module to be used within the system. But there is a problem. When I try to run following command, it fails with specified error message:

                                             

                                            #sudo modprobe emgd

                                            FATAL: Error inserting emgd (/lib/modules/3.8.0/kernel/drivers/gpu/drm/emgd/emgd.ko): Invalid module format

                                             

                                            After attempt to insert emgd module to kernel, dmesg output is as following:

                                            [  601.626628] emgd: exports duplicate symbol i915_gpu_busy (owned by kernel)

                                             

                                            It is interesting that, when I have been building the module a warning message was shown as following:

                                             

                                            Building modules, stage 2.

                                            MODPOST 1 modules

                                            WARNING: /home/aedu/Downloads/emgd_driver/Linux/common/drm/emgd: 'i915_gpu_turbo_disable' exported twice. Previous export was in vmlinux

                                            WARNING: /home/aedu/Downloads/emgd_driver/Linux/common/drm/emgd: 'i915_gpu_busy' exported twice. Previous export was in vmlinux

                                            WARNING: /home/aedu/Downloads/emgd_driver/Linux/common/drm/emgd: 'i915_gpu_lower' exported twice. Previous export was in vmlinux

                                            WARNING: /home/aedu/Downloads/emgd_driver/Linux/common/drm/emgd: 'i915_gpu_raise' exported twice. Previous export was in vmlinux

                                            WARNING: /home/aedu/Downloads/emgd_driver/Linux/common/drm/emgd: 'i915_read_mch_val' exported twice. Previous export was in vmlinux

                                             

                                            Could you please help me on solving this issue?

                                             

                                            Regards.

                                              • Re: Intel EMGD Driver
                                                LynnZ Brown Belt

                                                Hello!  Upon speaking with the validation team about this issue, they have given some solution as well as asked a few queries about the process you followed.

                                                The issue may be related to the missing BYT I/O components in Kernel 3.8. Even though you never tested EMGD under Ubuntu (not a POR), but as for basic Kernel requirements boot up (under BYT), what we need to have here are two of the major components :

                                                 

                                                1.   Kernel 3.8 + BYT I/O components/patches

                                                2.    Kernel 3.8 + BYT EMGD components/patches

                                                What is suggested here is that you should patch the stock 3.8 Vanilla Kernel with the BYT I/0 first and follow by BYT EMGD patches to make the Kernel workable under BYT platform.

                                                But, from the case that you reported out, we didn’t notice any I/O patches been applied inside, correct?

                                                Some questions:

                                                    1.  How is I/O patch be delivered to external ?

                                                     2.  Does the Kernel (which you used) already contain the correct platform patches (I/O) ?

                                                     3. Have you managed to boot up 3.8 Kernel under embedded platform (BYT) ?

                                                     4. If you were able to execute #3 above, we need to check the EMGD compilation results under your  kernel.

                                                     5.  Have you tried to remove Intel stock GFX driver (i915) from the Kernel config and proceed with modprobe EMGD ?