Embedded Intel Atom® Processors
Technological Conversations about Intel Atom® Hardware, Software, Firmware, Graphics

Intel EMGD Driver

EFIRA1
Beginner
6,167 Views

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.

0 Kudos
18 Replies
Kirk_B_Intel
Employee
3,264 Views

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

0 Kudos
EFIRA1
Beginner
3,264 Views

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.

0 Kudos
EFIRA1
Beginner
3,264 Views

By the way could you please explain what is acronym for `POR`?

0 Kudos
Kirk_B_Intel
Employee
3,264 Views

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.

0 Kudos
EFIRA1
Beginner
3,264 Views

Okey, I am going to try and share the progress with you.

Thank you so much. Besides thank you also for an explanation of `POR`

0 Kudos
EFIRA1
Beginner
3,264 Views

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?

0 Kudos
Kirk_B_Intel
Employee
3,264 Views

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.

0 Kudos
EFIRA1
Beginner
3,264 Views

Hello,

I have downloaded drivers from following link: https://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=23585 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.

0 Kudos
Kirk_B_Intel
Employee
3,264 Views

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.

0 Kudos
EFIRA1
Beginner
3,264 Views

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.

0 Kudos
EFIRA1
Beginner
3,264 Views

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

0 Kudos
Kirk_B_Intel
Employee
3,264 Views

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!!

0 Kudos
EFIRA1
Beginner
3,264 Views

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.

0 Kudos
Natalie_Z_Intel
Employee
3,264 Views

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 ?

0 Kudos
EFIRA1
Beginner
3,264 Views

Could you please tell what is the meaning of acronym BYT? Then I can answer your questions with a full understanding of your questions in my mind.

0 Kudos
Zheng_J_Intel
Employee
3,264 Views

Hi Enienws

BYT Stands for BayTrail, which is the code name for the Intel Atom E3800/ Celeron N2920/J1900 product series platform.

Best Regards

Stephen

0 Kudos
EFIRA1
Beginner
3,264 Views
0 Kudos
Reply