Intel Media SDK for Linux Servers hardware compatibility issue

Intel Media SDK for Linux Servers hardware compatibility issue

We are trying to get the IMSDK R3 working on an Intel Core i3-4130 CPU with SLES 11 SP3.  This CPU includes integrated HD4200 graphics.  According to the IMSDK Release Notes, this hardware should be supported:

"The following hardware is supported: ...

4th Generation Intel® Core™ Processors with Intel® Iris™ Pro Graphics, Intel® Iris™ Graphics or Intel® HD Graphics 4200+ Series"

It appears as if the i915 kernel module that is delivered with the IMSDK does not include support for the PCI device ID for this specific Haswell HD Graphics device.  The PCI id for the integrated graphics device is "0x41e" and an examination of the driver source code indicates that this device id is not included in the list of supported device ids in this version of the i915 driver.  We have attempted to patch the driver source code to simply include the PCI id of our hardware.  While the addition of the appropriate device id results in successful recognition of the integrated graphics device and the device can be used for hardware graphics rendering, attempts to use the hardware for QSV encoding/decoding have so far proven futile. We suspect that the changes to the driver required to support this device are more substantial than simply adding the appropriate PCI id to the driver source code.

Any information on how to proceed would be greatly appreciated!




7 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Some more information:

Here are the last few lines of an strace when trying to run:

sample_encode_drm h264 -i tulips_yuv444_inter_packed_qcif.yuv  -o outpu.h264 -w 720 -h 480 -b 1000 -f 30 -u quality  -hw

write(2, "libva info: Found init function "..., 52libva info: Found init function __vaDriverInit_0_32
) = 52
ioctl(7, 0x80106463, 0x7fff32eddca0)    = 0
geteuid()                               = 0
getuid()                                = 0
ioctl(7, 0xc0106446, 0x7fff32eddc80)    = 0
write(2, "libva error: /usr/lib64/dri/iHD_"..., 57libva error: /usr/lib64/dri/ init failed
) = 57
write(2, "libva info: va_openDriver() retu"..., 39libva info: va_openDriver() returns 18
) = 39
close(7)                                = 0
futex(0x7fa8b2e251a4, FUTEX_WAKE_PRIVATE, 2147483647) = 0
write(2, "terminate called after throwing "..., 48terminate called after throwing an instance of ') = 48
write(2, "std::bad_alloc", 14std::bad_alloc)          = 14
write(2, "'\n", 2'
)                      = 2
write(2, "  what():  ", 11  what():  )             = 11
write(2, "std::bad_alloc", 14std::bad_alloc)          = 14
write(2, "\n", 1
)                       = 1
rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0
tgkill(23741, 23741, SIGABRT)           = 0
--- SIGABRT (Aborted) @ 0 (0) ---
+++ killed by SIGABRT (core dumped) +++


Support for the 0x041E PCI id is included in the Ubuntu i915 patches but was missed for SLES.  I'll start pushing for a fix immediately.
In the meantime, your system should work with the Ubuntu version of the release.

Thanks for this report!





Thanks for the reply.  It appears as if the the relevant PCI ids are only included in the ubuntu patches for kernel 3.8.  This Ubuntu version will not compile on SLES.  The ubuntu kernel 3.8 driver relies on interfaces that are only present in the ubuntu 3.8 kernel.  We will need to wait for Intel to update the driver source.



Updates are underway to synchronize processor support for Ubuntu and SLES.  My apologies if a lack of clarity in the previous reply caused any extra work.  My intent was to say that until the update is released a potential temporary workaround could be to install Ubuntu and use that version of the release instead.  Alternately, code can be developed in Windows and ported to Linux with a minimum of changes -- mostly in session initialization.  Another temporary workaround could be to look for a machine with a PCI id supported by the current SLES release, even if this isn't what you would deploy on, if that is the easiest way to integrate all of the components you need.  All of these suggestions are of course less ideal than getting the full range of devices working on SLES, which we will make available in the earliest possible next release.


We're seeing a very similar problem with IMSDK R3 and a Intel Core i3-4130 CPU, except for our case we are on Ubuntu running kernel version 3.8.0-23.

The MediaSDK install worked first time, expect after a reboot lsmod did not list the i915 driver as loaded.  Running sample_decode_drm whilst in that state results in:

id3as@osk:/opt/intel/mediasdk/samples/_bin/x64$ ./sample_decode_drm h264 -i ~/input.h264 -o /tmp/out.raw -hw
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted (core dumped)

I can run "sudo modprobe i915" which appears to load the driver (it now appears in the lsmod listing), but now sample_decode_drm does the following:

id3as@osk:/opt/intel/mediasdk/samples/_bin/x64$ ./sample_decode_drm h264 -i ~/input.h264 -o /tmp/out.raw -hw
libva info: VA-API version 0.34.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/
libva info: Found init function __vaDriverInit_0_32
libva error: /usr/lib/x86_64-linux-gnu/dri/ init failed
libva info: va_openDriver() returns 18
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted (core dumped)

This looks very similar to what is being reported above for SLES, hence replying to this thread :)

Any idea what I'm doing wrong on Ubuntu to cause this?  Pointers would be much appreciated.




Support for GPU PCI ids must be enabled in several places including i915, libdrm, and Media SDK.  Upon further investigation it looks like updates for this specific PCI id (0x041e) were incomplete for both Ubuntu and SLES.  This is being processed as a bug, with fixes planned for the next release.


Leave a Comment

Please sign in to add a comment. Not a member? Join today