Go to file
California Sullivan 540d699a3e linux-yocto/4.4: Update from v4.4.36 to v4.4.41
Also has cache changes aimed towards -tiny improvements.

From linux-yocto-4.4:

eb391bc Merge branch 'standard/base' into standard/intel/base
ad8b1d6 Merge tag 'v4.4.41' into standard/base
44ce068 Merge branch 'standard/base' into standard/intel/base
1241944 Merge tag 'v4.4.40' into standard/base
b787096 Merge branch 'standard/base' into standard/intel/base
9f87e1e Merge tag 'v4.4.39' into standard/base
d9d2617 Merge branch 'standard/base' into standard/intel/base
1a83b80 Merge tag 'v4.4.38' into standard/base
65816c1 Merge branch 'standard/base' into standard/intel/base
55c936a Merge tag 'v4.4.37' into standard/base
cdd86b9 Linux 4.4.41
9f11a0a net: mvpp2: fix dma unmapping of TX buffers for fragments
d857273 sg_write()/bsg_write() is not fit to be called under KERNEL_DS
7fb5a93 kconfig/nconf: Fix hang when editing symbol with a long prompt
e321f38 target/user: Fix use-after-free of tcmu_cmds if they are expired
e5de1c7 powerpc: Convert cmp to cmpd in idle enter sequence
cadaba8 powerpc/ps3: Fix system hang with GCC 5 builds
8a2bcaa nfs_write_end(): fix handling of short copies
b66e312 libceph: verify authorize reply on connect
edfe6a7 PCI: Check for PME in targeted sleep state
8db0075 Input: drv260x - fix input device's parent assignment
44685f0 media: solo6x10: fix lockup by avoiding delayed register write
952a9f5 IB/cma: Fix a race condition in iboe_addr_get_sgid()
b7f73ad IB/multicast: Check ib_find_pkey() return value
7b13692 IPoIB: Avoid reading an uninitialized member variable
0de381c IB/mad: Fix an array index check
e945df4 fgraph: Handle a case where a tracer ignores set_graph_notrace
88e4144 platform/x86: asus-nb-wmi.c: Add X45U quirk
2ef502e ftrace/x86_32: Set ftrace_stub to weak to prevent gcc from using short jumps to it
19aa9c1 kvm: nVMX: Allow L1 to intercept software exceptions (#BP and #OF)
129e432 KVM: PPC: Book3S HV: Don't lose hardware R/C bit updates in H_PROTECT
ddf5718 KVM: PPC: Book3S HV: Save/restore XER in checkpointed register state
1c8841c9 md/raid5: limit request size according to implementation limits
d78006d sc16is7xx: Drop bogus use of IRQF_ONESHOT
b988320 s390/vmlogrdr: fix IUCV buffer allocation
656c9ab firmware: fix usermode helper fallback loading
429a533 ARC: mm: arc700: Don't assume 2 colours for aliasing VIPT dcache
dbb67e1 scsi: avoid a permanent stop of the scsi device's request queue
565ae61 scsi: zfcp: fix rport unblock race with LUN recovery
3b3739d scsi: zfcp: do not trace pure benign residual HBA responses at default level
1cc0f94 scsi: zfcp: fix use-after-"free" in FC ingress path after TMF
bccd7874 scsi: megaraid_sas: Do not set MPI2_TYPE_CUDA for JBOD FP path for FW which does not support JBOD sequence map
49ea065 scsi: megaraid_sas: For SRIOV enabled firmware, ensure VF driver waits for 30secs before reset
edf1169 vt: fix Scroll Lock LED trigger name
f4f02a8 block: protect iterate_bdevs() against concurrent close
abb7881 mei: request async autosuspend at the end of enumeration
1f9c91a drivers/gpu/drm/ast: Fix infinite loop if read fails
970dc8c drm/gma500: Add compat ioctl
0e0b70f drm/radeon: add additional pci revision to dpm workaround
62a2724 drm/radeon: Hide the HW cursor while it's out of bounds
deac395 drm/radeon: Also call cursor_move_locked when the cursor size changes
cb8d63d drm/nouveau/i2c/gk110b,gm10x: use the correct implementation
adea4a7 drm/nouveau/fifo/gf100-: protect channel preempt with subdev mutex
d32d4b3 drm/nouveau/ltc: protect clearing of comptags with mutex
3a2990e drm/nouveau/bios: require checksum to match for fast acpi shadow method
a163451 drm/nouveau/kms: lvds panel strap moved again on maxwell
69e236e ACPI / video: Add force_native quirk for HP Pavilion dv6
2c2375e ACPI / video: Add force_native quirk for Dell XPS 17 L702X
01b6089 staging: comedi: ni_mio_common: fix E series ni_ai_insn_read() data
5283a7b staging: comedi: ni_mio_common: fix M Series ni_ai_insn_read() data mask
e692ede thermal: hwmon: Properly report critical temperature in sysfs
9d9541d clk: bcm2835: Avoid overwriting the div info when disabling a pll_div clk
e01b04b timekeeping_Force_unsigned_clocksource_to_nanoseconds_conversion
96ea1b9 regulator: stw481x-vmmc: fix ages old enable error
842ec27 mmc: sdhci: Fix recovery from tuning timeout
dae7cb4 ath9k: Really fix LED polarity for some Mini PCI AR9220 MB92 cards.
b63929e cfg80211/mac80211: fix BSS leaks when abandoning assoc attempts
05f4183 rtlwifi: Fix enter/exit power_save
f5d90f43 ssb: Fix error routine when fallback SPROM fails
a3edc7b Linux 4.4.40
7a2b4ee ppp: defer netns reference release for ppp channel
37de955 driver core: fix race between creating/querying glue dir and its cleanup
f85a337 xfs: set AGI buffer type in xlog_recover_clear_agi_bucket
fdb17dd arm/xen: Use alloc_percpu rather than __alloc_percpu
9397e79 xen/gntdev: Use VM_MIXEDMAP instead of VM_IO to avoid NUMA balancing
00a0de0 tpm xen: Remove bogus tpm_chip_unregister
f93777c kernel/debug/debug_core.c: more properly delay for secondary CPUs
f2b8b34 kernel/watchdog: use nmi registers snapshot in hardlockup handler
597f9c0 CIFS: Fix a possible memory corruption in push locks
a9c69e1 CIFS: Fix missing nls unload in smb2_reconnect()
f0b7154 CIFS: Fix a possible memory corruption during reconnect
6dcb01e ASoC: intel: Fix crash at suspend/resume without card registration
701ec6e dm space map metadata: fix 'struct sm_metadata' leak on failed create
85290a1 dm crypt: mark key as invalid until properly loaded
9188611 dm flakey: return -EINVAL on interval bounds error in flakey_ctr()
f0898dc blk-mq: Do not invoke .queue_rq() for a stopped queue
c53af76 usb: gadget: composite: always set ep->mult to a sensible value
b35f34f exec: Ensure mm->user_ns contains the execed files
0812936 fs: exec: apply CLOEXEC before changing dumpable task flags
14d8e5c mm/vmscan.c: set correct defer count for shrinker
ffef163 loop: return proper error from loop_queue_rq()
011ded9 f2fs: set ->owner for debugfs status file's file_operations
3460edf ext4: do not perform data journaling when data is encrypted
36af7cd ext4: return -ENOMEM instead of success
519a301 ext4: reject inodes with negative size
f655b35 ext4: add sanity checking to count_overhead()
3995881 ext4: fix in-superblock mount options processing
3865880 ext4: use more strict checks for inodes_per_block on mount
7b74c35 ext4: fix stack memory corruption with 64k block size
26492d8 ext4: fix mballoc breakage with 64k block size
4b60509 crypto: caam - fix AEAD givenc descriptors
1c1f15f ptrace: Capture the ptracer's creds not PT_PTRACE_CAP
03eed7a mm: Add a user_ns owner to mm_struct and fix ptrace permission checks
d80411d block_dev: don't test bdev->bd_contains when it is not stable
85cfbd9 btrfs: make file clone aware of fatal signals
323ffc0 Btrfs: don't BUG() during drop snapshot
1078000 Btrfs: fix memory leak in do_walk_down
5a9b659 Btrfs: don't leak reloc root nodes on error
8ca6845 Btrfs: return gracefully from balance if fs tree is corrupted
78a587c Btrfs: bail out if block group has different mixed flag
25ee81e Btrfs: fix memory leak in reading btree blocks
5902022 clk: ti: omap36xx: Work around sprz319 advisory 2.1
119b665 ALSA: hda: when comparing pin configurations, ignore assoc in addition to seq
f0ea0ad ALSA: hda - Gate the mic jack on HP Z1 Gen3 AiO
fa695bd ALSA: hda - fix headset-mic problem on a Dell laptop
faff777f ALSA: hda - ignore the assoc and seq when comparing pin configurations
518fca8 ALSA: hda/ca0132 - Add quirk for Alienware 15 R2 2016
2934806 ALSA: hiface: Fix M2Tech hiFace driver sampling rate change
d0ba0f6 ALSA: usb-audio: Add QuickCam Communicate Deluxe/S7500 to volume_control_quirks
cbb2a25 USB: UHCI: report non-PME wakeup signalling for Intel hardware
8ede2d7 usb: gadget: composite: correctly initialize ep->maxpacket
c67c2ed usb: gadget: f_uac2: fix error handling at afunc_bind
747b31526 usb: hub: Fix auto-remount of safely removed or ejected USB-3 devices
acca3cf USB: cdc-acm: add device id for GW Instek AFG-125
5d6a392 USB: serial: kl5kusb105: fix open error path
6a6e113 USB: serial: option: add dlink dwm-158
17907f2 USB: serial: option: add support for Telit LE922A PIDs 0x1040, 0x1041
1f5adad Btrfs: fix qgroup rescan worker initialization
b5e715e btrfs: store and load values of stripes_min/stripes_max in balance status item
919b74b Btrfs: fix tree search logic when replaying directory entry deletes
0d619cf btrfs: limit async_work allocation and worker func duration
a34f0e8 Linux 4.4.39
5d488de crypto: rsa - Add Makefile dependencies to fix parallel builds
1c0f4e0 hotplug: Make register and unregister notifier API symmetric
537e42d batman-adv: Check for alloc errors when preparing TT local data
f03531d m68k: Fix ndelay() macro
55e15b2 arm64: futex.h: Add missing PAN toggling
e29949e can: peak: fix bad memory access and free sequence
083021b can: raw: raw_setsockopt: limit number of can_filter that can be set
9a3baed crypto: mcryptd - Check mcryptd algorithm compatibility
c4db8a7 perf/x86: Fix full width counter, counter overflow
c6a5bf4 locking/rtmutex: Use READ_ONCE() in rt_mutex_owner()
b27d914 locking/rtmutex: Prevent dequeue vs. unlock race
e286b6c zram: restrict add/remove attributes to root only
a0bd6aa parisc: Fix TLB related boot crash on SMP machines
605f315 parisc: Remove unnecessary TLB purges from flush_dcache_page_asm and flush_icache_page_asm
db95986 parisc: Purge TLB before setting PTE
4bcea47 powerpc/eeh: Fix deadlock when PE frozen state can't be cleared
c95b7f1 Linux 4.4.38
52783ad esp6: Fix integrity verification when ESN are used
3bf28ce esp4: Fix integrity verification when ESN are used
2176ec1 ipv4: Set skb->protocol properly for local output
25d8b7c ipv6: Set skb->protocol properly for local output
d41fb2f Don't feed anything but regular iovec's to blk_rq_map_user_iov
fd1aa12 constify iov_iter_count() and iter_is_iovec()
899b605 sparc64: fix compile warning section mismatch in find_node()
ed7b60d sparc64: Fix find_node warning if numa node cannot be found
438e91d sparc32: Fix inverted invalid_frame_pointer checks on sigreturns
06cdad2 net: ping: check minimum size on ICMP header length
7712581 net: avoid signed overflows for SO_{SND|RCV}BUFFORCE
6e682c5 geneve: avoid use-after-free of skb->data
a89e2ff sh_eth: remove unchecked interrupts for RZ/A1
c36a2a1 net: bcmgenet: Utilize correct struct device for all DMA operations
5a01eaf packet: fix race condition in packet_set_ring
1a15519 net/dccp: fix use-after-free in dccp_invalid_packet
baaf0c6 netlink: Do not schedule work from sk_destruct
d1ed9c1 netlink: Call cb->done from a worker thread
6c42bd6 net/sched: pedit: make sure that offset is valid
cfa7c16 net, sched: respect rcu grace period on cls destruction
94de6f2 net: dsa: bcm_sf2: Ensure we re-negotiate EEE during after link change
56366fa l2tp: fix racy SOCK_ZAPPED flag check in l2tp_ip{,6}_bind()
aece024 rtnetlink: fix FDB size computation
6ef59b9 af_unix: conditionally use freezable blocking calls in read
acf9504 net: sky2: Fix shutdown crash
49695d1 ip6_tunnel: disable caching when the traffic class is inherited
2b54505c net: check dead netns for peernet2id_alloc()
790fd11 virtio-net: add a missing synchronize_net()
e5f84c1 Linux 4.4.37
71710cd arm64: suspend: Reconfigure PSTATE after resume from idle
d24207a arm64: mm: Set PSTATE.PAN from the cpu_enable_pan() call
da643dc arm64: cpufeature: Schedule enable() calls instead of calling them via IPI
4fd108f pwm: Fix device reference leak
d7a2c25 mwifiex: printk() overflow with 32-byte SSIDs
ac6e42d PCI: Set Read Completion Boundary to 128 iff Root Port supports it (_HPX)
140ff0a PCI: Export pcie_find_root_port
dfb704f rcu: Fix soft lockup for rcu_nocb_kthread
58cebd1 ALSA: pcm : Call kill_fasync() in stream lock
5a5f703 x86/traps: Ignore high word of regs->cs in early_fixup_exception()
9957616 kasan: update kasan_global for gcc 7
61ab624 zram: fix unbalanced idr management at hot removal
5b2ed6e ARC: Don't use "+l" inline asm constraint

From yocto-kernel-cache:

78a2618 kver: bump to v4.4.41
4c31a11 netfilter: iptables: enable NAT tables
7da5624 intel-quark: Remove support for serial-all
e40d731 features/usb/serial: Add new usb serial feature
c52e3dd soc/x1000: Remove 'default policy' features
25f79db soc/x1000: Remove unnecessary features
515c6c8 soc/x1000: Remove bsp/common-pc/*
7bcdf22 meta/intel-common: Have intel-quark-tiny use common-drivers-32-essential
61c6254 meta/intel-common: Add intel-common-drivers-32-essential feature
2f5a9b0 meta: Add lto-debug feature
eb30623 meta: Add lto-disable feature
59d3c20 meta: Add lto (Link-Time Optimization) enablement feature

Signed-off-by: California Sullivan <california.l.sullivan@intel.com>
2017-01-17 15:44:50 -08:00
classes rmc: Extend usages of RMC_BOARD_DATA_DIRS to specify board data 2017-01-09 12:53:33 -08:00
common linux-yocto/4.4: Update from v4.4.36 to v4.4.41 2017-01-17 15:44:50 -08:00
conf intel-quark: remove redundant EFI_PROVIDER setting 2017-01-17 10:03:33 -08:00
documentation/rmc rmc: Extend usages of RMC_BOARD_DATA_DIRS to specify board data 2017-01-09 12:53:33 -08:00
meta-tlk tlk: layer.conf: Add proper dependency and priority 2016-03-29 12:11:28 -07:00
scripts/lib/wic/canned-wks galileodisk: Change timeout to 1 second 2016-11-22 15:44:45 -08:00
MAINTAINERS meta-crystalforest: relocate meta-crystalforest layer into meta-isg layer 2015-10-02 08:15:43 -07:00
README README: Provide information for how to live-boot quark with hddimg 2016-11-01 08:23:15 -07:00
README.sources README.sources: New file 2016-04-29 07:15:34 -07:00

meta-intel

This README file contains information on building and booting meta-intel BSP layers. Please see the corresponding sections below for details.

Yocto Project Compatible

The BSPs contained in this layer are compatible with the Yocto Project as per the requirements listed here:

https://www.yoctoproject.org/webform/yocto-project-compatible-registration

Dependencies

This layer depends on:

URI: git://git.openembedded.org/bitbake branch: master

URI: git://git.openembedded.org/openembedded-core layers: meta branch: master

URI: git://git.yoctoproject.org/meta-intel layers: intel branch: master

Table of Contents

I. Overview II. Building and booting meta-intel BSP layers a. Building the intel-common and quark BSP layers b. Booting the intel-common BSP images c. Booting the intel-quark BSP image on a Galileo board III. Technical Miscellany The intel-common kernel package architecture Intel-specific machine features IV. Tested Hardware V. Guidelines for submitting patches

I. Overview

This is the location for Intel-maintained BSPs.

For details on the intel-common and intel-quark BSPs, see the information below.

For all others, please see the README files contained in the individual BSP layers for BSP-specific information.

If you have problems with or questions about a particular BSP, please contact the maintainer listed in the MAINTAINERS file directly (cc:ing the Yocto mailing list puts it in the archive and helps other people who might have the same questions in the future), but please try to do the following first:

If you believe you have encountered a bug, you can open a new bug and enter the details in the Yocto Project Bugzilla (http://bugzilla.yoctoproject.org/). If you're relatively certain that it's a bug against the BSP itself, please use the 'Yocto Project Components: BSPs | meta-intel' category for the bug; otherwise, please submit the bug against the most likely category for the problem - if you're wrong, it's not a big deal and the bug will be recategorized upon triage.

II. Building and booting meta-intel BSP layers

The following sections contain information on building and booting the BSPs contained in the meta-intel layer.

Note that these instructions specifically cover the intel-common and quark BSPs, which may or may not be applicable to other BSPs contained in this layer - if a given BSP contains its own README, that version should be used instead, and these instructions can be ignored.

a. Building the intel-common and quark BSP layers

In order to build an image with BSP support for a given release, you need to download the corresponding BSP tarball from the 'Board Support Package (BSP) Downloads' page of the Yocto Project website (or equivalently, check out the appropriate branch from the meta-intel git repository, see below). For the intel-common and quark BSPs, those tarballs would correspond to the following choices in the BSP downloads section:

  • Intel-core2-32 Intel® Common Core BSP (Intel-core2-32)
  • Intel-core2-32 Intel® Common Core BSP (Intel-quark)
  • Intel-corei7-64 Intel® Common Core BSP (Intel-corei7-64)

The intel-* BSPs, also known as the intel-common BSPs, provide a few carefully selected tune options and generic hardware support to cover the majority of current Intel CPUs and devices. The naming follows the convention of intel--, where TUNE is the gcc cpu-type (used with mtune and march typically) and BITS is either 32 bit or 64 bit.

Having done that, and assuming you extracted the BSP tarball contents at the top-level of your yocto build tree, you can build a BSP image by adding the location of the meta-intel layer to bblayers.conf e.g.:

yocto/meta-intel \

To enable a particular machine, you need to add a MACHINE line naming the BSP to the local.conf file:

MACHINE ?= "xxx"

where 'xxx' is replaced by one of the following BSP names:

  • intel-core2-32

    This BSP is optimized for the Core2 family of CPUs as well as all Atom CPUs prior to the Silvermont core.

  • intel-corei7-64

    This BSP is optimized for Nehalem and later Core and Xeon CPUs as well as Silvermont and later Atom CPUs, such as the Baytrail SoCs.

  • intel-quark

    This BSP is optimized for Quark-based systems.

You should then be able to build an image as such:

$ source oe-init-build-env $ bitbake core-image-sato

At the end of a successful build, you should have a live image that you can boot from a USB flash drive (see instructions on how to do that below, in the section 'Booting the intel-common BSP images').

As an alternative to downloading the BSP tarball, you can also work directly from the meta-intel git repository. For each BSP in the 'meta-intel' repository, there are multiple branches, one corresponding to each major release starting with 'laverne' (0.90), in addition to the latest code which tracks the current master (note that not all BSPs are present in every release). Instead of extracting a BSP tarball at the top level of your yocto build tree, you can equivalently check out the appropriate branch from the meta-intel repository at the same location.

b. Booting the intel-common BSP images

If you downloaded the BSP tarball, you will find bootable images in the /binary directory. If you've built your own image, either from the downloaded BSP layer or from the meta-intel git repository, you'll find the bootable image in the build/tmp/deploy/images/xxx directory, where again 'xxx' refers to the machine name used in the build.

The BSP /binary directory or build contains bootable live images, which can be used to directly boot Yocto off of a USB flash drive.

Under Linux, insert a USB flash drive. Assuming the USB flash drive takes device /dev/sdf, use dd to copy the live image to it. For example:

dd if=core-image-sato-intel-corei7-64.hddimg of=/dev/sdf

sync

eject /dev/sdf

This should give you a bootable USB flash device. Insert the device into a bootable USB socket on the target, and power on. This should result in a system booted to the Sato graphical desktop.

If you want a terminal, use the arrows at the top of the UI to move to different pages of available applications, one of which is named 'Terminal'. Clicking that should give you a root terminal.

If you want to ssh into the system, you can use the root terminal to ifconfig the IP address and use that to ssh in. The root password is empty, so to log in type 'root' for the user name and hit 'Enter' at the Password prompt: and you should be in.

If you find you're getting corrupt images on the USB (it doesn't show the syslinux boot: prompt, or the boot: prompt contains strange characters), try doing this first:

dd if=/dev/zero of=/dev/sdf bs=1M count=512

c. Booting the intel-quark BSP image on a Galileo board

If you downloaded the BSP tarball, you will find bootable images in the /binary directory. If you've built your own image, either from the downloaded BSP layer or from the meta-intel git repository, you'll find the bootable image in the build/tmp/deploy/images/xxx directory, where again 'xxx' refers to the machine name used in the build.

The Galileo board can boot off of either an SD card or USB storage media that has a special disk layout. The 'wic' tool can be used to create directly bootable images for either of the two formats via the following steps.

If you haven't already, you need to build parted-native. (You will get an error message when running the wic script if you haven't.)

$ bitbake parted-native

Use the wic script to create an SD card image:

$ wic list images
   galileodisk-sd        Create an Galileo Gen 1/2 disk image (SD card)
   galileodisk-usb       Create an Galileo Gen 1/2 disk image (USB Storage)
   mkgummidisk           Create an EFI disk image

Assuming you want to boot the 'core-image-minimal' image for SD card media:

 $ wic create galileodisk-sd -e core-image-minimal

If successful, the wic script generates the image and prints its location:

   Info: The new image(s) can be found here:
     /var/tmp/wic/build/galileodisk-sd-201604211444-mmcblk0.direct
   ...

Write the output image to an SD Card

 $ sudo dd if=/path/to/image/galileodisk-sd-*-mmcblk0.direct of=/dev/your_sd_dev

Insert the SD Card into the reference platform and power on.

To create a direct-boot image for USB storage media, simply specify galileodisk-usb instead of galileodisk-sd in the "wic create ..." command, then write the output image to USB storage media and boot it.

Actually, Galileo board can boot off with an image in hddimg format from USB drives too. But only live-boot, no installation, is supported at this point. An image in hddimg format is generated when you build quark BSP. You can follow the procedure in II.b to use dd command to prepare your USB drive, then press F7 key as what board prompts when it boots. Galileo should show a boot option menu for you to choose the UEFI USB boot option for the drive to boot the system. If the board already passes this stage and show a grub boot menu, you can press 'c' key and then type "quit" in grub shell. The board should come back to the UEFI boot menu.

III. Technical Miscellany

The intel-common kernel package architecture

These BSPs use what we call the intel-common Linux kernel package architecture. This includes core2-32-intel-common and corei7-64-intel-common. These kernel packages can also be used by any of the BSPs in meta-intel that choose to include the intel-common-pkgarch.inc file.

To minimize the proliferation of vendor trees, reduce the sources we must support, and consolidate QA efforts, all BSP maintainers are encouraged to make use of the intel-common Linux kernel package architecture.

Intel-specific machine features

The meta-intel layer makes some additional machine features available to BSPs. These machine features can be used in a BSP layer in the same way that machine features are used in other layers based on oe-core, via the MACHINE_FEATURES variable.

Requirements ++++++++++++

The meta-intel-specific machine features are only available to a BSP when the meta-intel layer is included in the build configuration, and the meta-intel.inc file is included in the machine configuration of that BSP.

To make these features available for your machine, you will need to:

  1. include a configuration line such as the below in bblayers.conf BBLAYERS += "/meta-intel"
  2. include the following line in the machine configuration file require conf/machine/include/meta-intel.inc

Once the above requirements are met, the machine features provided by the meta-intel layer will be available for the BSP to use.

Available machine features ++++++++++++++++++++++++++

Currently, the meta-intel layer makes the following set of Intel-specific machine features available:

  • intel-ucode

These machine features can be included by listing them in the MACHINE_FEATURES variable in the machine configuration file. For example:

MACHINE_FEATURES += "intel-ucode"

Machine feature details +++++++++++++++++++++++

  • intel-ucode

    This feature provides support for microcode updates to Intel processors. The intel-ucode feature runs at early boot and uses the microcode data file added by the feature into the BSP's initrd. It also puts the userland microcode-updating tool, iucode_tool, into the target images along with the microcode data file.

    Q. Why might a user want to enable the intel-ucode feature?

    A. Intel releases microcode updates to correct processor behavior as documented in the respective processor specification updates. While the normal approach to getting such microcode updates is via a BIOS upgrade, this can be an administrative hassle and not always possible in the field. The intel-ucode feature enables the microcode update capability present in the Linux kernel. It provides an easy path for upgrading processor microcode without the need to change the BIOS. If the feature is enabled, it is also possible to update the existing target images with a newer microcode update in the future.

    Q. How would a user bundle only target-specific microcode in the target image?

    A. The Intel microcode data file released by Intel contains microcode updates for multiple processors. If the BSP image is meant to run on only a certain subset of processor types, a processor-specific subset of microcode can be bundled into the target image via the UCODE_FILTER_PARAMETERS variable. This works by listing a sequence of iucode-tool parameters in the UCODE_FILTER_PARAMETERS variable, which in this case will select only the specific microcode relevant to the BSP. For more information on the underlying parameters refer to the iucode-tool manual page at http://manned.org/iucode-tool

    To define a set of parameters for microcode-filtering via the
    UCODE_FILTER_PARAMETERS variable, one needs to identify the
    cpuid signatures of all the processors the BSP is meant to run
    on.  One way to determine the cpuid signature for a specific
    processor is to build and run an intel-ucode-feature-enabled
    image on the target hardware, without first assigning any value
    to the UCODE_FILTER_PARAMETERS variable, and then once the
    image is booted, run the "ucode_tool -S" command to have the
    ucode tool scan the system for processor signatures.  These
    signatures can then be used in the UCODE_FILTER_PARAMETERS
    variable in conjunction with -s parameter.  For example, for
    the fri2 BSP, the cpuid can be determined as such:
    
      [root@fri2 ~]# iucode_tool -S
    

    iucode_tool: system has processor(s) with signature 0x00020661

    Given that output, a suitable UCODE_FILTER_PARAMETERS variable
    definition could be specified in the machine configuration as
    such:
    
      UCODE_FILTER_PARAMETERS = "-s 0x00020661"
    

    Q. Are there any reasons a user might want to disable the intel-ucode feature?

    A. The microcode data file and associated tools occupy a small amount of space (a few KB) on the target image. BSPs which are highly sensitive to target image size and which are not experiencing microcode-related issues might consider not enabling this feature.

IV. Tested Hardware

Of the BSPs currently included in meta-intel, the following have passed initial testing with the intel-common BSPs:

intel-corei7-64:

crystalforest-server
crystalforest-gladden
haswell-wc
nuc (Ivy Bridge and Haswell, manual audio config required)
sugarbay

intel-core2-32:

<currently under test>

If you are interested in a BSP not listed here, chances are we are currently working on resolving some configuration issues with it. Please check the bugzilla and check in with us on the meta-intel mailing list.

V. Guidelines for submitting patches

Please submit any patches against meta-intel BSPs to the meta-intel mailing list (meta-intel@yoctoproject.org). Also, if your patches are available via a public git repository, please also include a URL to the repo and branch containing your patches as that makes it easier for maintainers to grab and test your patches.

There are patch submission scripts available that will, among other things, automatically include the repo URL and branch as mentioned. Please see the Yocto Project Development Manual sections entitled 'Using Scripts to Push a Change Upstream and Request a Pull' and 'Using Email to Submit a Patch' for details.

Regardless of how you submit a patch or patchset, the patches should at minimum follow the suggestions outlined in the 'How to Submit a Change' secion in the Yocto Project Development Manual. Specifically, they should:

  • Include a 'Signed-off-by:' line. A commit can't legally be pulled in without this.

  • Provide a single-line, short summary of the change. This short description should be prefixed by the BSP or recipe name, as appropriate, followed by a colon. Capitalize the first character of the summary (following the colon).

  • For the body of the commit message, provide detailed information that describes what you changed, why you made the change, and the approach you used.

  • If the change addresses a specific bug or issue that is associated with a bug-tracking ID, include a reference to that ID in your detailed description in the following format: [YOCTO #].

  • Pay attention to line length - please don't allow any particular line in the commit message to stretch past 72 characters.

  • For any non-trivial patch, provide information about how you tested the patch, and for any non-trivial or non-obvious testing setup, provide details of that setup.

Doing a quick 'git log' in meta-intel will provide you with many examples of good example commits if you have questions about any aspect of the preferred format.

The meta-intel maintainers will do their best to review and/or pull in a patch or patchset within 24 hours of the time it was posted. For larger and/or more involved patches and patchsets, the review process may take longer.

Please see the meta-intel/MAINTAINERS file for the list of maintainers and their specific areas; it's also a good idea to cc: the specific maintainer, if applicable.