Mainline Linux refers to the Linux sources provided by This page gives a brief overview over the differences between the Xilinx and Linux sources and how to run Mainline Linux on Zynq platforms. The mainline sources can be downloaded form in various different formats.

Xilinx vs.

Drivers & Features

The Xilinx Linux tree is based on the mainlne sources. While development in mainline may be ahead of what is available in the Xilinx tree, Xilinx-specific features may only be available in the Xilinx tree. An overview of Xilinx-specific Linux features and drivers and their availability in mainline can be found here. Another way to get an idea of supported features in mainline Linux is to take a look at the Zynq dts file.

Device Tree

The device trees in mainline use a hierarchichal approach. The common part of Zynq is described in zynq-7000.dtsi. This file is included by board-level dts files (e.g. zynq-zc706.dts), which describe the board-specific parameters. Supporting a new Zynq platform should be as easy as adding a new board-level dts file.

Default Configuration

There is no Zynq-specific defconfig available in mainline. Instead the multi_v7_defconfig is used. This config is the default configuration for the ARM multi-platform kernel and gives a working base line for Zynq platforms.

Build Mainline Linux

This is just a really short quick start guide. All general instructions for building a Linux kernel apply, this is not special by any means.
$ git clone git://
$ cd linux
$ make multi_v7_defconfig
$ make UIMAGE_LOADADDR=0x8000 uImage modules dtbs