summaryrefslogtreecommitdiff
path: root/kernels
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2012-02-21 23:15:10 +0000
committerroot <root@rshg054.dnsready.net>2012-02-21 23:15:10 +0000
commit1f55cedf5ea357497d2a98eb2be78d8dab4a9665 (patch)
tree5e44ad19f2672ee92283377c9fe6eab3c8a815d7 /kernels
parent11484c032f8c236b2044e715a9a3b28e33f65598 (diff)
Tue Feb 21 23:15:10 UTC 2012
Diffstat (limited to 'kernels')
-rw-r--r--kernels/linux-libre-xen/PKGBUILD32
-rw-r--r--kernels/linux-libre-xen/config.i6861207
-rw-r--r--kernels/linux-libre-xen/config.x86_641087
-rw-r--r--kernels/linux-libre-xen/fix-i915.patch109
-rw-r--r--kernels/linux-libre-xen/i915-fix-ghost-tv-output.patch26
-rw-r--r--kernels/linux-libre-xen/i915-gpu-finish.patch55
-rw-r--r--kernels/xe-guest-utilities/PKGBUILD45
-rw-r--r--kernels/xe-guest-utilities/ip_address.patch30
-rw-r--r--kernels/xe-guest-utilities/xe-guest-utilities-parabola.patch146
-rwxr-xr-xkernels/xen/09_xen123
-rw-r--r--kernels/xen/24341.patch11
-rw-r--r--kernels/xen/24344.patch33
-rw-r--r--kernels/xen/24345.patch31
-rw-r--r--kernels/xen/PKGBUILD99
-rw-r--r--kernels/xen/dom0_xz_decompression.patch3528
-rw-r--r--kernels/xen/parabolainit.patch423
-rw-r--r--kernels/xen/xen.patch21
17 files changed, 5978 insertions, 1028 deletions
diff --git a/kernels/linux-libre-xen/PKGBUILD b/kernels/linux-libre-xen/PKGBUILD
index 94fd22800..90df2d6b5 100644
--- a/kernels/linux-libre-xen/PKGBUILD
+++ b/kernels/linux-libre-xen/PKGBUILD
@@ -3,13 +3,14 @@
# Maintainer: Thomas Baechler <thomas@archlinux.org>
# Maintainer (Parabola): Nicolás Reynolds <fauno@kiwwwi.com.ar>
# Maintainer (Parabola): Sorin-Mihai Vârgolici <smv@yobicore.org>
+# Contributor (Parabola): André Silva <andre.paulista@adinet.com.uy>
pkgbase=linux-libre-xen
pkgname=('linux-libre-xen' 'linux-libre-xen-headers' 'linux-libre-xen-docs') # Build stock -LIBRE kernel
# pkgname=linux-custom # Build kernel with a different name
_kernelname=${pkgname#linux-libre}
-_basekernel=3.1
-pkgver=${_basekernel}.5
+_basekernel=3.2
+pkgver=${_basekernel}.6
pkgrel=1
arch=('i686' 'x86_64')
url="http://linux-libre.fsfla.org/"
@@ -25,8 +26,16 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-li
'boot-logo.patch'
'change-default-console-loglevel.patch'
'i915-fix-ghost-tv-output.patch'
- 'i915-fix-incorrect-error-message.patch'
- 'usb-add-reset-resume-quirk-for-several-webcams.patch')
+ 'i915-gpu-finish.patch')
+md5sums=('27c641c4f6785fc647cdd3e44963a55c'
+ 'c4b411e90294fcb768d5242a6c21c0d7'
+ '79d5dd186fd129aad90a880317201619'
+ '4964d8e664925afe9a148db701cce725'
+ '67463f7a6e88305d7cd14a430e9efe92'
+ '04b21c79df0a952c22d681dd4f4562df'
+ '9d3c56a4b999c8bfbd4018089a62f662'
+ '263725f20c0b9eb9c353040792d644e5'
+ '4cd79aa147825837dc8bc9f6b736c0a0')
build() {
cd "${srcdir}/linux-${_basekernel}"
@@ -36,6 +45,10 @@ build() {
# Add freedo as boot logo
patch -Np1 -i "${srcdir}/boot-logo.patch"
+ # fix FS#27883
+ # drm/i915: Only clear the GPU domains upon a successful finish
+ patch -Np1 -i "${srcdir}/i915-gpu-finish.patch"
+
# Some chips detect a ghost TV output
# mailing list discussion: http://lists.freedesktop.org/archives/intel-gfx/2011-April/010371.html
# Arch Linux bug report: FS#19234
@@ -45,15 +58,6 @@ build() {
# needed.
patch -Np1 -i "${srcdir}/i915-fix-ghost-tv-output.patch"
- # In 3.1.1, a DRM_DEBUG message is falsely declared as DRM_ERROR. This
- # worries users, as this message is displayed even at loglevel 4. Fix
- # this.
- patch -Np1 -i "${srcdir}/i915-fix-incorrect-error-message.patch"
-
- # Add the USB_QUIRK_RESET_RESUME for several webcams
- # FS#26528
- patch -Np1 -i "${srcdir}/usb-add-reset-resume-quirk-for-several-webcams.patch"
-
# set DEFAULT_CONSOLE_LOGLEVEL to 4 (same value as the 'quiet' kernel param)
# remove this when a Kconfig knob is made available by upstream
# (relevant patch sent upstream: https://lkml.org/lkml/2011/7/26/227)
@@ -86,7 +90,7 @@ build() {
#return 1
####################
- yes "" | make config
+ yes "" | make
# build!
make ${MAKEFLAGS} bzImage modules
diff --git a/kernels/linux-libre-xen/config.i686 b/kernels/linux-libre-xen/config.i686
index 6762f896e..7973b2fe0 100644
--- a/kernels/linux-libre-xen/config.i686
+++ b/kernels/linux-libre-xen/config.i686
@@ -1,6 +1,6 @@
#
-# Automatically generated make config: don't edit
-# Linux/i386 3.0.0 Kernel Configuration
+# Automatically generated file; DO NOT EDIT.
+# Linux/i386 3.2.6-libre Kernel Configuration
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
@@ -37,7 +37,6 @@ CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
-# CONFIG_HAVE_CPUMASK_OF_CPU_MAP is not set
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
# CONFIG_ZONE_DMA32 is not set
@@ -100,20 +99,20 @@ CONFIG_HAVE_SPARSE_IRQ=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_GENERIC_IRQ_CHIP=y
CONFIG_IRQ_FORCED_THREADING=y
-# CONFIG_SPARSE_IRQ is not set
+CONFIG_SPARSE_IRQ=y
#
# RCU Subsystem
#
-CONFIG_TREE_RCU=y
-# CONFIG_TREE_PREEMPT_RCU is not set
-# CONFIG_PREEMPT_RCU is not set
+CONFIG_TREE_PREEMPT_RCU=y
+CONFIG_PREEMPT_RCU=y
# CONFIG_RCU_TRACE is not set
CONFIG_RCU_FANOUT=32
# CONFIG_RCU_FANOUT_EXACT is not set
-# CONFIG_RCU_FAST_NO_HZ is not set
# CONFIG_TREE_RCU_TRACE is not set
+# CONFIG_RCU_BOOST is not set
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=19
@@ -132,6 +131,7 @@ CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
# CONFIG_CGROUP_PERF is not set
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_CFS_BANDWIDTH=y
CONFIG_RT_GROUP_SCHED=y
CONFIG_BLK_CGROUP=y
# CONFIG_DEBUG_BLK_CGROUP is not set
@@ -157,7 +157,7 @@ CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
# CONFIG_EXPERT is not set
CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
+# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_HOTPLUG=y
@@ -165,6 +165,7 @@ CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_PCSPKR_PLATFORM=y
+CONFIG_HAVE_PCSPKR_PLATFORM=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
@@ -211,6 +212,7 @@ CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
CONFIG_HAVE_USER_RETURN_NOTIFIER=y
CONFIG_HAVE_PERF_EVENTS_NMI=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
#
# GCOV-based kernel profiling
@@ -224,12 +226,13 @@ CONFIG_MODULES=y
CONFIG_MODULE_FORCE_LOAD=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
+CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
CONFIG_LBDAF=y
CONFIG_BLK_DEV_BSG=y
+CONFIG_BLK_DEV_BSGLIB=y
# CONFIG_BLK_DEV_INTEGRITY is not set
CONFIG_BLK_DEV_THROTTLING=y
@@ -252,27 +255,27 @@ CONFIG_PADATA=y
# CONFIG_INLINE_SPIN_LOCK_BH is not set
# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
-CONFIG_INLINE_SPIN_UNLOCK=y
+# CONFIG_INLINE_SPIN_UNLOCK is not set
# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
-CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
+# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
# CONFIG_INLINE_READ_TRYLOCK is not set
# CONFIG_INLINE_READ_LOCK is not set
# CONFIG_INLINE_READ_LOCK_BH is not set
# CONFIG_INLINE_READ_LOCK_IRQ is not set
# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
-CONFIG_INLINE_READ_UNLOCK=y
+# CONFIG_INLINE_READ_UNLOCK is not set
# CONFIG_INLINE_READ_UNLOCK_BH is not set
-CONFIG_INLINE_READ_UNLOCK_IRQ=y
+# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
# CONFIG_INLINE_WRITE_TRYLOCK is not set
# CONFIG_INLINE_WRITE_LOCK is not set
# CONFIG_INLINE_WRITE_LOCK_BH is not set
# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
-CONFIG_INLINE_WRITE_UNLOCK=y
+# CONFIG_INLINE_WRITE_UNLOCK is not set
# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
-CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
# CONFIG_MUTEX_SPIN_ON_OWNER is not set
CONFIG_FREEZER=y
@@ -284,6 +287,7 @@ CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
CONFIG_SMP=y
CONFIG_X86_MPPARSE=y
# CONFIG_X86_BIGSMP is not set
@@ -292,6 +296,7 @@ CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
CONFIG_X86_32_IRIS=m
CONFIG_SCHED_OMIT_FRAME_POINTER=y
CONFIG_PARAVIRT_GUEST=y
+# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
CONFIG_XEN=y
CONFIG_XEN_DOM0=y
CONFIG_XEN_PRIVILEGED_GUEST=y
@@ -299,7 +304,6 @@ CONFIG_XEN_PVHVM=y
CONFIG_XEN_MAX_DOMAIN_MEMORY=128
CONFIG_XEN_SAVE_RESTORE=y
# CONFIG_XEN_DEBUG_FS is not set
-# CONFIG_XEN_DEBUG is not set
CONFIG_KVM_CLOCK=y
CONFIG_KVM_GUEST=y
CONFIG_LGUEST_GUEST=y
@@ -338,6 +342,7 @@ CONFIG_X86_GENERIC=y
CONFIG_X86_INTERNODE_CACHE_SHIFT=6
CONFIG_X86_CMPXCHG=y
CONFIG_CMPXCHG_LOCAL=y
+CONFIG_CMPXCHG_DOUBLE=y
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_XADD=y
# CONFIG_X86_PPRO_FENCE is not set
@@ -363,14 +368,14 @@ CONFIG_HPET_EMULATE_RTC=y
CONFIG_DMI=y
CONFIG_SWIOTLB=y
CONFIG_IOMMU_HELPER=y
-CONFIG_IOMMU_API=y
CONFIG_NR_CPUS=8
CONFIG_SCHED_SMT=y
CONFIG_SCHED_MC=y
# CONFIG_IRQ_TIME_ACCOUNTING is not set
-CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
-# CONFIG_PREEMPT is not set
+CONFIG_PREEMPT=y
+CONFIG_PREEMPT_COUNT=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
@@ -391,13 +396,14 @@ CONFIG_MICROCODE_AMD=y
CONFIG_MICROCODE_OLD_INTERFACE=y
CONFIG_X86_MSR=m
CONFIG_X86_CPUID=m
-CONFIG_NOHIGHMEM=y
+# CONFIG_NOHIGHMEM is not set
# CONFIG_HIGHMEM4G is not set
-# CONFIG_HIGHMEM64G is not set
+CONFIG_HIGHMEM64G=y
CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_HIGHMEM=y
CONFIG_X86_PAE=y
CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
-# CONFIG_ARCH_DMA_ADDR_T_64BIT is not set
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
@@ -427,6 +433,7 @@ CONFIG_TRANSPARENT_HUGEPAGE=y
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set
CONFIG_CLEANCACHE=y
+# CONFIG_HIGHPTE is not set
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
CONFIG_X86_RESERVE_LOW=64
@@ -437,6 +444,7 @@ CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
CONFIG_X86_PAT=y
CONFIG_ARCH_USES_PG_UNCACHED=y
+CONFIG_ARCH_RANDOM=y
CONFIG_EFI=y
CONFIG_SECCOMP=y
CONFIG_CC_STACKPROTECTOR=y
@@ -447,6 +455,7 @@ CONFIG_HZ_300=y
CONFIG_HZ=300
CONFIG_SCHED_HRTICK=y
CONFIG_KEXEC=y
+# CONFIG_CRASH_DUMP is not set
# CONFIG_KEXEC_JUMP is not set
CONFIG_PHYSICAL_START=0x1000000
CONFIG_RELOCATABLE=y
@@ -455,6 +464,7 @@ CONFIG_PHYSICAL_ALIGN=0x100000
CONFIG_HOTPLUG_CPU=y
# CONFIG_COMPAT_VDSO is not set
# CONFIG_CMDLINE_BOOL is not set
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
#
# Power management and ACPI options
@@ -475,10 +485,10 @@ CONFIG_CAN_PM_TRACE=y
# CONFIG_PM_TRACE_RTC is not set
CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y
-CONFIG_ACPI_PROCFS=y
-CONFIG_ACPI_PROCFS_POWER=y
+# CONFIG_ACPI_PROCFS is not set
+# CONFIG_ACPI_PROCFS_POWER is not set
CONFIG_ACPI_EC_DEBUGFS=m
-CONFIG_ACPI_PROC_EVENT=y
+# CONFIG_ACPI_PROC_EVENT is not set
CONFIG_ACPI_AC=m
CONFIG_ACPI_BATTERY=m
CONFIG_ACPI_BUTTON=m
@@ -497,11 +507,12 @@ CONFIG_ACPI_PCI_SLOT=m
CONFIG_X86_PM_TIMER=y
CONFIG_ACPI_CONTAINER=m
CONFIG_ACPI_SBS=m
-CONFIG_ACPI_HED=m
+CONFIG_ACPI_HED=y
CONFIG_ACPI_CUSTOM_METHOD=m
CONFIG_ACPI_APEI=y
-CONFIG_ACPI_APEI_GHES=m
+CONFIG_ACPI_APEI_GHES=y
CONFIG_ACPI_APEI_PCIEAER=y
+CONFIG_ACPI_APEI_MEMORY_FAILURE=y
CONFIG_ACPI_APEI_EINJ=m
CONFIG_ACPI_APEI_ERST_DEBUG=m
CONFIG_SFI=y
@@ -566,7 +577,6 @@ CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GOMMCONFIG is not set
# CONFIG_PCI_GODIRECT is not set
-# CONFIG_PCI_GOOLPC is not set
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
@@ -574,9 +584,6 @@ CONFIG_PCI_MMCONFIG=y
CONFIG_PCI_XEN=y
CONFIG_PCI_DOMAINS=y
# CONFIG_PCI_CNB20LE_QUIRK is not set
-CONFIG_DMAR=y
-# CONFIG_DMAR_DEFAULT_ON is not set
-CONFIG_DMAR_FLOPPY_WA=y
CONFIG_PCIEPORTBUS=y
CONFIG_HOTPLUG_PCI_PCIE=m
CONFIG_PCIEAER=y
@@ -589,9 +596,12 @@ CONFIG_ARCH_SUPPORTS_MSI=y
CONFIG_PCI_MSI=y
# CONFIG_PCI_DEBUG is not set
CONFIG_PCI_STUB=m
-CONFIG_XEN_PCIDEV_FRONTEND=y
+CONFIG_XEN_PCIDEV_FRONTEND=m
CONFIG_HT_IRQ=y
+CONFIG_PCI_ATS=y
CONFIG_PCI_IOV=y
+CONFIG_PCI_PRI=y
+CONFIG_PCI_PASID=y
CONFIG_PCI_IOAPIC=y
CONFIG_PCI_LABEL=y
CONFIG_ISA_DMA_API=y
@@ -599,6 +609,7 @@ CONFIG_ISA=y
# CONFIG_EISA is not set
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set
+CONFIG_ALIX=y
CONFIG_AMD_NB=y
CONFIG_PCCARD=m
CONFIG_PCMCIA=m
@@ -632,14 +643,15 @@ CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
CONFIG_HOTPLUG_PCI_SHPC=m
CONFIG_RAPIDIO=y
+CONFIG_RAPIDIO_TSI721=y
CONFIG_RAPIDIO_DISC_TIMEOUT=30
# CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS is not set
+CONFIG_RAPIDIO_DEBUG=y
CONFIG_RAPIDIO_TSI57X=y
CONFIG_RAPIDIO_CPS_XX=y
CONFIG_RAPIDIO_TSI568=y
CONFIG_RAPIDIO_CPS_GEN2=y
CONFIG_RAPIDIO_TSI500=y
-CONFIG_RAPIDIO_DEBUG=y
#
# Executable file formats / Emulations
@@ -859,6 +871,7 @@ CONFIG_IP_SET_HASH_IPPORTIP=m
CONFIG_IP_SET_HASH_IPPORTNET=m
CONFIG_IP_SET_HASH_NET=m
CONFIG_IP_SET_HASH_NETPORT=m
+CONFIG_IP_SET_HASH_NETIFACE=m
CONFIG_IP_SET_LIST_SET=m
CONFIG_IP_VS=m
# CONFIG_IP_VS_IPV6 is not set
@@ -1043,6 +1056,7 @@ CONFIG_IPDDP_DECAP=y
# CONFIG_WAN_ROUTER is not set
CONFIG_PHONET=m
CONFIG_IEEE802154=m
+CONFIG_IEEE802154_6LOWPAN=m
CONFIG_NET_SCHED=y
#
@@ -1250,6 +1264,16 @@ CONFIG_CAIF=m
CONFIG_CAIF_NETDEV=m
CONFIG_CEPH_LIB=m
# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
+# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
+CONFIG_NFC=m
+CONFIG_NFC_NCI=m
+
+#
+# Near Field Communication (NFC) devices
+#
+CONFIG_PN544_NFC=m
+CONFIG_NFC_PN533=m
+CONFIG_NFC_WILINK=m
#
# Device Drivers
@@ -1269,12 +1293,18 @@ CONFIG_EXTRA_FIRMWARE=""
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
CONFIG_SYS_HYPERVISOR=y
-CONFIG_CONNECTOR=m
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=m
+CONFIG_REGMAP_SPI=y
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
CONFIG_MTD=m
-# CONFIG_MTD_DEBUG is not set
CONFIG_MTD_TESTS=m
-# CONFIG_MTD_REDBOOT_PARTS is not set
-# CONFIG_MTD_AR7_PARTS is not set
+CONFIG_MTD_REDBOOT_PARTS=m
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
+CONFIG_MTD_AR7_PARTS=m
#
# User Modules And Translation Layers
@@ -1282,21 +1312,24 @@ CONFIG_MTD_TESTS=m
CONFIG_MTD_CHAR=m
CONFIG_MTD_BLKDEVS=m
CONFIG_MTD_BLOCK=m
-# CONFIG_MTD_BLOCK_RO is not set
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-CONFIG_SM_FTL=m
-# CONFIG_MTD_OOPS is not set
+CONFIG_MTD_BLOCK_RO=m
+CONFIG_FTL=m
+CONFIG_NFTL=m
+CONFIG_NFTL_RW=y
+CONFIG_INFTL=m
+CONFIG_RFD_FTL=m
+CONFIG_SSFDC=m
+# CONFIG_SM_FTL is not set
+CONFIG_MTD_OOPS=m
CONFIG_MTD_SWAP=m
#
# RAM/ROM/Flash chip drivers
#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_CFI=m
+CONFIG_MTD_JEDECPROBE=m
+CONFIG_MTD_GEN_PROBE=m
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
@@ -1307,29 +1340,52 @@ CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_CFI_INTELEXT=m
+CONFIG_MTD_CFI_AMDSTD=m
+CONFIG_MTD_CFI_STAA=m
+CONFIG_MTD_CFI_UTIL=m
CONFIG_MTD_RAM=m
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
+CONFIG_MTD_ROM=m
+CONFIG_MTD_ABSENT=m
#
# Mapping drivers for chip access
#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_TS5500 is not set
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_SC520CDP=m
+CONFIG_MTD_NETSC520=m
+CONFIG_MTD_TS5500=m
+# CONFIG_MTD_SBC_GXX is not set
+# CONFIG_MTD_AMD76XROM is not set
+# CONFIG_MTD_ICHXROM is not set
+# CONFIG_MTD_ESB2ROM is not set
+# CONFIG_MTD_CK804XROM is not set
+CONFIG_MTD_SCB2_FLASH=m
+# CONFIG_MTD_NETtel is not set
+# CONFIG_MTD_L440GX is not set
+CONFIG_MTD_PCI=m
+# CONFIG_MTD_PCMCIA is not set
+# CONFIG_MTD_GPIO_ADDR is not set
# CONFIG_MTD_INTEL_VR_NOR is not set
CONFIG_MTD_PLATRAM=m
+# CONFIG_MTD_LATCH_ADDR is not set
#
# Self-contained MTD device drivers
#
-# CONFIG_MTD_PMC551 is not set
+CONFIG_MTD_PMC551=m
+# CONFIG_MTD_PMC551_BUGFIX is not set
+# CONFIG_MTD_PMC551_DEBUG is not set
# CONFIG_MTD_DATAFLASH is not set
# CONFIG_MTD_M25P80 is not set
-CONFIG_MTD_SST25L=m
-CONFIG_MTD_SLRAM=m
+# CONFIG_MTD_SST25L is not set
+# CONFIG_MTD_SLRAM is not set
CONFIG_MTD_PHRAM=m
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
+CONFIG_MTD_MTDRAM=m
+CONFIG_MTDRAM_TOTAL_SIZE=4096
+CONFIG_MTDRAM_ERASE_SIZE=128
+CONFIG_MTD_BLOCK2MTD=m
#
# Disk-On-Chip Device Drivers
@@ -1337,16 +1393,38 @@ CONFIG_MTD_PHRAM=m
# CONFIG_MTD_DOC2000 is not set
# CONFIG_MTD_DOC2001 is not set
# CONFIG_MTD_DOC2001PLUS is not set
+CONFIG_MTD_DOCG3=m
CONFIG_MTD_NAND_ECC=m
CONFIG_MTD_NAND_ECC_SMC=y
-# CONFIG_MTD_NAND is not set
+CONFIG_MTD_NAND=m
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_BCH is not set
+CONFIG_MTD_SM_COMMON=m
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+# CONFIG_MTD_NAND_DENALI is not set
+CONFIG_MTD_NAND_IDS=m
+CONFIG_MTD_NAND_RICOH=m
+CONFIG_MTD_NAND_DISKONCHIP=m
+# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
+CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
+# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
+# CONFIG_MTD_NAND_CAFE is not set
+CONFIG_MTD_NAND_CS553X=m
+CONFIG_MTD_NAND_NANDSIM=m
+# CONFIG_MTD_NAND_PLATFORM is not set
+CONFIG_MTD_ALAUDA=m
# CONFIG_MTD_ONENAND is not set
#
# LPDDR flash memory drivers
#
-# CONFIG_MTD_LPDDR is not set
-# CONFIG_MTD_UBI is not set
+CONFIG_MTD_LPDDR=m
+CONFIG_MTD_QINFO_PROBE=m
+CONFIG_MTD_UBI=m
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MTD_UBI_BEB_RESERVE=1
+# CONFIG_MTD_UBI_GLUEBI is not set
+# CONFIG_MTD_UBI_DEBUG is not set
CONFIG_PARPORT=m
CONFIG_PARPORT_PC=m
CONFIG_PARPORT_SERIAL=m
@@ -1377,6 +1455,7 @@ CONFIG_BLK_DEV_DAC960=m
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_DRBD=m
# CONFIG_DRBD_FAULT_INJECTION is not set
@@ -1392,8 +1471,8 @@ CONFIG_CDROM_PKTCDVD=m
CONFIG_CDROM_PKTCDVD_BUFFERS=8
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
CONFIG_ATA_OVER_ETH=m
-CONFIG_XEN_BLKDEV_FRONTEND=y
-# CONFIG_XEN_BLKDEV_BACKEND is not set
+CONFIG_XEN_BLKDEV_FRONTEND=m
+CONFIG_XEN_BLKDEV_BACKEND=m
CONFIG_VIRTIO_BLK=m
# CONFIG_BLK_DEV_HD is not set
CONFIG_BLK_DEV_RBD=m
@@ -1427,6 +1506,7 @@ CONFIG_TI_DAC7512=m
CONFIG_VMWARE_BALLOON=m
CONFIG_BMP085=m
# CONFIG_PCH_PHUB is not set
+CONFIG_USB_SWITCH_FSA9480=m
CONFIG_C2PORT=m
CONFIG_C2PORT_DURAMAR_2150=m
@@ -1438,6 +1518,7 @@ CONFIG_EEPROM_AT25=m
CONFIG_EEPROM_LEGACY=m
CONFIG_EEPROM_MAX6875=m
CONFIG_EEPROM_93CX6=m
+CONFIG_EEPROM_93XX46=m
CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
CONFIG_CB710_DEBUG_ASSUMPTIONS=y
@@ -1450,90 +1531,13 @@ CONFIG_IWMC3200TOP=m
#
CONFIG_TI_ST=m
CONFIG_SENSORS_LIS3_I2C=m
+
+#
+# Altera FPGA firmware download module
+#
+CONFIG_ALTERA_STAPL=m
CONFIG_HAVE_IDE=y
-CONFIG_IDE=m
-
-#
-# Please see Documentation/ide/ide.txt for help/info on IDE drives
-#
-CONFIG_IDE_XFER_MODE=y
-CONFIG_IDE_TIMINGS=y
-CONFIG_IDE_ATAPI=y
-CONFIG_IDE_LEGACY=y
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=m
-CONFIG_IDE_GD_ATA=y
-CONFIG_IDE_GD_ATAPI=y
-CONFIG_BLK_DEV_IDECS=m
-CONFIG_BLK_DEV_DELKIN=m
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_BLK_DEV_IDEACPI=y
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=m
-CONFIG_BLK_DEV_PLATFORM=m
-CONFIG_BLK_DEV_CMD640=m
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-CONFIG_BLK_DEV_IDEPNP=m
-CONFIG_BLK_DEV_IDEDMA_SFF=y
-
-#
-# PCI IDE chipsets support
-#
-CONFIG_BLK_DEV_IDEPCI=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=m
-CONFIG_BLK_DEV_OPTI621=m
-CONFIG_BLK_DEV_RZ1000=m
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-CONFIG_BLK_DEV_AEC62XX=m
-CONFIG_BLK_DEV_ALI15X3=m
-CONFIG_BLK_DEV_AMD74XX=m
-CONFIG_BLK_DEV_ATIIXP=m
-CONFIG_BLK_DEV_CMD64X=m
-CONFIG_BLK_DEV_TRIFLEX=m
-CONFIG_BLK_DEV_CS5520=m
-CONFIG_BLK_DEV_CS5530=m
-CONFIG_BLK_DEV_CS5535=m
-CONFIG_BLK_DEV_CS5536=m
-CONFIG_BLK_DEV_HPT366=m
-CONFIG_BLK_DEV_JMICRON=m
-CONFIG_BLK_DEV_SC1200=m
-CONFIG_BLK_DEV_PIIX=m
-CONFIG_BLK_DEV_IT8172=m
-CONFIG_BLK_DEV_IT8213=m
-CONFIG_BLK_DEV_IT821X=m
-CONFIG_BLK_DEV_NS87415=m
-CONFIG_BLK_DEV_PDC202XX_OLD=m
-CONFIG_BLK_DEV_PDC202XX_NEW=m
-CONFIG_BLK_DEV_SVWKS=m
-CONFIG_BLK_DEV_SIIMAGE=m
-CONFIG_BLK_DEV_SIS5513=m
-CONFIG_BLK_DEV_SLC90E66=m
-CONFIG_BLK_DEV_TRM290=m
-CONFIG_BLK_DEV_VIA82CXXX=m
-CONFIG_BLK_DEV_TC86C001=m
-
-#
-# Other IDE chipsets support
-#
-
-#
-# Note: most of these also require special kernel boot parameters
-#
-CONFIG_BLK_DEV_4DRIVES=m
-CONFIG_BLK_DEV_ALI14XX=m
-CONFIG_BLK_DEV_DTC2278=m
-CONFIG_BLK_DEV_HT6560B=m
-CONFIG_BLK_DEV_QD65XX=m
-CONFIG_BLK_DEV_UMC8672=m
-CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDE is not set
#
# SCSI device support
@@ -1610,11 +1614,12 @@ CONFIG_SCSI_AIC94XX=m
# CONFIG_AIC94XX_DEBUG is not set
CONFIG_SCSI_MVSAS=m
# CONFIG_SCSI_MVSAS_DEBUG is not set
+CONFIG_SCSI_MVSAS_TASKLET=y
+CONFIG_SCSI_MVUMI=m
CONFIG_SCSI_DPT_I2O=m
CONFIG_SCSI_ADVANSYS=m
CONFIG_SCSI_IN2000=m
CONFIG_SCSI_ARCMSR=m
-CONFIG_SCSI_ARCMSR_AER=y
CONFIG_MEGARAID_NEWGEN=y
CONFIG_MEGARAID_MM=m
CONFIG_MEGARAID_MAILBOX=m
@@ -1810,8 +1815,13 @@ CONFIG_MD_MULTIPATH=m
CONFIG_MD_FAULTY=m
CONFIG_BLK_DEV_DM=m
# CONFIG_DM_DEBUG is not set
+CONFIG_DM_BUFIO=m
+CONFIG_DM_PERSISTENT_DATA=m
CONFIG_DM_CRYPT=m
CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_THIN_PROVISIONING=m
+# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
+# CONFIG_DM_DEBUG_SPACE_MAPS is not set
CONFIG_DM_MIRROR=m
CONFIG_DM_RAID=m
CONFIG_DM_LOG_USERSPACE=m
@@ -1827,8 +1837,8 @@ CONFIG_TCM_IBLOCK=m
CONFIG_TCM_FILEIO=m
CONFIG_TCM_PSCSI=m
CONFIG_LOOPBACK_TARGET=m
-# CONFIG_LOOPBACK_TARGET_CDB_DEBUG is not set
CONFIG_TCM_FC=m
+CONFIG_ISCSI_TARGET=m
CONFIG_FUSION=y
CONFIG_FUSION_SPI=m
CONFIG_FUSION_FC=m
@@ -1849,6 +1859,7 @@ CONFIG_FIREWIRE_NOSY=m
CONFIG_I2O=m
CONFIG_I2O_LCT_NOTIFY_ON_CHANGES=y
CONFIG_I2O_EXT_ADAPTEC=y
+CONFIG_I2O_EXT_ADAPTEC_DMA64=y
CONFIG_I2O_CONFIG=m
CONFIG_I2O_CONFIG_OLD_IOCTL=y
CONFIG_I2O_BUS=m
@@ -1858,62 +1869,119 @@ CONFIG_I2O_PROC=m
CONFIG_MACINTOSH_DRIVERS=y
CONFIG_MAC_EMUMOUSEBTN=y
CONFIG_NETDEVICES=y
-CONFIG_IFB=m
-CONFIG_DUMMY=m
+CONFIG_NET_CORE=y
CONFIG_BONDING=m
+CONFIG_DUMMY=m
+CONFIG_EQUALIZER=m
+# CONFIG_NET_FC is not set
+CONFIG_MII=m
+CONFIG_IEEE802154_DRIVERS=m
+CONFIG_IEEE802154_FAKEHARD=m
+CONFIG_IFB=m
CONFIG_MACVLAN=m
CONFIG_MACVTAP=m
-CONFIG_EQUALIZER=m
+CONFIG_NETCONSOLE=m
+CONFIG_NETCONSOLE_DYNAMIC=y
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+CONFIG_RIONET=m
+CONFIG_RIONET_TX_SIZE=128
+CONFIG_RIONET_RX_SIZE=128
CONFIG_TUN=m
CONFIG_VETH=m
-CONFIG_NET_SB1000=m
+CONFIG_VIRTIO_NET=m
+CONFIG_SUNGEM_PHY=m
# CONFIG_ARCNET is not set
-CONFIG_MII=m
-CONFIG_PHYLIB=m
+CONFIG_ATM_DRIVERS=y
+# CONFIG_ATM_DUMMY is not set
+CONFIG_ATM_TCP=m
+CONFIG_ATM_LANAI=m
+CONFIG_ATM_ENI=m
+# CONFIG_ATM_ENI_DEBUG is not set
+# CONFIG_ATM_ENI_TUNE_BURST is not set
+CONFIG_ATM_FIRESTREAM=m
+CONFIG_ATM_ZATM=m
+# CONFIG_ATM_ZATM_DEBUG is not set
+CONFIG_ATM_NICSTAR=m
+# CONFIG_ATM_NICSTAR_USE_SUNI is not set
+# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set
+CONFIG_ATM_IDT77252=m
+# CONFIG_ATM_IDT77252_DEBUG is not set
+# CONFIG_ATM_IDT77252_RCV_ALL is not set
+CONFIG_ATM_IDT77252_USE_SUNI=y
+CONFIG_ATM_AMBASSADOR=m
+# CONFIG_ATM_AMBASSADOR_DEBUG is not set
+CONFIG_ATM_HORIZON=m
+# CONFIG_ATM_HORIZON_DEBUG is not set
+CONFIG_ATM_IA=m
+# CONFIG_ATM_IA_DEBUG is not set
+CONFIG_ATM_FORE200E=m
+# CONFIG_ATM_FORE200E_USE_TASKLET is not set
+CONFIG_ATM_FORE200E_TX_RETRY=16
+CONFIG_ATM_FORE200E_DEBUG=0
+CONFIG_ATM_HE=m
+# CONFIG_ATM_HE_USE_SUNI is not set
+CONFIG_ATM_SOLOS=m
#
-# MII PHY device drivers
+# CAIF transport drivers
#
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-CONFIG_VITESSE_PHY=m
-CONFIG_SMSC_PHY=m
-CONFIG_BROADCOM_PHY=m
-CONFIG_ICPLUS_PHY=m
-CONFIG_REALTEK_PHY=m
-CONFIG_NATIONAL_PHY=m
-CONFIG_STE10XP=m
-CONFIG_LSI_ET1011C_PHY=m
-CONFIG_MICREL_PHY=m
-# CONFIG_MDIO_BITBANG is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_HAPPYMEAL=m
-CONFIG_SUNGEM=m
-CONFIG_CASSINI=m
+CONFIG_CAIF_TTY=m
+CONFIG_CAIF_SPI_SLAVE=m
+CONFIG_CAIF_SPI_SYNC=y
+CONFIG_CAIF_HSI=m
+CONFIG_ETHERNET=y
+CONFIG_MDIO=m
CONFIG_NET_VENDOR_3COM=y
CONFIG_EL1=m
-CONFIG_EL2=m
-CONFIG_ELPLUS=m
-CONFIG_EL16=m
CONFIG_EL3=m
CONFIG_3C515=m
+CONFIG_PCMCIA_3C574=m
+CONFIG_PCMCIA_3C589=m
CONFIG_VORTEX=m
CONFIG_TYPHOON=m
+CONFIG_NET_VENDOR_ADAPTEC=y
+CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_NET_VENDOR_ALTEON=y
+CONFIG_ACENIC=m
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+CONFIG_NET_VENDOR_AMD=y
+CONFIG_AMD8111_ETH=m
CONFIG_LANCE=m
-CONFIG_NET_VENDOR_SMC=y
-CONFIG_WD80x3=m
-CONFIG_ULTRA=m
-CONFIG_SMC9194=m
-CONFIG_ENC28J60=m
-# CONFIG_ENC28J60_WRITEVERIFY is not set
-CONFIG_ETHOC=m
-CONFIG_NET_VENDOR_RACAL=y
-CONFIG_NI52=m
+CONFIG_PCNET32=m
+CONFIG_DEPCA=m
+CONFIG_PCMCIA_NMCLAN=m
CONFIG_NI65=m
+CONFIG_NET_VENDOR_ATHEROS=y
+CONFIG_ATL2=m
+CONFIG_ATL1=m
+CONFIG_ATL1E=m
+CONFIG_ATL1C=m
+CONFIG_NET_VENDOR_BROADCOM=y
+CONFIG_B44=m
+CONFIG_B44_PCI_AUTOSELECT=y
+CONFIG_B44_PCICORE_AUTOSELECT=y
+CONFIG_B44_PCI=y
+CONFIG_BNX2=m
+CONFIG_CNIC=m
+CONFIG_TIGON3=m
+CONFIG_BNX2X=m
+CONFIG_NET_VENDOR_BROCADE=y
+CONFIG_BNA=m
+CONFIG_NET_VENDOR_CHELSIO=y
+CONFIG_CHELSIO_T1=m
+CONFIG_CHELSIO_T1_1G=y
+CONFIG_CHELSIO_T3=m
+CONFIG_CHELSIO_T4=m
+CONFIG_CHELSIO_T4VF=m
+CONFIG_NET_VENDOR_CIRRUS=y
+CONFIG_CS89x0=m
+CONFIG_NET_VENDOR_CISCO=y
+CONFIG_ENIC=m
CONFIG_DNET=m
+CONFIG_NET_VENDOR_DEC=y
+CONFIG_EWRK3=m
CONFIG_NET_TULIP=y
CONFIG_DE2104X=m
CONFIG_DE2104X_DSL=0
@@ -1926,132 +1994,222 @@ CONFIG_WINBOND_840=m
CONFIG_DM9102=m
CONFIG_ULI526X=m
CONFIG_PCMCIA_XIRCOM=m
+CONFIG_NET_VENDOR_DLINK=y
+CONFIG_DE600=m
+CONFIG_DE620=m
+CONFIG_DL2K=m
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
+CONFIG_NET_VENDOR_EMULEX=y
+CONFIG_BE2NET=m
+CONFIG_NET_VENDOR_EXAR=y
+CONFIG_S2IO=m
+CONFIG_VXGE=m
+# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
+CONFIG_NET_VENDOR_FUJITSU=y
CONFIG_AT1700=m
-CONFIG_DEPCA=m
+CONFIG_PCMCIA_FMVJ18X=m
+CONFIG_ETH16I=m
+CONFIG_NET_VENDOR_HP=y
CONFIG_HP100=m
-CONFIG_NET_ISA=y
-CONFIG_E2100=m
-CONFIG_EWRK3=m
+CONFIG_NET_VENDOR_INTEL=y
+CONFIG_E100=m
+CONFIG_E1000=m
+CONFIG_E1000E=m
+CONFIG_IGB=m
+CONFIG_IGB_DCA=y
+CONFIG_IGBVF=m
+CONFIG_IXGB=m
+CONFIG_IXGBE=m
+CONFIG_IXGBE_DCA=y
+CONFIG_IXGBEVF=m
+CONFIG_NET_VENDOR_I825XX=y
+CONFIG_ELPLUS=m
+CONFIG_EL16=m
+CONFIG_APRICOT=m
CONFIG_EEXPRESS=m
CONFIG_EEXPRESS_PRO=m
-CONFIG_HPLAN_PLUS=m
-CONFIG_HPLAN=m
CONFIG_LP486E=m
-CONFIG_ETH16I=m
-CONFIG_NE2000=m
+CONFIG_NI52=m
CONFIG_ZNET=m
-CONFIG_SEEQ8005=m
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
-# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
-# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
-CONFIG_NET_PCI=y
-CONFIG_PCNET32=m
-CONFIG_AMD8111_ETH=m
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_AC3200=m
+CONFIG_IP1000=m
+CONFIG_JME=m
+CONFIG_NET_VENDOR_MARVELL=y
+CONFIG_SKGE=m
+# CONFIG_SKGE_DEBUG is not set
+CONFIG_SKGE_GENESIS=y
+CONFIG_SKY2=m
+# CONFIG_SKY2_DEBUG is not set
+CONFIG_NET_VENDOR_MELLANOX=y
+CONFIG_MLX4_EN=m
+CONFIG_MLX4_CORE=m
+CONFIG_MLX4_DEBUG=y
+CONFIG_NET_VENDOR_MICREL=y
+CONFIG_KS8842=m
+CONFIG_KS8851=m
+CONFIG_KS8851_MLL=m
CONFIG_KSZ884X_PCI=m
-CONFIG_APRICOT=m
-CONFIG_B44=m
-CONFIG_B44_PCI_AUTOSELECT=y
-CONFIG_B44_PCICORE_AUTOSELECT=y
-CONFIG_B44_PCI=y
-CONFIG_FORCEDETH=m
-CONFIG_CS89x0=m
-CONFIG_E100=m
+CONFIG_NET_VENDOR_MICROCHIP=y
+CONFIG_ENC28J60=m
+# CONFIG_ENC28J60_WRITEVERIFY is not set
+CONFIG_NET_VENDOR_MYRI=y
+CONFIG_MYRI10GE=m
+CONFIG_MYRI10GE_DCA=y
CONFIG_FEALNX=m
+CONFIG_NET_VENDOR_NATSEMI=y
CONFIG_NATSEMI=m
+CONFIG_NS83820=m
+CONFIG_NET_VENDOR_8390=y
+CONFIG_EL2=m
+CONFIG_AC3200=m
+CONFIG_PCMCIA_AXNET=m
+CONFIG_E2100=m
+CONFIG_HPLAN_PLUS=m
+CONFIG_HPLAN=m
+CONFIG_NE2000=m
CONFIG_NE2K_PCI=m
+CONFIG_PCMCIA_PCNET=m
+CONFIG_ULTRA=m
+CONFIG_WD80x3=m
+CONFIG_NET_VENDOR_NVIDIA=y
+CONFIG_FORCEDETH=m
+CONFIG_NET_VENDOR_OKI=y
+CONFIG_PCH_GBE=m
+CONFIG_ETHOC=m
+CONFIG_NET_PACKET_ENGINE=y
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
+CONFIG_NET_VENDOR_QLOGIC=y
+CONFIG_QLA3XXX=m
+CONFIG_QLCNIC=m
+CONFIG_QLGE=m
+CONFIG_NETXEN_NIC=m
+CONFIG_NET_VENDOR_RACAL=y
+CONFIG_NET_VENDOR_REALTEK=y
+CONFIG_ATP=m
CONFIG_8139CP=m
CONFIG_8139TOO=m
# CONFIG_8139TOO_PIO is not set
CONFIG_8139TOO_TUNE_TWISTER=y
CONFIG_8139TOO_8129=y
# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_R8169=m
+CONFIG_NET_VENDOR_RDC=y
CONFIG_R6040=m
+CONFIG_NET_VENDOR_SEEQ=y
+CONFIG_SEEQ8005=m
+CONFIG_NET_VENDOR_SILAN=y
+CONFIG_SC92031=m
+CONFIG_NET_VENDOR_SIS=y
CONFIG_SIS900=m
+CONFIG_SIS190=m
+CONFIG_SFC=m
+CONFIG_SFC_MTD=y
+CONFIG_NET_VENDOR_SMSC=y
+CONFIG_SMC9194=m
+CONFIG_PCMCIA_SMC91C92=m
CONFIG_EPIC100=m
CONFIG_SMSC9420=m
-CONFIG_SUNDANCE=m
-# CONFIG_SUNDANCE_MMIO is not set
-CONFIG_TLAN=m
-CONFIG_KS8842=m
-CONFIG_KS8851=m
-CONFIG_KS8851_MLL=m
-CONFIG_VIA_RHINE=m
-# CONFIG_VIA_RHINE_MMIO is not set
-CONFIG_SC92031=m
-CONFIG_NET_POCKET=y
-CONFIG_ATP=m
-CONFIG_DE600=m
-CONFIG_DE620=m
-CONFIG_ATL2=m
-CONFIG_NETDEV_1000=y
-CONFIG_ACENIC=m
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
-CONFIG_DL2K=m
-CONFIG_E1000=m
-CONFIG_E1000E=m
-CONFIG_IP1000=m
-CONFIG_IGB=m
-CONFIG_IGB_DCA=y
-CONFIG_IGBVF=m
-CONFIG_NS83820=m
-CONFIG_HAMACHI=m
-CONFIG_YELLOWFIN=m
-CONFIG_R8169=m
-CONFIG_SIS190=m
-CONFIG_SKGE=m
-# CONFIG_SKGE_DEBUG is not set
-CONFIG_SKY2=m
-# CONFIG_SKY2_DEBUG is not set
-CONFIG_VIA_VELOCITY=m
-CONFIG_TIGON3=m
-CONFIG_BNX2=m
-CONFIG_CNIC=m
-CONFIG_QLA3XXX=m
-CONFIG_ATL1=m
-CONFIG_ATL1E=m
-CONFIG_ATL1C=m
-CONFIG_JME=m
+CONFIG_NET_VENDOR_STMICRO=y
CONFIG_STMMAC_ETH=m
+# CONFIG_STMMAC_DEBUG_FS is not set
# CONFIG_STMMAC_DA is not set
-CONFIG_STMMAC_DUAL_MAC=y
-CONFIG_PCH_GBE=m
-CONFIG_NETDEV_10000=y
-CONFIG_MDIO=m
-CONFIG_CHELSIO_T1=m
-CONFIG_CHELSIO_T1_1G=y
-CONFIG_CHELSIO_T3=m
-CONFIG_CHELSIO_T4=m
-CONFIG_CHELSIO_T4VF=m
-CONFIG_ENIC=m
-CONFIG_IXGBE=m
-CONFIG_IXGBE_DCA=y
-CONFIG_IXGBEVF=m
-CONFIG_IXGB=m
-CONFIG_S2IO=m
-CONFIG_VXGE=m
-# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
-CONFIG_MYRI10GE=m
-CONFIG_MYRI10GE_DCA=y
-CONFIG_NETXEN_NIC=m
+CONFIG_STMMAC_RING=y
+# CONFIG_STMMAC_CHAINED is not set
+CONFIG_NET_VENDOR_SUN=y
+CONFIG_HAPPYMEAL=m
+CONFIG_SUNGEM=m
+CONFIG_CASSINI=m
CONFIG_NIU=m
-CONFIG_MLX4_EN=m
-CONFIG_MLX4_CORE=m
-CONFIG_MLX4_DEBUG=y
+CONFIG_NET_VENDOR_TEHUTI=y
CONFIG_TEHUTI=m
-CONFIG_BNX2X=m
-CONFIG_QLCNIC=m
-CONFIG_QLGE=m
-CONFIG_BNA=m
-CONFIG_SFC=m
-CONFIG_SFC_MTD=y
-CONFIG_BE2NET=m
+CONFIG_NET_VENDOR_TI=y
+CONFIG_TLAN=m
+CONFIG_NET_VENDOR_VIA=y
+CONFIG_VIA_RHINE=m
+# CONFIG_VIA_RHINE_MMIO is not set
+CONFIG_VIA_VELOCITY=m
+CONFIG_NET_VENDOR_XIRCOM=y
+CONFIG_PCMCIA_XIRC2PS=m
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_NET_SB1000=m
+CONFIG_PHYLIB=m
+
+#
+# MII PHY device drivers
+#
+CONFIG_MARVELL_PHY=m
+CONFIG_DAVICOM_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_CICADA_PHY=m
+CONFIG_VITESSE_PHY=m
+CONFIG_SMSC_PHY=m
+CONFIG_BROADCOM_PHY=m
+CONFIG_ICPLUS_PHY=m
+CONFIG_REALTEK_PHY=m
+CONFIG_NATIONAL_PHY=m
+CONFIG_STE10XP=m
+CONFIG_LSI_ET1011C_PHY=m
+CONFIG_MICREL_PHY=m
+# CONFIG_MDIO_BITBANG is not set
+CONFIG_PLIP=m
+CONFIG_PPP=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_MPPE=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPPOATM=m
+CONFIG_PPPOE=m
+CONFIG_PPTP=m
+CONFIG_PPPOL2TP=m
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_SLIP=m
+CONFIG_SLHC=m
+# CONFIG_SLIP_COMPRESSED is not set
+# CONFIG_SLIP_SMART is not set
+# CONFIG_SLIP_MODE_SLIP6 is not set
# CONFIG_TR is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_USB_NET_CDC_NCM=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_SMSC75XX=m
+CONFIG_USB_NET_SMSC95XX=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_KC2190=y
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_USB_NET_CX82310_ETH=m
+CONFIG_USB_NET_KALMIA=m
+CONFIG_USB_HSO=m
+CONFIG_USB_NET_INT51X1=m
+CONFIG_USB_CDC_PHONET=m
+CONFIG_USB_IPHETH=m
+CONFIG_USB_SIERRA_NET=m
+CONFIG_USB_VL600=m
CONFIG_WLAN=y
CONFIG_PCMCIA_RAYCS=m
CONFIG_LIBERTAS_THINFIRM=m
@@ -2091,7 +2249,11 @@ CONFIG_ATH9K_HTC=m
CONFIG_CARL9170=m
CONFIG_CARL9170_LEDS=y
CONFIG_CARL9170_WPC=y
+# CONFIG_CARL9170_HWRNG is not set
+CONFIG_ATH6KL=m
+# CONFIG_ATH6KL_DEBUG is not set
CONFIG_B43=m
+CONFIG_B43_SSB=y
CONFIG_B43_PCI_AUTOSELECT=y
CONFIG_B43_PCICORE_AUTOSELECT=y
CONFIG_B43_PCMCIA=y
@@ -2099,6 +2261,7 @@ CONFIG_B43_SDIO=y
CONFIG_B43_PIO=y
CONFIG_B43_PHY_N=y
CONFIG_B43_PHY_LP=y
+CONFIG_B43_PHY_HT=y
CONFIG_B43_LEDS=y
CONFIG_B43_HWRNG=y
# CONFIG_B43_DEBUG is not set
@@ -2113,6 +2276,10 @@ CONFIG_B43LEGACY_PIO=y
CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
# CONFIG_B43LEGACY_DMA_MODE is not set
# CONFIG_B43LEGACY_PIO_MODE is not set
+CONFIG_BRCMUTIL=m
+CONFIG_BRCMSMAC=m
+CONFIG_BRCMFMAC=m
+# CONFIG_BRCMDBG is not set
CONFIG_HOSTAP=m
CONFIG_HOSTAP_FIRMWARE=y
# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
@@ -2130,7 +2297,7 @@ CONFIG_IPW2200_QOS=y
# CONFIG_IPW2200_DEBUG is not set
CONFIG_LIBIPW=m
# CONFIG_LIBIPW_DEBUG is not set
-CONFIG_IWLAGN=m
+CONFIG_IWLWIFI=m
#
# Debugging Options
@@ -2138,7 +2305,6 @@ CONFIG_IWLAGN=m
# CONFIG_IWLWIFI_DEBUG is not set
CONFIG_IWLWIFI_DEVICE_TRACING=y
CONFIG_IWLWIFI_DEVICE_SVTOOL=y
-CONFIG_IWL_P2P=y
CONFIG_IWLWIFI_LEGACY=m
#
@@ -2199,6 +2365,7 @@ CONFIG_RT2X00_LIB_LEDS=y
# CONFIG_RT2X00_DEBUG is not set
CONFIG_RTL8192CE=m
CONFIG_RTL8192SE=m
+CONFIG_RTL8192DE=m
CONFIG_RTL8192CU=m
CONFIG_RTLWIFI=m
CONFIG_RTL8192C_COMMON=m
@@ -2207,7 +2374,6 @@ CONFIG_WL1251_SPI=m
CONFIG_WL1251_SDIO=m
CONFIG_WL12XX_MENU=m
CONFIG_WL12XX=m
-CONFIG_WL12XX_HT=y
CONFIG_WL12XX_SPI=m
CONFIG_WL12XX_SDIO=m
CONFIG_WL12XX_SDIO_TEST=m
@@ -2216,6 +2382,7 @@ CONFIG_ZD1211RW=m
# CONFIG_ZD1211RW_DEBUG is not set
CONFIG_MWIFIEX=m
CONFIG_MWIFIEX_SDIO=m
+CONFIG_MWIFIEX_PCIE=m
#
# WiMAX Wireless Broadband devices
@@ -2225,124 +2392,9 @@ CONFIG_WIMAX_I2400M_USB=m
CONFIG_WIMAX_I2400M_SDIO=m
# CONFIG_WIMAX_IWMC3200_SDIO is not set
CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_CDC_EEM=m
-CONFIG_USB_NET_CDC_NCM=m
-CONFIG_USB_NET_DM9601=m
-CONFIG_USB_NET_SMSC75XX=m
-CONFIG_USB_NET_SMSC95XX=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_KC2190=y
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_USB_NET_CX82310_ETH=m
-CONFIG_USB_NET_KALMIA=m
-CONFIG_USB_HSO=m
-CONFIG_USB_NET_INT51X1=m
-CONFIG_USB_CDC_PHONET=m
-CONFIG_USB_IPHETH=m
-CONFIG_USB_SIERRA_NET=m
-CONFIG_USB_VL600=m
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=m
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_PCMCIA_PCNET=m
-CONFIG_PCMCIA_NMCLAN=m
-CONFIG_PCMCIA_SMC91C92=m
-CONFIG_PCMCIA_XIRC2PS=m
-CONFIG_PCMCIA_AXNET=m
# CONFIG_WAN is not set
-CONFIG_ATM_DRIVERS=y
-# CONFIG_ATM_DUMMY is not set
-CONFIG_ATM_TCP=m
-CONFIG_ATM_LANAI=m
-CONFIG_ATM_ENI=m
-# CONFIG_ATM_ENI_DEBUG is not set
-# CONFIG_ATM_ENI_TUNE_BURST is not set
-CONFIG_ATM_FIRESTREAM=m
-CONFIG_ATM_ZATM=m
-# CONFIG_ATM_ZATM_DEBUG is not set
-CONFIG_ATM_NICSTAR=m
-# CONFIG_ATM_NICSTAR_USE_SUNI is not set
-# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set
-CONFIG_ATM_IDT77252=m
-# CONFIG_ATM_IDT77252_DEBUG is not set
-# CONFIG_ATM_IDT77252_RCV_ALL is not set
-CONFIG_ATM_IDT77252_USE_SUNI=y
-CONFIG_ATM_AMBASSADOR=m
-# CONFIG_ATM_AMBASSADOR_DEBUG is not set
-CONFIG_ATM_HORIZON=m
-# CONFIG_ATM_HORIZON_DEBUG is not set
-CONFIG_ATM_IA=m
-# CONFIG_ATM_IA_DEBUG is not set
-CONFIG_ATM_FORE200E=m
-# CONFIG_ATM_FORE200E_USE_TASKLET is not set
-CONFIG_ATM_FORE200E_TX_RETRY=16
-CONFIG_ATM_FORE200E_DEBUG=0
-CONFIG_ATM_HE=m
-# CONFIG_ATM_HE_USE_SUNI is not set
-CONFIG_ATM_SOLOS=m
-CONFIG_IEEE802154_DRIVERS=m
-CONFIG_IEEE802154_FAKEHARD=m
-
-#
-# CAIF transport drivers
-#
-CONFIG_CAIF_TTY=m
-CONFIG_CAIF_SPI_SLAVE=m
-CONFIG_CAIF_SPI_SYNC=y
-CONFIG_XEN_NETDEV_FRONTEND=y
-# CONFIG_XEN_NETDEV_BACKEND is not set
-CONFIG_RIONET=m
-CONFIG_RIONET_TX_SIZE=128
-CONFIG_RIONET_RX_SIZE=128
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-CONFIG_PLIP=m
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-CONFIG_PPTP=m
-CONFIG_PPPOATM=m
-CONFIG_PPPOL2TP=m
-CONFIG_SLIP=m
-# CONFIG_SLIP_COMPRESSED is not set
-CONFIG_SLHC=m
-# CONFIG_SLIP_SMART is not set
-# CONFIG_SLIP_MODE_SLIP6 is not set
-# CONFIG_NET_FC is not set
-CONFIG_NETCONSOLE=m
-CONFIG_NETCONSOLE_DYNAMIC=y
-CONFIG_NETPOLL=y
-# CONFIG_NETPOLL_TRAP is not set
-CONFIG_NET_POLL_CONTROLLER=y
-CONFIG_VIRTIO_NET=m
+CONFIG_XEN_NETDEV_FRONTEND=m
+CONFIG_XEN_NETDEV_BACKEND=m
CONFIG_VMXNET3=m
CONFIG_ISDN=y
CONFIG_ISDN_I4L=m
@@ -2642,6 +2694,7 @@ CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y
CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y
CONFIG_TOUCHSCREEN_USB_NEXIO=y
CONFIG_TOUCHSCREEN_TOUCHIT213=m
+CONFIG_TOUCHSCREEN_TSC_SERIO=m
CONFIG_TOUCHSCREEN_TSC2005=m
CONFIG_TOUCHSCREEN_TSC2007=m
CONFIG_TOUCHSCREEN_PCAP=m
@@ -2652,13 +2705,18 @@ CONFIG_INPUT_AB8500_PONKEY=m
CONFIG_INPUT_AD714X=m
CONFIG_INPUT_AD714X_I2C=m
CONFIG_INPUT_AD714X_SPI=m
+CONFIG_INPUT_BMA150=m
CONFIG_INPUT_PCSPKR=m
+CONFIG_INPUT_MC13783_PWRBUTTON=m
+CONFIG_INPUT_MMA8450=m
+CONFIG_INPUT_MPU3050=m
CONFIG_INPUT_APANEL=m
CONFIG_INPUT_WISTRON_BTNS=m
CONFIG_INPUT_ATLAS_BTNS=m
-CONFIG_INPUT_ATI_REMOTE=m
CONFIG_INPUT_ATI_REMOTE2=m
CONFIG_INPUT_KEYSPAN_REMOTE=m
+CONFIG_INPUT_KXTJ9=m
+# CONFIG_INPUT_KXTJ9_POLLED_MODE is not set
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_YEALINK=m
CONFIG_INPUT_CM109=m
@@ -2673,7 +2731,7 @@ CONFIG_INPUT_ADXL34X_I2C=m
CONFIG_INPUT_ADXL34X_SPI=m
CONFIG_INPUT_CMA3000=m
CONFIG_INPUT_CMA3000_I2C=m
-CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
+CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m
#
# Hardware I/O ports
@@ -2700,6 +2758,7 @@ CONFIG_GAMEPORT_FM801=m
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
+CONFIG_VT_CONSOLE_SLEEP=y
CONFIG_HW_CONSOLE=y
CONFIG_VT_HW_CONSOLE_BINDING=y
CONFIG_UNIX98_PTYS=y
@@ -2851,6 +2910,7 @@ CONFIG_I2C_SCMI=m
#
# I2C system bus drivers (mostly embedded / system-on-chip)
#
+CONFIG_I2C_DESIGNWARE_PCI=m
CONFIG_I2C_GPIO=m
CONFIG_I2C_INTEL_MID=m
CONFIG_I2C_OCORES=m
@@ -2915,6 +2975,7 @@ CONFIG_PPS=m
CONFIG_PPS_CLIENT_KTIMER=m
CONFIG_PPS_CLIENT_LDISC=m
CONFIG_PPS_CLIENT_PARPORT=m
+CONFIG_PPS_CLIENT_GPIO=m
#
# PPS generators support
@@ -2929,13 +2990,13 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
CONFIG_GPIOLIB=y
# CONFIG_DEBUG_GPIO is not set
CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_GENERIC=m
CONFIG_GPIO_MAX730X=m
#
# Memory mapped GPIO drivers:
#
-CONFIG_GPIO_BASIC_MMIO_CORE=m
-CONFIG_GPIO_BASIC_MMIO=m
+CONFIG_GPIO_GENERIC_PLATFORM=m
CONFIG_GPIO_IT8761E=m
CONFIG_GPIO_SCH=m
CONFIG_GPIO_VX855=m
@@ -2947,6 +3008,7 @@ CONFIG_GPIO_MAX7300=m
CONFIG_GPIO_MAX732X=m
CONFIG_GPIO_PCA953X=m
CONFIG_GPIO_PCF857X=m
+CONFIG_GPIO_TPS65912=m
CONFIG_GPIO_WM831X=m
CONFIG_GPIO_ADP5588=m
@@ -3030,6 +3092,7 @@ CONFIG_HWMON_VID=m
#
CONFIG_SENSORS_ABITUGURU=m
CONFIG_SENSORS_ABITUGURU3=m
+CONFIG_SENSORS_AD7314=m
CONFIG_SENSORS_AD7414=m
CONFIG_SENSORS_AD7418=m
CONFIG_SENSORS_ADCXX=m
@@ -3084,23 +3147,29 @@ CONFIG_SENSORS_LTC4215=m
CONFIG_SENSORS_LTC4245=m
CONFIG_SENSORS_LTC4261=m
CONFIG_SENSORS_LM95241=m
+CONFIG_SENSORS_LM95245=m
CONFIG_SENSORS_MAX1111=m
CONFIG_SENSORS_MAX16065=m
CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX1668=m
CONFIG_SENSORS_MAX6639=m
CONFIG_SENSORS_MAX6642=m
CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_NTC_THERMISTOR=m
CONFIG_SENSORS_PC87360=m
CONFIG_SENSORS_PC87427=m
CONFIG_SENSORS_PCF8591=m
CONFIG_PMBUS=m
CONFIG_SENSORS_PMBUS=m
CONFIG_SENSORS_ADM1275=m
+CONFIG_SENSORS_LM25066=m
+CONFIG_SENSORS_LTC2978=m
CONFIG_SENSORS_MAX16064=m
CONFIG_SENSORS_MAX34440=m
CONFIG_SENSORS_MAX8688=m
CONFIG_SENSORS_UCD9000=m
CONFIG_SENSORS_UCD9200=m
+CONFIG_SENSORS_ZL6100=m
CONFIG_SENSORS_SHT15=m
CONFIG_SENSORS_SHT21=m
CONFIG_SENSORS_SIS5595=m
@@ -3112,7 +3181,9 @@ CONFIG_SENSORS_EMC6W201=m
CONFIG_SENSORS_SMSC47M1=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_SCH56XX_COMMON=m
CONFIG_SENSORS_SCH5627=m
+CONFIG_SENSORS_SCH5636=m
CONFIG_SENSORS_ADS1015=m
CONFIG_SENSORS_ADS7828=m
CONFIG_SENSORS_ADS7871=m
@@ -3147,6 +3218,7 @@ CONFIG_SENSORS_ATK0110=m
CONFIG_THERMAL=y
CONFIG_THERMAL_HWMON=y
CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
#
@@ -3190,7 +3262,7 @@ CONFIG_W83877F_WDT=m
CONFIG_W83977F_WDT=m
CONFIG_MACHZ_WDT=m
CONFIG_SBC_EPX_C3_WATCHDOG=m
-# CONFIG_XEN_WDT is not set
+CONFIG_XEN_WDT=m
#
# ISA-based Watchdog Cards
@@ -3232,11 +3304,11 @@ CONFIG_BCMA_POSSIBLE=y
#
# Broadcom specific AMBA
#
-CONFIG_BCMA=m
-CONFIG_BCMA_HOST_PCI_POSSIBLE=y
-CONFIG_BCMA_HOST_PCI=y
-# CONFIG_BCMA_DEBUG is not set
-CONFIG_MFD_SUPPORT=y
+# CONFIG_BCMA is not set
+
+#
+# Multifunction device drivers
+#
CONFIG_MFD_CORE=y
CONFIG_MFD_SM501=m
CONFIG_MFD_SM501_GPIO=y
@@ -3245,6 +3317,8 @@ CONFIG_UCB1400_CORE=m
CONFIG_TPS6105X=m
CONFIG_TPS65010=m
CONFIG_TPS6507X=m
+CONFIG_MFD_TPS65912=y
+CONFIG_MFD_TPS65912_SPI=y
# CONFIG_MFD_TMIO is not set
CONFIG_MFD_WM8400=m
CONFIG_MFD_WM831X=y
@@ -3272,6 +3346,7 @@ CONFIG_REGULATOR_DUMMY=y
CONFIG_REGULATOR_FIXED_VOLTAGE=m
CONFIG_REGULATOR_VIRTUAL_CONSUMER=m
CONFIG_REGULATOR_USERSPACE_CONSUMER=m
+CONFIG_REGULATOR_GPIO=m
CONFIG_REGULATOR_BQ24022=m
CONFIG_REGULATOR_MAX1586=m
CONFIG_REGULATOR_MAX8649=m
@@ -3289,6 +3364,7 @@ CONFIG_REGULATOR_MC13892=m
CONFIG_REGULATOR_TPS6105X=m
CONFIG_REGULATOR_TPS65023=m
CONFIG_REGULATOR_TPS6507X=m
+CONFIG_REGULATOR_TPS65912=m
CONFIG_REGULATOR_ISL6271A=m
CONFIG_REGULATOR_AD5398=m
CONFIG_REGULATOR_AB8500=y
@@ -3303,6 +3379,7 @@ CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_V4L2_COMMON=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
CONFIG_DVB_CORE=m
+CONFIG_DVB_NET=y
CONFIG_VIDEO_MEDIA=m
#
@@ -3319,7 +3396,9 @@ CONFIG_IR_RC6_DECODER=m
CONFIG_IR_JVC_DECODER=m
CONFIG_IR_SONY_DECODER=m
CONFIG_IR_RC5_SZ_DECODER=m
+CONFIG_IR_MCE_KBD_DECODER=m
CONFIG_IR_LIRC_CODEC=m
+CONFIG_RC_ATI_REMOTE=m
CONFIG_IR_ENE=m
CONFIG_IR_IMON=m
CONFIG_IR_MCEUSB=m
@@ -3347,6 +3426,7 @@ CONFIG_MEDIA_TUNER_MT2131=m
CONFIG_MEDIA_TUNER_QT1010=m
CONFIG_MEDIA_TUNER_XC2028=m
CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_XC4000=m
CONFIG_MEDIA_TUNER_MXL5005S=m
CONFIG_MEDIA_TUNER_MXL5007T=m
CONFIG_MEDIA_TUNER_MC44S803=m
@@ -3365,6 +3445,7 @@ CONFIG_VIDEO_TUNER=m
CONFIG_V4L2_MEM2MEM_DEV=m
CONFIG_VIDEOBUF2_CORE=m
CONFIG_VIDEOBUF2_MEMOPS=m
+CONFIG_VIDEOBUF2_DMA_CONTIG=m
CONFIG_VIDEOBUF2_VMALLOC=m
CONFIG_VIDEO_CAPTURE_DRIVERS=y
# CONFIG_VIDEO_ADV_DEBUG is not set
@@ -3438,9 +3519,20 @@ CONFIG_VIDEO_AK881X=m
# Camera sensor devices
#
CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_MT9P031=m
+CONFIG_VIDEO_MT9T001=m
CONFIG_VIDEO_MT9V011=m
CONFIG_VIDEO_MT9V032=m
CONFIG_VIDEO_TCM825X=m
+CONFIG_VIDEO_SR030PC30=m
+CONFIG_VIDEO_NOON010PC30=m
+CONFIG_VIDEO_M5MOLS=m
+CONFIG_VIDEO_S5K6AA=m
+
+#
+# Flash devices
+#
+CONFIG_VIDEO_ADP1653=m
#
# Video improvement chips
@@ -3486,6 +3578,8 @@ CONFIG_VIDEO_CX88_MPEG=m
CONFIG_VIDEO_CX88_VP3054=m
CONFIG_VIDEO_CX23885=m
CONFIG_MEDIA_ALTERA_CI=m
+CONFIG_VIDEO_CX25821=m
+CONFIG_VIDEO_CX25821_ALSA=m
CONFIG_VIDEO_AU0828=m
CONFIG_VIDEO_IVTV=m
CONFIG_VIDEO_FB_IVTV=m
@@ -3493,10 +3587,7 @@ CONFIG_VIDEO_CX18=m
CONFIG_VIDEO_CX18_ALSA=m
CONFIG_VIDEO_SAA7164=m
CONFIG_VIDEO_CAFE_CCIC=m
-CONFIG_VIDEO_SR030PC30=m
CONFIG_VIDEO_VIA_CAMERA=m
-CONFIG_VIDEO_NOON010PC30=m
-CONFIG_VIDEO_M5MOLS=m
CONFIG_SOC_CAMERA=m
CONFIG_SOC_CAMERA_IMX074=m
CONFIG_SOC_CAMERA_MT9M001=m
@@ -3508,6 +3599,7 @@ CONFIG_SOC_CAMERA_RJ54N1=m
CONFIG_SOC_CAMERA_TW9910=m
CONFIG_SOC_CAMERA_PLATFORM=m
CONFIG_SOC_CAMERA_OV2640=m
+CONFIG_SOC_CAMERA_OV5642=m
CONFIG_SOC_CAMERA_OV6650=m
CONFIG_SOC_CAMERA_OV772X=m
CONFIG_SOC_CAMERA_OV9640=m
@@ -3536,6 +3628,7 @@ CONFIG_USB_GSPCA_OV534_9=m
CONFIG_USB_GSPCA_PAC207=m
CONFIG_USB_GSPCA_PAC7302=m
CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SE401=m
CONFIG_USB_GSPCA_SN9C2028=m
CONFIG_USB_GSPCA_SN9C20X=m
CONFIG_USB_GSPCA_SONIXB=m
@@ -3554,6 +3647,7 @@ CONFIG_USB_GSPCA_STK014=m
CONFIG_USB_GSPCA_STV0680=m
CONFIG_USB_GSPCA_SUNPLUS=m
CONFIG_USB_GSPCA_T613=m
+CONFIG_USB_GSPCA_TOPRO=m
CONFIG_USB_GSPCA_TV8532=m
CONFIG_USB_GSPCA_VC032X=m
CONFIG_USB_GSPCA_VICAM=m
@@ -3567,11 +3661,15 @@ CONFIG_VIDEO_HDPVR=m
CONFIG_VIDEO_EM28XX=m
CONFIG_VIDEO_EM28XX_ALSA=m
CONFIG_VIDEO_EM28XX_DVB=m
+CONFIG_VIDEO_EM28XX_RC=y
CONFIG_VIDEO_TLG2300=m
CONFIG_VIDEO_CX231XX=m
CONFIG_VIDEO_CX231XX_RC=y
CONFIG_VIDEO_CX231XX_ALSA=m
CONFIG_VIDEO_CX231XX_DVB=m
+CONFIG_VIDEO_TM6000=m
+CONFIG_VIDEO_TM6000_ALSA=m
+CONFIG_VIDEO_TM6000_DVB=m
CONFIG_VIDEO_USBVISION=m
CONFIG_USB_ET61X251=m
CONFIG_USB_SN9C102=m
@@ -3655,6 +3753,7 @@ CONFIG_DVB_USB_DTT200U=m
CONFIG_DVB_USB_OPERA1=m
CONFIG_DVB_USB_AF9005=m
CONFIG_DVB_USB_AF9005_REMOTE=m
+CONFIG_DVB_USB_PCTV452E=m
CONFIG_DVB_USB_DW2102=m
CONFIG_DVB_USB_CINERGY_T2=m
CONFIG_DVB_USB_ANYSEE=m
@@ -3666,6 +3765,8 @@ CONFIG_DVB_USB_EC168=m
CONFIG_DVB_USB_AZ6027=m
CONFIG_DVB_USB_LME2510=m
CONFIG_DVB_USB_TECHNISAT_USB2=m
+CONFIG_DVB_USB_IT913X=m
+CONFIG_DVB_USB_MXL111SF=m
CONFIG_DVB_TTUSB_BUDGET=m
CONFIG_DVB_TTUSB_DEC=m
CONFIG_SMS_SIANO_MDTV=m
@@ -3723,6 +3824,11 @@ CONFIG_DVB_HOPPER=m
CONFIG_DVB_NGENE=m
#
+# Supported ddbridge ('Octopus') Adapters
+#
+CONFIG_DVB_DDBRIDGE=m
+
+#
# Supported DVB Frontends
#
# CONFIG_DVB_FE_CUSTOMISE is not set
@@ -3736,6 +3842,12 @@ CONFIG_DVB_STV090x=m
CONFIG_DVB_STV6110x=m
#
+# Multistandard (cable + terrestrial) frontends
+#
+CONFIG_DVB_DRXK=m
+CONFIG_DVB_TDA18271C2DD=m
+
+#
# DVB-S (satellite) frontends
#
CONFIG_DVB_CX24110=m
@@ -3761,6 +3873,7 @@ CONFIG_DVB_CX24116=m
CONFIG_DVB_SI21XX=m
CONFIG_DVB_DS3000=m
CONFIG_DVB_MB86A16=m
+CONFIG_DVB_TDA10071=m
#
# DVB-T (terrestrial) frontends
@@ -3824,13 +3937,16 @@ CONFIG_DVB_TUNER_DIB0090=m
# SEC control devices for DVB-S
#
CONFIG_DVB_LNBP21=m
+CONFIG_DVB_LNBP22=m
CONFIG_DVB_ISL6405=m
CONFIG_DVB_ISL6421=m
CONFIG_DVB_ISL6423=m
+CONFIG_DVB_A8293=m
CONFIG_DVB_LGS8GXX=m
CONFIG_DVB_ATBM8830=m
CONFIG_DVB_TDA665x=m
CONFIG_DVB_IX2505V=m
+CONFIG_DVB_IT913X_FE=m
#
# Tools to develop new frontends
@@ -3861,13 +3977,13 @@ CONFIG_DRM_TDFX=m
CONFIG_DRM_R128=m
CONFIG_DRM_RADEON=m
CONFIG_DRM_RADEON_KMS=y
-# CONFIG_DRM_I810 is not set
CONFIG_DRM_I915=m
CONFIG_DRM_I915_KMS=y
CONFIG_DRM_MGA=m
CONFIG_DRM_SIS=m
CONFIG_DRM_VIA=m
CONFIG_DRM_SAVAGE=m
+CONFIG_DRM_VMWGFX=m
CONFIG_STUB_POULSBO=m
CONFIG_VGASTATE=m
CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -3879,11 +3995,11 @@ CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-CONFIG_FB_SYS_FILLRECT=y
-CONFIG_FB_SYS_COPYAREA=y
-CONFIG_FB_SYS_IMAGEBLIT=y
+CONFIG_FB_SYS_FILLRECT=m
+CONFIG_FB_SYS_COPYAREA=m
+CONFIG_FB_SYS_IMAGEBLIT=m
# CONFIG_FB_FOREIGN_ENDIAN is not set
-CONFIG_FB_SYS_FOPS=y
+CONFIG_FB_SYS_FOPS=m
# CONFIG_FB_WMT_GE_ROPS is not set
CONFIG_FB_DEFERRED_IO=y
CONFIG_FB_SVGALIB=m
@@ -3959,9 +4075,10 @@ CONFIG_FB_TRIDENT=m
# CONFIG_FB_GEODE is not set
# CONFIG_FB_TMIO is not set
# CONFIG_FB_SM501 is not set
+CONFIG_FB_SMSCUFX=m
CONFIG_FB_UDL=m
# CONFIG_FB_VIRTUAL is not set
-CONFIG_XEN_FBDEV_FRONTEND=y
+CONFIG_XEN_FBDEV_FRONTEND=m
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_MB862XX is not set
# CONFIG_FB_BROADSHEET is not set
@@ -3976,6 +4093,7 @@ CONFIG_LCD_VGG2432A4=m
CONFIG_LCD_PLATFORM=m
CONFIG_LCD_S6E63M0=m
CONFIG_LCD_LD9040=m
+CONFIG_LCD_AMS369FG06=m
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_GENERIC=m
CONFIG_BACKLIGHT_PROGEAR=m
@@ -4102,6 +4220,7 @@ CONFIG_SND_SSCAPE=m
CONFIG_SND_WAVEFRONT=m
CONFIG_SND_MSND_PINNACLE=m
CONFIG_SND_MSND_CLASSIC=m
+CONFIG_SND_TEA575X=m
CONFIG_SND_PCI=y
CONFIG_SND_AD1889=m
CONFIG_SND_ALS300=m
@@ -4151,8 +4270,8 @@ CONFIG_SND_ES1968_INPUT=y
CONFIG_SND_ES1968_RADIO=y
CONFIG_SND_FM801=m
CONFIG_SND_FM801_TEA575X_BOOL=y
-CONFIG_SND_TEA575X=m
CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_HWDEP=y
CONFIG_SND_HDA_RECONFIG=y
CONFIG_SND_HDA_INPUT_BEEP=y
@@ -4160,6 +4279,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=1
CONFIG_SND_HDA_INPUT_JACK=y
CONFIG_SND_HDA_PATCH_LOADER=y
CONFIG_SND_HDA_CODEC_REALTEK=y
+CONFIG_SND_HDA_ENABLE_REALTEK_QUIRKS=y
CONFIG_SND_HDA_CODEC_ANALOG=y
CONFIG_SND_HDA_CODEC_SIGMATEL=y
CONFIG_SND_HDA_CODEC_VIA=y
@@ -4167,6 +4287,7 @@ CONFIG_SND_HDA_CODEC_HDMI=y
CONFIG_SND_HDA_CODEC_CIRRUS=y
CONFIG_SND_HDA_CODEC_CONEXANT=y
CONFIG_SND_HDA_CODEC_CA0110=y
+CONFIG_SND_HDA_CODEC_CA0132=y
CONFIG_SND_HDA_CODEC_CMEDIA=y
CONFIG_SND_HDA_CODEC_SI3054=y
CONFIG_SND_HDA_GENERIC=y
@@ -4236,7 +4357,7 @@ CONFIG_USB_HIDDEV=y
#
CONFIG_HID_A4TECH=m
CONFIG_HID_ACRUX=m
-CONFIG_HID_ACRUX_FF=m
+CONFIG_HID_ACRUX_FF=y
CONFIG_HID_APPLE=m
CONFIG_HID_BELKIN=m
CONFIG_HID_CHERRY=m
@@ -4248,6 +4369,8 @@ CONFIG_DRAGONRISE_FF=y
CONFIG_HID_EMS_FF=m
CONFIG_HID_ELECOM=m
CONFIG_HID_EZKEY=m
+CONFIG_HID_HOLTEK=m
+CONFIG_HOLTEK_FF=y
CONFIG_HID_KEYTOUCH=m
CONFIG_HID_KYE=m
CONFIG_HID_UCLOGIC=m
@@ -4257,10 +4380,11 @@ CONFIG_HID_TWINHAN=m
CONFIG_HID_KENSINGTON=m
CONFIG_HID_LCPOWER=m
CONFIG_HID_LOGITECH=m
+CONFIG_HID_LOGITECH_DJ=m
CONFIG_LOGITECH_FF=y
CONFIG_LOGIRUMBLEPAD2_FF=y
CONFIG_LOGIG940_FF=y
-CONFIG_LOGIWII_FF=y
+CONFIG_LOGIWHEELS_FF=y
CONFIG_HID_MAGICMOUSE=m
CONFIG_HID_MICROSOFT=m
CONFIG_HID_MONTEREY=m
@@ -4275,6 +4399,7 @@ CONFIG_HID_PICOLCD_FB=y
CONFIG_HID_PICOLCD_BACKLIGHT=y
CONFIG_HID_PICOLCD_LCD=y
CONFIG_HID_PICOLCD_LEDS=y
+CONFIG_HID_PRIMAX=m
CONFIG_HID_QUANTA=m
CONFIG_HID_ROCCAT=m
CONFIG_HID_ROCCAT_COMMON=m
@@ -4285,6 +4410,7 @@ CONFIG_HID_ROCCAT_KOVAPLUS=m
CONFIG_HID_ROCCAT_PYRA=m
CONFIG_HID_SAMSUNG=m
CONFIG_HID_SONY=m
+CONFIG_HID_SPEEDLINK=m
CONFIG_HID_SUNPLUS=m
CONFIG_HID_GREENASIA=m
CONFIG_GREENASIA_FF=y
@@ -4295,13 +4421,16 @@ CONFIG_HID_THRUSTMASTER=m
CONFIG_THRUSTMASTER_FF=y
CONFIG_HID_WACOM=m
CONFIG_HID_WACOM_POWER_SUPPLY=y
+CONFIG_HID_WIIMOTE=m
CONFIG_HID_ZEROPLUS=m
CONFIG_ZEROPLUS_FF=y
CONFIG_HID_ZYDACRON=m
CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=m
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB_ARCH_HAS_XHCI=y
CONFIG_USB=m
# CONFIG_USB_DEBUG is not set
# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
@@ -4314,6 +4443,8 @@ CONFIG_USB_DEVICEFS=y
CONFIG_USB_DYNAMIC_MINORS=y
CONFIG_USB_SUSPEND=y
# CONFIG_USB_OTG is not set
+CONFIG_USB_DWC3=m
+# CONFIG_USB_DWC3_DEBUG is not set
CONFIG_USB_MON=m
CONFIG_USB_WUSB=m
CONFIG_USB_WUSB_CBAF=m
@@ -4343,8 +4474,10 @@ CONFIG_USB_SL811_HCD=m
# CONFIG_USB_SL811_HCD_ISO is not set
CONFIG_USB_SL811_CS=m
CONFIG_USB_R8A66597_HCD=m
+CONFIG_USB_RENESAS_USBHS_HCD=m
CONFIG_USB_WHCI_HCD=m
CONFIG_USB_HWA_HCD=m
+CONFIG_USB_RENESAS_USBHS=m
#
# USB Device Class drivers
@@ -4364,6 +4497,7 @@ CONFIG_USB_TMC=m
CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set
CONFIG_USB_STORAGE_REALTEK=m
+CONFIG_REALTEK_AUTOPM=y
CONFIG_USB_STORAGE_DATAFAB=m
CONFIG_USB_STORAGE_FREECOM=m
CONFIG_USB_STORAGE_ISD200=m
@@ -4490,20 +4624,20 @@ CONFIG_USB_GADGET=m
# CONFIG_USB_GADGET_DEBUG_FILES is not set
# CONFIG_USB_GADGET_DEBUG_FS is not set
CONFIG_USB_GADGET_VBUS_DRAW=2
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_FUSB300 is not set
-# CONFIG_USB_GADGET_R8A66597 is not set
-# CONFIG_USB_GADGET_PXA_U2O is not set
-# CONFIG_USB_GADGET_M66592 is not set
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_CI13XXX_PCI is not set
-CONFIG_USB_GADGET_NET2280=y
+CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
+CONFIG_USB_R8A66597=m
+CONFIG_USB_GADGET_DWC3=m
+CONFIG_USB_M66592=m
+CONFIG_USB_AMD5536UDC=m
+CONFIG_USB_CI13XXX_PCI=m
+CONFIG_USB_NET2272=m
+CONFIG_USB_NET2272_DMA=y
CONFIG_USB_NET2280=m
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LANGWELL is not set
-# CONFIG_USB_GADGET_EG20T is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GOKU=m
+CONFIG_USB_EG20T=m
+CONFIG_USB_DUMMY_HCD=m
CONFIG_USB_GADGET_DUALSPEED=y
+CONFIG_USB_GADGET_SUPERSPEED=y
# CONFIG_USB_ZERO is not set
CONFIG_USB_AUDIO=m
CONFIG_USB_ETH=m
@@ -4523,6 +4657,7 @@ CONFIG_USB_MIDI_GADGET=m
CONFIG_USB_G_PRINTER=m
# CONFIG_USB_CDC_COMPOSITE is not set
# CONFIG_USB_G_NOKIA is not set
+# CONFIG_USB_G_ACM_MS is not set
# CONFIG_USB_G_MULTI is not set
CONFIG_USB_G_HID=m
CONFIG_USB_G_DBGP=m
@@ -4564,7 +4699,6 @@ CONFIG_MMC_RICOH_MMC=y
CONFIG_MMC_SDHCI_PLTFM=m
CONFIG_MMC_WBSD=m
CONFIG_MMC_TIFM_SD=m
-# CONFIG_MMC_SPI is not set
CONFIG_MMC_SDRICOH_CS=m
CONFIG_MMC_CB710=m
CONFIG_MMC_VIA_SDMMC=m
@@ -4593,11 +4727,9 @@ CONFIG_LEDS_CLASS=y
#
CONFIG_LEDS_LM3530=m
CONFIG_LEDS_NET5501=m
-# CONFIG_LEDS_ALIX2 is not set
CONFIG_LEDS_PCA9532=m
CONFIG_LEDS_PCA9532_GPIO=y
CONFIG_LEDS_GPIO=m
-CONFIG_LEDS_GPIO_PLATFORM=y
CONFIG_LEDS_LP3944=m
CONFIG_LEDS_LP5521=m
CONFIG_LEDS_LP5523=m
@@ -4617,7 +4749,6 @@ CONFIG_LEDS_TRIGGERS=y
# LED Triggers
#
CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
CONFIG_LEDS_TRIGGER_BACKLIGHT=m
CONFIG_LEDS_TRIGGER_GPIO=m
@@ -4626,8 +4757,6 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
#
# iptables trigger is under Netfilter config (LED target)
#
-CONFIG_NFC_DEVICES=y
-CONFIG_PN544_NFC=m
CONFIG_ACCESSIBILITY=y
CONFIG_A11Y_BRAILLE_CONSOLE=y
# CONFIG_INFINIBAND is not set
@@ -4640,7 +4769,6 @@ CONFIG_EDAC=y
CONFIG_EDAC_DECODE_MCE=m
CONFIG_EDAC_MCE_INJ=m
CONFIG_EDAC_MM_EDAC=m
-CONFIG_EDAC_MCE=y
CONFIG_EDAC_AMD76X=m
CONFIG_EDAC_E7XXX=m
CONFIG_EDAC_E752X=m
@@ -4766,46 +4894,36 @@ CONFIG_UIO_AEC=m
CONFIG_UIO_SERCOS3=m
CONFIG_UIO_PCI_GENERIC=m
CONFIG_UIO_NETX=m
+CONFIG_VIRTIO=y
+CONFIG_VIRTIO_RING=y
+
+#
+# Virtio drivers
+#
+CONFIG_VIRTIO_PCI=m
+CONFIG_VIRTIO_BALLOON=m
+CONFIG_VIRTIO_MMIO=m
#
# Xen driver support
#
CONFIG_XEN_BALLOON=y
+# CONFIG_XEN_SELFBALLOONING is not set
CONFIG_XEN_SCRUB_PAGES=y
-CONFIG_XEN_DEV_EVTCHN=y
+CONFIG_XEN_DEV_EVTCHN=m
CONFIG_XEN_BACKEND=y
-CONFIG_XENFS=y
+CONFIG_XENFS=m
CONFIG_XEN_COMPAT_XENFS=y
CONFIG_XEN_SYS_HYPERVISOR=y
-CONFIG_XEN_XENBUS_FRONTEND=y
+CONFIG_XEN_XENBUS_FRONTEND=m
CONFIG_XEN_GNTDEV=m
CONFIG_XEN_GRANT_DEV_ALLOC=m
-CONFIG_XEN_PLATFORM_PCI=m
CONFIG_SWIOTLB_XEN=y
+CONFIG_XEN_TMEM=y
+CONFIG_XEN_PCIDEV_BACKEND=m
CONFIG_STAGING=y
-# CONFIG_DIGIEPCA is not set
-# CONFIG_RISCOM8 is not set
-# CONFIG_SPECIALIX is not set
-# CONFIG_COMPUTONE is not set
CONFIG_ET131X=m
-# CONFIG_ET131X_DEBUG is not set
CONFIG_SLICOSS=m
-CONFIG_VIDEO_GO7007=m
-CONFIG_VIDEO_GO7007_USB=m
-# CONFIG_VIDEO_GO7007_USB_S2250_BOARD is not set
-CONFIG_VIDEO_GO7007_OV7640=m
-CONFIG_VIDEO_GO7007_SAA7113=m
-CONFIG_VIDEO_GO7007_SAA7115=m
-CONFIG_VIDEO_GO7007_TW9903=m
-CONFIG_VIDEO_GO7007_UDA1342=m
-CONFIG_VIDEO_GO7007_SONY_TUNER=m
-CONFIG_VIDEO_GO7007_TW2804=m
-CONFIG_VIDEO_CX25821=m
-CONFIG_VIDEO_CX25821_ALSA=m
-CONFIG_VIDEO_TM6000=m
-CONFIG_VIDEO_TM6000_ALSA=m
-CONFIG_VIDEO_TM6000_DVB=m
-CONFIG_DVB_CXD2099=m
CONFIG_USBIP_CORE=m
CONFIG_USBIP_VHCI_HCD=m
CONFIG_USBIP_HOST=m
@@ -4813,10 +4931,6 @@ CONFIG_USBIP_HOST=m
CONFIG_W35UND=m
CONFIG_PRISM2_USB=m
CONFIG_ECHO=m
-CONFIG_BRCMUTIL=m
-CONFIG_BRCMSMAC=m
-# CONFIG_BRCMFMAC is not set
-# CONFIG_BRCMDBG is not set
CONFIG_COMEDI=m
# CONFIG_COMEDI_DEBUG is not set
CONFIG_COMEDI_MISC_DRIVERS=m
@@ -4899,6 +5013,7 @@ CONFIG_COMEDI_AMPLC_PCI224=m
CONFIG_COMEDI_AMPLC_PCI230=m
CONFIG_COMEDI_CONTEC_PCI_DIO=m
CONFIG_COMEDI_DT3000=m
+CONFIG_COMEDI_DYNA_PCI10XX=m
CONFIG_COMEDI_UNIOXX5=m
CONFIG_COMEDI_GSC_HPDI=m
CONFIG_COMEDI_ICP_MULTI=m
@@ -4936,6 +5051,7 @@ CONFIG_COMEDI_USB_DRIVERS=m
CONFIG_COMEDI_DT9812=m
CONFIG_COMEDI_USBDUX=m
CONFIG_COMEDI_USBDUXFAST=m
+CONFIG_COMEDI_USBDUXSIGMA=m
CONFIG_COMEDI_VMK80XX=m
CONFIG_COMEDI_NI_COMMON=m
CONFIG_COMEDI_MITE=m
@@ -4953,10 +5069,11 @@ CONFIG_R8712U=m
CONFIG_R8712_AP=y
CONFIG_RTS_PSTOR=m
# CONFIG_RTS_PSTOR_DEBUG is not set
+CONFIG_RTS5139=m
+# CONFIG_RTS5139_DEBUG is not set
# CONFIG_TRANZPORT is not set
CONFIG_POHMELFS=m
# CONFIG_POHMELFS_DEBUG is not set
-CONFIG_POHMELFS_CRYPTO=y
CONFIG_IDE_PHISON=m
CONFIG_LINE6_USB=m
# CONFIG_LINE6_USB_DEBUG is not set
@@ -4965,7 +5082,6 @@ CONFIG_LINE6_USB=m
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
CONFIG_DRM_NOUVEAU_DEBUG=y
@@ -4979,16 +5095,12 @@ CONFIG_USB_SERIAL_QUATECH2=m
CONFIG_USB_SERIAL_QUATECH_USB2=m
CONFIG_VT6655=m
CONFIG_VT6656=m
-CONFIG_HYPERV=m
CONFIG_HYPERV_STORAGE=m
-CONFIG_HYPERV_BLOCK=m
CONFIG_HYPERV_NET=m
-CONFIG_HYPERV_UTILS=m
CONFIG_HYPERV_MOUSE=m
# CONFIG_VME_BUS is not set
CONFIG_DX_SEP=m
# CONFIG_IIO is not set
-CONFIG_CS5535_GPIO=m
CONFIG_XVMALLOC=y
CONFIG_ZRAM=m
# CONFIG_ZRAM_DEBUG is not set
@@ -4996,46 +5108,9 @@ CONFIG_ZCACHE=m
CONFIG_WLAGS49_H2=m
CONFIG_WLAGS49_H25=m
CONFIG_FB_SM7XX=m
-CONFIG_VIDEO_DT3155=m
-CONFIG_DT3155_CCIR=y
CONFIG_CRYSTALHD=m
CONFIG_FB_XGI=m
-CONFIG_LIRC_STAGING=y
-CONFIG_LIRC_BT829=m
-CONFIG_LIRC_IGORPLUGUSB=m
-CONFIG_LIRC_IMON=m
-CONFIG_LIRC_PARALLEL=m
-CONFIG_LIRC_SASEM=m
-CONFIG_LIRC_SERIAL=m
-CONFIG_LIRC_SERIAL_TRANSMITTER=y
-CONFIG_LIRC_SIR=m
-CONFIG_LIRC_TTUSBIR=m
-CONFIG_LIRC_ZILOG=m
-CONFIG_EASYCAP=m
-CONFIG_EASYCAP_SND=y
-# CONFIG_EASYCAP_OSS is not set
-# CONFIG_EASYCAP_DEBUG is not set
-CONFIG_SOLO6X10=m
CONFIG_ACPI_QUICKSTART=m
-CONFIG_MACH_NO_WESTBRIDGE=y
-CONFIG_ATH6K_LEGACY=m
-CONFIG_AR600x_SD31_XXX=y
-# CONFIG_AR600x_WB31_XXX is not set
-# CONFIG_AR600x_SD32_XXX is not set
-# CONFIG_AR600x_CUSTOM_XXX is not set
-CONFIG_ATH6KL_ENABLE_COEXISTENCE=y
-CONFIG_AR600x_DUAL_ANTENNA=y
-# CONFIG_AR600x_SINGLE_ANTENNA is not set
-# CONFIG_AR600x_BT_QCOM is not set
-# CONFIG_AR600x_BT_CSR is not set
-CONFIG_AR600x_BT_AR3001=y
-CONFIG_ATH6KL_HCI_BRIDGE=y
-CONFIG_ATH6KL_CONFIG_GPIO_BT_RESET=y
-CONFIG_AR600x_BT_RESET_PIN=22
-CONFIG_ATH6KL_HTC_RAW_INTERFACE=y
-CONFIG_ATH6KL_VIRTUAL_SCATTER_GATHER=y
-CONFIG_ATH6KL_SKIP_ABI_VERSION_CHECK=y
-# CONFIG_ATH6KL_DEBUG is not set
CONFIG_USB_ENESTORAGE=m
CONFIG_BCM_WIMAX=m
CONFIG_FT1000=m
@@ -5064,12 +5139,40 @@ CONFIG_SPEAKUP_SYNTH_DUMMY=m
CONFIG_TOUCHSCREEN_CLEARPAD_TM1217=m
CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m
CONFIG_DRM_PSB=m
-
-#
-# Altera FPGA firmware download module
-#
-CONFIG_ALTERA_STAPL=m
+CONFIG_DRM_PSB_MRST=y
+CONFIG_DRM_PSB_MFLD=y
+CONFIG_DRM_PSB_CDV=y
CONFIG_INTEL_MEI=m
+CONFIG_STAGING_MEDIA=y
+CONFIG_DVB_AS102=m
+CONFIG_DVB_CXD2099=m
+CONFIG_VIDEO_DT3155=m
+CONFIG_DT3155_CCIR=y
+CONFIG_DT3155_STREAMING=y
+CONFIG_EASYCAP=m
+# CONFIG_EASYCAP_DEBUG is not set
+CONFIG_VIDEO_GO7007=m
+CONFIG_VIDEO_GO7007_USB=m
+# CONFIG_VIDEO_GO7007_USB_S2250_BOARD is not set
+CONFIG_VIDEO_GO7007_OV7640=m
+CONFIG_VIDEO_GO7007_SAA7113=m
+CONFIG_VIDEO_GO7007_SAA7115=m
+CONFIG_VIDEO_GO7007_TW9903=m
+CONFIG_VIDEO_GO7007_UDA1342=m
+CONFIG_VIDEO_GO7007_SONY_TUNER=m
+CONFIG_VIDEO_GO7007_TW2804=m
+CONFIG_SOLO6X10=m
+CONFIG_LIRC_STAGING=y
+CONFIG_LIRC_BT829=m
+CONFIG_LIRC_IGORPLUGUSB=m
+CONFIG_LIRC_IMON=m
+CONFIG_LIRC_PARALLEL=m
+CONFIG_LIRC_SASEM=m
+CONFIG_LIRC_SERIAL=m
+CONFIG_LIRC_SERIAL_TRANSMITTER=y
+CONFIG_LIRC_SIR=m
+CONFIG_LIRC_TTUSBIR=m
+CONFIG_LIRC_ZILOG=m
CONFIG_X86_PLATFORM_DEVICES=y
CONFIG_ACER_WMI=m
CONFIG_ACERHDF=m
@@ -5114,7 +5217,25 @@ CONFIG_XO15_EBOOK=m
CONFIG_SAMSUNG_LAPTOP=m
CONFIG_MXM_WMI=m
CONFIG_INTEL_OAKTRAIL=m
+CONFIG_SAMSUNG_Q10=m
+
+#
+# Hardware Spinlock drivers
+#
CONFIG_CLKSRC_I8253=y
+CONFIG_CLKEVT_I8253=y
+CONFIG_I8253_LOCK=y
+CONFIG_CLKBLD_I8253=y
+CONFIG_IOMMU_API=y
+CONFIG_IOMMU_SUPPORT=y
+CONFIG_DMAR_TABLE=y
+CONFIG_INTEL_IOMMU=y
+# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
+CONFIG_INTEL_IOMMU_FLOPPY_WA=y
+CONFIG_VIRT_DRIVERS=y
+CONFIG_HYPERV=m
+CONFIG_HYPERV_UTILS=m
+# CONFIG_PM_DEVFREQ is not set
#
# Firmware Drivers
@@ -5270,16 +5391,24 @@ CONFIG_JFFS2_ZLIB=y
# CONFIG_JFFS2_LZO is not set
CONFIG_JFFS2_RTIME=y
# CONFIG_JFFS2_RUBIN is not set
+CONFIG_UBIFS_FS=m
+CONFIG_UBIFS_FS_XATTR=y
+# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
+CONFIG_UBIFS_FS_LZO=y
+CONFIG_UBIFS_FS_ZLIB=y
+# CONFIG_UBIFS_FS_DEBUG is not set
CONFIG_LOGFS=m
CONFIG_CRAMFS=m
CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
+CONFIG_SQUASHFS_ZLIB=y
CONFIG_SQUASHFS_LZO=y
CONFIG_SQUASHFS_XZ=y
+# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
# CONFIG_SQUASHFS_EMBEDDED is not set
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
# CONFIG_VXFS_FS is not set
-# CONFIG_MINIX_FS is not set
+CONFIG_MINIX_FS=m
CONFIG_OMFS_FS=m
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
@@ -5291,6 +5420,7 @@ CONFIG_UFS_FS=m
# CONFIG_UFS_DEBUG is not set
CONFIG_EXOFS_FS=m
# CONFIG_EXOFS_DEBUG is not set
+CONFIG_ORE=m
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
@@ -5302,7 +5432,6 @@ CONFIG_NFS_FSCACHE=y
CONFIG_NFS_USE_KERNEL_DNS=y
# CONFIG_NFS_USE_NEW_IDMAPPER is not set
CONFIG_NFSD=m
-# CONFIG_NFSD_DEPRECATED is not set
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
@@ -5354,7 +5483,7 @@ CONFIG_PARTITION_ADVANCED=y
CONFIG_MAC_PARTITION=y
CONFIG_MSDOS_PARTITION=y
CONFIG_BSD_DISKLABEL=y
-# CONFIG_MINIX_SUBPARTITION is not set
+CONFIG_MINIX_SUBPARTITION=y
CONFIG_SOLARIS_X86_PARTITION=y
# CONFIG_UNIXWARE_DISKLABEL is not set
CONFIG_LDM_PARTITION=y
@@ -5442,6 +5571,7 @@ CONFIG_TIMER_STATS=y
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_PREEMPT is not set
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set
@@ -5450,11 +5580,12 @@ CONFIG_DEBUG_MUTEXES=y
# CONFIG_PROVE_LOCKING is not set
# CONFIG_SPARSE_RCU_POINTER is not set
# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_STACK_USAGE is not set
# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_VM is not set
@@ -5471,6 +5602,7 @@ CONFIG_FRAME_POINTER=y
# CONFIG_BOOT_PRINTK_DELAY is not set
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_RCU_CPU_STALL_TIMEOUT=60
+# CONFIG_RCU_CPU_STALL_VERBOSE is not set
# CONFIG_BACKTRACE_SELF_TEST is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
@@ -5506,6 +5638,7 @@ CONFIG_FTRACE=y
CONFIG_FUNCTION_TRACER=y
CONFIG_FUNCTION_GRAPH_TRACER=y
# CONFIG_IRQSOFF_TRACER is not set
+# CONFIG_PREEMPT_TRACER is not set
CONFIG_SCHED_TRACER=y
CONFIG_FTRACE_SYSCALLS=y
CONFIG_BRANCH_PROFILE_NONE=y
@@ -5575,6 +5708,11 @@ CONFIG_SECURITY_PATH=y
# CONFIG_SECURITY_SELINUX is not set
# CONFIG_SECURITY_SMACK is not set
CONFIG_SECURITY_TOMOYO=y
+CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048
+CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024
+# CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER is not set
+CONFIG_SECURITY_TOMOYO_POLICY_LOADER="/sbin/tomoyo-init"
+CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER="/sbin/init"
CONFIG_SECURITY_APPARMOR=y
CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=0
# CONFIG_IMA is not set
@@ -5609,6 +5747,7 @@ CONFIG_CRYPTO_PCOMP=m
CONFIG_CRYPTO_PCOMP2=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
+CONFIG_CRYPTO_USER=m
CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
CONFIG_CRYPTO_GF128MUL=m
CONFIG_CRYPTO_NULL=m
@@ -5671,6 +5810,7 @@ CONFIG_CRYPTO_AES_NI_INTEL=m
CONFIG_CRYPTO_ANUBIS=m
CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_BLOWFISH_COMMON=m
CONFIG_CRYPTO_CAMELLIA=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
@@ -5705,8 +5845,6 @@ CONFIG_CRYPTO_DEV_PADLOCK=m
CONFIG_CRYPTO_DEV_PADLOCK_AES=m
CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
CONFIG_CRYPTO_DEV_GEODE=m
-CONFIG_CRYPTO_DEV_HIFN_795X=m
-CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
CONFIG_HAVE_KVM=y
CONFIG_HAVE_KVM_IRQCHIP=y
CONFIG_HAVE_KVM_EVENTFD=y
@@ -5720,10 +5858,6 @@ CONFIG_KVM_AMD=m
CONFIG_KVM_MMU_AUDIT=y
CONFIG_VHOST_NET=m
CONFIG_LGUEST=m
-CONFIG_VIRTIO=y
-CONFIG_VIRTIO_RING=y
-CONFIG_VIRTIO_PCI=m
-CONFIG_VIRTIO_BALLOON=m
CONFIG_BINARY_PRINTF=y
#
@@ -5739,6 +5873,7 @@ CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
CONFIG_CRC7=m
CONFIG_LIBCRC32C=m
+CONFIG_CRC8=m
CONFIG_AUDIT_GENERIC=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
@@ -5758,6 +5893,9 @@ CONFIG_DECOMPRESS_BZIP2=y
CONFIG_DECOMPRESS_LZMA=y
CONFIG_DECOMPRESS_XZ=y
CONFIG_DECOMPRESS_LZO=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_REED_SOLOMON=m
+CONFIG_REED_SOLOMON_DEC16=y
CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m
@@ -5771,3 +5909,4 @@ CONFIG_CPU_RMAP=y
CONFIG_NLATTR=y
CONFIG_LRU_CACHE=m
CONFIG_AVERAGE=y
+CONFIG_CORDIC=m
diff --git a/kernels/linux-libre-xen/config.x86_64 b/kernels/linux-libre-xen/config.x86_64
index f377084cb..ef79ec35b 100644
--- a/kernels/linux-libre-xen/config.x86_64
+++ b/kernels/linux-libre-xen/config.x86_64
@@ -1,6 +1,6 @@
#
-# Automatically generated make config: don't edit
-# Linux/x86_64 3.0.0 Kernel Configuration
+# Automatically generated file; DO NOT EDIT.
+# Linux/x86_64 3.2.6-libre Kernel Configuration
#
CONFIG_64BIT=y
# CONFIG_X86_32 is not set
@@ -12,6 +12,7 @@ CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_ARCH_CLOCKSOURCE_DATA=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
@@ -38,7 +39,6 @@ CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
-CONFIG_HAVE_CPUMASK_OF_CPU_MAP=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ZONE_DMA32=y
@@ -101,12 +101,14 @@ CONFIG_HAVE_SPARSE_IRQ=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_GENERIC_IRQ_CHIP=y
CONFIG_IRQ_FORCED_THREADING=y
-# CONFIG_SPARSE_IRQ is not set
+CONFIG_SPARSE_IRQ=y
#
# RCU Subsystem
#
+# CONFIG_TREE_RCU is not set
CONFIG_TREE_PREEMPT_RCU=y
CONFIG_PREEMPT_RCU=y
# CONFIG_RCU_TRACE is not set
@@ -132,6 +134,7 @@ CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y
# CONFIG_CGROUP_PERF is not set
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_CFS_BANDWIDTH=y
CONFIG_RT_GROUP_SCHED=y
CONFIG_BLK_CGROUP=y
# CONFIG_DEBUG_BLK_CGROUP is not set
@@ -157,7 +160,7 @@ CONFIG_SYSCTL=y
CONFIG_ANON_INODES=y
# CONFIG_EXPERT is not set
CONFIG_UID16=y
-CONFIG_SYSCTL_SYSCALL=y
+# CONFIG_SYSCTL_SYSCALL is not set
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
CONFIG_HOTPLUG=y
@@ -165,6 +168,7 @@ CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_PCSPKR_PLATFORM=y
+CONFIG_HAVE_PCSPKR_PLATFORM=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
@@ -211,6 +215,7 @@ CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
CONFIG_HAVE_USER_RETURN_NOTIFIER=y
CONFIG_HAVE_PERF_EVENTS_NMI=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
#
# GCOV-based kernel profiling
@@ -224,11 +229,12 @@ CONFIG_MODULES=y
CONFIG_MODULE_FORCE_LOAD=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
+CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
CONFIG_BLK_DEV_BSG=y
+CONFIG_BLK_DEV_BSGLIB=y
# CONFIG_BLK_DEV_INTEGRITY is not set
CONFIG_BLK_DEV_THROTTLING=y
CONFIG_BLOCK_COMPAT=y
@@ -284,12 +290,15 @@ CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
CONFIG_SMP=y
+# CONFIG_X86_X2APIC is not set
CONFIG_X86_MPPARSE=y
# CONFIG_X86_EXTENDED_PLATFORM is not set
CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
CONFIG_SCHED_OMIT_FRAME_POINTER=y
CONFIG_PARAVIRT_GUEST=y
+# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
CONFIG_XEN=y
CONFIG_XEN_DOM0=y
CONFIG_XEN_PRIVILEGED_GUEST=y
@@ -297,7 +306,6 @@ CONFIG_XEN_PVHVM=y
CONFIG_XEN_MAX_DOMAIN_MEMORY=128
CONFIG_XEN_SAVE_RESTORE=y
# CONFIG_XEN_DEBUG_FS is not set
-# CONFIG_XEN_DEBUG is not set
CONFIG_KVM_CLOCK=y
CONFIG_KVM_GUEST=y
CONFIG_PARAVIRT=y
@@ -314,6 +322,7 @@ CONFIG_GENERIC_CPU=y
CONFIG_X86_INTERNODE_CACHE_SHIFT=7
CONFIG_X86_CMPXCHG=y
CONFIG_CMPXCHG_LOCAL=y
+CONFIG_CMPXCHG_DOUBLE=y
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_XADD=y
CONFIG_X86_WP_WORKS_OK=y
@@ -331,11 +340,8 @@ CONFIG_DMI=y
CONFIG_GART_IOMMU=y
CONFIG_CALGARY_IOMMU=y
CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y
-CONFIG_AMD_IOMMU=y
-# CONFIG_AMD_IOMMU_STATS is not set
CONFIG_SWIOTLB=y
CONFIG_IOMMU_HELPER=y
-CONFIG_IOMMU_API=y
# CONFIG_MAXSMP is not set
CONFIG_NR_CPUS=64
CONFIG_SCHED_SMT=y
@@ -344,6 +350,7 @@ CONFIG_SCHED_MC=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
+CONFIG_PREEMPT_COUNT=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
@@ -415,6 +422,7 @@ CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
CONFIG_X86_PAT=y
CONFIG_ARCH_USES_PG_UNCACHED=y
+CONFIG_ARCH_RANDOM=y
CONFIG_EFI=y
CONFIG_SECCOMP=y
CONFIG_CC_STACKPROTECTOR=y
@@ -457,10 +465,10 @@ CONFIG_CAN_PM_TRACE=y
# CONFIG_PM_TRACE_RTC is not set
CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y
-CONFIG_ACPI_PROCFS=y
+# CONFIG_ACPI_PROCFS is not set
# CONFIG_ACPI_PROCFS_POWER is not set
CONFIG_ACPI_EC_DEBUGFS=m
-CONFIG_ACPI_PROC_EVENT=y
+# CONFIG_ACPI_PROC_EVENT is not set
CONFIG_ACPI_AC=m
CONFIG_ACPI_BATTERY=m
CONFIG_ACPI_BUTTON=m
@@ -481,11 +489,12 @@ CONFIG_X86_PM_TIMER=y
CONFIG_ACPI_CONTAINER=m
CONFIG_ACPI_HOTPLUG_MEMORY=m
CONFIG_ACPI_SBS=m
-CONFIG_ACPI_HED=m
+CONFIG_ACPI_HED=y
CONFIG_ACPI_CUSTOM_METHOD=m
CONFIG_ACPI_APEI=y
-CONFIG_ACPI_APEI_GHES=m
+CONFIG_ACPI_APEI_GHES=y
CONFIG_ACPI_APEI_PCIEAER=y
+CONFIG_ACPI_APEI_MEMORY_FAILURE=y
CONFIG_ACPI_APEI_EINJ=m
CONFIG_ACPI_APEI_ERST_DEBUG=m
CONFIG_SFI=y
@@ -540,10 +549,6 @@ CONFIG_PCI_MMCONFIG=y
CONFIG_PCI_XEN=y
CONFIG_PCI_DOMAINS=y
# CONFIG_PCI_CNB20LE_QUIRK is not set
-CONFIG_DMAR=y
-# CONFIG_DMAR_DEFAULT_ON is not set
-CONFIG_DMAR_FLOPPY_WA=y
-# CONFIG_INTR_REMAP is not set
CONFIG_PCIEPORTBUS=y
CONFIG_HOTPLUG_PCI_PCIE=m
CONFIG_PCIEAER=y
@@ -558,7 +563,10 @@ CONFIG_PCI_MSI=y
CONFIG_PCI_STUB=m
CONFIG_XEN_PCIDEV_FRONTEND=m
CONFIG_HT_IRQ=y
+CONFIG_PCI_ATS=y
CONFIG_PCI_IOV=y
+CONFIG_PCI_PRI=y
+CONFIG_PCI_PASID=y
CONFIG_PCI_IOAPIC=y
CONFIG_PCI_LABEL=y
CONFIG_ISA_DMA_API=y
@@ -589,14 +597,15 @@ CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
CONFIG_HOTPLUG_PCI_SHPC=m
CONFIG_RAPIDIO=y
+# CONFIG_RAPIDIO_TSI721 is not set
CONFIG_RAPIDIO_DISC_TIMEOUT=30
# CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS is not set
+CONFIG_RAPIDIO_DEBUG=y
CONFIG_RAPIDIO_TSI57X=y
CONFIG_RAPIDIO_CPS_XX=y
CONFIG_RAPIDIO_TSI568=y
CONFIG_RAPIDIO_CPS_GEN2=y
CONFIG_RAPIDIO_TSI500=y
-CONFIG_RAPIDIO_DEBUG=y
#
# Executable file formats / Emulations
@@ -822,6 +831,7 @@ CONFIG_IP_SET_HASH_IPPORTIP=m
CONFIG_IP_SET_HASH_IPPORTNET=m
CONFIG_IP_SET_HASH_NET=m
CONFIG_IP_SET_HASH_NETPORT=m
+CONFIG_IP_SET_HASH_NETIFACE=m
CONFIG_IP_SET_LIST_SET=m
CONFIG_IP_VS=m
# CONFIG_IP_VS_IPV6 is not set
@@ -1002,6 +1012,7 @@ CONFIG_IPDDP_DECAP=y
# CONFIG_WAN_ROUTER is not set
CONFIG_PHONET=m
CONFIG_IEEE802154=m
+# CONFIG_IEEE802154_6LOWPAN is not set
CONFIG_NET_SCHED=y
#
@@ -1210,6 +1221,16 @@ CONFIG_CAIF=m
CONFIG_CAIF_NETDEV=m
CONFIG_CEPH_LIB=m
# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
+# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
+CONFIG_NFC=m
+CONFIG_NFC_NCI=m
+
+#
+# Near Field Communication (NFC) devices
+#
+CONFIG_PN544_NFC=m
+CONFIG_NFC_PN533=m
+CONFIG_NFC_WILINK=m
#
# Device Drivers
@@ -1229,11 +1250,17 @@ CONFIG_EXTRA_FIRMWARE=""
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
CONFIG_SYS_HYPERVISOR=y
-CONFIG_CONNECTOR=m
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=m
+CONFIG_REGMAP_SPI=y
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
CONFIG_MTD=m
-# CONFIG_MTD_DEBUG is not set
CONFIG_MTD_TESTS=m
-# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_REDBOOT_PARTS=m
+CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
+# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
+# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
# CONFIG_MTD_AR7_PARTS is not set
#
@@ -1242,21 +1269,24 @@ CONFIG_MTD_TESTS=m
CONFIG_MTD_CHAR=m
CONFIG_MTD_BLKDEVS=m
CONFIG_MTD_BLOCK=m
-# CONFIG_MTD_BLOCK_RO is not set
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-CONFIG_SM_FTL=m
-# CONFIG_MTD_OOPS is not set
+CONFIG_MTD_BLOCK_RO=m
+CONFIG_FTL=m
+CONFIG_NFTL=m
+CONFIG_NFTL_RW=y
+CONFIG_INFTL=m
+CONFIG_RFD_FTL=m
+CONFIG_SSFDC=m
+# CONFIG_SM_FTL is not set
+CONFIG_MTD_OOPS=m
CONFIG_MTD_SWAP=m
#
# RAM/ROM/Flash chip drivers
#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_CFI=m
+CONFIG_MTD_JEDECPROBE=m
+CONFIG_MTD_GEN_PROBE=m
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
@@ -1267,29 +1297,52 @@ CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
# CONFIG_MTD_CFI_I4 is not set
# CONFIG_MTD_CFI_I8 is not set
+CONFIG_MTD_CFI_INTELEXT=m
+CONFIG_MTD_CFI_AMDSTD=m
+CONFIG_MTD_CFI_STAA=m
+CONFIG_MTD_CFI_UTIL=m
CONFIG_MTD_RAM=m
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
+CONFIG_MTD_ROM=m
+CONFIG_MTD_ABSENT=m
#
# Mapping drivers for chip access
#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_TS5500 is not set
+CONFIG_MTD_COMPLEX_MAPPINGS=y
+# CONFIG_MTD_PHYSMAP is not set
+CONFIG_MTD_SC520CDP=m
+CONFIG_MTD_NETSC520=m
+CONFIG_MTD_TS5500=m
+# CONFIG_MTD_SBC_GXX is not set
+# CONFIG_MTD_AMD76XROM is not set
+# CONFIG_MTD_ICHXROM is not set
+# CONFIG_MTD_ESB2ROM is not set
+# CONFIG_MTD_CK804XROM is not set
+CONFIG_MTD_SCB2_FLASH=m
+# CONFIG_MTD_NETtel is not set
+# CONFIG_MTD_L440GX is not set
+CONFIG_MTD_PCI=m
+# CONFIG_MTD_PCMCIA is not set
+# CONFIG_MTD_GPIO_ADDR is not set
# CONFIG_MTD_INTEL_VR_NOR is not set
CONFIG_MTD_PLATRAM=m
+# CONFIG_MTD_LATCH_ADDR is not set
#
# Self-contained MTD device drivers
#
-# CONFIG_MTD_PMC551 is not set
+CONFIG_MTD_PMC551=m
+# CONFIG_MTD_PMC551_BUGFIX is not set
+# CONFIG_MTD_PMC551_DEBUG is not set
# CONFIG_MTD_DATAFLASH is not set
# CONFIG_MTD_M25P80 is not set
-CONFIG_MTD_SST25L=m
-CONFIG_MTD_SLRAM=m
+# CONFIG_MTD_SST25L is not set
+# CONFIG_MTD_SLRAM is not set
CONFIG_MTD_PHRAM=m
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
+CONFIG_MTD_MTDRAM=m
+CONFIG_MTDRAM_TOTAL_SIZE=4096
+CONFIG_MTDRAM_ERASE_SIZE=128
+CONFIG_MTD_BLOCK2MTD=m
#
# Disk-On-Chip Device Drivers
@@ -1297,16 +1350,37 @@ CONFIG_MTD_PHRAM=m
# CONFIG_MTD_DOC2000 is not set
# CONFIG_MTD_DOC2001 is not set
# CONFIG_MTD_DOC2001PLUS is not set
+CONFIG_MTD_DOCG3=m
CONFIG_MTD_NAND_ECC=m
CONFIG_MTD_NAND_ECC_SMC=y
-# CONFIG_MTD_NAND is not set
+CONFIG_MTD_NAND=m
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_BCH is not set
+CONFIG_MTD_SM_COMMON=m
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+# CONFIG_MTD_NAND_DENALI is not set
+CONFIG_MTD_NAND_IDS=m
+CONFIG_MTD_NAND_RICOH=m
+CONFIG_MTD_NAND_DISKONCHIP=m
+# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set
+CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
+# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set
+# CONFIG_MTD_NAND_CAFE is not set
+CONFIG_MTD_NAND_NANDSIM=m
+# CONFIG_MTD_NAND_PLATFORM is not set
+CONFIG_MTD_ALAUDA=m
# CONFIG_MTD_ONENAND is not set
#
# LPDDR flash memory drivers
#
-# CONFIG_MTD_LPDDR is not set
-# CONFIG_MTD_UBI is not set
+CONFIG_MTD_LPDDR=m
+CONFIG_MTD_QINFO_PROBE=m
+CONFIG_MTD_UBI=m
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MTD_UBI_BEB_RESERVE=1
+# CONFIG_MTD_UBI_GLUEBI is not set
+# CONFIG_MTD_UBI_DEBUG is not set
CONFIG_PARPORT=m
CONFIG_PARPORT_PC=m
CONFIG_PARPORT_SERIAL=m
@@ -1334,6 +1408,7 @@ CONFIG_BLK_DEV_DAC960=m
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_DRBD=m
# CONFIG_DRBD_FAULT_INJECTION is not set
@@ -1384,6 +1459,7 @@ CONFIG_TI_DAC7512=m
CONFIG_VMWARE_BALLOON=m
CONFIG_BMP085=m
CONFIG_PCH_PHUB=m
+CONFIG_USB_SWITCH_FSA9480=m
CONFIG_C2PORT=m
CONFIG_C2PORT_DURAMAR_2150=m
@@ -1395,6 +1471,7 @@ CONFIG_EEPROM_AT25=m
CONFIG_EEPROM_LEGACY=m
CONFIG_EEPROM_MAX6875=m
CONFIG_EEPROM_93CX6=m
+CONFIG_EEPROM_93XX46=m
CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
CONFIG_CB710_DEBUG_ASSUMPTIONS=y
@@ -1407,73 +1484,13 @@ CONFIG_IWMC3200TOP=m
#
CONFIG_TI_ST=m
CONFIG_SENSORS_LIS3_I2C=m
+
+#
+# Altera FPGA firmware download module
+#
+CONFIG_ALTERA_STAPL=m
CONFIG_HAVE_IDE=y
-CONFIG_IDE=m
-
-#
-# Please see Documentation/ide/ide.txt for help/info on IDE drives
-#
-CONFIG_IDE_XFER_MODE=y
-CONFIG_IDE_TIMINGS=y
-CONFIG_IDE_ATAPI=y
-# CONFIG_BLK_DEV_IDE_SATA is not set
-CONFIG_IDE_GD=m
-CONFIG_IDE_GD_ATA=y
-CONFIG_IDE_GD_ATAPI=y
-CONFIG_BLK_DEV_IDECS=m
-CONFIG_BLK_DEV_DELKIN=m
-CONFIG_BLK_DEV_IDECD=m
-CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y
-CONFIG_BLK_DEV_IDETAPE=m
-CONFIG_BLK_DEV_IDEACPI=y
-# CONFIG_IDE_TASK_IOCTL is not set
-CONFIG_IDE_PROC_FS=y
-
-#
-# IDE chipset support/bugfixes
-#
-CONFIG_IDE_GENERIC=m
-CONFIG_BLK_DEV_PLATFORM=m
-CONFIG_BLK_DEV_CMD640=m
-# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
-CONFIG_BLK_DEV_IDEPNP=m
-CONFIG_BLK_DEV_IDEDMA_SFF=y
-
-#
-# PCI IDE chipsets support
-#
-CONFIG_BLK_DEV_IDEPCI=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_BLK_DEV_GENERIC=m
-CONFIG_BLK_DEV_OPTI621=m
-CONFIG_BLK_DEV_RZ1000=m
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-CONFIG_BLK_DEV_AEC62XX=m
-CONFIG_BLK_DEV_ALI15X3=m
-CONFIG_BLK_DEV_AMD74XX=m
-CONFIG_BLK_DEV_ATIIXP=m
-CONFIG_BLK_DEV_CMD64X=m
-CONFIG_BLK_DEV_TRIFLEX=m
-CONFIG_BLK_DEV_CS5520=m
-CONFIG_BLK_DEV_CS5530=m
-CONFIG_BLK_DEV_HPT366=m
-CONFIG_BLK_DEV_JMICRON=m
-CONFIG_BLK_DEV_SC1200=m
-CONFIG_BLK_DEV_PIIX=m
-CONFIG_BLK_DEV_IT8172=m
-CONFIG_BLK_DEV_IT8213=m
-CONFIG_BLK_DEV_IT821X=m
-CONFIG_BLK_DEV_NS87415=m
-CONFIG_BLK_DEV_PDC202XX_OLD=m
-CONFIG_BLK_DEV_PDC202XX_NEW=m
-CONFIG_BLK_DEV_SVWKS=m
-CONFIG_BLK_DEV_SIIMAGE=m
-CONFIG_BLK_DEV_SIS5513=m
-CONFIG_BLK_DEV_SLC90E66=m
-CONFIG_BLK_DEV_TRM290=m
-CONFIG_BLK_DEV_VIA82CXXX=m
-CONFIG_BLK_DEV_TC86C001=m
-CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDE is not set
#
# SCSI device support
@@ -1547,10 +1564,11 @@ CONFIG_SCSI_AIC94XX=m
# CONFIG_AIC94XX_DEBUG is not set
CONFIG_SCSI_MVSAS=m
# CONFIG_SCSI_MVSAS_DEBUG is not set
+CONFIG_SCSI_MVSAS_TASKLET=y
+CONFIG_SCSI_MVUMI=m
CONFIG_SCSI_DPT_I2O=m
CONFIG_SCSI_ADVANSYS=m
CONFIG_SCSI_ARCMSR=m
-CONFIG_SCSI_ARCMSR_AER=y
CONFIG_MEGARAID_NEWGEN=y
CONFIG_MEGARAID_MM=m
CONFIG_MEGARAID_MAILBOX=m
@@ -1725,8 +1743,13 @@ CONFIG_MD_MULTIPATH=m
CONFIG_MD_FAULTY=m
CONFIG_BLK_DEV_DM=m
# CONFIG_DM_DEBUG is not set
+CONFIG_DM_BUFIO=m
+CONFIG_DM_PERSISTENT_DATA=m
CONFIG_DM_CRYPT=m
CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_THIN_PROVISIONING=m
+# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
+# CONFIG_DM_DEBUG_SPACE_MAPS is not set
CONFIG_DM_MIRROR=m
CONFIG_DM_RAID=m
CONFIG_DM_LOG_USERSPACE=m
@@ -1742,8 +1765,8 @@ CONFIG_TCM_IBLOCK=m
CONFIG_TCM_FILEIO=m
CONFIG_TCM_PSCSI=m
CONFIG_LOOPBACK_TARGET=m
-# CONFIG_LOOPBACK_TARGET_CDB_DEBUG is not set
CONFIG_TCM_FC=m
+CONFIG_ISCSI_TARGET=m
CONFIG_FUSION=y
CONFIG_FUSION_SPI=m
CONFIG_FUSION_FC=m
@@ -1774,48 +1797,110 @@ CONFIG_I2O_PROC=m
CONFIG_MACINTOSH_DRIVERS=y
CONFIG_MAC_EMUMOUSEBTN=y
CONFIG_NETDEVICES=y
-CONFIG_IFB=m
-CONFIG_DUMMY=m
+CONFIG_NET_CORE=y
CONFIG_BONDING=m
+CONFIG_DUMMY=m
+CONFIG_EQUALIZER=m
+# CONFIG_NET_FC is not set
+CONFIG_MII=m
+CONFIG_IEEE802154_DRIVERS=m
+CONFIG_IEEE802154_FAKEHARD=m
+CONFIG_IFB=m
CONFIG_MACVLAN=m
CONFIG_MACVTAP=m
-CONFIG_EQUALIZER=m
+CONFIG_NETCONSOLE=m
+CONFIG_NETCONSOLE_DYNAMIC=y
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
+CONFIG_RIONET=m
+CONFIG_RIONET_TX_SIZE=128
+CONFIG_RIONET_RX_SIZE=128
CONFIG_TUN=m
CONFIG_VETH=m
-CONFIG_NET_SB1000=m
+CONFIG_VIRTIO_NET=m
+CONFIG_SUNGEM_PHY=m
# CONFIG_ARCNET is not set
-CONFIG_MII=m
-CONFIG_PHYLIB=m
+CONFIG_ATM_DRIVERS=y
+# CONFIG_ATM_DUMMY is not set
+CONFIG_ATM_TCP=m
+CONFIG_ATM_LANAI=m
+CONFIG_ATM_ENI=m
+# CONFIG_ATM_ENI_DEBUG is not set
+# CONFIG_ATM_ENI_TUNE_BURST is not set
+CONFIG_ATM_FIRESTREAM=m
+CONFIG_ATM_ZATM=m
+# CONFIG_ATM_ZATM_DEBUG is not set
+CONFIG_ATM_NICSTAR=m
+# CONFIG_ATM_NICSTAR_USE_SUNI is not set
+# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set
+CONFIG_ATM_IDT77252=m
+# CONFIG_ATM_IDT77252_DEBUG is not set
+# CONFIG_ATM_IDT77252_RCV_ALL is not set
+CONFIG_ATM_IDT77252_USE_SUNI=y
+CONFIG_ATM_AMBASSADOR=m
+# CONFIG_ATM_AMBASSADOR_DEBUG is not set
+CONFIG_ATM_HORIZON=m
+# CONFIG_ATM_HORIZON_DEBUG is not set
+CONFIG_ATM_IA=m
+# CONFIG_ATM_IA_DEBUG is not set
+CONFIG_ATM_FORE200E=m
+# CONFIG_ATM_FORE200E_USE_TASKLET is not set
+CONFIG_ATM_FORE200E_TX_RETRY=16
+CONFIG_ATM_FORE200E_DEBUG=0
+CONFIG_ATM_HE=m
+# CONFIG_ATM_HE_USE_SUNI is not set
+CONFIG_ATM_SOLOS=m
#
-# MII PHY device drivers
+# CAIF transport drivers
#
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-CONFIG_VITESSE_PHY=m
-CONFIG_SMSC_PHY=m
-CONFIG_BROADCOM_PHY=m
-CONFIG_ICPLUS_PHY=m
-CONFIG_REALTEK_PHY=m
-CONFIG_NATIONAL_PHY=m
-CONFIG_STE10XP=m
-CONFIG_LSI_ET1011C_PHY=m
-CONFIG_MICREL_PHY=m
-# CONFIG_MDIO_BITBANG is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_HAPPYMEAL=m
-CONFIG_SUNGEM=m
-CONFIG_CASSINI=m
+CONFIG_CAIF_TTY=m
+CONFIG_CAIF_SPI_SLAVE=m
+CONFIG_CAIF_SPI_SYNC=y
+# CONFIG_CAIF_HSI is not set
+CONFIG_ETHERNET=y
+CONFIG_MDIO=m
CONFIG_NET_VENDOR_3COM=y
+CONFIG_PCMCIA_3C574=m
+CONFIG_PCMCIA_3C589=m
CONFIG_VORTEX=m
CONFIG_TYPHOON=m
-CONFIG_ENC28J60=m
-# CONFIG_ENC28J60_WRITEVERIFY is not set
-CONFIG_ETHOC=m
+CONFIG_NET_VENDOR_ADAPTEC=y
+CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_NET_VENDOR_ALTEON=y
+CONFIG_ACENIC=m
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+CONFIG_NET_VENDOR_AMD=y
+CONFIG_AMD8111_ETH=m
+CONFIG_PCNET32=m
+CONFIG_PCMCIA_NMCLAN=m
+CONFIG_NET_VENDOR_ATHEROS=y
+CONFIG_ATL2=m
+CONFIG_ATL1=m
+CONFIG_ATL1E=m
+CONFIG_ATL1C=m
+CONFIG_NET_VENDOR_BROADCOM=y
+CONFIG_B44=m
+CONFIG_B44_PCI_AUTOSELECT=y
+CONFIG_B44_PCICORE_AUTOSELECT=y
+CONFIG_B44_PCI=y
+CONFIG_BNX2=m
+CONFIG_CNIC=m
+CONFIG_TIGON3=m
+CONFIG_BNX2X=m
+CONFIG_NET_VENDOR_BROCADE=y
+CONFIG_BNA=m
+CONFIG_NET_VENDOR_CHELSIO=y
+CONFIG_CHELSIO_T1=m
+CONFIG_CHELSIO_T1_1G=y
+CONFIG_CHELSIO_T3=m
+CONFIG_CHELSIO_T4=m
+CONFIG_CHELSIO_T4VF=m
+CONFIG_NET_VENDOR_CISCO=y
+CONFIG_ENIC=m
CONFIG_DNET=m
+CONFIG_NET_VENDOR_DEC=y
CONFIG_NET_TULIP=y
CONFIG_DE2104X=m
CONFIG_DE2104X_DSL=0
@@ -1828,115 +1913,203 @@ CONFIG_WINBOND_840=m
CONFIG_DM9102=m
CONFIG_ULI526X=m
CONFIG_PCMCIA_XIRCOM=m
-CONFIG_HP100=m
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
-# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
-# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
-CONFIG_NET_PCI=y
-CONFIG_PCNET32=m
-CONFIG_AMD8111_ETH=m
-CONFIG_ADAPTEC_STARFIRE=m
-CONFIG_KSZ884X_PCI=m
-CONFIG_B44=m
-CONFIG_B44_PCI_AUTOSELECT=y
-CONFIG_B44_PCICORE_AUTOSELECT=y
-CONFIG_B44_PCI=y
-CONFIG_FORCEDETH=m
-CONFIG_E100=m
-CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
-CONFIG_NE2K_PCI=m
-CONFIG_8139CP=m
-CONFIG_8139TOO=m
-# CONFIG_8139TOO_PIO is not set
-CONFIG_8139TOO_TUNE_TWISTER=y
-CONFIG_8139TOO_8129=y
-# CONFIG_8139_OLD_RX_RESET is not set
-CONFIG_R6040=m
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
-CONFIG_SMSC9420=m
-CONFIG_SUNDANCE=m
-# CONFIG_SUNDANCE_MMIO is not set
-CONFIG_TLAN=m
-CONFIG_KS8842=m
-CONFIG_KS8851=m
-CONFIG_KS8851_MLL=m
-CONFIG_VIA_RHINE=m
-# CONFIG_VIA_RHINE_MMIO is not set
-CONFIG_SC92031=m
-CONFIG_NET_POCKET=y
-CONFIG_ATP=m
+CONFIG_NET_VENDOR_DLINK=y
CONFIG_DE600=m
CONFIG_DE620=m
-CONFIG_ATL2=m
-CONFIG_NETDEV_1000=y
-CONFIG_ACENIC=m
-# CONFIG_ACENIC_OMIT_TIGON_I is not set
CONFIG_DL2K=m
+CONFIG_SUNDANCE=m
+# CONFIG_SUNDANCE_MMIO is not set
+CONFIG_NET_VENDOR_EMULEX=y
+CONFIG_BE2NET=m
+CONFIG_NET_VENDOR_EXAR=y
+CONFIG_S2IO=m
+CONFIG_VXGE=m
+# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
+CONFIG_NET_VENDOR_FUJITSU=y
+CONFIG_PCMCIA_FMVJ18X=m
+CONFIG_NET_VENDOR_HP=y
+CONFIG_HP100=m
+CONFIG_NET_VENDOR_INTEL=y
+CONFIG_E100=m
CONFIG_E1000=m
CONFIG_E1000E=m
-CONFIG_IP1000=m
CONFIG_IGB=m
CONFIG_IGB_DCA=y
CONFIG_IGBVF=m
-CONFIG_NS83820=m
-CONFIG_HAMACHI=m
-CONFIG_YELLOWFIN=m
-CONFIG_R8169=m
-CONFIG_SIS190=m
+CONFIG_IXGB=m
+CONFIG_IXGBE=m
+CONFIG_IXGBE_DCA=y
+CONFIG_IXGBEVF=m
+CONFIG_NET_VENDOR_I825XX=y
+# CONFIG_ZNET is not set
+CONFIG_IP1000=m
+CONFIG_JME=m
+CONFIG_NET_VENDOR_MARVELL=y
CONFIG_SKGE=m
# CONFIG_SKGE_DEBUG is not set
+CONFIG_SKGE_GENESIS=y
CONFIG_SKY2=m
# CONFIG_SKY2_DEBUG is not set
-CONFIG_VIA_VELOCITY=m
-CONFIG_TIGON3=m
-CONFIG_BNX2=m
-CONFIG_CNIC=m
-CONFIG_QLA3XXX=m
-CONFIG_ATL1=m
-CONFIG_ATL1E=m
-CONFIG_ATL1C=m
-CONFIG_JME=m
-CONFIG_STMMAC_ETH=m
-# CONFIG_STMMAC_DA is not set
-CONFIG_STMMAC_DUAL_MAC=y
-CONFIG_PCH_GBE=m
-CONFIG_NETDEV_10000=y
-CONFIG_MDIO=m
-CONFIG_CHELSIO_T1=m
-CONFIG_CHELSIO_T1_1G=y
-CONFIG_CHELSIO_T3=m
-CONFIG_CHELSIO_T4=m
-CONFIG_CHELSIO_T4VF=m
-CONFIG_ENIC=m
-CONFIG_IXGBE=m
-CONFIG_IXGBE_DCA=y
-CONFIG_IXGBEVF=m
-CONFIG_IXGB=m
-CONFIG_S2IO=m
-CONFIG_VXGE=m
-# CONFIG_VXGE_DEBUG_TRACE_ALL is not set
-CONFIG_MYRI10GE=m
-CONFIG_MYRI10GE_DCA=y
-CONFIG_NETXEN_NIC=m
-CONFIG_NIU=m
+CONFIG_NET_VENDOR_MELLANOX=y
CONFIG_MLX4_EN=m
CONFIG_MLX4_CORE=m
CONFIG_MLX4_DEBUG=y
-CONFIG_TEHUTI=m
-CONFIG_BNX2X=m
+CONFIG_NET_VENDOR_MICREL=y
+CONFIG_KS8842=m
+CONFIG_KS8851=m
+CONFIG_KS8851_MLL=m
+CONFIG_KSZ884X_PCI=m
+CONFIG_NET_VENDOR_MICROCHIP=y
+CONFIG_ENC28J60=m
+# CONFIG_ENC28J60_WRITEVERIFY is not set
+CONFIG_NET_VENDOR_MYRI=y
+CONFIG_MYRI10GE=m
+CONFIG_MYRI10GE_DCA=y
+CONFIG_FEALNX=m
+CONFIG_NET_VENDOR_NATSEMI=y
+CONFIG_NATSEMI=m
+CONFIG_NS83820=m
+CONFIG_NET_VENDOR_8390=y
+CONFIG_PCMCIA_AXNET=m
+CONFIG_NE2K_PCI=m
+CONFIG_PCMCIA_PCNET=m
+CONFIG_NET_VENDOR_NVIDIA=y
+CONFIG_FORCEDETH=m
+CONFIG_NET_VENDOR_OKI=y
+CONFIG_PCH_GBE=m
+CONFIG_ETHOC=m
+CONFIG_NET_PACKET_ENGINE=y
+CONFIG_HAMACHI=m
+CONFIG_YELLOWFIN=m
+CONFIG_NET_VENDOR_QLOGIC=y
+CONFIG_QLA3XXX=m
CONFIG_QLCNIC=m
CONFIG_QLGE=m
-CONFIG_BNA=m
+CONFIG_NETXEN_NIC=m
+CONFIG_NET_VENDOR_REALTEK=y
+CONFIG_ATP=m
+CONFIG_8139CP=m
+CONFIG_8139TOO=m
+# CONFIG_8139TOO_PIO is not set
+CONFIG_8139TOO_TUNE_TWISTER=y
+CONFIG_8139TOO_8129=y
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_R8169=m
+CONFIG_NET_VENDOR_RDC=y
+CONFIG_R6040=m
+CONFIG_NET_VENDOR_SEEQ=y
+# CONFIG_SEEQ8005 is not set
+CONFIG_NET_VENDOR_SILAN=y
+CONFIG_SC92031=m
+CONFIG_NET_VENDOR_SIS=y
+CONFIG_SIS900=m
+CONFIG_SIS190=m
CONFIG_SFC=m
CONFIG_SFC_MTD=y
-CONFIG_BE2NET=m
+CONFIG_NET_VENDOR_SMSC=y
+CONFIG_PCMCIA_SMC91C92=m
+CONFIG_EPIC100=m
+CONFIG_SMSC9420=m
+CONFIG_NET_VENDOR_STMICRO=y
+CONFIG_STMMAC_ETH=m
+# CONFIG_STMMAC_DEBUG_FS is not set
+# CONFIG_STMMAC_DA is not set
+CONFIG_STMMAC_RING=y
+# CONFIG_STMMAC_CHAINED is not set
+CONFIG_NET_VENDOR_SUN=y
+CONFIG_HAPPYMEAL=m
+CONFIG_SUNGEM=m
+CONFIG_CASSINI=m
+CONFIG_NIU=m
+CONFIG_NET_VENDOR_TEHUTI=y
+CONFIG_TEHUTI=m
+CONFIG_NET_VENDOR_TI=y
+CONFIG_TLAN=m
+CONFIG_NET_VENDOR_VIA=y
+CONFIG_VIA_RHINE=m
+# CONFIG_VIA_RHINE_MMIO is not set
+CONFIG_VIA_VELOCITY=m
+CONFIG_NET_VENDOR_XIRCOM=y
+CONFIG_PCMCIA_XIRC2PS=m
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+CONFIG_NET_SB1000=m
+CONFIG_PHYLIB=m
+
+#
+# MII PHY device drivers
+#
+CONFIG_MARVELL_PHY=m
+CONFIG_DAVICOM_PHY=m
+CONFIG_QSEMI_PHY=m
+CONFIG_LXT_PHY=m
+CONFIG_CICADA_PHY=m
+CONFIG_VITESSE_PHY=m
+CONFIG_SMSC_PHY=m
+CONFIG_BROADCOM_PHY=m
+CONFIG_ICPLUS_PHY=m
+CONFIG_REALTEK_PHY=m
+CONFIG_NATIONAL_PHY=m
+CONFIG_STE10XP=m
+CONFIG_LSI_ET1011C_PHY=m
+CONFIG_MICREL_PHY=m
+# CONFIG_MDIO_BITBANG is not set
+CONFIG_PLIP=m
+CONFIG_PPP=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_MPPE=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPPOATM=m
+CONFIG_PPPOE=m
+CONFIG_PPTP=m
+CONFIG_PPPOL2TP=m
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_SLIP=m
+CONFIG_SLHC=m
+# CONFIG_SLIP_COMPRESSED is not set
+# CONFIG_SLIP_SMART is not set
+# CONFIG_SLIP_MODE_SLIP6 is not set
# CONFIG_TR is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_USB_NET_CDC_NCM=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_SMSC75XX=m
+CONFIG_USB_NET_SMSC95XX=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_KC2190=y
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_USB_NET_CX82310_ETH=m
+CONFIG_USB_NET_KALMIA=m
+CONFIG_USB_HSO=m
+CONFIG_USB_NET_INT51X1=m
+CONFIG_USB_CDC_PHONET=m
+CONFIG_USB_IPHETH=m
+CONFIG_USB_SIERRA_NET=m
+CONFIG_USB_VL600=m
CONFIG_WLAN=y
CONFIG_PCMCIA_RAYCS=m
CONFIG_LIBERTAS_THINFIRM=m
@@ -1976,7 +2149,11 @@ CONFIG_ATH9K_HTC=m
CONFIG_CARL9170=m
CONFIG_CARL9170_LEDS=y
CONFIG_CARL9170_WPC=y
+# CONFIG_CARL9170_HWRNG is not set
+CONFIG_ATH6KL=m
+# CONFIG_ATH6KL_DEBUG is not set
CONFIG_B43=m
+CONFIG_B43_SSB=y
CONFIG_B43_PCI_AUTOSELECT=y
CONFIG_B43_PCICORE_AUTOSELECT=y
CONFIG_B43_PCMCIA=y
@@ -1984,6 +2161,7 @@ CONFIG_B43_SDIO=y
CONFIG_B43_PIO=y
CONFIG_B43_PHY_N=y
CONFIG_B43_PHY_LP=y
+# CONFIG_B43_PHY_HT is not set
CONFIG_B43_LEDS=y
CONFIG_B43_HWRNG=y
# CONFIG_B43_DEBUG is not set
@@ -1998,6 +2176,10 @@ CONFIG_B43LEGACY_PIO=y
CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
# CONFIG_B43LEGACY_DMA_MODE is not set
# CONFIG_B43LEGACY_PIO_MODE is not set
+CONFIG_BRCMUTIL=m
+CONFIG_BRCMSMAC=m
+CONFIG_BRCMFMAC=m
+# CONFIG_BRCMDBG is not set
CONFIG_HOSTAP=m
CONFIG_HOSTAP_FIRMWARE=y
# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
@@ -2015,7 +2197,7 @@ CONFIG_IPW2200_QOS=y
# CONFIG_IPW2200_DEBUG is not set
CONFIG_LIBIPW=m
# CONFIG_LIBIPW_DEBUG is not set
-CONFIG_IWLAGN=m
+CONFIG_IWLWIFI=m
#
# Debugging Options
@@ -2023,7 +2205,6 @@ CONFIG_IWLAGN=m
# CONFIG_IWLWIFI_DEBUG is not set
CONFIG_IWLWIFI_DEVICE_TRACING=y
CONFIG_IWLWIFI_DEVICE_SVTOOL=y
-CONFIG_IWL_P2P=y
CONFIG_IWLWIFI_LEGACY=m
#
@@ -2084,6 +2265,7 @@ CONFIG_RT2X00_LIB_LEDS=y
# CONFIG_RT2X00_DEBUG is not set
CONFIG_RTL8192CE=m
CONFIG_RTL8192SE=m
+CONFIG_RTL8192DE=m
CONFIG_RTL8192CU=m
CONFIG_RTLWIFI=m
CONFIG_RTL8192C_COMMON=m
@@ -2092,7 +2274,6 @@ CONFIG_WL1251_SPI=m
CONFIG_WL1251_SDIO=m
CONFIG_WL12XX_MENU=m
CONFIG_WL12XX=m
-CONFIG_WL12XX_HT=y
CONFIG_WL12XX_SPI=m
CONFIG_WL12XX_SDIO=m
CONFIG_WL12XX_SDIO_TEST=m
@@ -2101,6 +2282,7 @@ CONFIG_ZD1211RW=m
# CONFIG_ZD1211RW_DEBUG is not set
CONFIG_MWIFIEX=m
CONFIG_MWIFIEX_SDIO=m
+CONFIG_MWIFIEX_PCIE=m
#
# WiMAX Wireless Broadband devices
@@ -2110,124 +2292,9 @@ CONFIG_WIMAX_I2400M_USB=m
CONFIG_WIMAX_I2400M_SDIO=m
# CONFIG_WIMAX_IWMC3200_SDIO is not set
CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_CDC_EEM=m
-CONFIG_USB_NET_CDC_NCM=m
-CONFIG_USB_NET_DM9601=m
-CONFIG_USB_NET_SMSC75XX=m
-CONFIG_USB_NET_SMSC95XX=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_KC2190=y
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_USB_NET_CX82310_ETH=m
-CONFIG_USB_NET_KALMIA=m
-CONFIG_USB_HSO=m
-CONFIG_USB_NET_INT51X1=m
-CONFIG_USB_CDC_PHONET=m
-CONFIG_USB_IPHETH=m
-CONFIG_USB_SIERRA_NET=m
-CONFIG_USB_VL600=m
-CONFIG_NET_PCMCIA=y
-CONFIG_PCMCIA_3C589=m
-CONFIG_PCMCIA_3C574=m
-CONFIG_PCMCIA_FMVJ18X=m
-CONFIG_PCMCIA_PCNET=m
-CONFIG_PCMCIA_NMCLAN=m
-CONFIG_PCMCIA_SMC91C92=m
-CONFIG_PCMCIA_XIRC2PS=m
-CONFIG_PCMCIA_AXNET=m
# CONFIG_WAN is not set
-CONFIG_ATM_DRIVERS=y
-# CONFIG_ATM_DUMMY is not set
-CONFIG_ATM_TCP=m
-CONFIG_ATM_LANAI=m
-CONFIG_ATM_ENI=m
-# CONFIG_ATM_ENI_DEBUG is not set
-# CONFIG_ATM_ENI_TUNE_BURST is not set
-CONFIG_ATM_FIRESTREAM=m
-CONFIG_ATM_ZATM=m
-# CONFIG_ATM_ZATM_DEBUG is not set
-CONFIG_ATM_NICSTAR=m
-# CONFIG_ATM_NICSTAR_USE_SUNI is not set
-# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set
-CONFIG_ATM_IDT77252=m
-# CONFIG_ATM_IDT77252_DEBUG is not set
-# CONFIG_ATM_IDT77252_RCV_ALL is not set
-CONFIG_ATM_IDT77252_USE_SUNI=y
-CONFIG_ATM_AMBASSADOR=m
-# CONFIG_ATM_AMBASSADOR_DEBUG is not set
-CONFIG_ATM_HORIZON=m
-# CONFIG_ATM_HORIZON_DEBUG is not set
-CONFIG_ATM_IA=m
-# CONFIG_ATM_IA_DEBUG is not set
-CONFIG_ATM_FORE200E=m
-# CONFIG_ATM_FORE200E_USE_TASKLET is not set
-CONFIG_ATM_FORE200E_TX_RETRY=16
-CONFIG_ATM_FORE200E_DEBUG=0
-CONFIG_ATM_HE=m
-# CONFIG_ATM_HE_USE_SUNI is not set
-CONFIG_ATM_SOLOS=m
-CONFIG_IEEE802154_DRIVERS=m
-CONFIG_IEEE802154_FAKEHARD=m
-
-#
-# CAIF transport drivers
-#
-CONFIG_CAIF_TTY=m
-CONFIG_CAIF_SPI_SLAVE=m
-CONFIG_CAIF_SPI_SYNC=y
CONFIG_XEN_NETDEV_FRONTEND=m
CONFIG_XEN_NETDEV_BACKEND=m
-CONFIG_RIONET=m
-CONFIG_RIONET_TX_SIZE=128
-CONFIG_RIONET_RX_SIZE=128
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-CONFIG_PLIP=m
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-CONFIG_PPTP=m
-CONFIG_PPPOATM=m
-CONFIG_PPPOL2TP=m
-CONFIG_SLIP=m
-# CONFIG_SLIP_COMPRESSED is not set
-CONFIG_SLHC=m
-# CONFIG_SLIP_SMART is not set
-# CONFIG_SLIP_MODE_SLIP6 is not set
-# CONFIG_NET_FC is not set
-CONFIG_NETCONSOLE=m
-CONFIG_NETCONSOLE_DYNAMIC=y
-CONFIG_NETPOLL=y
-# CONFIG_NETPOLL_TRAP is not set
-CONFIG_NET_POLL_CONTROLLER=y
-CONFIG_VIRTIO_NET=m
CONFIG_VMXNET3=m
CONFIG_ISDN=y
CONFIG_ISDN_I4L=m
@@ -2506,6 +2573,7 @@ CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y
CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y
CONFIG_TOUCHSCREEN_USB_NEXIO=y
CONFIG_TOUCHSCREEN_TOUCHIT213=m
+CONFIG_TOUCHSCREEN_TSC_SERIO=m
CONFIG_TOUCHSCREEN_TSC2005=m
CONFIG_TOUCHSCREEN_TSC2007=m
CONFIG_TOUCHSCREEN_PCAP=m
@@ -2516,12 +2584,17 @@ CONFIG_INPUT_AB8500_PONKEY=m
CONFIG_INPUT_AD714X=m
CONFIG_INPUT_AD714X_I2C=m
CONFIG_INPUT_AD714X_SPI=m
+CONFIG_INPUT_BMA150=m
CONFIG_INPUT_PCSPKR=m
+CONFIG_INPUT_MC13783_PWRBUTTON=m
+CONFIG_INPUT_MMA8450=m
+CONFIG_INPUT_MPU3050=m
CONFIG_INPUT_APANEL=m
CONFIG_INPUT_ATLAS_BTNS=m
-CONFIG_INPUT_ATI_REMOTE=m
CONFIG_INPUT_ATI_REMOTE2=m
CONFIG_INPUT_KEYSPAN_REMOTE=m
+CONFIG_INPUT_KXTJ9=m
+# CONFIG_INPUT_KXTJ9_POLLED_MODE is not set
CONFIG_INPUT_POWERMATE=m
CONFIG_INPUT_YEALINK=m
CONFIG_INPUT_CM109=m
@@ -2530,7 +2603,7 @@ CONFIG_INPUT_PCF50633_PMU=m
CONFIG_INPUT_PCF8574=m
CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
CONFIG_INPUT_WM831X_ON=m
-# CONFIG_INPUT_PCAP is not set
+CONFIG_INPUT_PCAP=m
CONFIG_INPUT_ADXL34X=m
CONFIG_INPUT_ADXL34X_I2C=m
CONFIG_INPUT_ADXL34X_SPI=m
@@ -2563,6 +2636,7 @@ CONFIG_GAMEPORT_FM801=m
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
+CONFIG_VT_CONSOLE_SLEEP=y
CONFIG_HW_CONSOLE=y
CONFIG_VT_HW_CONSOLE_BINDING=y
CONFIG_UNIX98_PTYS=y
@@ -2709,6 +2783,7 @@ CONFIG_I2C_SCMI=m
#
# I2C system bus drivers (mostly embedded / system-on-chip)
#
+CONFIG_I2C_DESIGNWARE_PCI=m
CONFIG_I2C_GPIO=m
CONFIG_I2C_INTEL_MID=m
CONFIG_I2C_OCORES=m
@@ -2770,6 +2845,7 @@ CONFIG_PPS=m
CONFIG_PPS_CLIENT_KTIMER=m
CONFIG_PPS_CLIENT_LDISC=m
CONFIG_PPS_CLIENT_PARPORT=m
+CONFIG_PPS_CLIENT_GPIO=m
#
# PPS generators support
@@ -2784,13 +2860,13 @@ CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
CONFIG_GPIOLIB=y
# CONFIG_DEBUG_GPIO is not set
CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_GENERIC=m
CONFIG_GPIO_MAX730X=m
#
# Memory mapped GPIO drivers:
#
-CONFIG_GPIO_BASIC_MMIO_CORE=m
-CONFIG_GPIO_BASIC_MMIO=m
+CONFIG_GPIO_GENERIC_PLATFORM=m
CONFIG_GPIO_IT8761E=m
CONFIG_GPIO_SCH=m
CONFIG_GPIO_VX855=m
@@ -2885,6 +2961,7 @@ CONFIG_HWMON_VID=m
#
CONFIG_SENSORS_ABITUGURU=m
CONFIG_SENSORS_ABITUGURU3=m
+CONFIG_SENSORS_AD7314=m
CONFIG_SENSORS_AD7414=m
CONFIG_SENSORS_AD7418=m
CONFIG_SENSORS_ADCXX=m
@@ -2939,23 +3016,29 @@ CONFIG_SENSORS_LTC4215=m
CONFIG_SENSORS_LTC4245=m
CONFIG_SENSORS_LTC4261=m
CONFIG_SENSORS_LM95241=m
+CONFIG_SENSORS_LM95245=m
CONFIG_SENSORS_MAX1111=m
CONFIG_SENSORS_MAX16065=m
CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX1668=m
CONFIG_SENSORS_MAX6639=m
CONFIG_SENSORS_MAX6642=m
CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_NTC_THERMISTOR=m
CONFIG_SENSORS_PC87360=m
CONFIG_SENSORS_PC87427=m
CONFIG_SENSORS_PCF8591=m
CONFIG_PMBUS=m
CONFIG_SENSORS_PMBUS=m
CONFIG_SENSORS_ADM1275=m
+CONFIG_SENSORS_LM25066=m
+CONFIG_SENSORS_LTC2978=m
CONFIG_SENSORS_MAX16064=m
CONFIG_SENSORS_MAX34440=m
CONFIG_SENSORS_MAX8688=m
CONFIG_SENSORS_UCD9000=m
CONFIG_SENSORS_UCD9200=m
+CONFIG_SENSORS_ZL6100=m
CONFIG_SENSORS_SHT15=m
CONFIG_SENSORS_SHT21=m
CONFIG_SENSORS_SIS5595=m
@@ -2967,7 +3050,9 @@ CONFIG_SENSORS_EMC6W201=m
CONFIG_SENSORS_SMSC47M1=m
CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_SCH56XX_COMMON=m
CONFIG_SENSORS_SCH5627=m
+CONFIG_SENSORS_SCH5636=m
CONFIG_SENSORS_ADS1015=m
CONFIG_SENSORS_ADS7828=m
CONFIG_SENSORS_ADS7871=m
@@ -3002,6 +3087,7 @@ CONFIG_SENSORS_ATK0110=m
CONFIG_THERMAL=y
CONFIG_THERMAL_HWMON=y
CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
# CONFIG_WATCHDOG_NOWAYOUT is not set
#
@@ -3079,11 +3165,11 @@ CONFIG_BCMA_POSSIBLE=y
#
# Broadcom specific AMBA
#
-CONFIG_BCMA=m
-CONFIG_BCMA_HOST_PCI_POSSIBLE=y
-CONFIG_BCMA_HOST_PCI=y
-# CONFIG_BCMA_DEBUG is not set
-CONFIG_MFD_SUPPORT=y
+# CONFIG_BCMA is not set
+
+#
+# Multifunction device drivers
+#
CONFIG_MFD_CORE=y
CONFIG_MFD_SM501=m
CONFIG_MFD_SM501_GPIO=y
@@ -3092,6 +3178,7 @@ CONFIG_UCB1400_CORE=m
CONFIG_TPS6105X=m
CONFIG_TPS65010=m
CONFIG_TPS6507X=m
+# CONFIG_MFD_TPS65912_SPI is not set
# CONFIG_MFD_TMIO is not set
CONFIG_MFD_WM8400=m
CONFIG_MFD_WM831X=y
@@ -3119,6 +3206,7 @@ CONFIG_REGULATOR_DUMMY=y
CONFIG_REGULATOR_FIXED_VOLTAGE=m
CONFIG_REGULATOR_VIRTUAL_CONSUMER=m
CONFIG_REGULATOR_USERSPACE_CONSUMER=m
+# CONFIG_REGULATOR_GPIO is not set
CONFIG_REGULATOR_BQ24022=m
CONFIG_REGULATOR_MAX1586=m
CONFIG_REGULATOR_MAX8649=m
@@ -3150,6 +3238,7 @@ CONFIG_VIDEO_DEV=m
CONFIG_VIDEO_V4L2_COMMON=m
CONFIG_VIDEO_V4L2_SUBDEV_API=y
CONFIG_DVB_CORE=m
+CONFIG_DVB_NET=y
CONFIG_VIDEO_MEDIA=m
#
@@ -3166,7 +3255,9 @@ CONFIG_IR_RC6_DECODER=m
CONFIG_IR_JVC_DECODER=m
CONFIG_IR_SONY_DECODER=m
CONFIG_IR_RC5_SZ_DECODER=m
+CONFIG_IR_MCE_KBD_DECODER=m
CONFIG_IR_LIRC_CODEC=m
+CONFIG_RC_ATI_REMOTE=m
CONFIG_IR_ENE=m
CONFIG_IR_IMON=m
CONFIG_IR_MCEUSB=m
@@ -3194,6 +3285,7 @@ CONFIG_MEDIA_TUNER_MT2131=m
CONFIG_MEDIA_TUNER_QT1010=m
CONFIG_MEDIA_TUNER_XC2028=m
CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_XC4000=m
CONFIG_MEDIA_TUNER_MXL5005S=m
CONFIG_MEDIA_TUNER_MXL5007T=m
CONFIG_MEDIA_TUNER_MC44S803=m
@@ -3212,6 +3304,7 @@ CONFIG_VIDEO_TUNER=m
CONFIG_V4L2_MEM2MEM_DEV=m
CONFIG_VIDEOBUF2_CORE=m
CONFIG_VIDEOBUF2_MEMOPS=m
+CONFIG_VIDEOBUF2_DMA_CONTIG=m
CONFIG_VIDEOBUF2_VMALLOC=m
CONFIG_VIDEO_CAPTURE_DRIVERS=y
# CONFIG_VIDEO_ADV_DEBUG is not set
@@ -3285,9 +3378,20 @@ CONFIG_VIDEO_AK881X=m
# Camera sensor devices
#
CONFIG_VIDEO_OV7670=m
+CONFIG_VIDEO_MT9P031=m
+CONFIG_VIDEO_MT9T001=m
CONFIG_VIDEO_MT9V011=m
CONFIG_VIDEO_MT9V032=m
CONFIG_VIDEO_TCM825X=m
+CONFIG_VIDEO_SR030PC30=m
+CONFIG_VIDEO_NOON010PC30=m
+CONFIG_VIDEO_M5MOLS=m
+CONFIG_VIDEO_S5K6AA=m
+
+#
+# Flash devices
+#
+CONFIG_VIDEO_ADP1653=m
#
# Video improvement chips
@@ -3332,6 +3436,8 @@ CONFIG_VIDEO_CX88_MPEG=m
CONFIG_VIDEO_CX88_VP3054=m
CONFIG_VIDEO_CX23885=m
CONFIG_MEDIA_ALTERA_CI=m
+CONFIG_VIDEO_CX25821=m
+CONFIG_VIDEO_CX25821_ALSA=m
CONFIG_VIDEO_AU0828=m
CONFIG_VIDEO_IVTV=m
CONFIG_VIDEO_FB_IVTV=m
@@ -3339,10 +3445,7 @@ CONFIG_VIDEO_CX18=m
CONFIG_VIDEO_CX18_ALSA=m
CONFIG_VIDEO_SAA7164=m
CONFIG_VIDEO_CAFE_CCIC=m
-CONFIG_VIDEO_SR030PC30=m
CONFIG_VIDEO_VIA_CAMERA=m
-CONFIG_VIDEO_NOON010PC30=m
-CONFIG_VIDEO_M5MOLS=m
CONFIG_SOC_CAMERA=m
CONFIG_SOC_CAMERA_IMX074=m
CONFIG_SOC_CAMERA_MT9M001=m
@@ -3354,6 +3457,7 @@ CONFIG_SOC_CAMERA_RJ54N1=m
CONFIG_SOC_CAMERA_TW9910=m
CONFIG_SOC_CAMERA_PLATFORM=m
CONFIG_SOC_CAMERA_OV2640=m
+CONFIG_SOC_CAMERA_OV5642=m
CONFIG_SOC_CAMERA_OV6650=m
CONFIG_SOC_CAMERA_OV772X=m
CONFIG_SOC_CAMERA_OV9640=m
@@ -3382,6 +3486,7 @@ CONFIG_USB_GSPCA_OV534_9=m
CONFIG_USB_GSPCA_PAC207=m
CONFIG_USB_GSPCA_PAC7302=m
CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SE401=m
CONFIG_USB_GSPCA_SN9C2028=m
CONFIG_USB_GSPCA_SN9C20X=m
CONFIG_USB_GSPCA_SONIXB=m
@@ -3400,6 +3505,7 @@ CONFIG_USB_GSPCA_STK014=m
CONFIG_USB_GSPCA_STV0680=m
CONFIG_USB_GSPCA_SUNPLUS=m
CONFIG_USB_GSPCA_T613=m
+CONFIG_USB_GSPCA_TOPRO=m
CONFIG_USB_GSPCA_TV8532=m
CONFIG_USB_GSPCA_VC032X=m
CONFIG_USB_GSPCA_VICAM=m
@@ -3413,11 +3519,15 @@ CONFIG_VIDEO_HDPVR=m
CONFIG_VIDEO_EM28XX=m
CONFIG_VIDEO_EM28XX_ALSA=m
CONFIG_VIDEO_EM28XX_DVB=m
+CONFIG_VIDEO_EM28XX_RC=y
CONFIG_VIDEO_TLG2300=m
CONFIG_VIDEO_CX231XX=m
CONFIG_VIDEO_CX231XX_RC=y
CONFIG_VIDEO_CX231XX_ALSA=m
CONFIG_VIDEO_CX231XX_DVB=m
+CONFIG_VIDEO_TM6000=m
+CONFIG_VIDEO_TM6000_ALSA=m
+CONFIG_VIDEO_TM6000_DVB=m
CONFIG_VIDEO_USBVISION=m
CONFIG_USB_ET61X251=m
CONFIG_USB_SN9C102=m
@@ -3489,6 +3599,7 @@ CONFIG_DVB_USB_DTT200U=m
CONFIG_DVB_USB_OPERA1=m
CONFIG_DVB_USB_AF9005=m
CONFIG_DVB_USB_AF9005_REMOTE=m
+CONFIG_DVB_USB_PCTV452E=m
CONFIG_DVB_USB_DW2102=m
CONFIG_DVB_USB_CINERGY_T2=m
CONFIG_DVB_USB_ANYSEE=m
@@ -3500,6 +3611,8 @@ CONFIG_DVB_USB_EC168=m
CONFIG_DVB_USB_AZ6027=m
CONFIG_DVB_USB_LME2510=m
CONFIG_DVB_USB_TECHNISAT_USB2=m
+CONFIG_DVB_USB_IT913X=m
+CONFIG_DVB_USB_MXL111SF=m
CONFIG_DVB_TTUSB_BUDGET=m
CONFIG_DVB_TTUSB_DEC=m
CONFIG_SMS_SIANO_MDTV=m
@@ -3557,6 +3670,11 @@ CONFIG_DVB_HOPPER=m
CONFIG_DVB_NGENE=m
#
+# Supported ddbridge ('Octopus') Adapters
+#
+CONFIG_DVB_DDBRIDGE=m
+
+#
# Supported DVB Frontends
#
# CONFIG_DVB_FE_CUSTOMISE is not set
@@ -3570,6 +3688,12 @@ CONFIG_DVB_STV090x=m
CONFIG_DVB_STV6110x=m
#
+# Multistandard (cable + terrestrial) frontends
+#
+CONFIG_DVB_DRXK=m
+CONFIG_DVB_TDA18271C2DD=m
+
+#
# DVB-S (satellite) frontends
#
CONFIG_DVB_CX24110=m
@@ -3595,6 +3719,7 @@ CONFIG_DVB_CX24116=m
CONFIG_DVB_SI21XX=m
CONFIG_DVB_DS3000=m
CONFIG_DVB_MB86A16=m
+CONFIG_DVB_TDA10071=m
#
# DVB-T (terrestrial) frontends
@@ -3658,13 +3783,16 @@ CONFIG_DVB_TUNER_DIB0090=m
# SEC control devices for DVB-S
#
CONFIG_DVB_LNBP21=m
+CONFIG_DVB_LNBP22=m
CONFIG_DVB_ISL6405=m
CONFIG_DVB_ISL6421=m
CONFIG_DVB_ISL6423=m
+CONFIG_DVB_A8293=m
CONFIG_DVB_LGS8GXX=m
CONFIG_DVB_ATBM8830=m
CONFIG_DVB_TDA665x=m
CONFIG_DVB_IX2505V=m
+CONFIG_DVB_IT913X_FE=m
#
# Tools to develop new frontends
@@ -3695,6 +3823,7 @@ CONFIG_DRM_MGA=m
CONFIG_DRM_SIS=m
CONFIG_DRM_VIA=m
CONFIG_DRM_SAVAGE=m
+CONFIG_DRM_VMWGFX=m
CONFIG_STUB_POULSBO=m
CONFIG_VGASTATE=m
CONFIG_VIDEO_OUTPUT_CONTROL=m
@@ -3784,6 +3913,7 @@ CONFIG_FB_TRIDENT=m
# CONFIG_FB_GEODE is not set
# CONFIG_FB_TMIO is not set
# CONFIG_FB_SM501 is not set
+CONFIG_FB_SMSCUFX=m
CONFIG_FB_UDL=m
# CONFIG_FB_VIRTUAL is not set
CONFIG_XEN_FBDEV_FRONTEND=m
@@ -3801,6 +3931,7 @@ CONFIG_LCD_VGG2432A4=m
CONFIG_LCD_PLATFORM=m
CONFIG_LCD_S6E63M0=m
CONFIG_LCD_LD9040=m
+CONFIG_LCD_AMS369FG06=m
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_GENERIC=m
CONFIG_BACKLIGHT_PROGEAR=m
@@ -3890,6 +4021,7 @@ CONFIG_SND_AC97_POWER_SAVE=y
CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
CONFIG_SND_SB_COMMON=m
CONFIG_SND_SB16_DSP=m
+CONFIG_SND_TEA575X=m
CONFIG_SND_PCI=y
CONFIG_SND_AD1889=m
CONFIG_SND_ALS300=m
@@ -3939,8 +4071,8 @@ CONFIG_SND_ES1968_INPUT=y
CONFIG_SND_ES1968_RADIO=y
CONFIG_SND_FM801=m
CONFIG_SND_FM801_TEA575X_BOOL=y
-CONFIG_SND_TEA575X=m
CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDA_PREALLOC_SIZE=4096
CONFIG_SND_HDA_HWDEP=y
CONFIG_SND_HDA_RECONFIG=y
CONFIG_SND_HDA_INPUT_BEEP=y
@@ -3948,6 +4080,7 @@ CONFIG_SND_HDA_INPUT_BEEP_MODE=1
CONFIG_SND_HDA_INPUT_JACK=y
CONFIG_SND_HDA_PATCH_LOADER=y
CONFIG_SND_HDA_CODEC_REALTEK=y
+CONFIG_SND_HDA_ENABLE_REALTEK_QUIRKS=y
CONFIG_SND_HDA_CODEC_ANALOG=y
CONFIG_SND_HDA_CODEC_SIGMATEL=y
CONFIG_SND_HDA_CODEC_VIA=y
@@ -3955,6 +4088,7 @@ CONFIG_SND_HDA_CODEC_HDMI=y
CONFIG_SND_HDA_CODEC_CIRRUS=y
CONFIG_SND_HDA_CODEC_CONEXANT=y
CONFIG_SND_HDA_CODEC_CA0110=y
+CONFIG_SND_HDA_CODEC_CA0132=y
CONFIG_SND_HDA_CODEC_CMEDIA=y
CONFIG_SND_HDA_CODEC_SI3054=y
CONFIG_SND_HDA_GENERIC=y
@@ -4023,7 +4157,7 @@ CONFIG_USB_HIDDEV=y
#
CONFIG_HID_A4TECH=m
CONFIG_HID_ACRUX=m
-CONFIG_HID_ACRUX_FF=m
+CONFIG_HID_ACRUX_FF=y
CONFIG_HID_APPLE=m
CONFIG_HID_BELKIN=m
CONFIG_HID_CHERRY=m
@@ -4035,6 +4169,8 @@ CONFIG_DRAGONRISE_FF=y
CONFIG_HID_EMS_FF=m
CONFIG_HID_ELECOM=m
CONFIG_HID_EZKEY=m
+CONFIG_HID_HOLTEK=m
+CONFIG_HOLTEK_FF=y
CONFIG_HID_KEYTOUCH=m
CONFIG_HID_KYE=m
CONFIG_HID_UCLOGIC=m
@@ -4044,10 +4180,11 @@ CONFIG_HID_TWINHAN=m
CONFIG_HID_KENSINGTON=m
CONFIG_HID_LCPOWER=m
CONFIG_HID_LOGITECH=m
+CONFIG_HID_LOGITECH_DJ=m
CONFIG_LOGITECH_FF=y
CONFIG_LOGIRUMBLEPAD2_FF=y
CONFIG_LOGIG940_FF=y
-CONFIG_LOGIWII_FF=y
+CONFIG_LOGIWHEELS_FF=y
CONFIG_HID_MAGICMOUSE=m
CONFIG_HID_MICROSOFT=m
CONFIG_HID_MONTEREY=m
@@ -4062,6 +4199,7 @@ CONFIG_HID_PICOLCD_FB=y
CONFIG_HID_PICOLCD_BACKLIGHT=y
CONFIG_HID_PICOLCD_LCD=y
CONFIG_HID_PICOLCD_LEDS=y
+CONFIG_HID_PRIMAX=m
CONFIG_HID_QUANTA=m
CONFIG_HID_ROCCAT=m
CONFIG_HID_ROCCAT_COMMON=m
@@ -4072,6 +4210,7 @@ CONFIG_HID_ROCCAT_KOVAPLUS=m
CONFIG_HID_ROCCAT_PYRA=m
CONFIG_HID_SAMSUNG=m
CONFIG_HID_SONY=m
+CONFIG_HID_SPEEDLINK=m
CONFIG_HID_SUNPLUS=m
CONFIG_HID_GREENASIA=m
CONFIG_GREENASIA_FF=y
@@ -4082,13 +4221,16 @@ CONFIG_HID_THRUSTMASTER=m
CONFIG_THRUSTMASTER_FF=y
CONFIG_HID_WACOM=m
CONFIG_HID_WACOM_POWER_SUPPLY=y
+CONFIG_HID_WIIMOTE=m
CONFIG_HID_ZEROPLUS=m
CONFIG_ZEROPLUS_FF=y
CONFIG_HID_ZYDACRON=m
CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=m
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB_ARCH_HAS_XHCI=y
CONFIG_USB=m
# CONFIG_USB_DEBUG is not set
# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
@@ -4101,6 +4243,7 @@ CONFIG_USB_DEVICEFS=y
CONFIG_USB_DYNAMIC_MINORS=y
CONFIG_USB_SUSPEND=y
# CONFIG_USB_OTG is not set
+# CONFIG_USB_DWC3 is not set
CONFIG_USB_MON=m
CONFIG_USB_WUSB=m
CONFIG_USB_WUSB_CBAF=m
@@ -4130,8 +4273,10 @@ CONFIG_USB_SL811_HCD=m
# CONFIG_USB_SL811_HCD_ISO is not set
CONFIG_USB_SL811_CS=m
CONFIG_USB_R8A66597_HCD=m
+CONFIG_USB_RENESAS_USBHS_HCD=m
CONFIG_USB_WHCI_HCD=m
CONFIG_USB_HWA_HCD=m
+CONFIG_USB_RENESAS_USBHS=m
#
# USB Device Class drivers
@@ -4151,6 +4296,7 @@ CONFIG_USB_TMC=m
CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_DEBUG is not set
CONFIG_USB_STORAGE_REALTEK=m
+CONFIG_REALTEK_AUTOPM=y
CONFIG_USB_STORAGE_DATAFAB=m
CONFIG_USB_STORAGE_FREECOM=m
CONFIG_USB_STORAGE_ISD200=m
@@ -4277,20 +4423,19 @@ CONFIG_USB_GADGET=m
# CONFIG_USB_GADGET_DEBUG_FILES is not set
# CONFIG_USB_GADGET_DEBUG_FS is not set
CONFIG_USB_GADGET_VBUS_DRAW=2
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_FUSB300 is not set
-# CONFIG_USB_GADGET_R8A66597 is not set
-# CONFIG_USB_GADGET_PXA_U2O is not set
-# CONFIG_USB_GADGET_M66592 is not set
-# CONFIG_USB_GADGET_AMD5536UDC is not set
-# CONFIG_USB_GADGET_CI13XXX_PCI is not set
-CONFIG_USB_GADGET_NET2280=y
+CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
+CONFIG_USB_R8A66597=m
+CONFIG_USB_M66592=m
+CONFIG_USB_AMD5536UDC=m
+CONFIG_USB_CI13XXX_PCI=m
+CONFIG_USB_NET2272=m
+CONFIG_USB_NET2272_DMA=y
CONFIG_USB_NET2280=m
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LANGWELL is not set
-# CONFIG_USB_GADGET_EG20T is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GOKU=m
+CONFIG_USB_EG20T=m
+CONFIG_USB_DUMMY_HCD=m
CONFIG_USB_GADGET_DUALSPEED=y
+CONFIG_USB_GADGET_SUPERSPEED=y
# CONFIG_USB_ZERO is not set
CONFIG_USB_AUDIO=m
CONFIG_USB_ETH=m
@@ -4310,6 +4455,7 @@ CONFIG_USB_MIDI_GADGET=m
CONFIG_USB_G_PRINTER=m
# CONFIG_USB_CDC_COMPOSITE is not set
# CONFIG_USB_G_NOKIA is not set
+# CONFIG_USB_G_ACM_MS is not set
# CONFIG_USB_G_MULTI is not set
CONFIG_USB_G_HID=m
CONFIG_USB_G_DBGP=m
@@ -4380,11 +4526,9 @@ CONFIG_LEDS_CLASS=y
#
CONFIG_LEDS_LM3530=m
CONFIG_LEDS_NET5501=m
-# CONFIG_LEDS_ALIX2 is not set
CONFIG_LEDS_PCA9532=m
CONFIG_LEDS_PCA9532_GPIO=y
CONFIG_LEDS_GPIO=m
-CONFIG_LEDS_GPIO_PLATFORM=y
CONFIG_LEDS_LP3944=m
CONFIG_LEDS_LP5521=m
CONFIG_LEDS_LP5523=m
@@ -4404,7 +4548,6 @@ CONFIG_LEDS_TRIGGERS=y
# LED Triggers
#
CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_IDE_DISK=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
CONFIG_LEDS_TRIGGER_BACKLIGHT=m
CONFIG_LEDS_TRIGGER_GPIO=m
@@ -4413,8 +4556,6 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
#
# iptables trigger is under Netfilter config (LED target)
#
-CONFIG_NFC_DEVICES=y
-CONFIG_PN544_NFC=m
CONFIG_ACCESSIBILITY=y
CONFIG_A11Y_BRAILLE_CONSOLE=y
# CONFIG_INFINIBAND is not set
@@ -4427,7 +4568,6 @@ CONFIG_EDAC=y
CONFIG_EDAC_DECODE_MCE=m
CONFIG_EDAC_MCE_INJ=m
CONFIG_EDAC_MM_EDAC=m
-CONFIG_EDAC_MCE=y
CONFIG_EDAC_AMD64=m
# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
CONFIG_EDAC_E752X=m
@@ -4440,6 +4580,7 @@ CONFIG_EDAC_I7CORE=m
CONFIG_EDAC_I5000=m
CONFIG_EDAC_I5100=m
CONFIG_EDAC_I7300=m
+CONFIG_EDAC_SBRIDGE=m
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
@@ -4550,11 +4691,22 @@ CONFIG_UIO_AEC=m
CONFIG_UIO_SERCOS3=m
CONFIG_UIO_PCI_GENERIC=m
CONFIG_UIO_NETX=m
+CONFIG_VIRTIO=m
+CONFIG_VIRTIO_RING=m
+
+#
+# Virtio drivers
+#
+CONFIG_VIRTIO_PCI=m
+CONFIG_VIRTIO_BALLOON=m
+CONFIG_VIRTIO_MMIO=m
#
# Xen driver support
#
CONFIG_XEN_BALLOON=y
+# CONFIG_XEN_SELFBALLOONING is not set
+CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=y
CONFIG_XEN_SCRUB_PAGES=y
CONFIG_XEN_DEV_EVTCHN=m
CONFIG_XEN_BACKEND=y
@@ -4564,32 +4716,12 @@ CONFIG_XEN_SYS_HYPERVISOR=y
CONFIG_XEN_XENBUS_FRONTEND=m
CONFIG_XEN_GNTDEV=m
CONFIG_XEN_GRANT_DEV_ALLOC=m
-CONFIG_XEN_PLATFORM_PCI=m
CONFIG_SWIOTLB_XEN=y
+CONFIG_XEN_TMEM=y
+CONFIG_XEN_PCIDEV_BACKEND=m
CONFIG_STAGING=y
-# CONFIG_DIGIEPCA is not set
-# CONFIG_RISCOM8 is not set
-# CONFIG_SPECIALIX is not set
-# CONFIG_COMPUTONE is not set
CONFIG_ET131X=m
-# CONFIG_ET131X_DEBUG is not set
CONFIG_SLICOSS=m
-CONFIG_VIDEO_GO7007=m
-CONFIG_VIDEO_GO7007_USB=m
-# CONFIG_VIDEO_GO7007_USB_S2250_BOARD is not set
-CONFIG_VIDEO_GO7007_OV7640=m
-CONFIG_VIDEO_GO7007_SAA7113=m
-CONFIG_VIDEO_GO7007_SAA7115=m
-CONFIG_VIDEO_GO7007_TW9903=m
-CONFIG_VIDEO_GO7007_UDA1342=m
-CONFIG_VIDEO_GO7007_SONY_TUNER=m
-CONFIG_VIDEO_GO7007_TW2804=m
-CONFIG_VIDEO_CX25821=m
-CONFIG_VIDEO_CX25821_ALSA=m
-CONFIG_VIDEO_TM6000=m
-CONFIG_VIDEO_TM6000_ALSA=m
-CONFIG_VIDEO_TM6000_DVB=m
-CONFIG_DVB_CXD2099=m
CONFIG_USBIP_CORE=m
CONFIG_USBIP_VHCI_HCD=m
CONFIG_USBIP_HOST=m
@@ -4597,10 +4729,6 @@ CONFIG_USBIP_HOST=m
CONFIG_W35UND=m
CONFIG_PRISM2_USB=m
CONFIG_ECHO=m
-CONFIG_BRCMUTIL=m
-CONFIG_BRCMSMAC=m
-# CONFIG_BRCMFMAC is not set
-# CONFIG_BRCMDBG is not set
CONFIG_COMEDI=m
# CONFIG_COMEDI_DEBUG is not set
CONFIG_COMEDI_MISC_DRIVERS=m
@@ -4641,6 +4769,7 @@ CONFIG_COMEDI_AMPLC_PCI224=m
CONFIG_COMEDI_AMPLC_PCI230=m
CONFIG_COMEDI_CONTEC_PCI_DIO=m
CONFIG_COMEDI_DT3000=m
+CONFIG_COMEDI_DYNA_PCI10XX=m
CONFIG_COMEDI_UNIOXX5=m
CONFIG_COMEDI_GSC_HPDI=m
CONFIG_COMEDI_ICP_MULTI=m
@@ -4652,7 +4781,7 @@ CONFIG_COMEDI_CB_PCIDAS64=m
CONFIG_COMEDI_CB_PCIDAS=m
CONFIG_COMEDI_CB_PCIDDA=m
CONFIG_COMEDI_CB_PCIDIO=m
-CONFIG_COMEDI_CB_PCIMDAS=m
+# CONFIG_COMEDI_CB_PCIMDAS is not set
CONFIG_COMEDI_CB_PCIMDDA=m
CONFIG_COMEDI_ME4000=m
CONFIG_COMEDI_ME_DAQ=m
@@ -4678,6 +4807,7 @@ CONFIG_COMEDI_USB_DRIVERS=m
CONFIG_COMEDI_DT9812=m
CONFIG_COMEDI_USBDUX=m
CONFIG_COMEDI_USBDUXFAST=m
+CONFIG_COMEDI_USBDUXSIGMA=m
CONFIG_COMEDI_VMK80XX=m
CONFIG_COMEDI_NI_COMMON=m
CONFIG_COMEDI_MITE=m
@@ -4695,10 +4825,11 @@ CONFIG_R8712U=m
CONFIG_R8712_AP=y
CONFIG_RTS_PSTOR=m
# CONFIG_RTS_PSTOR_DEBUG is not set
+CONFIG_RTS5139=m
+# CONFIG_RTS5139_DEBUG is not set
# CONFIG_TRANZPORT is not set
CONFIG_POHMELFS=m
# CONFIG_POHMELFS_DEBUG is not set
-CONFIG_POHMELFS_CRYPTO=y
CONFIG_IDE_PHISON=m
CONFIG_LINE6_USB=m
# CONFIG_LINE6_USB_DEBUG is not set
@@ -4707,7 +4838,6 @@ CONFIG_LINE6_USB=m
# CONFIG_LINE6_USB_DUMP_PCM is not set
# CONFIG_LINE6_USB_RAW is not set
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
-CONFIG_DRM_VMWGFX=m
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
CONFIG_DRM_NOUVEAU_DEBUG=y
@@ -4721,11 +4851,8 @@ CONFIG_USB_SERIAL_QUATECH2=m
CONFIG_USB_SERIAL_QUATECH_USB2=m
CONFIG_VT6655=m
CONFIG_VT6656=m
-CONFIG_HYPERV=m
CONFIG_HYPERV_STORAGE=m
-CONFIG_HYPERV_BLOCK=m
CONFIG_HYPERV_NET=m
-CONFIG_HYPERV_UTILS=m
CONFIG_HYPERV_MOUSE=m
# CONFIG_VME_BUS is not set
CONFIG_DX_SEP=m
@@ -4737,46 +4864,9 @@ CONFIG_ZCACHE=m
CONFIG_WLAGS49_H2=m
CONFIG_WLAGS49_H25=m
CONFIG_FB_SM7XX=m
-CONFIG_VIDEO_DT3155=m
-CONFIG_DT3155_CCIR=y
CONFIG_CRYSTALHD=m
CONFIG_FB_XGI=m
-CONFIG_LIRC_STAGING=y
-CONFIG_LIRC_BT829=m
-CONFIG_LIRC_IGORPLUGUSB=m
-CONFIG_LIRC_IMON=m
-CONFIG_LIRC_PARALLEL=m
-CONFIG_LIRC_SASEM=m
-CONFIG_LIRC_SERIAL=m
-CONFIG_LIRC_SERIAL_TRANSMITTER=y
-CONFIG_LIRC_SIR=m
-CONFIG_LIRC_TTUSBIR=m
-CONFIG_LIRC_ZILOG=m
-CONFIG_EASYCAP=m
-CONFIG_EASYCAP_SND=y
-# CONFIG_EASYCAP_OSS is not set
-# CONFIG_EASYCAP_DEBUG is not set
-CONFIG_SOLO6X10=m
CONFIG_ACPI_QUICKSTART=m
-CONFIG_MACH_NO_WESTBRIDGE=y
-CONFIG_ATH6K_LEGACY=m
-CONFIG_AR600x_SD31_XXX=y
-# CONFIG_AR600x_WB31_XXX is not set
-# CONFIG_AR600x_SD32_XXX is not set
-# CONFIG_AR600x_CUSTOM_XXX is not set
-CONFIG_ATH6KL_ENABLE_COEXISTENCE=y
-CONFIG_AR600x_DUAL_ANTENNA=y
-# CONFIG_AR600x_SINGLE_ANTENNA is not set
-# CONFIG_AR600x_BT_QCOM is not set
-# CONFIG_AR600x_BT_CSR is not set
-CONFIG_AR600x_BT_AR3001=y
-CONFIG_ATH6KL_HCI_BRIDGE=y
-CONFIG_ATH6KL_CONFIG_GPIO_BT_RESET=y
-CONFIG_AR600x_BT_RESET_PIN=22
-CONFIG_ATH6KL_HTC_RAW_INTERFACE=y
-CONFIG_ATH6KL_VIRTUAL_SCATTER_GATHER=y
-CONFIG_ATH6KL_SKIP_ABI_VERSION_CHECK=y
-# CONFIG_ATH6KL_DEBUG is not set
CONFIG_USB_ENESTORAGE=m
CONFIG_BCM_WIMAX=m
CONFIG_FT1000=m
@@ -4805,12 +4895,40 @@ CONFIG_SPEAKUP_SYNTH_DUMMY=m
CONFIG_TOUCHSCREEN_CLEARPAD_TM1217=m
CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m
CONFIG_DRM_PSB=m
-
-#
-# Altera FPGA firmware download module
-#
-CONFIG_ALTERA_STAPL=m
+CONFIG_DRM_PSB_MRST=y
+CONFIG_DRM_PSB_MFLD=y
+CONFIG_DRM_PSB_CDV=y
CONFIG_INTEL_MEI=m
+CONFIG_STAGING_MEDIA=y
+CONFIG_DVB_AS102=m
+CONFIG_DVB_CXD2099=m
+CONFIG_VIDEO_DT3155=m
+CONFIG_DT3155_CCIR=y
+CONFIG_DT3155_STREAMING=y
+CONFIG_EASYCAP=m
+# CONFIG_EASYCAP_DEBUG is not set
+CONFIG_VIDEO_GO7007=m
+CONFIG_VIDEO_GO7007_USB=m
+CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m
+CONFIG_VIDEO_GO7007_OV7640=m
+CONFIG_VIDEO_GO7007_SAA7113=m
+CONFIG_VIDEO_GO7007_SAA7115=m
+CONFIG_VIDEO_GO7007_TW9903=m
+CONFIG_VIDEO_GO7007_UDA1342=m
+CONFIG_VIDEO_GO7007_SONY_TUNER=m
+CONFIG_VIDEO_GO7007_TW2804=m
+CONFIG_SOLO6X10=m
+CONFIG_LIRC_STAGING=y
+CONFIG_LIRC_BT829=m
+CONFIG_LIRC_IGORPLUGUSB=m
+CONFIG_LIRC_IMON=m
+CONFIG_LIRC_PARALLEL=m
+CONFIG_LIRC_SASEM=m
+CONFIG_LIRC_SERIAL=m
+CONFIG_LIRC_SERIAL_TRANSMITTER=y
+CONFIG_LIRC_SIR=m
+CONFIG_LIRC_TTUSBIR=m
+CONFIG_LIRC_ZILOG=m
CONFIG_X86_PLATFORM_DEVICES=y
CONFIG_ACER_WMI=m
CONFIG_ACERHDF=m
@@ -4854,6 +4972,27 @@ CONFIG_XO15_EBOOK=m
CONFIG_SAMSUNG_LAPTOP=m
CONFIG_MXM_WMI=m
CONFIG_INTEL_OAKTRAIL=m
+CONFIG_SAMSUNG_Q10=m
+
+#
+# Hardware Spinlock drivers
+#
+CONFIG_CLKEVT_I8253=y
+CONFIG_I8253_LOCK=y
+CONFIG_CLKBLD_I8253=y
+CONFIG_IOMMU_API=y
+CONFIG_IOMMU_SUPPORT=y
+CONFIG_AMD_IOMMU=y
+# CONFIG_AMD_IOMMU_STATS is not set
+CONFIG_DMAR_TABLE=y
+CONFIG_INTEL_IOMMU=y
+# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
+CONFIG_INTEL_IOMMU_FLOPPY_WA=y
+CONFIG_IRQ_REMAP=y
+CONFIG_VIRT_DRIVERS=y
+CONFIG_HYPERV=m
+CONFIG_HYPERV_UTILS=m
+# CONFIG_PM_DEVFREQ is not set
#
# Firmware Drivers
@@ -5010,16 +5149,24 @@ CONFIG_JFFS2_ZLIB=y
# CONFIG_JFFS2_LZO is not set
CONFIG_JFFS2_RTIME=y
# CONFIG_JFFS2_RUBIN is not set
+CONFIG_UBIFS_FS=m
+CONFIG_UBIFS_FS_XATTR=y
+# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
+CONFIG_UBIFS_FS_LZO=y
+CONFIG_UBIFS_FS_ZLIB=y
+# CONFIG_UBIFS_FS_DEBUG is not set
CONFIG_LOGFS=m
CONFIG_CRAMFS=m
CONFIG_SQUASHFS=m
CONFIG_SQUASHFS_XATTR=y
+CONFIG_SQUASHFS_ZLIB=y
CONFIG_SQUASHFS_LZO=y
CONFIG_SQUASHFS_XZ=y
+# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
# CONFIG_SQUASHFS_EMBEDDED is not set
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
# CONFIG_VXFS_FS is not set
-# CONFIG_MINIX_FS is not set
+CONFIG_MINIX_FS=m
CONFIG_OMFS_FS=m
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
@@ -5031,6 +5178,7 @@ CONFIG_UFS_FS=m
# CONFIG_UFS_DEBUG is not set
CONFIG_EXOFS_FS=m
# CONFIG_EXOFS_DEBUG is not set
+CONFIG_ORE=m
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_NFS_FS=m
CONFIG_NFS_V3=y
@@ -5042,7 +5190,6 @@ CONFIG_NFS_FSCACHE=y
CONFIG_NFS_USE_KERNEL_DNS=y
# CONFIG_NFS_USE_NEW_IDMAPPER is not set
CONFIG_NFSD=m
-# CONFIG_NFSD_DEPRECATED is not set
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
@@ -5094,7 +5241,7 @@ CONFIG_PARTITION_ADVANCED=y
CONFIG_MAC_PARTITION=y
CONFIG_MSDOS_PARTITION=y
CONFIG_BSD_DISKLABEL=y
-# CONFIG_MINIX_SUBPARTITION is not set
+CONFIG_MINIX_SUBPARTITION=y
CONFIG_SOLARIS_X86_PARTITION=y
# CONFIG_UNIXWARE_DISKLABEL is not set
CONFIG_LDM_PARTITION=y
@@ -5190,7 +5337,7 @@ CONFIG_DEBUG_MUTEXES=y
# CONFIG_PROVE_LOCKING is not set
# CONFIG_SPARSE_RCU_POINTER is not set
# CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
CONFIG_STACKTRACE=y
# CONFIG_DEBUG_STACK_USAGE is not set
@@ -5317,9 +5464,15 @@ CONFIG_SECURITY_PATH=y
# CONFIG_SECURITY_SELINUX is not set
# CONFIG_SECURITY_SMACK is not set
CONFIG_SECURITY_TOMOYO=y
+CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048
+CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024
+# CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER is not set
+CONFIG_SECURITY_TOMOYO_POLICY_LOADER="/sbin/tomoyo-init"
+CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER="/sbin/init"
CONFIG_SECURITY_APPARMOR=y
CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=0
# CONFIG_IMA is not set
+# CONFIG_DEFAULT_SECURITY_SELINUX is not set
# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
# CONFIG_DEFAULT_SECURITY_APPARMOR is not set
CONFIG_DEFAULT_SECURITY_DAC=y
@@ -5351,6 +5504,7 @@ CONFIG_CRYPTO_PCOMP=m
CONFIG_CRYPTO_PCOMP2=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
+CONFIG_CRYPTO_USER=m
CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
CONFIG_CRYPTO_GF128MUL=m
CONFIG_CRYPTO_NULL=m
@@ -5399,6 +5553,7 @@ CONFIG_CRYPTO_RMD160=m
CONFIG_CRYPTO_RMD256=m
CONFIG_CRYPTO_RMD320=m
CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA1_SSSE3=m
CONFIG_CRYPTO_SHA256=m
CONFIG_CRYPTO_SHA512=m
CONFIG_CRYPTO_TGR192=m
@@ -5414,6 +5569,8 @@ CONFIG_CRYPTO_AES_NI_INTEL=m
CONFIG_CRYPTO_ANUBIS=m
CONFIG_CRYPTO_ARC4=m
CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_BLOWFISH_COMMON=m
+CONFIG_CRYPTO_BLOWFISH_X86_64=m
CONFIG_CRYPTO_CAMELLIA=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
@@ -5428,6 +5585,7 @@ CONFIG_CRYPTO_TEA=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_TWOFISH_COMMON=m
CONFIG_CRYPTO_TWOFISH_X86_64=m
+CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m
#
# Compression
@@ -5447,8 +5605,6 @@ CONFIG_CRYPTO_HW=y
CONFIG_CRYPTO_DEV_PADLOCK=m
CONFIG_CRYPTO_DEV_PADLOCK_AES=m
CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
-CONFIG_CRYPTO_DEV_HIFN_795X=m
-CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
CONFIG_HAVE_KVM=y
CONFIG_HAVE_KVM_IRQCHIP=y
CONFIG_HAVE_KVM_EVENTFD=y
@@ -5461,10 +5617,6 @@ CONFIG_KVM_INTEL=m
CONFIG_KVM_AMD=m
CONFIG_KVM_MMU_AUDIT=y
CONFIG_VHOST_NET=m
-CONFIG_VIRTIO=m
-CONFIG_VIRTIO_RING=m
-CONFIG_VIRTIO_PCI=m
-CONFIG_VIRTIO_BALLOON=m
CONFIG_BINARY_PRINTF=y
#
@@ -5480,6 +5632,7 @@ CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
CONFIG_CRC7=m
CONFIG_LIBCRC32C=m
+CONFIG_CRC8=m
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
CONFIG_LZO_COMPRESS=y
@@ -5498,6 +5651,9 @@ CONFIG_DECOMPRESS_BZIP2=y
CONFIG_DECOMPRESS_LZMA=y
CONFIG_DECOMPRESS_XZ=y
CONFIG_DECOMPRESS_LZO=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_REED_SOLOMON=m
+CONFIG_REED_SOLOMON_DEC16=y
CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=m
CONFIG_TEXTSEARCH_BM=m
@@ -5511,3 +5667,4 @@ CONFIG_CPU_RMAP=y
CONFIG_NLATTR=y
CONFIG_LRU_CACHE=m
CONFIG_AVERAGE=y
+CONFIG_CORDIC=m
diff --git a/kernels/linux-libre-xen/fix-i915.patch b/kernels/linux-libre-xen/fix-i915.patch
index 3b631361a..25d4bca87 100644
--- a/kernels/linux-libre-xen/fix-i915.patch
+++ b/kernels/linux-libre-xen/fix-i915.patch
@@ -1,26 +1,105 @@
-Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
-Tested-by: Santi <santi@agolina.net>
----
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
+<head>
+<title>abslibre.git - Libre PKGBUILDs repository</title>
+<meta name='generator' content='cgit v0.9.0.2'/>
+<meta name='robots' content='index, nofollow'/>
+<link rel='stylesheet' type='text/css' href='/cgit.css'/>
+<link rel='shortcut icon' href='/favicon.ico'/>
+<link rel='alternate' title='Atom feed' href='http://projects.parabolagnulinux.org/abslibre.git/atom/kernels/linux-libre-xen/fix-i915.patch?h=master' type='application/atom+xml'/>
+</head>
+<body>
+ <div id="archnavbar" class="">
+ <div id="archnavbarlogo"><h1><a href="/" title="Return to the main page">Parabola</a></h1></div>
+ <div id="archnavbarmenu">
+ <ul id="archnavbarlist">
+ <li id="anb-home"><a href="//parabolagnulinux.org" title="Parabola news, packages, projects and more">Home</a></li>
+ <li id="anb-packages"><a href="//parabolagnulinux.org/packages/" title="Parabola Package Database">Packages</a></li>
+ <li id="anb-wiki"><a href="//wiki.parabolagnulinux.org" title="Community documentation">Wiki</a></li>
+ <li id="anb-bugs"><a href="//bugs.parabolagnulinux.org" title="Issue Tracker">Bugs</a></li>
+ <li id="anb-projects"><a href="//projects.parabolagnulinux.org" title="Our Code">Projects</a></li>
+ <li id="anb-download"><a href="//parabolagnulinux.org/download" title="Get Parabola">Download</a></li>
+ </ul>
+ </div>
+ </div><!-- #archnavbar -->
+<div id='cgit'><table id='header'>
+<tr>
+<td class='main'><a href='/'>index</a> : <a title='abslibre.git' href='/abslibre.git/'>abslibre.git</a></td><td class='form'><form method='get' action=''>
+<select name='h' onchange='this.form.submit();'>
+<option value='master' selected='selected'>master</option>
+</select> <input type='submit' name='' value='switch'/></form></td></tr>
+<tr><td class='sub'>Libre PKGBUILDs repository</td><td class='sub right'>packages@list.parabolagnulinux.org</td></tr></table>
+<table class='tabs'><tr><td>
+<a href='/abslibre.git/'>summary</a><a href='/abslibre.git/refs/'>refs</a><a href='/abslibre.git/log/kernels/linux-libre-xen/fix-i915.patch'>log</a><a class='active' href='/abslibre.git/tree/kernels/linux-libre-xen/fix-i915.patch'>tree</a><a href='/abslibre.git/commit/kernels/linux-libre-xen/fix-i915.patch'>commit</a><a href='/abslibre.git/diff/kernels/linux-libre-xen/fix-i915.patch'>diff</a><a href='/abslibre.git/stats/kernels/linux-libre-xen/fix-i915.patch'>stats</a></td><td class='form'><form class='right' method='get' action='/abslibre.git/log/kernels/linux-libre-xen/fix-i915.patch'>
+<select name='qt'>
+<option value='grep'>log msg</option>
+<option value='author'>author</option>
+<option value='committer'>committer</option>
+<option value='range'>range</option>
+</select>
+<input class='txt' type='text' size='10' name='q' value=''/>
+<input type='submit' value='search'/>
+</form>
+</td></tr></table>
+<div class='path'>path: <a href='/abslibre.git/tree/'>root</a>/<a href='/abslibre.git/tree/kernels'>kernels</a>/<a href='/abslibre.git/tree/kernels/linux-libre-xen'>linux-libre-xen</a>/<a href='/abslibre.git/tree/kernels/linux-libre-xen/fix-i915.patch'>fix-i915.patch</a></div><div class='content'>blob: 3b631361a15ee4ba6491f0b8960f0e18044e2cf0 (<a href='/abslibre.git/plain/kernels/linux-libre-xen/fix-i915.patch'>plain</a>)
+<table summary='blob content' class='blob'>
+<tr><td class='linenumbers'><pre><a class='no' id='n1' name='n1' href='#n1'>1</a>
+<a class='no' id='n2' name='n2' href='#n2'>2</a>
+<a class='no' id='n3' name='n3' href='#n3'>3</a>
+<a class='no' id='n4' name='n4' href='#n4'>4</a>
+<a class='no' id='n5' name='n5' href='#n5'>5</a>
+<a class='no' id='n6' name='n6' href='#n6'>6</a>
+<a class='no' id='n7' name='n7' href='#n7'>7</a>
+<a class='no' id='n8' name='n8' href='#n8'>8</a>
+<a class='no' id='n9' name='n9' href='#n9'>9</a>
+<a class='no' id='n10' name='n10' href='#n10'>10</a>
+<a class='no' id='n11' name='n11' href='#n11'>11</a>
+<a class='no' id='n12' name='n12' href='#n12'>12</a>
+<a class='no' id='n13' name='n13' href='#n13'>13</a>
+<a class='no' id='n14' name='n14' href='#n14'>14</a>
+<a class='no' id='n15' name='n15' href='#n15'>15</a>
+<a class='no' id='n16' name='n16' href='#n16'>16</a>
+<a class='no' id='n17' name='n17' href='#n17'>17</a>
+<a class='no' id='n18' name='n18' href='#n18'>18</a>
+<a class='no' id='n19' name='n19' href='#n19'>19</a>
+<a class='no' id='n20' name='n20' href='#n20'>20</a>
+<a class='no' id='n21' name='n21' href='#n21'>21</a>
+<a class='no' id='n22' name='n22' href='#n22'>22</a>
+<a class='no' id='n23' name='n23' href='#n23'>23</a>
+<a class='no' id='n24' name='n24' href='#n24'>24</a>
+<a class='no' id='n25' name='n25' href='#n25'>25</a>
+<a class='no' id='n26' name='n26' href='#n26'>26</a>
+</pre></td>
+<td class='lines'><pre><code>Signed-off-by: Zhao Yakui &lt;yakui.zhao&#64;intel.com&gt;
+Tested-by: Santi &lt;santi&#64;agolina.net&gt;
+<span class="hl kwb">---</span>
drivers/gpu/drm/i915/intel_tv.c | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
index dc83b7a..c8f67bf 100644
---- a/drivers/gpu/drm/i915/intel_tv.c
-+++ b/drivers/gpu/drm/i915/intel_tv.c
-@@ -1267,6 +1267,15 @@
+<span class="hl kwb">--- a/drivers/gpu/drm/i915/intel_tv.c</span>
+<span class="hl kwa">+++ b/drivers/gpu/drm/i915/intel_tv.c</span>
+<span class="hl kwd">&#64;&#64; -1267,6 +1267,15 &#64;&#64;</span>
DAC_B_0_7_V |
DAC_C_0_7_V);
-+ /*
-+ * The TV sense state should be cleared to zero on cantiga platform. Otherwise
-+ * the TV is misdetected. This is hardware requirement.
-+ */
-+ if (IS_GM45(dev))
-+ tv_dac &= ~(TVDAC_STATE_CHG_EN | TVDAC_A_SENSE_CTL |
-+ TVDAC_B_SENSE_CTL | TVDAC_C_SENSE_CTL);
-+
-+
+<span class="hl kwa">+ /*</span>
+<span class="hl kwa">+ * The TV sense state should be cleared to zero on cantiga platform. Otherwise</span>
+<span class="hl kwa">+ * the TV is misdetected. This is hardware requirement.</span>
+<span class="hl kwa">+ */</span>
+<span class="hl kwa">+ if (IS_GM45(dev))</span>
+<span class="hl kwa">+ tv_dac &amp;= ~(TVDAC_STATE_CHG_EN | TVDAC_A_SENSE_CTL |</span>
+<span class="hl kwa">+ TVDAC_B_SENSE_CTL | TVDAC_C_SENSE_CTL);</span>
+<span class="hl kwa">+</span>
+<span class="hl kwa">+ </span>
I915_WRITE(TV_CTL, tv_ctl);
I915_WRITE(TV_DAC, tv_dac);
POSTING_READ(TV_DAC);
+</code></pre></td></tr></table>
+</div> <!-- class=content -->
+<div class='footer'>generated by cgit v0.9.0.2 at 2012-02-21 13:29:45 (GMT)</div>
+</div> <!-- id=cgit -->
+</body>
+</html>
diff --git a/kernels/linux-libre-xen/i915-fix-ghost-tv-output.patch b/kernels/linux-libre-xen/i915-fix-ghost-tv-output.patch
new file mode 100644
index 000000000..3b631361a
--- /dev/null
+++ b/kernels/linux-libre-xen/i915-fix-ghost-tv-output.patch
@@ -0,0 +1,26 @@
+Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
+Tested-by: Santi <santi@agolina.net>
+---
+ drivers/gpu/drm/i915/intel_tv.c | 9 +++++++++
+ 1 files changed, 9 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
+index dc83b7a..c8f67bf 100644
+--- a/drivers/gpu/drm/i915/intel_tv.c
++++ b/drivers/gpu/drm/i915/intel_tv.c
+@@ -1267,6 +1267,15 @@
+ DAC_B_0_7_V |
+ DAC_C_0_7_V);
+
++ /*
++ * The TV sense state should be cleared to zero on cantiga platform. Otherwise
++ * the TV is misdetected. This is hardware requirement.
++ */
++ if (IS_GM45(dev))
++ tv_dac &= ~(TVDAC_STATE_CHG_EN | TVDAC_A_SENSE_CTL |
++ TVDAC_B_SENSE_CTL | TVDAC_C_SENSE_CTL);
++
++
+ I915_WRITE(TV_CTL, tv_ctl);
+ I915_WRITE(TV_DAC, tv_dac);
+ POSTING_READ(TV_DAC);
diff --git a/kernels/linux-libre-xen/i915-gpu-finish.patch b/kernels/linux-libre-xen/i915-gpu-finish.patch
new file mode 100644
index 000000000..5840c9181
--- /dev/null
+++ b/kernels/linux-libre-xen/i915-gpu-finish.patch
@@ -0,0 +1,55 @@
+commit 389a55581e30607af0fcde6cdb4e54f189cf46cf
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Tue Nov 29 15:12:16 2011 +0000
+
+ drm/i915: Only clear the GPU domains upon a successful finish
+
+ By clearing the GPU read domains before waiting upon the buffer, we run
+ the risk of the wait being interrupted and the domains prematurely
+ cleared. The next time we attempt to wait upon the buffer (after
+ userspace handles the signal), we believe that the buffer is idle and so
+ skip the wait.
+
+ There are a number of bugs across all generations which show signs of an
+ overly haste reuse of active buffers.
+
+ Such as:
+
+ https://bugs.freedesktop.org/show_bug.cgi?id=29046
+ https://bugs.freedesktop.org/show_bug.cgi?id=35863
+ https://bugs.freedesktop.org/show_bug.cgi?id=38952
+ https://bugs.freedesktop.org/show_bug.cgi?id=40282
+ https://bugs.freedesktop.org/show_bug.cgi?id=41098
+ https://bugs.freedesktop.org/show_bug.cgi?id=41102
+ https://bugs.freedesktop.org/show_bug.cgi?id=41284
+ https://bugs.freedesktop.org/show_bug.cgi?id=42141
+
+ A couple of those pre-date i915_gem_object_finish_gpu(), so may be
+ unrelated (such as a wild write from a userspace command buffer), but
+ this does look like a convincing cause for most of those bugs.
+
+ Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+ Cc: stable@kernel.org
+ Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
+ Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
+
+diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
+index d560175..036bc58 100644
+--- a/drivers/gpu/drm/i915/i915_gem.c
++++ b/drivers/gpu/drm/i915/i915_gem.c
+@@ -3087,10 +3087,13 @@ i915_gem_object_finish_gpu(struct drm_i915_gem_object *obj)
+ return ret;
+ }
+
++ ret = i915_gem_object_wait_rendering(obj);
++ if (ret)
++ return ret;
++
+ /* Ensure that we invalidate the GPU's caches and TLBs. */
+ obj->base.read_domains &= ~I915_GEM_GPU_DOMAINS;
+-
+- return i915_gem_object_wait_rendering(obj);
++ return 0;
+ }
+
+ /**
diff --git a/kernels/xe-guest-utilities/PKGBUILD b/kernels/xe-guest-utilities/PKGBUILD
new file mode 100644
index 000000000..b866a6f58
--- /dev/null
+++ b/kernels/xe-guest-utilities/PKGBUILD
@@ -0,0 +1,45 @@
+# Contributor: Krzysztof Raczkowski <raczkow@gnu-tech.pl>
+# Contributor (Parabola): André Silva <andre.paulista@adinet.com.uy>
+
+pkgname=xe-guest-utilities
+pkgver=6.0.0
+pkgrel=5
+pkgdesc="Citrix XenServer Tools"
+arch=('i686' 'x86_64')
+url="http://citrix.com/English/ps2/products/product.asp?contentID=683148&ntref=hp_nav_US"
+license=('GPL' 'LGPL')
+optdepends=('linux-libre: DomU kernel for x86_64'
+ 'linux-libre-xen: DomU kernel for i686'
+ 'kernel-libre-lts: DomU kernel for i686 (long time supported)')
+makedepends=('rpmextract')
+source=(ftp://ftp.prz.edu.pl/pub/archlinux/archrak/src/xe-guest-utilities-${pkgver}-743.i386.rpm
+ ftp://ftp.prz.edu.pl/pub/archlinux/archrak/src/xe-guest-utilities-xenstore-${pkgver}-743.i386.rpm
+ ftp://ftp.prz.edu.pl/pub/archlinux/archrak/src/xe-guest-utilities-${pkgver}-743.x86_64.rpm
+ ftp://ftp.prz.edu.pl/pub/archlinux/archrak/src/xe-guest-utilities-xenstore-${pkgver}-743.x86_64.rpm
+ xe-guest-utilities-parabola.patch
+ ip_address.patch)
+
+md5sums=('894d33028b2712650be324b7ba01c6c4'
+ 'e100f97421ff522cb228aa749881a082'
+ 'ffaf02afa2105d32e011a32c80921256'
+ '9b9570b5cc27832df303c8ef9cd11d36'
+ '0d8a8ebe124d585a2b101150df8f5ff7'
+ '86b4a69b412f874bf5b4db8ac8858644')
+
+build() {
+ cd $startdir/src
+ [ $CARCH == "i686" ] && (
+ rpmextract.sh xe-guest-utilities-*.i386.rpm && \
+ rpmextract.sh xe-guest-utilities-xenstore-*.i386.rpm || return 1
+ )
+ [ $CARCH == "x86_64" ] && (
+ rpmextract.sh xe-guest-utilities-*.x86_64.rpm && \
+ rpmextract.sh xe-guest-utilities-xenstore-*.x86_64.rpm || return 1
+ )
+
+ patch -Np1 -i ${srcdir}/xe-guest-utilities-parabola.patch || return 1
+ patch -Np1 -i ${srcdir}/ip_address.patch || return 1
+
+ cp -ra ${srcdir}/{etc,usr} ${pkgdir}/ || return 1
+ mv ${pkgdir}/etc/init.d ${pkgdir}/etc/rc.d
+}
diff --git a/kernels/xe-guest-utilities/ip_address.patch b/kernels/xe-guest-utilities/ip_address.patch
new file mode 100644
index 000000000..1e589ef37
--- /dev/null
+++ b/kernels/xe-guest-utilities/ip_address.patch
@@ -0,0 +1,30 @@
+--- src.orig/usr/sbin/xe-update-guest-attrs 2011-12-28 21:05:13.055346917 -0600
++++ src/usr/sbin/xe-update-guest-attrs 2011-12-28 21:04:02.545354603 -0600
+@@ -151,9 +151,9 @@
+ # 3: sit0: <NOARP> mtu 1480 qdisc noop
+ # link/sit 0.0.0.0 brd 0.0.0.0
+
+-#eval $(ip addr show | \
+-# sed -n -e 's/^[[:digit:]]*: \([a-z0-9]*\): .*/ifs="\$ifs \1"; current="\1"; /gp;' \
+-# -e 's/^[[:space:]]\{4\}inet \('${IPADDR_RE}'\)\/.*/eval inet_\${current}="\1"; /gp;')
++eval $(ip addr show | \
++ sed -n -e 's/^[[:digit:]]*: \([a-z0-9]*\): .*/ifs="\$ifs \1"; current="\1"; /gp;' \
++ -e 's/^[[:space:]]\{4\}inet \('${IPADDR_RE}'\)\/.*/eval inet_\${current}="\1"; /gp;')
+
+ # e.g.
+ # eth0 Link encap:Ethernet HWaddr 00:13:20:95:E8:74
+@@ -175,10 +175,10 @@
+ # collisions:0 txqueuelen:0
+ # RX bytes:3604609 (3.4 MiB) TX bytes:3604609 (3.4 MiB)
+
+-eval $(/sbin/ifconfig | \
+- sed -n -e '/^[0-9a-z][0-9a-z]*\:/,/^$/d' \
+- -e 's/^\([0-9a-z][0-9a-z]*\) .*/ifs="\$ifs \1"; current="\1"; /gp;' \
+- -e 's/ *inet addr:\('$IPADDR_RE'\) .*/eval inet_\${current}="\1"; /gp;')
++#eval $(/sbin/ifconfig | \
++# sed -n -e '/^[0-9a-z][0-9a-z]*\:/,/^$/d' \
++# -e 's/^\([0-9a-z][0-9a-z]*\) .*/ifs="\$ifs \1"; current="\1"; /gp;' \
++# -e 's/ *inet addr:\('$IPADDR_RE'\) .*/eval inet_\${current}="\1"; /gp;')
+
+ # network
+ for if in $ifs ; do \ No newline at end of file
diff --git a/kernels/xe-guest-utilities/xe-guest-utilities-parabola.patch b/kernels/xe-guest-utilities/xe-guest-utilities-parabola.patch
new file mode 100644
index 000000000..a433f6887
--- /dev/null
+++ b/kernels/xe-guest-utilities/xe-guest-utilities-parabola.patch
@@ -0,0 +1,146 @@
+diff -uNr src.orig//etc/init.d/xe-linux-distribution src/etc/init.d/xe-linux-distribution
+--- src.orig//etc/init.d/xe-linux-distribution 2010-05-20 13:19:02.000000000 +0200
++++ src/etc/init.d/xe-linux-distribution 2010-10-04 14:45:11.000000000 +0200
+@@ -18,24 +18,8 @@
+ LANG="C"
+ export LANG
+
+-if [ -f /etc/init.d/functions ] ; then
+-. /etc/init.d/functions
+-else
+-action()
+-{
+- descr=$1 ; shift
+- cmd=$@
+- echo -n "$descr "
+- $cmd
+- ret=$?
+- if [ $ret -eq 0 ] ; then
+- echo "OK"
+- else
+- echo "Failed"
+- fi
+- return $ret
+-}
+-fi
++. /etc/rc.conf
++. /etc/rc.d/functions
+
+ XE_LINUX_DISTRIBUTION=/usr/sbin/xe-linux-distribution
+ XE_LINUX_DISTRIBUTION_CACHE=/var/cache/xe-linux-distribution
+@@ -48,35 +32,59 @@
+
+ start()
+ {
++ if [ -e /proc/xen/capabilities ] && grep -q control_d /proc/xen/capabilities ; then
++ # Do not want daemon in domain 0
++ exit 0
++ fi
++
++ stat_busy "Detecting GNU/Linux distribution version"
++ ${XE_LINUX_DISTRIBUTION} ${XE_LINUX_DISTRIBUTION_CACHE}
++ if [ $? -gt 0 ]; then
++ stat_fail
++ else
++ stat_done
++ fi
++
+ if [ ! -e /proc/xen/xenbus ] ; then
+ if [ ! -d /proc/xen ] ; then
+- action $"Mounting xenfs on /proc/xen:" /bin/false
++ stat_busy "Mounting xenfs on /proc/xen"
+ echo "Could not find /proc/xen directory."
+ echo "You need a post 2.6.29-rc1 kernel with CONFIG_XEN_COMPAT_XENFS=y and CONFIG_XENFS=y|m"
+- exit 1
++ stat_die 1
+ else
+ # This is needed post 2.6.29-rc1 when /proc/xen support was pushed upstream as a xen filesystem
+- action $"Mounting xenfs on /proc/xen:" mount -t xenfs none /proc/xen
++ stat_busy "Mounting xenfs on /proc/xen"
++ mount -t xenfs none /proc/xen
++ if [ $? -gt 0 ]; then
++ stat_fail
++ else
++ stat_done
++ fi
+ fi
+ fi
+
+- if [ -e /proc/xen/capabilities ] && grep -q control_d /proc/xen/capabilities ; then
+- # Do not want daemon in domain 0
+- exit 0
+- fi
+-
+- action $"Detecting Linux distribution version:" \
+- ${XE_LINUX_DISTRIBUTION} ${XE_LINUX_DISTRIBUTION_CACHE}
+-
+- action $"Starting xe daemon: " /bin/true
++ stat_busy "Starting xe daemon"
+ mkdir -p $(dirname ${XE_DAEMON_PIDFILE})
+ # This is equivalent to daemon() in C
+ ( exec &>/dev/null ; ${XE_DAEMON} -p ${XE_DAEMON_PIDFILE} & )
++ if [ $? -gt 0 ]; then
++ stat_fail
++ else
++ add_daemon xe-linux-distribution
++ stat_done
++ fi
+ }
+
+ stop()
+ {
+- action $"Stopping xe daemon: " kill -TERM $(cat ${XE_DAEMON_PIDFILE})
++ stat_busy "Stopping xe daemon"
++ killall $(basename ${XE_DAEMON}) -TERM
++ if [ $? -gt 0 ]; then
++ stat_fail
++ else
++ rm_daemon xe-linux-distribution
++ stat_done
++ fi
+ }
+
+ # fail silently if not running xen
+@@ -91,7 +99,7 @@
+ stop)
+ stop
+ ;;
+- force-reload|restart)
++ restart)
+ stop
+ start
+ ;;
+diff -uNr src.orig//usr/sbin/xe-linux-distribution src/usr/sbin/xe-linux-distribution
+--- src.orig//usr/sbin/xe-linux-distribution 2010-05-20 13:19:02.000000000 +0200
++++ src/usr/sbin/xe-linux-distribution 2010-10-04 14:44:37.000000000 +0200
+@@ -51,6 +51,22 @@
+ return 0
+ }
+
++identify_parabola()
++{
++ local parabola_version="$1"
++ local major
++ local minor
++
++ if [ ! -f "${parabola_version}" ] ; then
++ return 1
++ fi
++
++ eval $(LC_ALL=C pacman -Qi initscripts |grep Version |sed "s/^.*: //" | \
++ awk -F. '{print "major="$1 ; print "minor="$2 ; exit 0 }' )
++ write_to_output "parabola" "${major}" "${minor}" "Parabola GNU/Linux-Libre ${major}.${minor}"
++
++}
++
+ identify_debian()
+ {
+ local debian_version="$1"
+@@ -258,6 +274,7 @@
+ identify_sles /etc/SuSE-release && exit 0
+ identify_lsb lsb_release && exit 0
+ identify_debian /etc/debian_version && exit 0
++ identify_parabola /etc/arch-release && exit 0
+
+ if [ $# -eq 1 ] ; then
+ rm -f "$1"
diff --git a/kernels/xen/09_xen b/kernels/xen/09_xen
new file mode 100755
index 000000000..094b7f427
--- /dev/null
+++ b/kernels/xen/09_xen
@@ -0,0 +1,123 @@
+#! /bin/sh -e
+
+if [ -f /usr/lib/grub/grub-mkconfig_lib ]; then
+ . /usr/lib/grub/grub-mkconfig_lib
+else
+ # no grub file, so we notify and exit gracefully
+ echo "Cannot find grub config file, exiting." >&2
+ exit 0
+fi
+
+XEN_HYPERVISOR_CMDLINE=
+XEN_LINUX_CMDLINE="console=tty0"
+[ -r /etc/xen/grub.conf ] && . /etc/xen/grub.conf
+
+CLASS="--class gnu-linux --class gnu --class os"
+
+if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
+ OS=GNU/Linux
+else
+ OS="${GRUB_DISTRIBUTOR}"
+ CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr '[A-Z]' '[a-z]' | cut -d' ' -f1) ${CLASS}"
+fi
+
+# loop-AES arranges things so that /dev/loop/X can be our root device, but
+# the initrds that Linux uses don't like that.
+case ${GRUB_DEVICE} in
+ /dev/loop/*|/dev/loop[0-9])
+ GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"`
+ ;;
+esac
+
+if [ "x${GRUB_DEVICE_UUID}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
+ || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
+ || [ "`grub-probe -t abstraction --device ${GRUB_DEVICE} | sed -e 's,.*\(lvm\).*,\1,'`" = "lvm" ] ; then
+ LINUX_ROOT_DEVICE=${GRUB_DEVICE}
+else
+ LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
+fi
+
+xen_entry ()
+{
+ os="$1"
+ xen_version="$2"
+ version="$3"
+ xen_args="$4"
+ args="$5"
+ printf "menuentry 'Xen %s / %s, with Linux %s' --class xen ${CLASS} {\n" "${xen_version}" "${os}" "${version}"
+ save_default_entry | sed -e "s/^/\t/"
+
+ if [ -z "${prepare_boot_cache}" ]; then
+ prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")"
+ fi
+ printf '%s\n' "${prepare_boot_cache}"
+ cat << EOF
+ echo '$(printf "Loading Xen %s ..." ${xen_version})'
+ multiboot ${rel_dirname}/${xen_basename} ${rel_dirname}/${xen_basename} ${xen_args}
+ echo $(printf "$(gettext "Loading Linux %s ...")" ${version})
+ module ${rel_dirname}/${basename} ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
+EOF
+ if test -n "${initrd}" ; then
+ cat << EOF
+ echo "Loading initial ramdisk ..."
+ module ${rel_dirname}/${initrd}
+EOF
+ fi
+ cat << EOF
+}
+EOF
+}
+
+xen_list=`for i in /boot/xen-*.gz /xen-*.gz ; do
+ if grub_file_is_not_garbage "$i" ; then echo -n "$i "; fi
+done`
+prepare_boot_cache=
+
+while [ "x$xen_list" != "x" ] ; do
+ xen=`version_find_latest $xen_list`
+ echo "Found Xen hypervisor image: $xen" >&2
+ xen_basename=`basename $xen`
+ xen_dirname=`dirname $xen`
+ rel_xen_dirname=`make_system_path_relative_to_its_root $xen_dirname`
+ xen_version=`echo $xen_basename | sed -e "s,^[^0-9]*-,,g" | sed -e "s,.gz,,g"`
+ alt_xen_version=`echo $xen_version | sed -e "s,\.old$,,g"`
+
+ xen_configfiles=`grep -l 'CONFIG_XEN_PRIVILEGED_GUEST=y' /boot/config-*`
+
+ list="/boot/vmlinuz-linux-libre";
+
+ while [ "x$list" != "x" ] ; do
+ linux=`version_find_latest $list`
+ echo -e "\tFound linux image: $linux" >&2
+ basename=`basename $linux`
+ dirname=`dirname $linux`
+ rel_dirname=`make_system_path_relative_to_its_root $dirname`
+ version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
+ base_init=`echo $basename | sed -e "s,vmlinuz,initramfs,g"`
+ alt_version="${base_init}-fallback"
+ linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
+ initrd=
+
+ for i in "${base_init}.img"; do
+ if test -e "${dirname}/${i}" ; then
+ initrd="$i"
+ break
+ fi
+ done
+ if test -n "${initrd}" ; then
+ echo -e "\tFound initrd image: ${dirname}/${initrd}" >&2
+ else
+ # "UUID=" magic is parsed by initrds. Since there's no initrd, it can't work here.
+ linux_root_device_thisversion=${GRUB_DEVICE}
+ fi
+
+ xen_entry "${OS}" "${xen_version}" "${version}" \
+ "${XEN_HYPERVISOR_CMDLINE}" \
+ "${XEN_LINUX_CMDLINE}"
+
+ list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
+ done
+
+ xen_list=`echo $xen_list | tr ' ' '\n' | grep -vx $xen | tr '\n' ' '`
+done
+
diff --git a/kernels/xen/24341.patch b/kernels/xen/24341.patch
new file mode 100644
index 000000000..5554004d3
--- /dev/null
+++ b/kernels/xen/24341.patch
@@ -0,0 +1,11 @@
+--- a/xen/arch/x86/x86_64/mmconfig_64.c 2011-10-20 15:05:49.000000000 -0200
++++ b/xen/arch/x86/x86_64/mmconfig_64.c 2012-02-14 23:45:47.481729733 -0200
+@@ -23,7 +23,7 @@
+ char __iomem *virt;
+ };
+ static struct mmcfg_virt *pci_mmcfg_virt;
+-static int __initdata mmcfg_pci_segment_shift;
++static unsigned int mmcfg_pci_segment_shift;
+
+ static char __iomem *get_virt(unsigned int seg, unsigned bus)
+ {
diff --git a/kernels/xen/24344.patch b/kernels/xen/24344.patch
new file mode 100644
index 000000000..642b90867
--- /dev/null
+++ b/kernels/xen/24344.patch
@@ -0,0 +1,33 @@
+--- a/tools/libxc/xc_cpuid_x86.c 2011-10-20 15:05:42.000000000 -0200
++++ b/tools/libxc/xc_cpuid_x86.c 2012-02-15 00:01:46.307514813 -0200
+@@ -42,23 +42,23 @@
+ static void cpuid(const unsigned int *input, unsigned int *regs)
+ {
+ unsigned int count = (input[1] == XEN_CPUID_INPUT_UNUSED) ? 0 : input[1];
+- asm (
+ #ifdef __i386__
++/* Use the stack to avoid reg constraint failures with some gcc flags */
++ asm (
+ "push %%ebx; push %%edx\n\t"
+-#else
+- "push %%rbx; push %%rdx\n\t"
+-#endif
+ "cpuid\n\t"
+ "mov %%ebx,4(%4)\n\t"
+ "mov %%edx,12(%4)\n\t"
+-#ifdef __i386__
+ "pop %%edx; pop %%ebx\n\t"
++ : "=a" (regs[0]), "=c" (regs[2])
++ : "0" (input[0]), "1" (count), "S" (regs)
++ : "memory" );
+ #else
+- "pop %%rdx; pop %%rbx\n\t"
++ asm (
++ "cpuid"
++ : "=a" (regs[0]), "=b" (regs[1]), "=c" (regs[2]), "=d" (regs[3])
++ : "0" (input[0]), "2" (count) );
+ #endif
+- : "=a" (regs[0]), "=c" (regs[2])
+- : "0" (input[0]), "1" (count), "S" (regs)
+- : "memory" );
+ }
diff --git a/kernels/xen/24345.patch b/kernels/xen/24345.patch
new file mode 100644
index 000000000..e75a1b38c
--- /dev/null
+++ b/kernels/xen/24345.patch
@@ -0,0 +1,31 @@
+--- a/tools/misc/xen-detect.c 2011-10-20 15:05:43.000000000 -0200
++++ b/tools/misc/xen-detect.c 2012-02-15 00:05:55.524455578 -0200
+@@ -35,18 +35,21 @@
+
+ static void cpuid(uint32_t idx, uint32_t *regs, int pv_context)
+ {
+- asm volatile (
+ #ifdef __i386__
+-#define R(x) "%%e"#x"x"
+-#else
+-#define R(x) "%%r"#x"x"
+-#endif
+- "push "R(a)"; push "R(b)"; push "R(c)"; push "R(d)"\n\t"
++/* Use the stack to avoid reg constraint failures with some gcc flags */
++ asm volatile (
++ "push %%eax; push %%ebx; push %%ecx; push %%edx\n\t"
+ "test %1,%1 ; jz 1f ; ud2a ; .ascii \"xen\" ; 1: cpuid\n\t"
+ "mov %%eax,(%2); mov %%ebx,4(%2)\n\t"
+ "mov %%ecx,8(%2); mov %%edx,12(%2)\n\t"
+- "pop "R(d)"; pop "R(c)"; pop "R(b)"; pop "R(a)"\n\t"
++ "pop %%edx; pop %%ecx; pop %%ebx; pop %%eax\n\t"
+ : : "a" (idx), "c" (pv_context), "S" (regs) : "memory" );
++#else
++ asm volatile (
++ "test %5,%5 ; jz 1f ; ud2a ; .ascii \"xen\" ; 1: cpuid\n\t"
++ : "=a" (regs[0]), "=b" (regs[1]), "=c" (regs[2]), "=d" (regs[3])
++ : "0" (idx), "1" (pv_context), "2" (0) );
++#endif
+ }
+
+ static int check_for_xen(int pv_context)
diff --git a/kernels/xen/PKGBUILD b/kernels/xen/PKGBUILD
new file mode 100644
index 000000000..e1796106a
--- /dev/null
+++ b/kernels/xen/PKGBUILD
@@ -0,0 +1,99 @@
+#Mantainer M0Rf30
+#Contributor WaxyMouthfeel
+# Contributor (Parabola): André Silva <andre.paulista@adinet.com.uy>
+pkgname=xen
+pkgver=4.1.2
+pkgrel=2
+pkgdesc="Xen 4 (hypervisor and tools)"
+arch=(i686 x86_64)
+url="http://xen.org/"
+license="GPL"
+depends=('xz-utils' 'bzip2' 'iproute' 'bridge-utils' 'python2' 'sdl' 'zlib' 'e2fsprogs' 'pkgconfig' 'gnutls' 'lzo2' 'glibc')
+[ "$CARCH" == "x86_64" ] && depends=(${depends} 'lib32-glibc')
+optdepends=('xen-docs: Xen Official Documentation')
+makedepends=('dev86' 'bin86' 'ocaml-findlib' 'iasl')
+conflicts=('xen4' 'xen3' 'xen-hv-tools' 'libxen4')
+provides=('xen')
+backup=('etc/xen/xend-config.sxp' 'etc/xen/xend-pci-permissive.sxp' 'etc/xen/xend-pci-quirks.sxp')
+options=(!strip)
+optional=(xen-docs)
+source=(http://bits.xensource.com/oss-xen/release/${pkgver}/xen-${pkgver}.tar.gz
+ 09_xen
+ xen.patch
+ parabolainit.patch
+ dom0_xz_decompression.patch
+ 24341.patch
+ 24344.patch
+ 24345.patch)
+
+build() {
+
+
+ cd $srcdir/xen-${pkgver}
+
+ patch -p1 -i ../xen.patch
+ patch -p1 -i ../parabolainit.patch
+ patch -p1 -i ../dom0_xz_decompression.patch
+ patch -p1 -i ../24341.patch
+ patch -p1 -i ../24344.patch
+ patch -p1 -i ../24345.patch
+
+unset CFLAGS LDFLAGS
+
+make PYTHON=python2 DESTDIR=$pkgdir install-xen
+make PYTHON=python2 DESTDIR=$pkgdir install-tools
+#make PYTHON=python2 DESTDIR=$pkgdir install-stubdom
+
+ sed -i 's#XENDOM_CONFIG=/etc/sysconfig/xendomains#XENDOM_CONFIG=/etc/conf.d/xendomains#' $pkgdir/etc/init.d/xendomains
+ sed -i "s#touch /var/lock/subsys/xend#mkdir -p /var/lock/subsys\n touch /var/lock/subsys/xend#" $pkgdir/etc/init.d/xend
+
+ [ -d $pkgdir/usr/lib64 ] && ( cd $pkgdir/usr && cp -R lib64/* lib/ && rm -R lib64 )
+ ( cd $pkgdir/etc && mv init.d rc.d ) || return 1
+ rm -f $pkgdir/usr/share/man/man1/qemu-img.1* \
+ $pkgdir/usr/share/man/man1/qemu.1*
+ # First experiment to generate grub2.cfg entry
+ mkdir -p $pkgdir/etc/grub.d
+ chmod +x $srcdir/09_xen
+ cp $srcdir/09_xen $pkgdir/etc/grub.d
+
+ ############ kill unwanted stuff ############
+
+# stubdom: newlib
+rm -rf $pkgdir/usr/*-xen-elf
+
+# hypervisor symlinks
+rm -rf $pkgdir/boot/xen-4.1.gz
+rm -rf $pkgdir/boot/xen-4.gz
+rm -rf $pkgdir/boot/xen.gz
+
+# silly doc dir fun
+rm -fr $pkgdir/usr/share/doc/xen
+rm -rf $pkgdir/usr/share/doc/qemu
+
+# Pointless helper
+rm -f $pkgdir/usr/sbin/xen-python-path
+
+# qemu stuff (unused or available from upstream)
+rm -rf $pkgdir/usr/share/xen/man
+rm -rf $pkgdir/usr/bin/qemu-*-xen
+for file in bios.bin openbios-sparc32 openbios-sparc64 ppc_rom.bin \
+ pxe-e1000.bin pxe-ne2k_pci.bin pxe-pcnet.bin pxe-rtl8139.bin \
+ vgabios.bin vgabios-cirrus.bin video.x openbios-ppc bamboo.dtb
+do
+ rm -f $pkgdir/usr/share/xen/qemu/$file
+done
+
+# adhere to Static Library Packaging Guidelines
+rm -rf $pkgdir/usr/lib/*.a
+
+
+}
+
+md5sums=('73561faf3c1b5e36ec5c089b5db848ad'
+ '8d50beba46ffd89a3b959176245b676e'
+ 'f149bae1a6b420e49c51b9f3a74338a4'
+ '7a1ed81ecc828037724bb3280058c9fc'
+ '4aebccf16b578ed97aa8bab945011f35'
+ '1b0c05a555bc99fc8416dd52b6c6ae95'
+ 'b6225be5bec3fe462f9166f9fde9c347'
+ 'd282946a2873a78b2b2c3944571eb2fe')
diff --git a/kernels/xen/dom0_xz_decompression.patch b/kernels/xen/dom0_xz_decompression.patch
new file mode 100644
index 000000000..277ebcfd2
--- /dev/null
+++ b/kernels/xen/dom0_xz_decompression.patch
@@ -0,0 +1,3528 @@
+diff --git a/xen/common/Makefile b/xen/common/Makefile
+--- a/xen/common/Makefile
++++ b/xen/common/Makefile
+@@ -43,7 +43,7 @@
+ obj-y += rbtree.o
+ obj-y += lzo.o
+
+-obj-$(CONFIG_X86) += decompress.o bunzip2.o unlzma.o unlzo.o
++obj-$(CONFIG_X86) += decompress.o bunzip2.o unxz.o unlzma.o unlzo.o
+
+ obj-$(perfc) += perfc.o
+ obj-$(crash_debug) += gdbstub.o
+diff --git a/xen/common/decompress.c b/xen/common/decompress.c
+--- a/xen/common/decompress.c
++++ b/xen/common/decompress.c
+@@ -20,6 +20,9 @@
+ if ( len >= 3 && !memcmp(inbuf, "\x42\x5a\x68", 3) )
+ return bunzip2(inbuf, len, NULL, NULL, outbuf, NULL, error);
+
++ if ( len >= 6 && !memcmp(inbuf, "\3757zXZ", 6) )
++ return unxz(inbuf, len, NULL, NULL, outbuf, NULL, error);
++
+ if ( len >= 2 && !memcmp(inbuf, "\135\000", 2) )
+ return unlzma(inbuf, len, NULL, NULL, outbuf, NULL, error);
+
+diff --git a/xen/common/decompress.h b/xen/common/decompress.h
+--- a/xen/common/decompress.h
++++ b/xen/common/decompress.h
+@@ -8,6 +8,7 @@
+
+ #define STATIC
+ #define INIT __init
++#define INITDATA __initdata
+
+ static void(*__initdata error)(const char *);
+ #define set_error_fn(x) error = x;
+diff --git a/xen/common/unxz.c b/xen/common/unxz.c
+new file mode 100644
+--- /dev/null
++++ b/xen/common/unxz.c
+@@ -0,0 +1,306 @@
++/*
++ * Wrapper for decompressing XZ-compressed kernel, initramfs, and initrd
++ *
++ * Author: Lasse Collin <lasse.collin@tukaani.org>
++ *
++ * This file has been put into the public domain.
++ * You can do whatever you want with this file.
++ */
++
++/*
++ * Important notes about in-place decompression
++ *
++ * At least on x86, the kernel is decompressed in place: the compressed data
++ * is placed to the end of the output buffer, and the decompressor overwrites
++ * most of the compressed data. There must be enough safety margin to
++ * guarantee that the write position is always behind the read position.
++ *
++ * The safety margin for XZ with LZMA2 or BCJ+LZMA2 is calculated below.
++ * Note that the margin with XZ is bigger than with Deflate (gzip)!
++ *
++ * The worst case for in-place decompression is that the beginning of
++ * the file is compressed extremely well, and the rest of the file is
++ * uncompressible. Thus, we must look for worst-case expansion when the
++ * compressor is encoding uncompressible data.
++ *
++ * The structure of the .xz file in case of a compresed kernel is as follows.
++ * Sizes (as bytes) of the fields are in parenthesis.
++ *
++ * Stream Header (12)
++ * Block Header:
++ * Block Header (8-12)
++ * Compressed Data (N)
++ * Block Padding (0-3)
++ * CRC32 (4)
++ * Index (8-20)
++ * Stream Footer (12)
++ *
++ * Normally there is exactly one Block, but let's assume that there are
++ * 2-4 Blocks just in case. Because Stream Header and also Block Header
++ * of the first Block don't make the decompressor produce any uncompressed
++ * data, we can ignore them from our calculations. Block Headers of possible
++ * additional Blocks have to be taken into account still. With these
++ * assumptions, it is safe to assume that the total header overhead is
++ * less than 128 bytes.
++ *
++ * Compressed Data contains LZMA2 or BCJ+LZMA2 encoded data. Since BCJ
++ * doesn't change the size of the data, it is enough to calculate the
++ * safety margin for LZMA2.
++ *
++ * LZMA2 stores the data in chunks. Each chunk has a header whose size is
++ * a maximum of 6 bytes, but to get round 2^n numbers, let's assume that
++ * the maximum chunk header size is 8 bytes. After the chunk header, there
++ * may be up to 64 KiB of actual payload in the chunk. Often the payload is
++ * quite a bit smaller though; to be safe, let's assume that an average
++ * chunk has only 32 KiB of payload.
++ *
++ * The maximum uncompressed size of the payload is 2 MiB. The minimum
++ * uncompressed size of the payload is in practice never less than the
++ * payload size itself. The LZMA2 format would allow uncompressed size
++ * to be less than the payload size, but no sane compressor creates such
++ * files. LZMA2 supports storing uncompressible data in uncompressed form,
++ * so there's never a need to create payloads whose uncompressed size is
++ * smaller than the compressed size.
++ *
++ * The assumption, that the uncompressed size of the payload is never
++ * smaller than the payload itself, is valid only when talking about
++ * the payload as a whole. It is possible that the payload has parts where
++ * the decompressor consumes more input than it produces output. Calculating
++ * the worst case for this would be tricky. Instead of trying to do that,
++ * let's simply make sure that the decompressor never overwrites any bytes
++ * of the payload which it is currently reading.
++ *
++ * Now we have enough information to calculate the safety margin. We need
++ * - 128 bytes for the .xz file format headers;
++ * - 8 bytes per every 32 KiB of uncompressed size (one LZMA2 chunk header
++ * per chunk, each chunk having average payload size of 32 KiB); and
++ * - 64 KiB (biggest possible LZMA2 chunk payload size) to make sure that
++ * the decompressor never overwrites anything from the LZMA2 chunk
++ * payload it is currently reading.
++ *
++ * We get the following formula:
++ *
++ * safety_margin = 128 + uncompressed_size * 8 / 32768 + 65536
++ * = 128 + (uncompressed_size >> 12) + 65536
++ *
++ * For comparision, according to arch/x86/boot/compressed/misc.c, the
++ * equivalent formula for Deflate is this:
++ *
++ * safety_margin = 18 + (uncompressed_size >> 12) + 32768
++ *
++ * Thus, when updating Deflate-only in-place kernel decompressor to
++ * support XZ, the fixed overhead has to be increased from 18+32768 bytes
++ * to 128+65536 bytes.
++ */
++
++#include "decompress.h"
++
++#define XZ_EXTERN STATIC
++
++/*
++ * For boot time use, we enable only the BCJ filter of the current
++ * architecture or none if no BCJ filter is available for the architecture.
++ */
++#ifdef CONFIG_X86
++# define XZ_DEC_X86
++#endif
++#ifdef CONFIG_PPC
++# define XZ_DEC_POWERPC
++#endif
++#ifdef CONFIG_ARM
++# define XZ_DEC_ARM
++#endif
++#ifdef CONFIG_IA64
++# define XZ_DEC_IA64
++#endif
++#ifdef CONFIG_SPARC
++# define XZ_DEC_SPARC
++#endif
++
++/*
++ * This will get the basic headers so that memeq() and others
++ * can be defined.
++ */
++#include "xz/private.h"
++
++/*
++ * memeq and memzero are not used much and any remotely sane implementation
++ * is fast enough. memcpy/memmove speed matters in multi-call mode, but
++ * the kernel image is decompressed in single-call mode, in which only
++ * memcpy speed can matter and only if there is a lot of uncompressible data
++ * (LZMA2 stores uncompressible chunks in uncompressed form). Thus, the
++ * functions below should just be kept small; it's probably not worth
++ * optimizing for speed.
++ */
++
++#ifndef memeq
++#define memeq(p1, p2, sz) (memcmp(p1, p2, sz) == 0)
++#endif
++
++#ifndef memzero
++#define memzero(p, sz) memset(p, 0, sz)
++#endif
++
++#include "xz/crc32.c"
++#include "xz/dec_stream.c"
++#include "xz/dec_lzma2.c"
++#include "xz/dec_bcj.c"
++
++/* Size of the input and output buffers in multi-call mode */
++#define XZ_IOBUF_SIZE 4096
++
++/*
++ * This function implements the API defined in <linux/decompress/generic.h>.
++ *
++ * This wrapper will automatically choose single-call or multi-call mode
++ * of the native XZ decoder API. The single-call mode can be used only when
++ * both input and output buffers are available as a single chunk, i.e. when
++ * fill() and flush() won't be used.
++ */
++STATIC int INIT unxz(unsigned char *in, unsigned int in_size,
++ int (*fill)(void *dest, unsigned int size),
++ int (*flush)(void *src, unsigned int size),
++ unsigned char *out, unsigned int *in_used,
++ void (*error_fn)(const char *x))
++{
++ struct xz_buf b;
++ struct xz_dec *s;
++ enum xz_ret ret;
++ bool_t must_free_in = false;
++
++ set_error_fn(error_fn);
++
++ xz_crc32_init();
++
++ if (in_used != NULL)
++ *in_used = 0;
++
++ if (fill == NULL && flush == NULL)
++ s = xz_dec_init(XZ_SINGLE, 0);
++ else
++ s = xz_dec_init(XZ_DYNALLOC, (uint32_t)-1);
++
++ if (s == NULL)
++ goto error_alloc_state;
++
++ if (flush == NULL) {
++ b.out = out;
++ b.out_size = (size_t)-1;
++ } else {
++ b.out_size = XZ_IOBUF_SIZE;
++ b.out = malloc(XZ_IOBUF_SIZE);
++ if (b.out == NULL)
++ goto error_alloc_out;
++ }
++
++ if (in == NULL) {
++ must_free_in = true;
++ in = malloc(XZ_IOBUF_SIZE);
++ if (in == NULL)
++ goto error_alloc_in;
++ }
++
++ b.in = in;
++ b.in_pos = 0;
++ b.in_size = in_size;
++ b.out_pos = 0;
++
++ if (fill == NULL && flush == NULL) {
++ ret = xz_dec_run(s, &b);
++ } else {
++ do {
++ if (b.in_pos == b.in_size && fill != NULL) {
++ if (in_used != NULL)
++ *in_used += b.in_pos;
++
++ b.in_pos = 0;
++
++ in_size = fill(in, XZ_IOBUF_SIZE);
++ if (in_size < 0) {
++ /*
++ * This isn't an optimal error code
++ * but it probably isn't worth making
++ * a new one either.
++ */
++ ret = XZ_BUF_ERROR;
++ break;
++ }
++
++ b.in_size = in_size;
++ }
++
++ ret = xz_dec_run(s, &b);
++
++ if (flush != NULL && (b.out_pos == b.out_size
++ || (ret != XZ_OK && b.out_pos > 0))) {
++ /*
++ * Setting ret here may hide an error
++ * returned by xz_dec_run(), but probably
++ * it's not too bad.
++ */
++ if (flush(b.out, b.out_pos) != (int)b.out_pos)
++ ret = XZ_BUF_ERROR;
++
++ b.out_pos = 0;
++ }
++ } while (ret == XZ_OK);
++
++ if (must_free_in)
++ free(in);
++
++ if (flush != NULL)
++ free(b.out);
++ }
++
++ if (in_used != NULL)
++ *in_used += b.in_pos;
++
++ xz_dec_end(s);
++
++ switch (ret) {
++ case XZ_STREAM_END:
++ return 0;
++
++ case XZ_MEM_ERROR:
++ /* This can occur only in multi-call mode. */
++ error("XZ decompressor ran out of memory");
++ break;
++
++ case XZ_FORMAT_ERROR:
++ error("Input is not in the XZ format (wrong magic bytes)");
++ break;
++
++ case XZ_OPTIONS_ERROR:
++ error("Input was encoded with settings that are not "
++ "supported by this XZ decoder");
++ break;
++
++ case XZ_DATA_ERROR:
++ case XZ_BUF_ERROR:
++ error("XZ-compressed data is corrupt");
++ break;
++
++ default:
++ error("Bug in the XZ decompressor");
++ break;
++ }
++
++ return -1;
++
++error_alloc_in:
++ if (flush != NULL)
++ free(b.out);
++
++error_alloc_out:
++ xz_dec_end(s);
++
++error_alloc_state:
++ error("XZ decompressor ran out of memory");
++ return -1;
++}
++
++/*
++ * This macro is used by architecture-specific files to decompress
++ * the kernel image.
++ */
++#define decompress unxz
+diff --git a/xen/common/xz/crc32.c b/xen/common/xz/crc32.c
+new file mode 100644
+--- /dev/null
++++ b/xen/common/xz/crc32.c
+@@ -0,0 +1,51 @@
++/*
++ * CRC32 using the polynomial from IEEE-802.3
++ *
++ * Authors: Lasse Collin <lasse.collin@tukaani.org>
++ * Igor Pavlov <http://7-zip.org/>
++ *
++ * This file has been put into the public domain.
++ * You can do whatever you want with this file.
++ */
++
++/*
++ * This is not the fastest implementation, but it is pretty compact.
++ * The fastest versions of xz_crc32() on modern CPUs without hardware
++ * accelerated CRC instruction are 3-5 times as fast as this version,
++ * but they are bigger and use more memory for the lookup table.
++ */
++
++#include "private.h"
++
++XZ_EXTERN uint32_t INITDATA xz_crc32_table[256];
++
++XZ_EXTERN void INIT xz_crc32_init(void)
++{
++ const uint32_t poly = 0xEDB88320;
++
++ uint32_t i;
++ uint32_t j;
++ uint32_t r;
++
++ for (i = 0; i < 256; ++i) {
++ r = i;
++ for (j = 0; j < 8; ++j)
++ r = (r >> 1) ^ (poly & ~((r & 1) - 1));
++
++ xz_crc32_table[i] = r;
++ }
++
++ return;
++}
++
++XZ_EXTERN uint32_t INIT xz_crc32(const uint8_t *buf, size_t size, uint32_t crc)
++{
++ crc = ~crc;
++
++ while (size != 0) {
++ crc = xz_crc32_table[*buf++ ^ (crc & 0xFF)] ^ (crc >> 8);
++ --size;
++ }
++
++ return ~crc;
++}
+diff --git a/xen/common/xz/dec_bcj.c b/xen/common/xz/dec_bcj.c
+new file mode 100644
+--- /dev/null
++++ b/xen/common/xz/dec_bcj.c
+@@ -0,0 +1,562 @@
++/*
++ * Branch/Call/Jump (BCJ) filter decoders
++ *
++ * Authors: Lasse Collin <lasse.collin@tukaani.org>
++ * Igor Pavlov <http://7-zip.org/>
++ *
++ * This file has been put into the public domain.
++ * You can do whatever you want with this file.
++ */
++
++#include "private.h"
++
++/*
++ * The rest of the file is inside this ifdef. It makes things a little more
++ * convenient when building without support for any BCJ filters.
++ */
++#ifdef XZ_DEC_BCJ
++
++struct xz_dec_bcj {
++ /* Type of the BCJ filter being used */
++ enum {
++ BCJ_X86 = 4, /* x86 or x86-64 */
++ BCJ_POWERPC = 5, /* Big endian only */
++ BCJ_IA64 = 6, /* Big or little endian */
++ BCJ_ARM = 7, /* Little endian only */
++ BCJ_ARMTHUMB = 8, /* Little endian only */
++ BCJ_SPARC = 9 /* Big or little endian */
++ } type;
++
++ /*
++ * Return value of the next filter in the chain. We need to preserve
++ * this information across calls, because we must not call the next
++ * filter anymore once it has returned XZ_STREAM_END.
++ */
++ enum xz_ret ret;
++
++ /* True if we are operating in single-call mode. */
++ bool_t single_call;
++
++ /*
++ * Absolute position relative to the beginning of the uncompressed
++ * data (in a single .xz Block). We care only about the lowest 32
++ * bits so this doesn't need to be uint64_t even with big files.
++ */
++ uint32_t pos;
++
++ /* x86 filter state */
++ uint32_t x86_prev_mask;
++
++ /* Temporary space to hold the variables from struct xz_buf */
++ uint8_t *out;
++ size_t out_pos;
++ size_t out_size;
++
++ struct {
++ /* Amount of already filtered data in the beginning of buf */
++ size_t filtered;
++
++ /* Total amount of data currently stored in buf */
++ size_t size;
++
++ /*
++ * Buffer to hold a mix of filtered and unfiltered data. This
++ * needs to be big enough to hold Alignment + 2 * Look-ahead:
++ *
++ * Type Alignment Look-ahead
++ * x86 1 4
++ * PowerPC 4 0
++ * IA-64 16 0
++ * ARM 4 0
++ * ARM-Thumb 2 2
++ * SPARC 4 0
++ */
++ uint8_t buf[16];
++ } temp;
++};
++
++#ifdef XZ_DEC_X86
++/*
++ * This is used to test the most significant byte of a memory address
++ * in an x86 instruction.
++ */
++static inline int INIT bcj_x86_test_msbyte(uint8_t b)
++{
++ return b == 0x00 || b == 0xFF;
++}
++
++static size_t INIT bcj_x86(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
++{
++ static /*const*/ bool_t INITDATA mask_to_allowed_status[8]
++ = { true, true, true, false, true, false, false, false };
++
++ static /*const*/ uint8_t INITDATA mask_to_bit_num[8]
++ = { 0, 1, 2, 2, 3, 3, 3, 3 };
++
++ size_t i;
++ size_t prev_pos = (size_t)-1;
++ uint32_t prev_mask = s->x86_prev_mask;
++ uint32_t src;
++ uint32_t dest;
++ uint32_t j;
++ uint8_t b;
++
++ if (size <= 4)
++ return 0;
++
++ size -= 4;
++ for (i = 0; i < size; ++i) {
++ if ((buf[i] & 0xFE) != 0xE8)
++ continue;
++
++ prev_pos = i - prev_pos;
++ if (prev_pos > 3) {
++ prev_mask = 0;
++ } else {
++ prev_mask = (prev_mask << (prev_pos - 1)) & 7;
++ if (prev_mask != 0) {
++ b = buf[i + 4 - mask_to_bit_num[prev_mask]];
++ if (!mask_to_allowed_status[prev_mask]
++ || bcj_x86_test_msbyte(b)) {
++ prev_pos = i;
++ prev_mask = (prev_mask << 1) | 1;
++ continue;
++ }
++ }
++ }
++
++ prev_pos = i;
++
++ if (bcj_x86_test_msbyte(buf[i + 4])) {
++ src = get_unaligned_le32(buf + i + 1);
++ while (true) {
++ dest = src - (s->pos + (uint32_t)i + 5);
++ if (prev_mask == 0)
++ break;
++
++ j = mask_to_bit_num[prev_mask] * 8;
++ b = (uint8_t)(dest >> (24 - j));
++ if (!bcj_x86_test_msbyte(b))
++ break;
++
++ src = dest ^ (((uint32_t)1 << (32 - j)) - 1);
++ }
++
++ dest &= 0x01FFFFFF;
++ dest |= (uint32_t)0 - (dest & 0x01000000);
++ put_unaligned_le32(dest, buf + i + 1);
++ i += 4;
++ } else {
++ prev_mask = (prev_mask << 1) | 1;
++ }
++ }
++
++ prev_pos = i - prev_pos;
++ s->x86_prev_mask = prev_pos > 3 ? 0 : prev_mask << (prev_pos - 1);
++ return i;
++}
++#endif
++
++#ifdef XZ_DEC_POWERPC
++static size_t INIT bcj_powerpc(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
++{
++ size_t i;
++ uint32_t instr;
++
++ for (i = 0; i + 4 <= size; i += 4) {
++ instr = get_unaligned_be32(buf + i);
++ if ((instr & 0xFC000003) == 0x48000001) {
++ instr &= 0x03FFFFFC;
++ instr -= s->pos + (uint32_t)i;
++ instr &= 0x03FFFFFC;
++ instr |= 0x48000001;
++ put_unaligned_be32(instr, buf + i);
++ }
++ }
++
++ return i;
++}
++#endif
++
++#ifdef XZ_DEC_IA64
++static size_t INIT bcj_ia64(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
++{
++ static const uint8_t branch_table[32] = {
++ 0, 0, 0, 0, 0, 0, 0, 0,
++ 0, 0, 0, 0, 0, 0, 0, 0,
++ 4, 4, 6, 6, 0, 0, 7, 7,
++ 4, 4, 0, 0, 4, 4, 0, 0
++ };
++
++ /*
++ * The local variables take a little bit stack space, but it's less
++ * than what LZMA2 decoder takes, so it doesn't make sense to reduce
++ * stack usage here without doing that for the LZMA2 decoder too.
++ */
++
++ /* Loop counters */
++ size_t i;
++ size_t j;
++
++ /* Instruction slot (0, 1, or 2) in the 128-bit instruction word */
++ uint32_t slot;
++
++ /* Bitwise offset of the instruction indicated by slot */
++ uint32_t bit_pos;
++
++ /* bit_pos split into byte and bit parts */
++ uint32_t byte_pos;
++ uint32_t bit_res;
++
++ /* Address part of an instruction */
++ uint32_t addr;
++
++ /* Mask used to detect which instructions to convert */
++ uint32_t mask;
++
++ /* 41-bit instruction stored somewhere in the lowest 48 bits */
++ uint64_t instr;
++
++ /* Instruction normalized with bit_res for easier manipulation */
++ uint64_t norm;
++
++ for (i = 0; i + 16 <= size; i += 16) {
++ mask = branch_table[buf[i] & 0x1F];
++ for (slot = 0, bit_pos = 5; slot < 3; ++slot, bit_pos += 41) {
++ if (((mask >> slot) & 1) == 0)
++ continue;
++
++ byte_pos = bit_pos >> 3;
++ bit_res = bit_pos & 7;
++ instr = 0;
++ for (j = 0; j < 6; ++j)
++ instr |= (uint64_t)(buf[i + j + byte_pos])
++ << (8 * j);
++
++ norm = instr >> bit_res;
++
++ if (((norm >> 37) & 0x0F) == 0x05
++ && ((norm >> 9) & 0x07) == 0) {
++ addr = (norm >> 13) & 0x0FFFFF;
++ addr |= ((uint32_t)(norm >> 36) & 1) << 20;
++ addr <<= 4;
++ addr -= s->pos + (uint32_t)i;
++ addr >>= 4;
++
++ norm &= ~((uint64_t)0x8FFFFF << 13);
++ norm |= (uint64_t)(addr & 0x0FFFFF) << 13;
++ norm |= (uint64_t)(addr & 0x100000)
++ << (36 - 20);
++
++ instr &= (1 << bit_res) - 1;
++ instr |= norm << bit_res;
++
++ for (j = 0; j < 6; j++)
++ buf[i + j + byte_pos]
++ = (uint8_t)(instr >> (8 * j));
++ }
++ }
++ }
++
++ return i;
++}
++#endif
++
++#ifdef XZ_DEC_ARM
++static size_t INIT bcj_arm(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
++{
++ size_t i;
++ uint32_t addr;
++
++ for (i = 0; i + 4 <= size; i += 4) {
++ if (buf[i + 3] == 0xEB) {
++ addr = (uint32_t)buf[i] | ((uint32_t)buf[i + 1] << 8)
++ | ((uint32_t)buf[i + 2] << 16);
++ addr <<= 2;
++ addr -= s->pos + (uint32_t)i + 8;
++ addr >>= 2;
++ buf[i] = (uint8_t)addr;
++ buf[i + 1] = (uint8_t)(addr >> 8);
++ buf[i + 2] = (uint8_t)(addr >> 16);
++ }
++ }
++
++ return i;
++}
++#endif
++
++#ifdef XZ_DEC_ARMTHUMB
++static size_t INIT bcj_armthumb(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
++{
++ size_t i;
++ uint32_t addr;
++
++ for (i = 0; i + 4 <= size; i += 2) {
++ if ((buf[i + 1] & 0xF8) == 0xF0
++ && (buf[i + 3] & 0xF8) == 0xF8) {
++ addr = (((uint32_t)buf[i + 1] & 0x07) << 19)
++ | ((uint32_t)buf[i] << 11)
++ | (((uint32_t)buf[i + 3] & 0x07) << 8)
++ | (uint32_t)buf[i + 2];
++ addr <<= 1;
++ addr -= s->pos + (uint32_t)i + 4;
++ addr >>= 1;
++ buf[i + 1] = (uint8_t)(0xF0 | ((addr >> 19) & 0x07));
++ buf[i] = (uint8_t)(addr >> 11);
++ buf[i + 3] = (uint8_t)(0xF8 | ((addr >> 8) & 0x07));
++ buf[i + 2] = (uint8_t)addr;
++ i += 2;
++ }
++ }
++
++ return i;
++}
++#endif
++
++#ifdef XZ_DEC_SPARC
++static size_t INIT bcj_sparc(struct xz_dec_bcj *s, uint8_t *buf, size_t size)
++{
++ size_t i;
++ uint32_t instr;
++
++ for (i = 0; i + 4 <= size; i += 4) {
++ instr = get_unaligned_be32(buf + i);
++ if ((instr >> 22) == 0x100 || (instr >> 22) == 0x1FF) {
++ instr <<= 2;
++ instr -= s->pos + (uint32_t)i;
++ instr >>= 2;
++ instr = ((uint32_t)0x40000000 - (instr & 0x400000))
++ | 0x40000000 | (instr & 0x3FFFFF);
++ put_unaligned_be32(instr, buf + i);
++ }
++ }
++
++ return i;
++}
++#endif
++
++/*
++ * Apply the selected BCJ filter. Update *pos and s->pos to match the amount
++ * of data that got filtered.
++ *
++ * NOTE: This is implemented as a switch statement to avoid using function
++ * pointers, which could be problematic in the kernel boot code, which must
++ * avoid pointers to static data (at least on x86).
++ */
++static void INIT bcj_apply(struct xz_dec_bcj *s,
++ uint8_t *buf, size_t *pos, size_t size)
++{
++ size_t filtered;
++
++ buf += *pos;
++ size -= *pos;
++
++ switch (s->type) {
++#ifdef XZ_DEC_X86
++ case BCJ_X86:
++ filtered = bcj_x86(s, buf, size);
++ break;
++#endif
++#ifdef XZ_DEC_POWERPC
++ case BCJ_POWERPC:
++ filtered = bcj_powerpc(s, buf, size);
++ break;
++#endif
++#ifdef XZ_DEC_IA64
++ case BCJ_IA64:
++ filtered = bcj_ia64(s, buf, size);
++ break;
++#endif
++#ifdef XZ_DEC_ARM
++ case BCJ_ARM:
++ filtered = bcj_arm(s, buf, size);
++ break;
++#endif
++#ifdef XZ_DEC_ARMTHUMB
++ case BCJ_ARMTHUMB:
++ filtered = bcj_armthumb(s, buf, size);
++ break;
++#endif
++#ifdef XZ_DEC_SPARC
++ case BCJ_SPARC:
++ filtered = bcj_sparc(s, buf, size);
++ break;
++#endif
++ default:
++ /* Never reached but silence compiler warnings. */
++ filtered = 0;
++ break;
++ }
++
++ *pos += filtered;
++ s->pos += filtered;
++}
++
++/*
++ * Flush pending filtered data from temp to the output buffer.
++ * Move the remaining mixture of possibly filtered and unfiltered
++ * data to the beginning of temp.
++ */
++static void INIT bcj_flush(struct xz_dec_bcj *s, struct xz_buf *b)
++{
++ size_t copy_size;
++
++ copy_size = min_t(size_t, s->temp.filtered, b->out_size - b->out_pos);
++ memcpy(b->out + b->out_pos, s->temp.buf, copy_size);
++ b->out_pos += copy_size;
++
++ s->temp.filtered -= copy_size;
++ s->temp.size -= copy_size;
++ memmove(s->temp.buf, s->temp.buf + copy_size, s->temp.size);
++}
++
++/*
++ * The BCJ filter functions are primitive in sense that they process the
++ * data in chunks of 1-16 bytes. To hide this issue, this function does
++ * some buffering.
++ */
++XZ_EXTERN enum xz_ret INIT xz_dec_bcj_run(struct xz_dec_bcj *s,
++ struct xz_dec_lzma2 *lzma2,
++ struct xz_buf *b)
++{
++ size_t out_start;
++
++ /*
++ * Flush pending already filtered data to the output buffer. Return
++ * immediatelly if we couldn't flush everything, or if the next
++ * filter in the chain had already returned XZ_STREAM_END.
++ */
++ if (s->temp.filtered > 0) {
++ bcj_flush(s, b);
++ if (s->temp.filtered > 0)
++ return XZ_OK;
++
++ if (s->ret == XZ_STREAM_END)
++ return XZ_STREAM_END;
++ }
++
++ /*
++ * If we have more output space than what is currently pending in
++ * temp, copy the unfiltered data from temp to the output buffer
++ * and try to fill the output buffer by decoding more data from the
++ * next filter in the chain. Apply the BCJ filter on the new data
++ * in the output buffer. If everything cannot be filtered, copy it
++ * to temp and rewind the output buffer position accordingly.
++ */
++ if (s->temp.size < b->out_size - b->out_pos) {
++ out_start = b->out_pos;
++ memcpy(b->out + b->out_pos, s->temp.buf, s->temp.size);
++ b->out_pos += s->temp.size;
++
++ s->ret = xz_dec_lzma2_run(lzma2, b);
++ if (s->ret != XZ_STREAM_END
++ && (s->ret != XZ_OK || s->single_call))
++ return s->ret;
++
++ bcj_apply(s, b->out, &out_start, b->out_pos);
++
++ /*
++ * As an exception, if the next filter returned XZ_STREAM_END,
++ * we can do that too, since the last few bytes that remain
++ * unfiltered are meant to remain unfiltered.
++ */
++ if (s->ret == XZ_STREAM_END)
++ return XZ_STREAM_END;
++
++ s->temp.size = b->out_pos - out_start;
++ b->out_pos -= s->temp.size;
++ memcpy(s->temp.buf, b->out + b->out_pos, s->temp.size);
++ }
++
++ /*
++ * If we have unfiltered data in temp, try to fill by decoding more
++ * data from the next filter. Apply the BCJ filter on temp. Then we
++ * hopefully can fill the actual output buffer by copying filtered
++ * data from temp. A mix of filtered and unfiltered data may be left
++ * in temp; it will be taken care on the next call to this function.
++ */
++ if (s->temp.size > 0) {
++ /* Make b->out{,_pos,_size} temporarily point to s->temp. */
++ s->out = b->out;
++ s->out_pos = b->out_pos;
++ s->out_size = b->out_size;
++ b->out = s->temp.buf;
++ b->out_pos = s->temp.size;
++ b->out_size = sizeof(s->temp.buf);
++
++ s->ret = xz_dec_lzma2_run(lzma2, b);
++
++ s->temp.size = b->out_pos;
++ b->out = s->out;
++ b->out_pos = s->out_pos;
++ b->out_size = s->out_size;
++
++ if (s->ret != XZ_OK && s->ret != XZ_STREAM_END)
++ return s->ret;
++
++ bcj_apply(s, s->temp.buf, &s->temp.filtered, s->temp.size);
++
++ /*
++ * If the next filter returned XZ_STREAM_END, we mark that
++ * everything is filtered, since the last unfiltered bytes
++ * of the stream are meant to be left as is.
++ */
++ if (s->ret == XZ_STREAM_END)
++ s->temp.filtered = s->temp.size;
++
++ bcj_flush(s, b);
++ if (s->temp.filtered > 0)
++ return XZ_OK;
++ }
++
++ return s->ret;
++}
++
++XZ_EXTERN struct xz_dec_bcj *INIT xz_dec_bcj_create(bool_t single_call)
++{
++ struct xz_dec_bcj *s = malloc(sizeof(*s));
++ if (s != NULL)
++ s->single_call = single_call;
++
++ return s;
++}
++
++XZ_EXTERN enum xz_ret INIT xz_dec_bcj_reset(struct xz_dec_bcj *s, uint8_t id)
++{
++ switch (id) {
++#ifdef XZ_DEC_X86
++ case BCJ_X86:
++#endif
++#ifdef XZ_DEC_POWERPC
++ case BCJ_POWERPC:
++#endif
++#ifdef XZ_DEC_IA64
++ case BCJ_IA64:
++#endif
++#ifdef XZ_DEC_ARM
++ case BCJ_ARM:
++#endif
++#ifdef XZ_DEC_ARMTHUMB
++ case BCJ_ARMTHUMB:
++#endif
++#ifdef XZ_DEC_SPARC
++ case BCJ_SPARC:
++#endif
++ break;
++
++ default:
++ /* Unsupported Filter ID */
++ return XZ_OPTIONS_ERROR;
++ }
++
++ s->type = id;
++ s->ret = XZ_OK;
++ s->pos = 0;
++ s->x86_prev_mask = 0;
++ s->temp.filtered = 0;
++ s->temp.size = 0;
++
++ return XZ_OK;
++}
++
++#endif
+diff --git a/xen/common/xz/dec_lzma2.c b/xen/common/xz/dec_lzma2.c
+new file mode 100644
+--- /dev/null
++++ b/xen/common/xz/dec_lzma2.c
+@@ -0,0 +1,1171 @@
++/*
++ * LZMA2 decoder
++ *
++ * Authors: Lasse Collin <lasse.collin@tukaani.org>
++ * Igor Pavlov <http://7-zip.org/>
++ *
++ * This file has been put into the public domain.
++ * You can do whatever you want with this file.
++ */
++
++#include "private.h"
++#include "lzma2.h"
++
++/*
++ * Range decoder initialization eats the first five bytes of each LZMA chunk.
++ */
++#define RC_INIT_BYTES 5
++
++/*
++ * Minimum number of usable input buffer to safely decode one LZMA symbol.
++ * The worst case is that we decode 22 bits using probabilities and 26
++ * direct bits. This may decode at maximum of 20 bytes of input. However,
++ * lzma_main() does an extra normalization before returning, thus we
++ * need to put 21 here.
++ */
++#define LZMA_IN_REQUIRED 21
++
++/*
++ * Dictionary (history buffer)
++ *
++ * These are always true:
++ * start <= pos <= full <= end
++ * pos <= limit <= end
++ *
++ * In multi-call mode, also these are true:
++ * end == size
++ * size <= size_max
++ * allocated <= size
++ *
++ * Most of these variables are size_t to support single-call mode,
++ * in which the dictionary variables address the actual output
++ * buffer directly.
++ */
++struct dictionary {
++ /* Beginning of the history buffer */
++ uint8_t *buf;
++
++ /* Old position in buf (before decoding more data) */
++ size_t start;
++
++ /* Position in buf */
++ size_t pos;
++
++ /*
++ * How full dictionary is. This is used to detect corrupt input that
++ * would read beyond the beginning of the uncompressed stream.
++ */
++ size_t full;
++
++ /* Write limit; we don't write to buf[limit] or later bytes. */
++ size_t limit;
++
++ /*
++ * End of the dictionary buffer. In multi-call mode, this is
++ * the same as the dictionary size. In single-call mode, this
++ * indicates the size of the output buffer.
++ */
++ size_t end;
++
++ /*
++ * Size of the dictionary as specified in Block Header. This is used
++ * together with "full" to detect corrupt input that would make us
++ * read beyond the beginning of the uncompressed stream.
++ */
++ uint32_t size;
++
++ /*
++ * Maximum allowed dictionary size in multi-call mode.
++ * This is ignored in single-call mode.
++ */
++ uint32_t size_max;
++
++ /*
++ * Amount of memory currently allocated for the dictionary.
++ * This is used only with XZ_DYNALLOC. (With XZ_PREALLOC,
++ * size_max is always the same as the allocated size.)
++ */
++ uint32_t allocated;
++
++ /* Operation mode */
++ enum xz_mode mode;
++};
++
++/* Range decoder */
++struct rc_dec {
++ uint32_t range;
++ uint32_t code;
++
++ /*
++ * Number of initializing bytes remaining to be read
++ * by rc_read_init().
++ */
++ uint32_t init_bytes_left;
++
++ /*
++ * Buffer from which we read our input. It can be either
++ * temp.buf or the caller-provided input buffer.
++ */
++ const uint8_t *in;
++ size_t in_pos;
++ size_t in_limit;
++};
++
++/* Probabilities for a length decoder. */
++struct lzma_len_dec {
++ /* Probability of match length being at least 10 */
++ uint16_t choice;
++
++ /* Probability of match length being at least 18 */
++ uint16_t choice2;
++
++ /* Probabilities for match lengths 2-9 */
++ uint16_t low[POS_STATES_MAX][LEN_LOW_SYMBOLS];
++
++ /* Probabilities for match lengths 10-17 */
++ uint16_t mid[POS_STATES_MAX][LEN_MID_SYMBOLS];
++
++ /* Probabilities for match lengths 18-273 */
++ uint16_t high[LEN_HIGH_SYMBOLS];
++};
++
++struct lzma_dec {
++ /* Distances of latest four matches */
++ uint32_t rep0;
++ uint32_t rep1;
++ uint32_t rep2;
++ uint32_t rep3;
++
++ /* Types of the most recently seen LZMA symbols */
++ enum lzma_state state;
++
++ /*
++ * Length of a match. This is updated so that dict_repeat can
++ * be called again to finish repeating the whole match.
++ */
++ uint32_t len;
++
++ /*
++ * LZMA properties or related bit masks (number of literal
++ * context bits, a mask dervied from the number of literal
++ * position bits, and a mask dervied from the number
++ * position bits)
++ */
++ uint32_t lc;
++ uint32_t literal_pos_mask; /* (1 << lp) - 1 */
++ uint32_t pos_mask; /* (1 << pb) - 1 */
++
++ /* If 1, it's a match. Otherwise it's a single 8-bit literal. */
++ uint16_t is_match[STATES][POS_STATES_MAX];
++
++ /* If 1, it's a repeated match. The distance is one of rep0 .. rep3. */
++ uint16_t is_rep[STATES];
++
++ /*
++ * If 0, distance of a repeated match is rep0.
++ * Otherwise check is_rep1.
++ */
++ uint16_t is_rep0[STATES];
++
++ /*
++ * If 0, distance of a repeated match is rep1.
++ * Otherwise check is_rep2.
++ */
++ uint16_t is_rep1[STATES];
++
++ /* If 0, distance of a repeated match is rep2. Otherwise it is rep3. */
++ uint16_t is_rep2[STATES];
++
++ /*
++ * If 1, the repeated match has length of one byte. Otherwise
++ * the length is decoded from rep_len_decoder.
++ */
++ uint16_t is_rep0_long[STATES][POS_STATES_MAX];
++
++ /*
++ * Probability tree for the highest two bits of the match
++ * distance. There is a separate probability tree for match
++ * lengths of 2 (i.e. MATCH_LEN_MIN), 3, 4, and [5, 273].
++ */
++ uint16_t dist_slot[DIST_STATES][DIST_SLOTS];
++
++ /*
++ * Probility trees for additional bits for match distance
++ * when the distance is in the range [4, 127].
++ */
++ uint16_t dist_special[FULL_DISTANCES - DIST_MODEL_END];
++
++ /*
++ * Probability tree for the lowest four bits of a match
++ * distance that is equal to or greater than 128.
++ */
++ uint16_t dist_align[ALIGN_SIZE];
++
++ /* Length of a normal match */
++ struct lzma_len_dec match_len_dec;
++
++ /* Length of a repeated match */
++ struct lzma_len_dec rep_len_dec;
++
++ /* Probabilities of literals */
++ uint16_t literal[LITERAL_CODERS_MAX][LITERAL_CODER_SIZE];
++};
++
++struct lzma2_dec {
++ /* Position in xz_dec_lzma2_run(). */
++ enum lzma2_seq {
++ SEQ_CONTROL,
++ SEQ_UNCOMPRESSED_1,
++ SEQ_UNCOMPRESSED_2,
++ SEQ_COMPRESSED_0,
++ SEQ_COMPRESSED_1,
++ SEQ_PROPERTIES,
++ SEQ_LZMA_PREPARE,
++ SEQ_LZMA_RUN,
++ SEQ_COPY
++ } sequence;
++
++ /* Next position after decoding the compressed size of the chunk. */
++ enum lzma2_seq next_sequence;
++
++ /* Uncompressed size of LZMA chunk (2 MiB at maximum) */
++ uint32_t uncompressed;
++
++ /*
++ * Compressed size of LZMA chunk or compressed/uncompressed
++ * size of uncompressed chunk (64 KiB at maximum)
++ */
++ uint32_t compressed;
++
++ /*
++ * True if dictionary reset is needed. This is false before
++ * the first chunk (LZMA or uncompressed).
++ */
++ bool_t need_dict_reset;
++
++ /*
++ * True if new LZMA properties are needed. This is false
++ * before the first LZMA chunk.
++ */
++ bool_t need_props;
++};
++
++struct xz_dec_lzma2 {
++ /*
++ * The order below is important on x86 to reduce code size and
++ * it shouldn't hurt on other platforms. Everything up to and
++ * including lzma.pos_mask are in the first 128 bytes on x86-32,
++ * which allows using smaller instructions to access those
++ * variables. On x86-64, fewer variables fit into the first 128
++ * bytes, but this is still the best order without sacrificing
++ * the readability by splitting the structures.
++ */
++ struct rc_dec rc;
++ struct dictionary dict;
++ struct lzma2_dec lzma2;
++ struct lzma_dec lzma;
++
++ /*
++ * Temporary buffer which holds small number of input bytes between
++ * decoder calls. See lzma2_lzma() for details.
++ */
++ struct {
++ uint32_t size;
++ uint8_t buf[3 * LZMA_IN_REQUIRED];
++ } temp;
++};
++
++/**************
++ * Dictionary *
++ **************/
++
++/*
++ * Reset the dictionary state. When in single-call mode, set up the beginning
++ * of the dictionary to point to the actual output buffer.
++ */
++static void INIT dict_reset(struct dictionary *dict, struct xz_buf *b)
++{
++ if (DEC_IS_SINGLE(dict->mode)) {
++ dict->buf = b->out + b->out_pos;
++ dict->end = b->out_size - b->out_pos;
++ }
++
++ dict->start = 0;
++ dict->pos = 0;
++ dict->limit = 0;
++ dict->full = 0;
++}
++
++/* Set dictionary write limit */
++static void INIT dict_limit(struct dictionary *dict, size_t out_max)
++{
++ if (dict->end - dict->pos <= out_max)
++ dict->limit = dict->end;
++ else
++ dict->limit = dict->pos + out_max;
++}
++
++/* Return true if at least one byte can be written into the dictionary. */
++static inline bool_t INIT dict_has_space(const struct dictionary *dict)
++{
++ return dict->pos < dict->limit;
++}
++
++/*
++ * Get a byte from the dictionary at the given distance. The distance is
++ * assumed to valid, or as a special case, zero when the dictionary is
++ * still empty. This special case is needed for single-call decoding to
++ * avoid writing a '\0' to the end of the destination buffer.
++ */
++static inline uint32_t INIT dict_get(const struct dictionary *dict, uint32_t dist)
++{
++ size_t offset = dict->pos - dist - 1;
++
++ if (dist >= dict->pos)
++ offset += dict->end;
++
++ return dict->full > 0 ? dict->buf[offset] : 0;
++}
++
++/*
++ * Put one byte into the dictionary. It is assumed that there is space for it.
++ */
++static inline void INIT dict_put(struct dictionary *dict, uint8_t byte)
++{
++ dict->buf[dict->pos++] = byte;
++
++ if (dict->full < dict->pos)
++ dict->full = dict->pos;
++}
++
++/*
++ * Repeat given number of bytes from the given distance. If the distance is
++ * invalid, false is returned. On success, true is returned and *len is
++ * updated to indicate how many bytes were left to be repeated.
++ */
++static bool_t INIT dict_repeat(struct dictionary *dict, uint32_t *len, uint32_t dist)
++{
++ size_t back;
++ uint32_t left;
++
++ if (dist >= dict->full || dist >= dict->size)
++ return false;
++
++ left = min_t(size_t, dict->limit - dict->pos, *len);
++ *len -= left;
++
++ back = dict->pos - dist - 1;
++ if (dist >= dict->pos)
++ back += dict->end;
++
++ do {
++ dict->buf[dict->pos++] = dict->buf[back++];
++ if (back == dict->end)
++ back = 0;
++ } while (--left > 0);
++
++ if (dict->full < dict->pos)
++ dict->full = dict->pos;
++
++ return true;
++}
++
++/* Copy uncompressed data as is from input to dictionary and output buffers. */
++static void INIT dict_uncompressed(struct dictionary *dict, struct xz_buf *b,
++ uint32_t *left)
++{
++ size_t copy_size;
++
++ while (*left > 0 && b->in_pos < b->in_size
++ && b->out_pos < b->out_size) {
++ copy_size = min(b->in_size - b->in_pos,
++ b->out_size - b->out_pos);
++ if (copy_size > dict->end - dict->pos)
++ copy_size = dict->end - dict->pos;
++ if (copy_size > *left)
++ copy_size = *left;
++
++ *left -= copy_size;
++
++ memcpy(dict->buf + dict->pos, b->in + b->in_pos, copy_size);
++ dict->pos += copy_size;
++
++ if (dict->full < dict->pos)
++ dict->full = dict->pos;
++
++ if (DEC_IS_MULTI(dict->mode)) {
++ if (dict->pos == dict->end)
++ dict->pos = 0;
++
++ memcpy(b->out + b->out_pos, b->in + b->in_pos,
++ copy_size);
++ }
++
++ dict->start = dict->pos;
++
++ b->out_pos += copy_size;
++ b->in_pos += copy_size;
++ }
++}
++
++/*
++ * Flush pending data from dictionary to b->out. It is assumed that there is
++ * enough space in b->out. This is guaranteed because caller uses dict_limit()
++ * before decoding data into the dictionary.
++ */
++static uint32_t INIT dict_flush(struct dictionary *dict, struct xz_buf *b)
++{
++ size_t copy_size = dict->pos - dict->start;
++
++ if (DEC_IS_MULTI(dict->mode)) {
++ if (dict->pos == dict->end)
++ dict->pos = 0;
++
++ memcpy(b->out + b->out_pos, dict->buf + dict->start,
++ copy_size);
++ }
++
++ dict->start = dict->pos;
++ b->out_pos += copy_size;
++ return copy_size;
++}
++
++/*****************
++ * Range decoder *
++ *****************/
++
++/* Reset the range decoder. */
++static void INIT rc_reset(struct rc_dec *rc)
++{
++ rc->range = (uint32_t)-1;
++ rc->code = 0;
++ rc->init_bytes_left = RC_INIT_BYTES;
++}
++
++/*
++ * Read the first five initial bytes into rc->code if they haven't been
++ * read already. (Yes, the first byte gets completely ignored.)
++ */
++static bool_t INIT rc_read_init(struct rc_dec *rc, struct xz_buf *b)
++{
++ while (rc->init_bytes_left > 0) {
++ if (b->in_pos == b->in_size)
++ return false;
++
++ rc->code = (rc->code << 8) + b->in[b->in_pos++];
++ --rc->init_bytes_left;
++ }
++
++ return true;
++}
++
++/* Return true if there may not be enough input for the next decoding loop. */
++static inline bool_t INIT rc_limit_exceeded(const struct rc_dec *rc)
++{
++ return rc->in_pos > rc->in_limit;
++}
++
++/*
++ * Return true if it is possible (from point of view of range decoder) that
++ * we have reached the end of the LZMA chunk.
++ */
++static inline bool_t INIT rc_is_finished(const struct rc_dec *rc)
++{
++ return rc->code == 0;
++}
++
++/* Read the next input byte if needed. */
++static always_inline void rc_normalize(struct rc_dec *rc)
++{
++ if (rc->range < RC_TOP_VALUE) {
++ rc->range <<= RC_SHIFT_BITS;
++ rc->code = (rc->code << RC_SHIFT_BITS) + rc->in[rc->in_pos++];
++ }
++}
++
++/*
++ * Decode one bit. In some versions, this function has been splitted in three
++ * functions so that the compiler is supposed to be able to more easily avoid
++ * an extra branch. In this particular version of the LZMA decoder, this
++ * doesn't seem to be a good idea (tested with GCC 3.3.6, 3.4.6, and 4.3.3
++ * on x86). Using a non-splitted version results in nicer looking code too.
++ *
++ * NOTE: This must return an int. Do not make it return a bool or the speed
++ * of the code generated by GCC 3.x decreases 10-15 %. (GCC 4.3 doesn't care,
++ * and it generates 10-20 % faster code than GCC 3.x from this file anyway.)
++ */
++static always_inline int rc_bit(struct rc_dec *rc, uint16_t *prob)
++{
++ uint32_t bound;
++ int bit;
++
++ rc_normalize(rc);
++ bound = (rc->range >> RC_BIT_MODEL_TOTAL_BITS) * *prob;
++ if (rc->code < bound) {
++ rc->range = bound;
++ *prob += (RC_BIT_MODEL_TOTAL - *prob) >> RC_MOVE_BITS;
++ bit = 0;
++ } else {
++ rc->range -= bound;
++ rc->code -= bound;
++ *prob -= *prob >> RC_MOVE_BITS;
++ bit = 1;
++ }
++
++ return bit;
++}
++
++/* Decode a bittree starting from the most significant bit. */
++static always_inline uint32_t rc_bittree(struct rc_dec *rc,
++ uint16_t *probs, uint32_t limit)
++{
++ uint32_t symbol = 1;
++
++ do {
++ if (rc_bit(rc, &probs[symbol]))
++ symbol = (symbol << 1) + 1;
++ else
++ symbol <<= 1;
++ } while (symbol < limit);
++
++ return symbol;
++}
++
++/* Decode a bittree starting from the least significant bit. */
++static always_inline void rc_bittree_reverse(struct rc_dec *rc,
++ uint16_t *probs,
++ uint32_t *dest, uint32_t limit)
++{
++ uint32_t symbol = 1;
++ uint32_t i = 0;
++
++ do {
++ if (rc_bit(rc, &probs[symbol])) {
++ symbol = (symbol << 1) + 1;
++ *dest += 1 << i;
++ } else {
++ symbol <<= 1;
++ }
++ } while (++i < limit);
++}
++
++/* Decode direct bits (fixed fifty-fifty probability) */
++static inline void INIT rc_direct(struct rc_dec *rc, uint32_t *dest, uint32_t limit)
++{
++ uint32_t mask;
++
++ do {
++ rc_normalize(rc);
++ rc->range >>= 1;
++ rc->code -= rc->range;
++ mask = (uint32_t)0 - (rc->code >> 31);
++ rc->code += rc->range & mask;
++ *dest = (*dest << 1) + (mask + 1);
++ } while (--limit > 0);
++}
++
++/********
++ * LZMA *
++ ********/
++
++/* Get pointer to literal coder probability array. */
++static uint16_t *INIT lzma_literal_probs(struct xz_dec_lzma2 *s)
++{
++ uint32_t prev_byte = dict_get(&s->dict, 0);
++ uint32_t low = prev_byte >> (8 - s->lzma.lc);
++ uint32_t high = (s->dict.pos & s->lzma.literal_pos_mask) << s->lzma.lc;
++ return s->lzma.literal[low + high];
++}
++
++/* Decode a literal (one 8-bit byte) */
++static void INIT lzma_literal(struct xz_dec_lzma2 *s)
++{
++ uint16_t *probs;
++ uint32_t symbol;
++ uint32_t match_byte;
++ uint32_t match_bit;
++ uint32_t offset;
++ uint32_t i;
++
++ probs = lzma_literal_probs(s);
++
++ if (lzma_state_is_literal(s->lzma.state)) {
++ symbol = rc_bittree(&s->rc, probs, 0x100);
++ } else {
++ symbol = 1;
++ match_byte = dict_get(&s->dict, s->lzma.rep0) << 1;
++ offset = 0x100;
++
++ do {
++ match_bit = match_byte & offset;
++ match_byte <<= 1;
++ i = offset + match_bit + symbol;
++
++ if (rc_bit(&s->rc, &probs[i])) {
++ symbol = (symbol << 1) + 1;
++ offset &= match_bit;
++ } else {
++ symbol <<= 1;
++ offset &= ~match_bit;
++ }
++ } while (symbol < 0x100);
++ }
++
++ dict_put(&s->dict, (uint8_t)symbol);
++ lzma_state_literal(&s->lzma.state);
++}
++
++/* Decode the length of the match into s->lzma.len. */
++static void INIT lzma_len(struct xz_dec_lzma2 *s, struct lzma_len_dec *l,
++ uint32_t pos_state)
++{
++ uint16_t *probs;
++ uint32_t limit;
++
++ if (!rc_bit(&s->rc, &l->choice)) {
++ probs = l->low[pos_state];
++ limit = LEN_LOW_SYMBOLS;
++ s->lzma.len = MATCH_LEN_MIN;
++ } else {
++ if (!rc_bit(&s->rc, &l->choice2)) {
++ probs = l->mid[pos_state];
++ limit = LEN_MID_SYMBOLS;
++ s->lzma.len = MATCH_LEN_MIN + LEN_LOW_SYMBOLS;
++ } else {
++ probs = l->high;
++ limit = LEN_HIGH_SYMBOLS;
++ s->lzma.len = MATCH_LEN_MIN + LEN_LOW_SYMBOLS
++ + LEN_MID_SYMBOLS;
++ }
++ }
++
++ s->lzma.len += rc_bittree(&s->rc, probs, limit) - limit;
++}
++
++/* Decode a match. The distance will be stored in s->lzma.rep0. */
++static void INIT lzma_match(struct xz_dec_lzma2 *s, uint32_t pos_state)
++{
++ uint16_t *probs;
++ uint32_t dist_slot;
++ uint32_t limit;
++
++ lzma_state_match(&s->lzma.state);
++
++ s->lzma.rep3 = s->lzma.rep2;
++ s->lzma.rep2 = s->lzma.rep1;
++ s->lzma.rep1 = s->lzma.rep0;
++
++ lzma_len(s, &s->lzma.match_len_dec, pos_state);
++
++ probs = s->lzma.dist_slot[lzma_get_dist_state(s->lzma.len)];
++ dist_slot = rc_bittree(&s->rc, probs, DIST_SLOTS) - DIST_SLOTS;
++
++ if (dist_slot < DIST_MODEL_START) {
++ s->lzma.rep0 = dist_slot;
++ } else {
++ limit = (dist_slot >> 1) - 1;
++ s->lzma.rep0 = 2 + (dist_slot & 1);
++
++ if (dist_slot < DIST_MODEL_END) {
++ s->lzma.rep0 <<= limit;
++ probs = s->lzma.dist_special + s->lzma.rep0
++ - dist_slot - 1;
++ rc_bittree_reverse(&s->rc, probs,
++ &s->lzma.rep0, limit);
++ } else {
++ rc_direct(&s->rc, &s->lzma.rep0, limit - ALIGN_BITS);
++ s->lzma.rep0 <<= ALIGN_BITS;
++ rc_bittree_reverse(&s->rc, s->lzma.dist_align,
++ &s->lzma.rep0, ALIGN_BITS);
++ }
++ }
++}
++
++/*
++ * Decode a repeated match. The distance is one of the four most recently
++ * seen matches. The distance will be stored in s->lzma.rep0.
++ */
++static void INIT lzma_rep_match(struct xz_dec_lzma2 *s, uint32_t pos_state)
++{
++ uint32_t tmp;
++
++ if (!rc_bit(&s->rc, &s->lzma.is_rep0[s->lzma.state])) {
++ if (!rc_bit(&s->rc, &s->lzma.is_rep0_long[
++ s->lzma.state][pos_state])) {
++ lzma_state_short_rep(&s->lzma.state);
++ s->lzma.len = 1;
++ return;
++ }
++ } else {
++ if (!rc_bit(&s->rc, &s->lzma.is_rep1[s->lzma.state])) {
++ tmp = s->lzma.rep1;
++ } else {
++ if (!rc_bit(&s->rc, &s->lzma.is_rep2[s->lzma.state])) {
++ tmp = s->lzma.rep2;
++ } else {
++ tmp = s->lzma.rep3;
++ s->lzma.rep3 = s->lzma.rep2;
++ }
++
++ s->lzma.rep2 = s->lzma.rep1;
++ }
++
++ s->lzma.rep1 = s->lzma.rep0;
++ s->lzma.rep0 = tmp;
++ }
++
++ lzma_state_long_rep(&s->lzma.state);
++ lzma_len(s, &s->lzma.rep_len_dec, pos_state);
++}
++
++/* LZMA decoder core */
++static bool_t INIT lzma_main(struct xz_dec_lzma2 *s)
++{
++ uint32_t pos_state;
++
++ /*
++ * If the dictionary was reached during the previous call, try to
++ * finish the possibly pending repeat in the dictionary.
++ */
++ if (dict_has_space(&s->dict) && s->lzma.len > 0)
++ dict_repeat(&s->dict, &s->lzma.len, s->lzma.rep0);
++
++ /*
++ * Decode more LZMA symbols. One iteration may consume up to
++ * LZMA_IN_REQUIRED - 1 bytes.
++ */
++ while (dict_has_space(&s->dict) && !rc_limit_exceeded(&s->rc)) {
++ pos_state = s->dict.pos & s->lzma.pos_mask;
++
++ if (!rc_bit(&s->rc, &s->lzma.is_match[
++ s->lzma.state][pos_state])) {
++ lzma_literal(s);
++ } else {
++ if (rc_bit(&s->rc, &s->lzma.is_rep[s->lzma.state]))
++ lzma_rep_match(s, pos_state);
++ else
++ lzma_match(s, pos_state);
++
++ if (!dict_repeat(&s->dict, &s->lzma.len, s->lzma.rep0))
++ return false;
++ }
++ }
++
++ /*
++ * Having the range decoder always normalized when we are outside
++ * this function makes it easier to correctly handle end of the chunk.
++ */
++ rc_normalize(&s->rc);
++
++ return true;
++}
++
++/*
++ * Reset the LZMA decoder and range decoder state. Dictionary is nore reset
++ * here, because LZMA state may be reset without resetting the dictionary.
++ */
++static void INIT lzma_reset(struct xz_dec_lzma2 *s)
++{
++ uint16_t *probs;
++ size_t i;
++
++ s->lzma.state = STATE_LIT_LIT;
++ s->lzma.rep0 = 0;
++ s->lzma.rep1 = 0;
++ s->lzma.rep2 = 0;
++ s->lzma.rep3 = 0;
++
++ /*
++ * All probabilities are initialized to the same value. This hack
++ * makes the code smaller by avoiding a separate loop for each
++ * probability array.
++ *
++ * This could be optimized so that only that part of literal
++ * probabilities that are actually required. In the common case
++ * we would write 12 KiB less.
++ */
++ probs = s->lzma.is_match[0];
++ for (i = 0; i < PROBS_TOTAL; ++i)
++ probs[i] = RC_BIT_MODEL_TOTAL / 2;
++
++ rc_reset(&s->rc);
++}
++
++/*
++ * Decode and validate LZMA properties (lc/lp/pb) and calculate the bit masks
++ * from the decoded lp and pb values. On success, the LZMA decoder state is
++ * reset and true is returned.
++ */
++static bool_t INIT lzma_props(struct xz_dec_lzma2 *s, uint8_t props)
++{
++ if (props > (4 * 5 + 4) * 9 + 8)
++ return false;
++
++ s->lzma.pos_mask = 0;
++ while (props >= 9 * 5) {
++ props -= 9 * 5;
++ ++s->lzma.pos_mask;
++ }
++
++ s->lzma.pos_mask = (1 << s->lzma.pos_mask) - 1;
++
++ s->lzma.literal_pos_mask = 0;
++ while (props >= 9) {
++ props -= 9;
++ ++s->lzma.literal_pos_mask;
++ }
++
++ s->lzma.lc = props;
++
++ if (s->lzma.lc + s->lzma.literal_pos_mask > 4)
++ return false;
++
++ s->lzma.literal_pos_mask = (1 << s->lzma.literal_pos_mask) - 1;
++
++ lzma_reset(s);
++
++ return true;
++}
++
++/*********
++ * LZMA2 *
++ *********/
++
++/*
++ * The LZMA decoder assumes that if the input limit (s->rc.in_limit) hasn't
++ * been exceeded, it is safe to read up to LZMA_IN_REQUIRED bytes. This
++ * wrapper function takes care of making the LZMA decoder's assumption safe.
++ *
++ * As long as there is plenty of input left to be decoded in the current LZMA
++ * chunk, we decode directly from the caller-supplied input buffer until
++ * there's LZMA_IN_REQUIRED bytes left. Those remaining bytes are copied into
++ * s->temp.buf, which (hopefully) gets filled on the next call to this
++ * function. We decode a few bytes from the temporary buffer so that we can
++ * continue decoding from the caller-supplied input buffer again.
++ */
++static bool_t INIT lzma2_lzma(struct xz_dec_lzma2 *s, struct xz_buf *b)
++{
++ size_t in_avail;
++ uint32_t tmp;
++
++ in_avail = b->in_size - b->in_pos;
++ if (s->temp.size > 0 || s->lzma2.compressed == 0) {
++ tmp = 2 * LZMA_IN_REQUIRED - s->temp.size;
++ if (tmp > s->lzma2.compressed - s->temp.size)
++ tmp = s->lzma2.compressed - s->temp.size;
++ if (tmp > in_avail)
++ tmp = in_avail;
++
++ memcpy(s->temp.buf + s->temp.size, b->in + b->in_pos, tmp);
++
++ if (s->temp.size + tmp == s->lzma2.compressed) {
++ memzero(s->temp.buf + s->temp.size + tmp,
++ sizeof(s->temp.buf)
++ - s->temp.size - tmp);
++ s->rc.in_limit = s->temp.size + tmp;
++ } else if (s->temp.size + tmp < LZMA_IN_REQUIRED) {
++ s->temp.size += tmp;
++ b->in_pos += tmp;
++ return true;
++ } else {
++ s->rc.in_limit = s->temp.size + tmp - LZMA_IN_REQUIRED;
++ }
++
++ s->rc.in = s->temp.buf;
++ s->rc.in_pos = 0;
++
++ if (!lzma_main(s) || s->rc.in_pos > s->temp.size + tmp)
++ return false;
++
++ s->lzma2.compressed -= s->rc.in_pos;
++
++ if (s->rc.in_pos < s->temp.size) {
++ s->temp.size -= s->rc.in_pos;
++ memmove(s->temp.buf, s->temp.buf + s->rc.in_pos,
++ s->temp.size);
++ return true;
++ }
++
++ b->in_pos += s->rc.in_pos - s->temp.size;
++ s->temp.size = 0;
++ }
++
++ in_avail = b->in_size - b->in_pos;
++ if (in_avail >= LZMA_IN_REQUIRED) {
++ s->rc.in = b->in;
++ s->rc.in_pos = b->in_pos;
++
++ if (in_avail >= s->lzma2.compressed + LZMA_IN_REQUIRED)
++ s->rc.in_limit = b->in_pos + s->lzma2.compressed;
++ else
++ s->rc.in_limit = b->in_size - LZMA_IN_REQUIRED;
++
++ if (!lzma_main(s))
++ return false;
++
++ in_avail = s->rc.in_pos - b->in_pos;
++ if (in_avail > s->lzma2.compressed)
++ return false;
++
++ s->lzma2.compressed -= in_avail;
++ b->in_pos = s->rc.in_pos;
++ }
++
++ in_avail = b->in_size - b->in_pos;
++ if (in_avail < LZMA_IN_REQUIRED) {
++ if (in_avail > s->lzma2.compressed)
++ in_avail = s->lzma2.compressed;
++
++ memcpy(s->temp.buf, b->in + b->in_pos, in_avail);
++ s->temp.size = in_avail;
++ b->in_pos += in_avail;
++ }
++
++ return true;
++}
++
++/*
++ * Take care of the LZMA2 control layer, and forward the job of actual LZMA
++ * decoding or copying of uncompressed chunks to other functions.
++ */
++XZ_EXTERN enum xz_ret INIT xz_dec_lzma2_run(struct xz_dec_lzma2 *s,
++ struct xz_buf *b)
++{
++ uint32_t tmp;
++
++ while (b->in_pos < b->in_size || s->lzma2.sequence == SEQ_LZMA_RUN) {
++ switch (s->lzma2.sequence) {
++ case SEQ_CONTROL:
++ /*
++ * LZMA2 control byte
++ *
++ * Exact values:
++ * 0x00 End marker
++ * 0x01 Dictionary reset followed by
++ * an uncompressed chunk
++ * 0x02 Uncompressed chunk (no dictionary reset)
++ *
++ * Highest three bits (s->control & 0xE0):
++ * 0xE0 Dictionary reset, new properties and state
++ * reset, followed by LZMA compressed chunk
++ * 0xC0 New properties and state reset, followed
++ * by LZMA compressed chunk (no dictionary
++ * reset)
++ * 0xA0 State reset using old properties,
++ * followed by LZMA compressed chunk (no
++ * dictionary reset)
++ * 0x80 LZMA chunk (no dictionary or state reset)
++ *
++ * For LZMA compressed chunks, the lowest five bits
++ * (s->control & 1F) are the highest bits of the
++ * uncompressed size (bits 16-20).
++ *
++ * A new LZMA2 stream must begin with a dictionary
++ * reset. The first LZMA chunk must set new
++ * properties and reset the LZMA state.
++ *
++ * Values that don't match anything described above
++ * are invalid and we return XZ_DATA_ERROR.
++ */
++ tmp = b->in[b->in_pos++];
++
++ if (tmp >= 0xE0 || tmp == 0x01) {
++ s->lzma2.need_props = true;
++ s->lzma2.need_dict_reset = false;
++ dict_reset(&s->dict, b);
++ } else if (s->lzma2.need_dict_reset) {
++ return XZ_DATA_ERROR;
++ }
++
++ if (tmp >= 0x80) {
++ s->lzma2.uncompressed = (tmp & 0x1F) << 16;
++ s->lzma2.sequence = SEQ_UNCOMPRESSED_1;
++
++ if (tmp >= 0xC0) {
++ /*
++ * When there are new properties,
++ * state reset is done at
++ * SEQ_PROPERTIES.
++ */
++ s->lzma2.need_props = false;
++ s->lzma2.next_sequence
++ = SEQ_PROPERTIES;
++
++ } else if (s->lzma2.need_props) {
++ return XZ_DATA_ERROR;
++
++ } else {
++ s->lzma2.next_sequence
++ = SEQ_LZMA_PREPARE;
++ if (tmp >= 0xA0)
++ lzma_reset(s);
++ }
++ } else {
++ if (tmp == 0x00)
++ return XZ_STREAM_END;
++
++ if (tmp > 0x02)
++ return XZ_DATA_ERROR;
++
++ s->lzma2.sequence = SEQ_COMPRESSED_0;
++ s->lzma2.next_sequence = SEQ_COPY;
++ }
++
++ break;
++
++ case SEQ_UNCOMPRESSED_1:
++ s->lzma2.uncompressed
++ += (uint32_t)b->in[b->in_pos++] << 8;
++ s->lzma2.sequence = SEQ_UNCOMPRESSED_2;
++ break;
++
++ case SEQ_UNCOMPRESSED_2:
++ s->lzma2.uncompressed
++ += (uint32_t)b->in[b->in_pos++] + 1;
++ s->lzma2.sequence = SEQ_COMPRESSED_0;
++ break;
++
++ case SEQ_COMPRESSED_0:
++ s->lzma2.compressed
++ = (uint32_t)b->in[b->in_pos++] << 8;
++ s->lzma2.sequence = SEQ_COMPRESSED_1;
++ break;
++
++ case SEQ_COMPRESSED_1:
++ s->lzma2.compressed
++ += (uint32_t)b->in[b->in_pos++] + 1;
++ s->lzma2.sequence = s->lzma2.next_sequence;
++ break;
++
++ case SEQ_PROPERTIES:
++ if (!lzma_props(s, b->in[b->in_pos++]))
++ return XZ_DATA_ERROR;
++
++ s->lzma2.sequence = SEQ_LZMA_PREPARE;
++
++ case SEQ_LZMA_PREPARE:
++ if (s->lzma2.compressed < RC_INIT_BYTES)
++ return XZ_DATA_ERROR;
++
++ if (!rc_read_init(&s->rc, b))
++ return XZ_OK;
++
++ s->lzma2.compressed -= RC_INIT_BYTES;
++ s->lzma2.sequence = SEQ_LZMA_RUN;
++
++ case SEQ_LZMA_RUN:
++ /*
++ * Set dictionary limit to indicate how much we want
++ * to be encoded at maximum. Decode new data into the
++ * dictionary. Flush the new data from dictionary to
++ * b->out. Check if we finished decoding this chunk.
++ * In case the dictionary got full but we didn't fill
++ * the output buffer yet, we may run this loop
++ * multiple times without changing s->lzma2.sequence.
++ */
++ dict_limit(&s->dict, min_t(size_t,
++ b->out_size - b->out_pos,
++ s->lzma2.uncompressed));
++ if (!lzma2_lzma(s, b))
++ return XZ_DATA_ERROR;
++
++ s->lzma2.uncompressed -= dict_flush(&s->dict, b);
++
++ if (s->lzma2.uncompressed == 0) {
++ if (s->lzma2.compressed > 0 || s->lzma.len > 0
++ || !rc_is_finished(&s->rc))
++ return XZ_DATA_ERROR;
++
++ rc_reset(&s->rc);
++ s->lzma2.sequence = SEQ_CONTROL;
++
++ } else if (b->out_pos == b->out_size
++ || (b->in_pos == b->in_size
++ && s->temp.size
++ < s->lzma2.compressed)) {
++ return XZ_OK;
++ }
++
++ break;
++
++ case SEQ_COPY:
++ dict_uncompressed(&s->dict, b, &s->lzma2.compressed);
++ if (s->lzma2.compressed > 0)
++ return XZ_OK;
++
++ s->lzma2.sequence = SEQ_CONTROL;
++ break;
++ }
++ }
++
++ return XZ_OK;
++}
++
++XZ_EXTERN struct xz_dec_lzma2 *INIT xz_dec_lzma2_create(enum xz_mode mode,
++ uint32_t dict_max)
++{
++ struct xz_dec_lzma2 *s = malloc(sizeof(*s));
++ if (s == NULL)
++ return NULL;
++
++ s->dict.mode = mode;
++ s->dict.size_max = dict_max;
++
++ if (DEC_IS_PREALLOC(mode)) {
++ s->dict.buf = large_malloc(dict_max);
++ if (s->dict.buf == NULL) {
++ free(s);
++ return NULL;
++ }
++ } else if (DEC_IS_DYNALLOC(mode)) {
++ s->dict.buf = NULL;
++ s->dict.allocated = 0;
++ }
++
++ return s;
++}
++
++XZ_EXTERN enum xz_ret INIT xz_dec_lzma2_reset(struct xz_dec_lzma2 *s, uint8_t props)
++{
++ /* This limits dictionary size to 3 GiB to keep parsing simpler. */
++ if (props > 39)
++ return XZ_OPTIONS_ERROR;
++
++ s->dict.size = 2 + (props & 1);
++ s->dict.size <<= (props >> 1) + 11;
++
++ if (DEC_IS_MULTI(s->dict.mode)) {
++ if (s->dict.size > s->dict.size_max)
++ return XZ_MEMLIMIT_ERROR;
++
++ s->dict.end = s->dict.size;
++
++ if (DEC_IS_DYNALLOC(s->dict.mode)) {
++ if (s->dict.allocated < s->dict.size) {
++ large_free(s->dict.buf);
++ s->dict.buf = large_malloc(s->dict.size);
++ if (s->dict.buf == NULL) {
++ s->dict.allocated = 0;
++ return XZ_MEM_ERROR;
++ }
++ }
++ }
++ }
++
++ s->lzma.len = 0;
++
++ s->lzma2.sequence = SEQ_CONTROL;
++ s->lzma2.need_dict_reset = true;
++
++ s->temp.size = 0;
++
++ return XZ_OK;
++}
++
++XZ_EXTERN void INIT xz_dec_lzma2_end(struct xz_dec_lzma2 *s)
++{
++ if (DEC_IS_MULTI(s->dict.mode))
++ large_free(s->dict.buf);
++
++ free(s);
++}
+diff --git a/xen/common/xz/dec_stream.c b/xen/common/xz/dec_stream.c
+new file mode 100644
+--- /dev/null
++++ b/xen/common/xz/dec_stream.c
+@@ -0,0 +1,821 @@
++/*
++ * .xz Stream decoder
++ *
++ * Author: Lasse Collin <lasse.collin@tukaani.org>
++ *
++ * This file has been put into the public domain.
++ * You can do whatever you want with this file.
++ */
++
++#include "private.h"
++#include "stream.h"
++
++/* Hash used to validate the Index field */
++struct xz_dec_hash {
++ vli_type unpadded;
++ vli_type uncompressed;
++ uint32_t crc32;
++};
++
++struct xz_dec {
++ /* Position in dec_main() */
++ enum {
++ SEQ_STREAM_HEADER,
++ SEQ_BLOCK_START,
++ SEQ_BLOCK_HEADER,
++ SEQ_BLOCK_UNCOMPRESS,
++ SEQ_BLOCK_PADDING,
++ SEQ_BLOCK_CHECK,
++ SEQ_INDEX,
++ SEQ_INDEX_PADDING,
++ SEQ_INDEX_CRC32,
++ SEQ_STREAM_FOOTER
++ } sequence;
++
++ /* Position in variable-length integers and Check fields */
++ uint32_t pos;
++
++ /* Variable-length integer decoded by dec_vli() */
++ vli_type vli;
++
++ /* Saved in_pos and out_pos */
++ size_t in_start;
++ size_t out_start;
++
++ /* CRC32 value in Block or Index */
++ uint32_t crc32;
++
++ /* Type of the integrity check calculated from uncompressed data */
++ enum xz_check check_type;
++
++ /* Operation mode */
++ enum xz_mode mode;
++
++ /*
++ * True if the next call to xz_dec_run() is allowed to return
++ * XZ_BUF_ERROR.
++ */
++ bool_t allow_buf_error;
++
++ /* Information stored in Block Header */
++ struct {
++ /*
++ * Value stored in the Compressed Size field, or
++ * VLI_UNKNOWN if Compressed Size is not present.
++ */
++ vli_type compressed;
++
++ /*
++ * Value stored in the Uncompressed Size field, or
++ * VLI_UNKNOWN if Uncompressed Size is not present.
++ */
++ vli_type uncompressed;
++
++ /* Size of the Block Header field */
++ uint32_t size;
++ } block_header;
++
++ /* Information collected when decoding Blocks */
++ struct {
++ /* Observed compressed size of the current Block */
++ vli_type compressed;
++
++ /* Observed uncompressed size of the current Block */
++ vli_type uncompressed;
++
++ /* Number of Blocks decoded so far */
++ vli_type count;
++
++ /*
++ * Hash calculated from the Block sizes. This is used to
++ * validate the Index field.
++ */
++ struct xz_dec_hash hash;
++ } block;
++
++ /* Variables needed when verifying the Index field */
++ struct {
++ /* Position in dec_index() */
++ enum {
++ SEQ_INDEX_COUNT,
++ SEQ_INDEX_UNPADDED,
++ SEQ_INDEX_UNCOMPRESSED
++ } sequence;
++
++ /* Size of the Index in bytes */
++ vli_type size;
++
++ /* Number of Records (matches block.count in valid files) */
++ vli_type count;
++
++ /*
++ * Hash calculated from the Records (matches block.hash in
++ * valid files).
++ */
++ struct xz_dec_hash hash;
++ } index;
++
++ /*
++ * Temporary buffer needed to hold Stream Header, Block Header,
++ * and Stream Footer. The Block Header is the biggest (1 KiB)
++ * so we reserve space according to that. buf[] has to be aligned
++ * to a multiple of four bytes; the size_t variables before it
++ * should guarantee this.
++ */
++ struct {
++ size_t pos;
++ size_t size;
++ uint8_t buf[1024];
++ } temp;
++
++ struct xz_dec_lzma2 *lzma2;
++
++#ifdef XZ_DEC_BCJ
++ struct xz_dec_bcj *bcj;
++ bool_t bcj_active;
++#endif
++};
++
++#ifdef XZ_DEC_ANY_CHECK
++/* Sizes of the Check field with different Check IDs */
++static const uint8_t check_sizes[16] = {
++ 0,
++ 4, 4, 4,
++ 8, 8, 8,
++ 16, 16, 16,
++ 32, 32, 32,
++ 64, 64, 64
++};
++#endif
++
++/*
++ * Fill s->temp by copying data starting from b->in[b->in_pos]. Caller
++ * must have set s->temp.pos to indicate how much data we are supposed
++ * to copy into s->temp.buf. Return true once s->temp.pos has reached
++ * s->temp.size.
++ */
++static bool_t INIT fill_temp(struct xz_dec *s, struct xz_buf *b)
++{
++ size_t copy_size = min_t(size_t,
++ b->in_size - b->in_pos, s->temp.size - s->temp.pos);
++
++ memcpy(s->temp.buf + s->temp.pos, b->in + b->in_pos, copy_size);
++ b->in_pos += copy_size;
++ s->temp.pos += copy_size;
++
++ if (s->temp.pos == s->temp.size) {
++ s->temp.pos = 0;
++ return true;
++ }
++
++ return false;
++}
++
++/* Decode a variable-length integer (little-endian base-128 encoding) */
++static enum xz_ret INIT dec_vli(struct xz_dec *s, const uint8_t *in,
++ size_t *in_pos, size_t in_size)
++{
++ uint8_t byte;
++
++ if (s->pos == 0)
++ s->vli = 0;
++
++ while (*in_pos < in_size) {
++ byte = in[*in_pos];
++ ++*in_pos;
++
++ s->vli |= (vli_type)(byte & 0x7F) << s->pos;
++
++ if ((byte & 0x80) == 0) {
++ /* Don't allow non-minimal encodings. */
++ if (byte == 0 && s->pos != 0)
++ return XZ_DATA_ERROR;
++
++ s->pos = 0;
++ return XZ_STREAM_END;
++ }
++
++ s->pos += 7;
++ if (s->pos == 7 * VLI_BYTES_MAX)
++ return XZ_DATA_ERROR;
++ }
++
++ return XZ_OK;
++}
++
++/*
++ * Decode the Compressed Data field from a Block. Update and validate
++ * the observed compressed and uncompressed sizes of the Block so that
++ * they don't exceed the values possibly stored in the Block Header
++ * (validation assumes that no integer overflow occurs, since vli_type
++ * is normally uint64_t). Update the CRC32 if presence of the CRC32
++ * field was indicated in Stream Header.
++ *
++ * Once the decoding is finished, validate that the observed sizes match
++ * the sizes possibly stored in the Block Header. Update the hash and
++ * Block count, which are later used to validate the Index field.
++ */
++static enum xz_ret INIT dec_block(struct xz_dec *s, struct xz_buf *b)
++{
++ enum xz_ret ret;
++
++ s->in_start = b->in_pos;
++ s->out_start = b->out_pos;
++
++#ifdef XZ_DEC_BCJ
++ if (s->bcj_active)
++ ret = xz_dec_bcj_run(s->bcj, s->lzma2, b);
++ else
++#endif
++ ret = xz_dec_lzma2_run(s->lzma2, b);
++
++ s->block.compressed += b->in_pos - s->in_start;
++ s->block.uncompressed += b->out_pos - s->out_start;
++
++ /*
++ * There is no need to separately check for VLI_UNKNOWN, since
++ * the observed sizes are always smaller than VLI_UNKNOWN.
++ */
++ if (s->block.compressed > s->block_header.compressed
++ || s->block.uncompressed
++ > s->block_header.uncompressed)
++ return XZ_DATA_ERROR;
++
++ if (s->check_type == XZ_CHECK_CRC32)
++ s->crc32 = xz_crc32(b->out + s->out_start,
++ b->out_pos - s->out_start, s->crc32);
++
++ if (ret == XZ_STREAM_END) {
++ if (s->block_header.compressed != VLI_UNKNOWN
++ && s->block_header.compressed
++ != s->block.compressed)
++ return XZ_DATA_ERROR;
++
++ if (s->block_header.uncompressed != VLI_UNKNOWN
++ && s->block_header.uncompressed
++ != s->block.uncompressed)
++ return XZ_DATA_ERROR;
++
++ s->block.hash.unpadded += s->block_header.size
++ + s->block.compressed;
++
++#ifdef XZ_DEC_ANY_CHECK
++ s->block.hash.unpadded += check_sizes[s->check_type];
++#else
++ if (s->check_type == XZ_CHECK_CRC32)
++ s->block.hash.unpadded += 4;
++#endif
++
++ s->block.hash.uncompressed += s->block.uncompressed;
++ s->block.hash.crc32 = xz_crc32(
++ (const uint8_t *)&s->block.hash,
++ sizeof(s->block.hash), s->block.hash.crc32);
++
++ ++s->block.count;
++ }
++
++ return ret;
++}
++
++/* Update the Index size and the CRC32 value. */
++static void INIT index_update(struct xz_dec *s, const struct xz_buf *b)
++{
++ size_t in_used = b->in_pos - s->in_start;
++ s->index.size += in_used;
++ s->crc32 = xz_crc32(b->in + s->in_start, in_used, s->crc32);
++}
++
++/*
++ * Decode the Number of Records, Unpadded Size, and Uncompressed Size
++ * fields from the Index field. That is, Index Padding and CRC32 are not
++ * decoded by this function.
++ *
++ * This can return XZ_OK (more input needed), XZ_STREAM_END (everything
++ * successfully decoded), or XZ_DATA_ERROR (input is corrupt).
++ */
++static enum xz_ret INIT dec_index(struct xz_dec *s, struct xz_buf *b)
++{
++ enum xz_ret ret;
++
++ do {
++ ret = dec_vli(s, b->in, &b->in_pos, b->in_size);
++ if (ret != XZ_STREAM_END) {
++ index_update(s, b);
++ return ret;
++ }
++
++ switch (s->index.sequence) {
++ case SEQ_INDEX_COUNT:
++ s->index.count = s->vli;
++
++ /*
++ * Validate that the Number of Records field
++ * indicates the same number of Records as
++ * there were Blocks in the Stream.
++ */
++ if (s->index.count != s->block.count)
++ return XZ_DATA_ERROR;
++
++ s->index.sequence = SEQ_INDEX_UNPADDED;
++ break;
++
++ case SEQ_INDEX_UNPADDED:
++ s->index.hash.unpadded += s->vli;
++ s->index.sequence = SEQ_INDEX_UNCOMPRESSED;
++ break;
++
++ case SEQ_INDEX_UNCOMPRESSED:
++ s->index.hash.uncompressed += s->vli;
++ s->index.hash.crc32 = xz_crc32(
++ (const uint8_t *)&s->index.hash,
++ sizeof(s->index.hash),
++ s->index.hash.crc32);
++ --s->index.count;
++ s->index.sequence = SEQ_INDEX_UNPADDED;
++ break;
++ }
++ } while (s->index.count > 0);
++
++ return XZ_STREAM_END;
++}
++
++/*
++ * Validate that the next four input bytes match the value of s->crc32.
++ * s->pos must be zero when starting to validate the first byte.
++ */
++static enum xz_ret INIT crc32_validate(struct xz_dec *s, struct xz_buf *b)
++{
++ do {
++ if (b->in_pos == b->in_size)
++ return XZ_OK;
++
++ if (((s->crc32 >> s->pos) & 0xFF) != b->in[b->in_pos++])
++ return XZ_DATA_ERROR;
++
++ s->pos += 8;
++
++ } while (s->pos < 32);
++
++ s->crc32 = 0;
++ s->pos = 0;
++
++ return XZ_STREAM_END;
++}
++
++#ifdef XZ_DEC_ANY_CHECK
++/*
++ * Skip over the Check field when the Check ID is not supported.
++ * Returns true once the whole Check field has been skipped over.
++ */
++static bool_t INIT check_skip(struct xz_dec *s, struct xz_buf *b)
++{
++ while (s->pos < check_sizes[s->check_type]) {
++ if (b->in_pos == b->in_size)
++ return false;
++
++ ++b->in_pos;
++ ++s->pos;
++ }
++
++ s->pos = 0;
++
++ return true;
++}
++#endif
++
++/* Decode the Stream Header field (the first 12 bytes of the .xz Stream). */
++static enum xz_ret INIT dec_stream_header(struct xz_dec *s)
++{
++ if (!memeq(s->temp.buf, HEADER_MAGIC, HEADER_MAGIC_SIZE))
++ return XZ_FORMAT_ERROR;
++
++ if (xz_crc32(s->temp.buf + HEADER_MAGIC_SIZE, 2, 0)
++ != get_le32(s->temp.buf + HEADER_MAGIC_SIZE + 2))
++ return XZ_DATA_ERROR;
++
++ if (s->temp.buf[HEADER_MAGIC_SIZE] != 0)
++ return XZ_OPTIONS_ERROR;
++
++ /*
++ * Of integrity checks, we support only none (Check ID = 0) and
++ * CRC32 (Check ID = 1). However, if XZ_DEC_ANY_CHECK is defined,
++ * we will accept other check types too, but then the check won't
++ * be verified and a warning (XZ_UNSUPPORTED_CHECK) will be given.
++ */
++ s->check_type = s->temp.buf[HEADER_MAGIC_SIZE + 1];
++
++#ifdef XZ_DEC_ANY_CHECK
++ if (s->check_type > XZ_CHECK_MAX)
++ return XZ_OPTIONS_ERROR;
++
++ if (s->check_type > XZ_CHECK_CRC32)
++ return XZ_UNSUPPORTED_CHECK;
++#else
++ if (s->check_type > XZ_CHECK_CRC32)
++ return XZ_OPTIONS_ERROR;
++#endif
++
++ return XZ_OK;
++}
++
++/* Decode the Stream Footer field (the last 12 bytes of the .xz Stream) */
++static enum xz_ret INIT dec_stream_footer(struct xz_dec *s)
++{
++ if (!memeq(s->temp.buf + 10, FOOTER_MAGIC, FOOTER_MAGIC_SIZE))
++ return XZ_DATA_ERROR;
++
++ if (xz_crc32(s->temp.buf + 4, 6, 0) != get_le32(s->temp.buf))
++ return XZ_DATA_ERROR;
++
++ /*
++ * Validate Backward Size. Note that we never added the size of the
++ * Index CRC32 field to s->index.size, thus we use s->index.size / 4
++ * instead of s->index.size / 4 - 1.
++ */
++ if ((s->index.size >> 2) != get_le32(s->temp.buf + 4))
++ return XZ_DATA_ERROR;
++
++ if (s->temp.buf[8] != 0 || s->temp.buf[9] != s->check_type)
++ return XZ_DATA_ERROR;
++
++ /*
++ * Use XZ_STREAM_END instead of XZ_OK to be more convenient
++ * for the caller.
++ */
++ return XZ_STREAM_END;
++}
++
++/* Decode the Block Header and initialize the filter chain. */
++static enum xz_ret INIT dec_block_header(struct xz_dec *s)
++{
++ enum xz_ret ret;
++
++ /*
++ * Validate the CRC32. We know that the temp buffer is at least
++ * eight bytes so this is safe.
++ */
++ s->temp.size -= 4;
++ if (xz_crc32(s->temp.buf, s->temp.size, 0)
++ != get_le32(s->temp.buf + s->temp.size))
++ return XZ_DATA_ERROR;
++
++ s->temp.pos = 2;
++
++ /*
++ * Catch unsupported Block Flags. We support only one or two filters
++ * in the chain, so we catch that with the same test.
++ */
++#ifdef XZ_DEC_BCJ
++ if (s->temp.buf[1] & 0x3E)
++#else
++ if (s->temp.buf[1] & 0x3F)
++#endif
++ return XZ_OPTIONS_ERROR;
++
++ /* Compressed Size */
++ if (s->temp.buf[1] & 0x40) {
++ if (dec_vli(s, s->temp.buf, &s->temp.pos, s->temp.size)
++ != XZ_STREAM_END)
++ return XZ_DATA_ERROR;
++
++ s->block_header.compressed = s->vli;
++ } else {
++ s->block_header.compressed = VLI_UNKNOWN;
++ }
++
++ /* Uncompressed Size */
++ if (s->temp.buf[1] & 0x80) {
++ if (dec_vli(s, s->temp.buf, &s->temp.pos, s->temp.size)
++ != XZ_STREAM_END)
++ return XZ_DATA_ERROR;
++
++ s->block_header.uncompressed = s->vli;
++ } else {
++ s->block_header.uncompressed = VLI_UNKNOWN;
++ }
++
++#ifdef XZ_DEC_BCJ
++ /* If there are two filters, the first one must be a BCJ filter. */
++ s->bcj_active = s->temp.buf[1] & 0x01;
++ if (s->bcj_active) {
++ if (s->temp.size - s->temp.pos < 2)
++ return XZ_OPTIONS_ERROR;
++
++ ret = xz_dec_bcj_reset(s->bcj, s->temp.buf[s->temp.pos++]);
++ if (ret != XZ_OK)
++ return ret;
++
++ /*
++ * We don't support custom start offset,
++ * so Size of Properties must be zero.
++ */
++ if (s->temp.buf[s->temp.pos++] != 0x00)
++ return XZ_OPTIONS_ERROR;
++ }
++#endif
++
++ /* Valid Filter Flags always take at least two bytes. */
++ if (s->temp.size - s->temp.pos < 2)
++ return XZ_DATA_ERROR;
++
++ /* Filter ID = LZMA2 */
++ if (s->temp.buf[s->temp.pos++] != 0x21)
++ return XZ_OPTIONS_ERROR;
++
++ /* Size of Properties = 1-byte Filter Properties */
++ if (s->temp.buf[s->temp.pos++] != 0x01)
++ return XZ_OPTIONS_ERROR;
++
++ /* Filter Properties contains LZMA2 dictionary size. */
++ if (s->temp.size - s->temp.pos < 1)
++ return XZ_DATA_ERROR;
++
++ ret = xz_dec_lzma2_reset(s->lzma2, s->temp.buf[s->temp.pos++]);
++ if (ret != XZ_OK)
++ return ret;
++
++ /* The rest must be Header Padding. */
++ while (s->temp.pos < s->temp.size)
++ if (s->temp.buf[s->temp.pos++] != 0x00)
++ return XZ_OPTIONS_ERROR;
++
++ s->temp.pos = 0;
++ s->block.compressed = 0;
++ s->block.uncompressed = 0;
++
++ return XZ_OK;
++}
++
++static enum xz_ret INIT dec_main(struct xz_dec *s, struct xz_buf *b)
++{
++ enum xz_ret ret;
++
++ /*
++ * Store the start position for the case when we are in the middle
++ * of the Index field.
++ */
++ s->in_start = b->in_pos;
++
++ while (true) {
++ switch (s->sequence) {
++ case SEQ_STREAM_HEADER:
++ /*
++ * Stream Header is copied to s->temp, and then
++ * decoded from there. This way if the caller
++ * gives us only little input at a time, we can
++ * still keep the Stream Header decoding code
++ * simple. Similar approach is used in many places
++ * in this file.
++ */
++ if (!fill_temp(s, b))
++ return XZ_OK;
++
++ /*
++ * If dec_stream_header() returns
++ * XZ_UNSUPPORTED_CHECK, it is still possible
++ * to continue decoding if working in multi-call
++ * mode. Thus, update s->sequence before calling
++ * dec_stream_header().
++ */
++ s->sequence = SEQ_BLOCK_START;
++
++ ret = dec_stream_header(s);
++ if (ret != XZ_OK)
++ return ret;
++
++ case SEQ_BLOCK_START:
++ /* We need one byte of input to continue. */
++ if (b->in_pos == b->in_size)
++ return XZ_OK;
++
++ /* See if this is the beginning of the Index field. */
++ if (b->in[b->in_pos] == 0) {
++ s->in_start = b->in_pos++;
++ s->sequence = SEQ_INDEX;
++ break;
++ }
++
++ /*
++ * Calculate the size of the Block Header and
++ * prepare to decode it.
++ */
++ s->block_header.size
++ = ((uint32_t)b->in[b->in_pos] + 1) * 4;
++
++ s->temp.size = s->block_header.size;
++ s->temp.pos = 0;
++ s->sequence = SEQ_BLOCK_HEADER;
++
++ case SEQ_BLOCK_HEADER:
++ if (!fill_temp(s, b))
++ return XZ_OK;
++
++ ret = dec_block_header(s);
++ if (ret != XZ_OK)
++ return ret;
++
++ s->sequence = SEQ_BLOCK_UNCOMPRESS;
++
++ case SEQ_BLOCK_UNCOMPRESS:
++ ret = dec_block(s, b);
++ if (ret != XZ_STREAM_END)
++ return ret;
++
++ s->sequence = SEQ_BLOCK_PADDING;
++
++ case SEQ_BLOCK_PADDING:
++ /*
++ * Size of Compressed Data + Block Padding
++ * must be a multiple of four. We don't need
++ * s->block.compressed for anything else
++ * anymore, so we use it here to test the size
++ * of the Block Padding field.
++ */
++ while (s->block.compressed & 3) {
++ if (b->in_pos == b->in_size)
++ return XZ_OK;
++
++ if (b->in[b->in_pos++] != 0)
++ return XZ_DATA_ERROR;
++
++ ++s->block.compressed;
++ }
++
++ s->sequence = SEQ_BLOCK_CHECK;
++
++ case SEQ_BLOCK_CHECK:
++ if (s->check_type == XZ_CHECK_CRC32) {
++ ret = crc32_validate(s, b);
++ if (ret != XZ_STREAM_END)
++ return ret;
++ }
++#ifdef XZ_DEC_ANY_CHECK
++ else if (!check_skip(s, b)) {
++ return XZ_OK;
++ }
++#endif
++
++ s->sequence = SEQ_BLOCK_START;
++ break;
++
++ case SEQ_INDEX:
++ ret = dec_index(s, b);
++ if (ret != XZ_STREAM_END)
++ return ret;
++
++ s->sequence = SEQ_INDEX_PADDING;
++
++ case SEQ_INDEX_PADDING:
++ while ((s->index.size + (b->in_pos - s->in_start))
++ & 3) {
++ if (b->in_pos == b->in_size) {
++ index_update(s, b);
++ return XZ_OK;
++ }
++
++ if (b->in[b->in_pos++] != 0)
++ return XZ_DATA_ERROR;
++ }
++
++ /* Finish the CRC32 value and Index size. */
++ index_update(s, b);
++
++ /* Compare the hashes to validate the Index field. */
++ if (!memeq(&s->block.hash, &s->index.hash,
++ sizeof(s->block.hash)))
++ return XZ_DATA_ERROR;
++
++ s->sequence = SEQ_INDEX_CRC32;
++
++ case SEQ_INDEX_CRC32:
++ ret = crc32_validate(s, b);
++ if (ret != XZ_STREAM_END)
++ return ret;
++
++ s->temp.size = STREAM_HEADER_SIZE;
++ s->sequence = SEQ_STREAM_FOOTER;
++
++ case SEQ_STREAM_FOOTER:
++ if (!fill_temp(s, b))
++ return XZ_OK;
++
++ return dec_stream_footer(s);
++ }
++ }
++
++ /* Never reached */
++}
++
++XZ_EXTERN void INIT xz_dec_reset(struct xz_dec *s)
++{
++ s->sequence = SEQ_STREAM_HEADER;
++ s->allow_buf_error = false;
++ s->pos = 0;
++ s->crc32 = 0;
++ memzero(&s->block, sizeof(s->block));
++ memzero(&s->index, sizeof(s->index));
++ s->temp.pos = 0;
++ s->temp.size = STREAM_HEADER_SIZE;
++}
++
++/*
++ * xz_dec_run() is a wrapper for dec_main() to handle some special cases in
++ * multi-call and single-call decoding.
++ *
++ * In multi-call mode, we must return XZ_BUF_ERROR when it seems clear that we
++ * are not going to make any progress anymore. This is to prevent the caller
++ * from calling us infinitely when the input file is truncated or otherwise
++ * corrupt. Since zlib-style API allows that the caller fills the input buffer
++ * only when the decoder doesn't produce any new output, we have to be careful
++ * to avoid returning XZ_BUF_ERROR too easily: XZ_BUF_ERROR is returned only
++ * after the second consecutive call to xz_dec_run() that makes no progress.
++ *
++ * In single-call mode, if we couldn't decode everything and no error
++ * occurred, either the input is truncated or the output buffer is too small.
++ * Since we know that the last input byte never produces any output, we know
++ * that if all the input was consumed and decoding wasn't finished, the file
++ * must be corrupt. Otherwise the output buffer has to be too small or the
++ * file is corrupt in a way that decoding it produces too big output.
++ *
++ * If single-call decoding fails, we reset b->in_pos and b->out_pos back to
++ * their original values. This is because with some filter chains there won't
++ * be any valid uncompressed data in the output buffer unless the decoding
++ * actually succeeds (that's the price to pay of using the output buffer as
++ * the workspace).
++ */
++XZ_EXTERN enum xz_ret INIT xz_dec_run(struct xz_dec *s, struct xz_buf *b)
++{
++ size_t in_start;
++ size_t out_start;
++ enum xz_ret ret;
++
++ if (DEC_IS_SINGLE(s->mode))
++ xz_dec_reset(s);
++
++ in_start = b->in_pos;
++ out_start = b->out_pos;
++ ret = dec_main(s, b);
++
++ if (DEC_IS_SINGLE(s->mode)) {
++ if (ret == XZ_OK)
++ ret = b->in_pos == b->in_size
++ ? XZ_DATA_ERROR : XZ_BUF_ERROR;
++
++ if (ret != XZ_STREAM_END) {
++ b->in_pos = in_start;
++ b->out_pos = out_start;
++ }
++
++ } else if (ret == XZ_OK && in_start == b->in_pos
++ && out_start == b->out_pos) {
++ if (s->allow_buf_error)
++ ret = XZ_BUF_ERROR;
++
++ s->allow_buf_error = true;
++ } else {
++ s->allow_buf_error = false;
++ }
++
++ return ret;
++}
++
++XZ_EXTERN struct xz_dec *INIT xz_dec_init(enum xz_mode mode, uint32_t dict_max)
++{
++ struct xz_dec *s = malloc(sizeof(*s));
++ if (s == NULL)
++ return NULL;
++
++ s->mode = mode;
++
++#ifdef XZ_DEC_BCJ
++ s->bcj = xz_dec_bcj_create(DEC_IS_SINGLE(mode));
++ if (s->bcj == NULL)
++ goto error_bcj;
++#endif
++
++ s->lzma2 = xz_dec_lzma2_create(mode, dict_max);
++ if (s->lzma2 == NULL)
++ goto error_lzma2;
++
++ xz_dec_reset(s);
++ return s;
++
++error_lzma2:
++#ifdef XZ_DEC_BCJ
++ xz_dec_bcj_end(s->bcj);
++error_bcj:
++#endif
++ free(s);
++ return NULL;
++}
++
++XZ_EXTERN void INIT xz_dec_end(struct xz_dec *s)
++{
++ if (s != NULL) {
++ xz_dec_lzma2_end(s->lzma2);
++#ifdef XZ_DEC_BCJ
++ xz_dec_bcj_end(s->bcj);
++#endif
++ free(s);
++ }
++}
+diff --git a/xen/common/xz/lzma2.h b/xen/common/xz/lzma2.h
+new file mode 100644
+--- /dev/null
++++ b/xen/common/xz/lzma2.h
+@@ -0,0 +1,204 @@
++/*
++ * LZMA2 definitions
++ *
++ * Authors: Lasse Collin <lasse.collin@tukaani.org>
++ * Igor Pavlov <http://7-zip.org/>
++ *
++ * This file has been put into the public domain.
++ * You can do whatever you want with this file.
++ */
++
++#ifndef XZ_LZMA2_H
++#define XZ_LZMA2_H
++
++/* Range coder constants */
++#define RC_SHIFT_BITS 8
++#define RC_TOP_BITS 24
++#define RC_TOP_VALUE (1 << RC_TOP_BITS)
++#define RC_BIT_MODEL_TOTAL_BITS 11
++#define RC_BIT_MODEL_TOTAL (1 << RC_BIT_MODEL_TOTAL_BITS)
++#define RC_MOVE_BITS 5
++
++/*
++ * Maximum number of position states. A position state is the lowest pb
++ * number of bits of the current uncompressed offset. In some places there
++ * are different sets of probabilities for different position states.
++ */
++#define POS_STATES_MAX (1 << 4)
++
++/*
++ * This enum is used to track which LZMA symbols have occurred most recently
++ * and in which order. This information is used to predict the next symbol.
++ *
++ * Symbols:
++ * - Literal: One 8-bit byte
++ * - Match: Repeat a chunk of data at some distance
++ * - Long repeat: Multi-byte match at a recently seen distance
++ * - Short repeat: One-byte repeat at a recently seen distance
++ *
++ * The symbol names are in from STATE_oldest_older_previous. REP means
++ * either short or long repeated match, and NONLIT means any non-literal.
++ */
++enum lzma_state {
++ STATE_LIT_LIT,
++ STATE_MATCH_LIT_LIT,
++ STATE_REP_LIT_LIT,
++ STATE_SHORTREP_LIT_LIT,
++ STATE_MATCH_LIT,
++ STATE_REP_LIT,
++ STATE_SHORTREP_LIT,
++ STATE_LIT_MATCH,
++ STATE_LIT_LONGREP,
++ STATE_LIT_SHORTREP,
++ STATE_NONLIT_MATCH,
++ STATE_NONLIT_REP
++};
++
++/* Total number of states */
++#define STATES 12
++
++/* The lowest 7 states indicate that the previous state was a literal. */
++#define LIT_STATES 7
++
++/* Indicate that the latest symbol was a literal. */
++static inline void INIT lzma_state_literal(enum lzma_state *state)
++{
++ if (*state <= STATE_SHORTREP_LIT_LIT)
++ *state = STATE_LIT_LIT;
++ else if (*state <= STATE_LIT_SHORTREP)
++ *state -= 3;
++ else
++ *state -= 6;
++}
++
++/* Indicate that the latest symbol was a match. */
++static inline void INIT lzma_state_match(enum lzma_state *state)
++{
++ *state = *state < LIT_STATES ? STATE_LIT_MATCH : STATE_NONLIT_MATCH;
++}
++
++/* Indicate that the latest state was a long repeated match. */
++static inline void INIT lzma_state_long_rep(enum lzma_state *state)
++{
++ *state = *state < LIT_STATES ? STATE_LIT_LONGREP : STATE_NONLIT_REP;
++}
++
++/* Indicate that the latest symbol was a short match. */
++static inline void INIT lzma_state_short_rep(enum lzma_state *state)
++{
++ *state = *state < LIT_STATES ? STATE_LIT_SHORTREP : STATE_NONLIT_REP;
++}
++
++/* Test if the previous symbol was a literal. */
++static inline bool_t INIT lzma_state_is_literal(enum lzma_state state)
++{
++ return state < LIT_STATES;
++}
++
++/* Each literal coder is divided in three sections:
++ * - 0x001-0x0FF: Without match byte
++ * - 0x101-0x1FF: With match byte; match bit is 0
++ * - 0x201-0x2FF: With match byte; match bit is 1
++ *
++ * Match byte is used when the previous LZMA symbol was something else than
++ * a literal (that is, it was some kind of match).
++ */
++#define LITERAL_CODER_SIZE 0x300
++
++/* Maximum number of literal coders */
++#define LITERAL_CODERS_MAX (1 << 4)
++
++/* Minimum length of a match is two bytes. */
++#define MATCH_LEN_MIN 2
++
++/* Match length is encoded with 4, 5, or 10 bits.
++ *
++ * Length Bits
++ * 2-9 4 = Choice=0 + 3 bits
++ * 10-17 5 = Choice=1 + Choice2=0 + 3 bits
++ * 18-273 10 = Choice=1 + Choice2=1 + 8 bits
++ */
++#define LEN_LOW_BITS 3
++#define LEN_LOW_SYMBOLS (1 << LEN_LOW_BITS)
++#define LEN_MID_BITS 3
++#define LEN_MID_SYMBOLS (1 << LEN_MID_BITS)
++#define LEN_HIGH_BITS 8
++#define LEN_HIGH_SYMBOLS (1 << LEN_HIGH_BITS)
++#define LEN_SYMBOLS (LEN_LOW_SYMBOLS + LEN_MID_SYMBOLS + LEN_HIGH_SYMBOLS)
++
++/*
++ * Maximum length of a match is 273 which is a result of the encoding
++ * described above.
++ */
++#define MATCH_LEN_MAX (MATCH_LEN_MIN + LEN_SYMBOLS - 1)
++
++/*
++ * Different sets of probabilities are used for match distances that have
++ * very short match length: Lengths of 2, 3, and 4 bytes have a separate
++ * set of probabilities for each length. The matches with longer length
++ * use a shared set of probabilities.
++ */
++#define DIST_STATES 4
++
++/*
++ * Get the index of the appropriate probability array for decoding
++ * the distance slot.
++ */
++static inline uint32_t INIT lzma_get_dist_state(uint32_t len)
++{
++ return len < DIST_STATES + MATCH_LEN_MIN
++ ? len - MATCH_LEN_MIN : DIST_STATES - 1;
++}
++
++/*
++ * The highest two bits of a 32-bit match distance are encoded using six bits.
++ * This six-bit value is called a distance slot. This way encoding a 32-bit
++ * value takes 6-36 bits, larger values taking more bits.
++ */
++#define DIST_SLOT_BITS 6
++#define DIST_SLOTS (1 << DIST_SLOT_BITS)
++
++/* Match distances up to 127 are fully encoded using probabilities. Since
++ * the highest two bits (distance slot) are always encoded using six bits,
++ * the distances 0-3 don't need any additional bits to encode, since the
++ * distance slot itself is the same as the actual distance. DIST_MODEL_START
++ * indicates the first distance slot where at least one additional bit is
++ * needed.
++ */
++#define DIST_MODEL_START 4
++
++/*
++ * Match distances greater than 127 are encoded in three pieces:
++ * - distance slot: the highest two bits
++ * - direct bits: 2-26 bits below the highest two bits
++ * - alignment bits: four lowest bits
++ *
++ * Direct bits don't use any probabilities.
++ *
++ * The distance slot value of 14 is for distances 128-191.
++ */
++#define DIST_MODEL_END 14
++
++/* Distance slots that indicate a distance <= 127. */
++#define FULL_DISTANCES_BITS (DIST_MODEL_END / 2)
++#define FULL_DISTANCES (1 << FULL_DISTANCES_BITS)
++
++/*
++ * For match distances greater than 127, only the highest two bits and the
++ * lowest four bits (alignment) is encoded using probabilities.
++ */
++#define ALIGN_BITS 4
++#define ALIGN_SIZE (1 << ALIGN_BITS)
++#define ALIGN_MASK (ALIGN_SIZE - 1)
++
++/* Total number of all probability variables */
++#define PROBS_TOTAL (1846 + LITERAL_CODERS_MAX * LITERAL_CODER_SIZE)
++
++/*
++ * LZMA remembers the four most recent match distances. Reusing these
++ * distances tends to take less space than re-encoding the actual
++ * distance value.
++ */
++#define REPS 4
++
++#endif
+diff --git a/xen/common/xz/private.h b/xen/common/xz/private.h
+new file mode 100644
+--- /dev/null
++++ b/xen/common/xz/private.h
+@@ -0,0 +1,271 @@
++/*
++ * Private includes and definitions
++ *
++ * Author: Lasse Collin <lasse.collin@tukaani.org>
++ *
++ * This file has been put into the public domain.
++ * You can do whatever you want with this file.
++ */
++
++#ifndef XZ_PRIVATE_H
++#define XZ_PRIVATE_H
++
++#include <xen/kernel.h>
++#include <asm/byteorder.h>
++#define get_le32(p) le32_to_cpup((const uint32_t *)(p))
++
++#if 1 /* ndef CONFIG_??? */
++static inline u32 INIT get_unaligned_le32(void *p)
++{
++ return le32_to_cpup(p);
++}
++
++static inline void INIT put_unaligned_le32(u32 val, void *p)
++{
++ *(__force __le32*)p = cpu_to_le32(val);
++}
++#else
++#include <asm/unaligned.h>
++
++static inline u32 INIT get_unaligned_le32(void *p)
++{
++ return le32_to_cpu(__get_unaligned(p, 4));
++}
++
++static inline void INIT put_unaligned_le32(u32 val, void *p)
++{
++ __put_unaligned(cpu_to_le32(val), p, 4);
++}
++#endif
++
++#define false 0
++#define true 1
++
++/**
++ * enum xz_mode - Operation mode
++ *
++ * @XZ_SINGLE: Single-call mode. This uses less RAM than
++ * than multi-call modes, because the LZMA2
++ * dictionary doesn't need to be allocated as
++ * part of the decoder state. All required data
++ * structures are allocated at initialization,
++ * so xz_dec_run() cannot return XZ_MEM_ERROR.
++ * @XZ_PREALLOC: Multi-call mode with preallocated LZMA2
++ * dictionary buffer. All data structures are
++ * allocated at initialization, so xz_dec_run()
++ * cannot return XZ_MEM_ERROR.
++ * @XZ_DYNALLOC: Multi-call mode. The LZMA2 dictionary is
++ * allocated once the required size has been
++ * parsed from the stream headers. If the
++ * allocation fails, xz_dec_run() will return
++ * XZ_MEM_ERROR.
++ *
++ * It is possible to enable support only for a subset of the above
++ * modes at compile time by defining XZ_DEC_SINGLE, XZ_DEC_PREALLOC,
++ * or XZ_DEC_DYNALLOC. The xz_dec kernel module is always compiled
++ * with support for all operation modes, but the preboot code may
++ * be built with fewer features to minimize code size.
++ */
++enum xz_mode {
++ XZ_SINGLE,
++ XZ_PREALLOC,
++ XZ_DYNALLOC
++};
++
++/**
++ * enum xz_ret - Return codes
++ * @XZ_OK: Everything is OK so far. More input or more
++ * output space is required to continue. This
++ * return code is possible only in multi-call mode
++ * (XZ_PREALLOC or XZ_DYNALLOC).
++ * @XZ_STREAM_END: Operation finished successfully.
++ * @XZ_UNSUPPORTED_CHECK: Integrity check type is not supported. Decoding
++ * is still possible in multi-call mode by simply
++ * calling xz_dec_run() again.
++ * Note that this return value is used only if
++ * XZ_DEC_ANY_CHECK was defined at build time,
++ * which is not used in the kernel. Unsupported
++ * check types return XZ_OPTIONS_ERROR if
++ * XZ_DEC_ANY_CHECK was not defined at build time.
++ * @XZ_MEM_ERROR: Allocating memory failed. This return code is
++ * possible only if the decoder was initialized
++ * with XZ_DYNALLOC. The amount of memory that was
++ * tried to be allocated was no more than the
++ * dict_max argument given to xz_dec_init().
++ * @XZ_MEMLIMIT_ERROR: A bigger LZMA2 dictionary would be needed than
++ * allowed by the dict_max argument given to
++ * xz_dec_init(). This return value is possible
++ * only in multi-call mode (XZ_PREALLOC or
++ * XZ_DYNALLOC); the single-call mode (XZ_SINGLE)
++ * ignores the dict_max argument.
++ * @XZ_FORMAT_ERROR: File format was not recognized (wrong magic
++ * bytes).
++ * @XZ_OPTIONS_ERROR: This implementation doesn't support the requested
++ * compression options. In the decoder this means
++ * that the header CRC32 matches, but the header
++ * itself specifies something that we don't support.
++ * @XZ_DATA_ERROR: Compressed data is corrupt.
++ * @XZ_BUF_ERROR: Cannot make any progress. Details are slightly
++ * different between multi-call and single-call
++ * mode; more information below.
++ *
++ * In multi-call mode, XZ_BUF_ERROR is returned when two consecutive calls
++ * to XZ code cannot consume any input and cannot produce any new output.
++ * This happens when there is no new input available, or the output buffer
++ * is full while at least one output byte is still pending. Assuming your
++ * code is not buggy, you can get this error only when decoding a compressed
++ * stream that is truncated or otherwise corrupt.
++ *
++ * In single-call mode, XZ_BUF_ERROR is returned only when the output buffer
++ * is too small or the compressed input is corrupt in a way that makes the
++ * decoder produce more output than the caller expected. When it is
++ * (relatively) clear that the compressed input is truncated, XZ_DATA_ERROR
++ * is used instead of XZ_BUF_ERROR.
++ */
++enum xz_ret {
++ XZ_OK,
++ XZ_STREAM_END,
++ XZ_UNSUPPORTED_CHECK,
++ XZ_MEM_ERROR,
++ XZ_MEMLIMIT_ERROR,
++ XZ_FORMAT_ERROR,
++ XZ_OPTIONS_ERROR,
++ XZ_DATA_ERROR,
++ XZ_BUF_ERROR
++};
++
++/**
++ * struct xz_buf - Passing input and output buffers to XZ code
++ * @in: Beginning of the input buffer. This may be NULL if and only
++ * if in_pos is equal to in_size.
++ * @in_pos: Current position in the input buffer. This must not exceed
++ * in_size.
++ * @in_size: Size of the input buffer
++ * @out: Beginning of the output buffer. This may be NULL if and only
++ * if out_pos is equal to out_size.
++ * @out_pos: Current position in the output buffer. This must not exceed
++ * out_size.
++ * @out_size: Size of the output buffer
++ *
++ * Only the contents of the output buffer from out[out_pos] onward, and
++ * the variables in_pos and out_pos are modified by the XZ code.
++ */
++struct xz_buf {
++ const uint8_t *in;
++ size_t in_pos;
++ size_t in_size;
++
++ uint8_t *out;
++ size_t out_pos;
++ size_t out_size;
++};
++
++/**
++ * struct xz_dec - Opaque type to hold the XZ decoder state
++ */
++struct xz_dec;
++
++/* If no specific decoding mode is requested, enable support for all modes. */
++#if !defined(XZ_DEC_SINGLE) && !defined(XZ_DEC_PREALLOC) \
++ && !defined(XZ_DEC_DYNALLOC)
++# define XZ_DEC_SINGLE
++# define XZ_DEC_PREALLOC
++# define XZ_DEC_DYNALLOC
++#endif
++
++/*
++ * The DEC_IS_foo(mode) macros are used in "if" statements. If only some
++ * of the supported modes are enabled, these macros will evaluate to true or
++ * false at compile time and thus allow the compiler to omit unneeded code.
++ */
++#ifdef XZ_DEC_SINGLE
++# define DEC_IS_SINGLE(mode) ((mode) == XZ_SINGLE)
++#else
++# define DEC_IS_SINGLE(mode) (false)
++#endif
++
++#ifdef XZ_DEC_PREALLOC
++# define DEC_IS_PREALLOC(mode) ((mode) == XZ_PREALLOC)
++#else
++# define DEC_IS_PREALLOC(mode) (false)
++#endif
++
++#ifdef XZ_DEC_DYNALLOC
++# define DEC_IS_DYNALLOC(mode) ((mode) == XZ_DYNALLOC)
++#else
++# define DEC_IS_DYNALLOC(mode) (false)
++#endif
++
++#if !defined(XZ_DEC_SINGLE)
++# define DEC_IS_MULTI(mode) (true)
++#elif defined(XZ_DEC_PREALLOC) || defined(XZ_DEC_DYNALLOC)
++# define DEC_IS_MULTI(mode) ((mode) != XZ_SINGLE)
++#else
++# define DEC_IS_MULTI(mode) (false)
++#endif
++
++/*
++ * If any of the BCJ filter decoders are wanted, define XZ_DEC_BCJ.
++ * XZ_DEC_BCJ is used to enable generic support for BCJ decoders.
++ */
++#ifndef XZ_DEC_BCJ
++# if defined(XZ_DEC_X86) || defined(XZ_DEC_POWERPC) \
++ || defined(XZ_DEC_IA64) || defined(XZ_DEC_ARM) \
++ || defined(XZ_DEC_ARM) || defined(XZ_DEC_ARMTHUMB) \
++ || defined(XZ_DEC_SPARC)
++# define XZ_DEC_BCJ
++# endif
++#endif
++
++/*
++ * Allocate memory for LZMA2 decoder. xz_dec_lzma2_reset() must be used
++ * before calling xz_dec_lzma2_run().
++ */
++XZ_EXTERN struct xz_dec_lzma2 *xz_dec_lzma2_create(enum xz_mode mode,
++ uint32_t dict_max);
++
++/*
++ * Decode the LZMA2 properties (one byte) and reset the decoder. Return
++ * XZ_OK on success, XZ_MEMLIMIT_ERROR if the preallocated dictionary is not
++ * big enough, and XZ_OPTIONS_ERROR if props indicates something that this
++ * decoder doesn't support.
++ */
++XZ_EXTERN enum xz_ret xz_dec_lzma2_reset(struct xz_dec_lzma2 *s,
++ uint8_t props);
++
++/* Decode raw LZMA2 stream from b->in to b->out. */
++XZ_EXTERN enum xz_ret xz_dec_lzma2_run(struct xz_dec_lzma2 *s,
++ struct xz_buf *b);
++
++/* Free the memory allocated for the LZMA2 decoder. */
++XZ_EXTERN void xz_dec_lzma2_end(struct xz_dec_lzma2 *s);
++
++#ifdef XZ_DEC_BCJ
++/*
++ * Allocate memory for BCJ decoders. xz_dec_bcj_reset() must be used before
++ * calling xz_dec_bcj_run().
++ */
++XZ_EXTERN struct xz_dec_bcj *xz_dec_bcj_create(bool_t single_call);
++
++/*
++ * Decode the Filter ID of a BCJ filter. This implementation doesn't
++ * support custom start offsets, so no decoding of Filter Properties
++ * is needed. Returns XZ_OK if the given Filter ID is supported.
++ * Otherwise XZ_OPTIONS_ERROR is returned.
++ */
++XZ_EXTERN enum xz_ret xz_dec_bcj_reset(struct xz_dec_bcj *s, uint8_t id);
++
++/*
++ * Decode raw BCJ + LZMA2 stream. This must be used only if there actually is
++ * a BCJ filter in the chain. If the chain has only LZMA2, xz_dec_lzma2_run()
++ * must be called directly.
++ */
++XZ_EXTERN enum xz_ret xz_dec_bcj_run(struct xz_dec_bcj *s,
++ struct xz_dec_lzma2 *lzma2,
++ struct xz_buf *b);
++
++/* Free the memory allocated for the BCJ filters. */
++#define xz_dec_bcj_end(s) free(s)
++#endif
++
++#endif
+diff --git a/xen/common/xz/stream.h b/xen/common/xz/stream.h
+new file mode 100644
+--- /dev/null
++++ b/xen/common/xz/stream.h
+@@ -0,0 +1,55 @@
++/*
++ * Definitions for handling the .xz file format
++ *
++ * Author: Lasse Collin <lasse.collin@tukaani.org>
++ *
++ * This file has been put into the public domain.
++ * You can do whatever you want with this file.
++ */
++
++#ifndef XZ_STREAM_H
++#define XZ_STREAM_H
++
++/*
++ * See the .xz file format specification at
++ * http://tukaani.org/xz/xz-file-format.txt
++ * to understand the container format.
++ */
++
++#define STREAM_HEADER_SIZE 12
++
++#define HEADER_MAGIC "\3757zXZ"
++#define HEADER_MAGIC_SIZE 6
++
++#define FOOTER_MAGIC "YZ"
++#define FOOTER_MAGIC_SIZE 2
++
++/*
++ * Variable-length integer can hold a 63-bit unsigned integer or a special
++ * value indicating that the value is unknown.
++ *
++ * Experimental: vli_type can be defined to uint32_t to save a few bytes
++ * in code size (no effect on speed). Doing so limits the uncompressed and
++ * compressed size of the file to less than 256 MiB and may also weaken
++ * error detection slightly.
++ */
++typedef uint64_t vli_type;
++
++#define VLI_MAX ((vli_type)-1 / 2)
++#define VLI_UNKNOWN ((vli_type)-1)
++
++/* Maximum encoded size of a VLI */
++#define VLI_BYTES_MAX (sizeof(vli_type) * 8 / 7)
++
++/* Integrity Check types */
++enum xz_check {
++ XZ_CHECK_NONE = 0,
++ XZ_CHECK_CRC32 = 1,
++ XZ_CHECK_CRC64 = 4,
++ XZ_CHECK_SHA256 = 10
++};
++
++/* Maximum possible Check ID */
++#define XZ_CHECK_MAX 15
++
++#endif
+diff --git a/xen/include/xen/decompress.h b/xen/include/xen/decompress.h
+--- a/xen/include/xen/decompress.h
++++ b/xen/include/xen/decompress.h
+@@ -31,7 +31,7 @@
+ * dependent).
+ */
+
+-decompress_fn bunzip2, unlzma, unlzo;
++decompress_fn bunzip2, unxz, unlzma, unlzo;
+
+ int decompress(void *inbuf, unsigned int len, void *outbuf); \ No newline at end of file
diff --git a/kernels/xen/parabolainit.patch b/kernels/xen/parabolainit.patch
new file mode 100644
index 000000000..645a66edd
--- /dev/null
+++ b/kernels/xen/parabolainit.patch
@@ -0,0 +1,423 @@
+diff -Naur orig.xen-4.1.1//tools/hotplug/Linux/init.d/xencommons xen-4.1.1//tools/hotplug/Linux/init.d/xencommons
+--- orig.xen-4.1.1//tools/hotplug/Linux/init.d/xencommons 2011-07-03 03:08:44.953747064 -0700
++++ xen-4.1.1//tools/hotplug/Linux/init.d/xencommons 2011-07-05 13:47:54.627029164 -0700
+@@ -18,6 +18,9 @@
+ # Description: Starts and stops the daemons neeeded for xl/xend
+ ### END INIT INFO
+
++. /etc/rc.conf
++. /etc/rc.d/functions
++
+ if [ -d /etc/sysconfig ]; then
+ xencommons_config=/etc/sysconfig
+ else
+@@ -26,7 +29,7 @@
+
+ test -f $xencommons_config/xencommons && . $xencommons_config/xencommons
+
+-XENCONSOLED_PIDFILE=/var/run/xenconsoled.pid
++XENCONSOLED_PIDFILE=/run/daemons/xenconsoled.pid
+ shopt -s extglob
+
+ if test "x$1" = xstart && \
+@@ -51,8 +54,9 @@
+ rm -f "$XENSTORED_ROOTDIR"/tdb* &>/dev/null
+ test -z "$XENSTORED_TRACE" || XENSTORED_ARGS=" -T /var/log/xen/xenstored-trace.log"
+
+- echo -n Starting xenstored...
+- xenstored --pid-file=/var/run/xenstored.pid $XENSTORED_ARGS
++ #echo -n Starting xenstored...
++ stat_busy "Starting xenstored"
++ xenstored --pid-file=/run/daemons/xenstored.pid $XENSTORED_ARGS
+
+ # Wait for xenstored to actually come up, timing out after 30 seconds
+ while [ $time -lt $timeout ] && ! `xenstore-read -s / >/dev/null 2>&1` ; do
+@@ -60,33 +64,39 @@
+ time=$(($time+1))
+ sleep 1
+ done
+- echo
+-
+ # Exit if we timed out
+ if ! [ $time -lt $timeout ] ; then
+- echo Could not start xenstored
++ #echo Could not start xenstored
++ stat_fail
+ exit 1
+ fi
++ stat_done
+
+- echo Setting domain 0 name...
++ stat_busy "Setting domain 0 name..."
+ xenstore-write "/local/domain/0/name" "Domain-0"
++ stat_done
+ fi
+
+- echo Starting xenconsoled...
++ #echo Starting xenconsoled...
++ stat_busy "Starting xenconsoled"
+ test -z "$XENCONSOLED_TRACE" || XENCONSOLED_ARGS=" --log=$XENCONSOLED_TRACE"
+ xenconsoled --pid-file=$XENCONSOLED_PIDFILE $XENCONSOLED_ARGS
+ test -z "$XENBACKENDD_DEBUG" || XENBACKENDD_ARGS="-d"
+ test "`uname`" != "NetBSD" || xenbackendd $XENBACKENDD_ARGS
++ stat_done
++ add_daemon xencommons
+ }
+ do_stop () {
+- echo Stopping xenconsoled
++ stat_busy "Stopping xenconsoled"
+ if read 2>/dev/null <$XENCONSOLED_PIDFILE pid; then
+ kill $pid
+ while kill -9 $pid >/dev/null 2>&1; do sleep 0.1; done
+ rm -f $XENCONSOLED_PIDFILE
+ fi
++ stat_done
+
+- echo WARNING: Not stopping xenstored, as it cannot be restarted.
++ printhl "WARNING: Not stopping xenstored, as it cannot be restarted."
++ rm_daemon xencommons
+ }
+
+ case "$1" in
+diff -Naur orig.xen-4.1.1//tools/hotplug/Linux/init.d/xend xen-4.1.1//tools/hotplug/Linux/init.d/xend
+--- orig.xen-4.1.1//tools/hotplug/Linux/init.d/xend 2011-07-03 03:08:44.953747064 -0700
++++ xen-4.1.1//tools/hotplug/Linux/init.d/xend 2011-07-05 01:47:40.981951191 -0700
+@@ -18,6 +18,10 @@
+ # Description: Starts and stops the Xen control daemon.
+ ### END INIT INFO
+
++. /etc/rc.conf
++. /etc/rc.d/functions
++
++
+ shopt -s extglob
+
+ # Wait for Xend to be up
+@@ -37,23 +41,30 @@
+ case "$1" in
+ start)
+ if [ -z "`ps -C xenconsoled -o pid=`" ]; then
+- echo "xencommons should be started first."
++ printhl "xencommons should be started first."
+ exit 1
+ fi
+ # mkdir shouldn't be needed as most distros have this already created. Default to using subsys.
+ # See docs/misc/distro_mapping.txt
+- mkdir -p /var/lock
+- if [ -d /var/lock/subsys ] ; then
+- touch /var/lock/subsys/xend
++ if [ -d /run/lock/subsys ] ; then
++ touch /run/lock/subsys/xend
+ else
+- touch /var/lock/xend
++ touch /run/lock/xend
+ fi
++ stat_busy "Starting xend"
+ xend start
+ await_daemons_up
++ stat_done
++ add_daemon xend
+ ;;
++
++
+ stop)
++ stat_busy "Stopping xend"
+ xend stop
+- rm -f /var/lock/subsys/xend /var/lock/xend
++ rm -f /run/lock/xend /var/lock/xend
++ stat_done
++ rm_daemon xend
+ ;;
+ status)
+ xend status
+@@ -62,8 +73,10 @@
+ xend reload
+ ;;
+ restart|force-reload)
++ stat_busy "Restarting xend"
+ xend restart
+ await_daemons_up
++ stat_done
+ ;;
+ *)
+ # do not advertise unreasonable commands that there is no reason
+diff -Naur orig.xen-4.1.1//tools/hotplug/Linux/init.d/xendomains xen-4.1.1//tools/hotplug/Linux/init.d/xendomains
+--- orig.xen-4.1.1//tools/hotplug/Linux/init.d/xendomains 2011-07-03 03:08:44.953747064 -0700
++++ xen-4.1.1//tools/hotplug/Linux/init.d/xendomains 2011-07-05 13:46:36.208222760 -0700
+@@ -26,6 +26,9 @@
+ # Description: Start / stop domains automatically when domain 0
+ # boots / shuts down.
+ ### END INIT INFO
++. /etc/rc.conf
++. /etc/rc.d/functions
++
+
+ CMD=xm
+ $CMD list &> /dev/null
+@@ -46,93 +49,52 @@
+ exit 0
+ fi
+
+-# See docs/misc/distro_mapping.txt
+-if [ -d /var/lock/subsys ]; then
+- LOCKFILE=/var/lock/subsys/xendomains
+-else
+- LOCKFILE=/var/lock/xendomains
+-fi
+-
+-if [ -d /etc/sysconfig ]; then
+- XENDOM_CONFIG=/etc/sysconfig/xendomains
+-else
+- XENDOM_CONFIG=/etc/default/xendomains
+-fi
++LOCKFILE=/run/lock/xendomains
++XENDOM_CONFIG=/etc/default/xendomains
+
+-test -r $XENDOM_CONFIG || { echo "$XENDOM_CONFIG not existing";
++test -r $XENDOM_CONFIG || {
++ printhl "$XENDOM_CONFIG not existing";
+ if [ "$1" = "stop" ]; then exit 0;
+ else exit 6; fi; }
+
+ . $XENDOM_CONFIG
+
+-# Use the SUSE rc_ init script functions;
+-# emulate them on LSB, RH and other systems
+-if test -e /etc/rc.status; then
+- # SUSE rc script library
+- . /etc/rc.status
+-else
+- _cmd=$1
+- declare -a _SMSG
+- if test "${_cmd}" = "status"; then
++_cmd=$1
++declare -a _SMSG
++if test "${_cmd}" = "status"; then
+ _SMSG=(running dead dead unused unknown)
+ _RC_UNUSED=3
+- else
++else
+ _SMSG=(done failed failed missed failed skipped unused failed failed)
+ _RC_UNUSED=6
+- fi
+- if test -e /etc/init.d/functions; then
+- # REDHAT
+- . /etc/init.d/functions
+- echo_rc()
+- {
+- #echo -n " [${_SMSG[${_RC_RV}]}] "
+- if test ${_RC_RV} = 0; then
+- success " [${_SMSG[${_RC_RV}]}] "
+- else
+- failure " [${_SMSG[${_RC_RV}]}] "
+- fi
+- }
+- elif test -e /lib/lsb/init-functions; then
+- # LSB
+- . /lib/lsb/init-functions
+- if alias log_success_msg >/dev/null 2>/dev/null; then
+- echo_rc()
+- {
+- echo " [${_SMSG[${_RC_RV}]}] "
+- }
+- else
+- echo_rc()
+- {
+- if test ${_RC_RV} = 0; then
+- log_success_msg " [${_SMSG[${_RC_RV}]}] "
+- else
+- log_failure_msg " [${_SMSG[${_RC_RV}]}] "
+- fi
+- }
+- fi
+- else
+- # emulate it
+- echo_rc()
+- {
+- echo " [${_SMSG[${_RC_RV}]}] "
+- }
+- fi
+- rc_reset() { _RC_RV=0; }
+- rc_failed()
+- {
++fi
++
++
++
++echo_rc() {
++ echo
++ printhl "Return Status: ${_SMSG[${_RC_RV}]}"
++}
++
++
++rc_reset() { _RC_RV=0; }
++
++
++rc_failed() {
+ if test -z "$1"; then
+- _RC_RV=1;
++ _RC_RV=1;
+ elif test "$1" != "0"; then
+- _RC_RV=$1;
+- fi
++ _RC_RV=$1;
++ fi
+ return ${_RC_RV}
+- }
+- rc_check()
+- {
++}
++
++rc_check() {
+ return rc_failed $?
+- }
+- rc_status()
+- {
++}
++
++
++rc_status() {
+ rc_failed $?
+ if test "$1" = "-r"; then _RC_RV=0; shift; fi
+ if test "$1" = "-s"; then rc_failed 5; echo_rc; rc_failed 3; shift; fi
+@@ -140,26 +102,24 @@
+ if test "$1" = "-v"; then echo_rc; shift; fi
+ if test "$1" = "-r"; then _RC_RV=0; shift; fi
+ return ${_RC_RV}
+- }
+- rc_exit() { exit ${_RC_RV}; }
+- rc_active()
+- {
++}
++
++
++rc_exit() { exit ${_RC_RV}; }
++
++
++rc_active() {
+ if test -z "$RUNLEVEL"; then read RUNLEVEL REST < <(/sbin/runlevel); fi
+ if test -e /etc/init.d/S[0-9][0-9]${1}; then return 0; fi
+ return 1
+- }
+-fi
++}
+
+-if ! which usleep >&/dev/null
+-then
+- usleep()
+- {
+- if [ -n "$1" ]
+- then
+- sleep $(( $1 / 1000000 ))
+- fi
+- }
+-fi
++usleep() {
++ if [ -n "$1" ]
++ then
++ sleep $(( $1 / 1000000 ))
++ fi
++}
+
+ # Reset status of this service
+ rc_reset
+@@ -235,10 +195,12 @@
+ start()
+ {
+ if [ -f $LOCKFILE ]; then
+- echo -e "xendomains already running (lockfile exists)"
++ stat_busy "xendomains already running (lockfile exists)"
++ stat_fail
+ return;
+ fi
+
++ printhl "Starting Xen Domains"
+ saved_domains=" "
+ if [ "$XENDOMAINS_RESTORE" = "true" ] &&
+ contains_something "$XENDOMAINS_SAVE"
+@@ -299,6 +261,7 @@
+ fi
+ done
+ fi
++ add_daemon xendomains
+ }
+
+ all_zombies()
+@@ -352,7 +315,7 @@
+ if test "$XENDOMAINS_AUTO_ONLY" = "true"; then
+ rdnames
+ fi
+- echo -n "Shutting down Xen domains:"
++ printhl "Shutting down Xen domains"
+ name=;id=
+ while read LN; do
+ parseln "$LN" || continue
+@@ -465,6 +428,7 @@
+ rm -f $LOCKFILE
+
+ exec 2>&3
++ rm_daemon xendomains
+ }
+
+ check_domain_up()
+diff -Naur orig.xen-4.1.1//tools/hotplug/Linux/init.d/xen-watchdog xen-4.1.1//tools/hotplug/Linux/init.d/xen-watchdog
+--- orig.xen-4.1.1//tools/hotplug/Linux/init.d/xen-watchdog 2011-07-03 03:08:44.957080397 -0700
++++ xen-4.1.1//tools/hotplug/Linux/init.d/xen-watchdog 2011-07-05 13:20:22.515289867 -0700
+@@ -17,49 +17,32 @@
+ ### END INIT INFO
+ #
+
++. /etc/rc.conf
++. /etc/rc.d/functions
++
+ DAEMON=/usr/sbin/xenwatchdogd
+ base=$(basename $DAEMON)
++initname="xen-watchdog"
+
+-# Source function library.
+-if [ -e /etc/init.d/functions ] ; then
+- . /etc/init.d/functions
+-elif [ -e /lib/lsb/init-functions ] ; then
+- . /lib/lsb/init-functions
+- success () {
+- log_success_msg $*
+- }
+- failure () {
+- log_failure_msg $*
+- }
+-else
+- success () {
+- echo $*
+- }
+- failure () {
+- echo $*
+- }
+-fi
+
+ start() {
+ local r
+- echo -n $"Starting domain watchdog daemon: "
++ stat_busy "Starting domain watchdog daemon"
+
+ $DAEMON 30 15
+ r=$?
+- [ "$r" -eq 0 ] && success $"$base startup" || failure $"$base startup"
+- echo
++ [ "$r" -eq 0 ] && stat_done ; add_daemon $initname || stat_fail
+
+ return $r
+ }
+
+ stop() {
+ local r
+- echo -n $"Stopping domain watchdog daemon: "
++ stat_busy "Stopping domain watchdog daemon"
+
+ killall -USR1 $base 2>/dev/null
+ r=$?
+- [ "$r" -eq 0 ] && success $"$base stop" || failure $"$base stop"
+- echo
++ [ "$r" -eq 0 ] && stat_done ; rm_daemon $initname || stat_fail
+
+ return $r
+ }
diff --git a/kernels/xen/xen.patch b/kernels/xen/xen.patch
new file mode 100644
index 000000000..8b1b5585d
--- /dev/null
+++ b/kernels/xen/xen.patch
@@ -0,0 +1,21 @@
+--- xen-4.0.1.orig/Config.mk 2010-08-25 12:22:44.000000000 +0200
++++ xen-4.0.1/Config.mk 2010-11-02 23:38:11.575000000 +0100
+@@ -187,4 +187,4 @@
+ CONFIG_MINITERM ?= n
+ CONFIG_LOMOUNT ?= n
+
+--include $(XEN_ROOT)/.config
++#-include $(XEN_ROOT)/.config
+
+--- xen-4.0.1/Config.mk.orig 2010-08-25 11:22:44.000000000 +0100
++++ xen-4.0.1/Config.mk 2011-01-29 17:40:43.000000000 +0000
+@@ -135,6 +135,8 @@
+
+ LDFLAGS += $(foreach i, $(EXTRA_LIB), -L$(i))
+ CFLAGS += $(foreach i, $(EXTRA_INCLUDES), -I$(i))
++# temporary compile fix for rawhide
++CFLAGS += -Wunused-but-set-variable -Wno-error=unused-but-set-variable -Wuninitialized -Wno-error=uninitialized
+
+ EMBEDDED_EXTRA_CFLAGS := -nopie -fno-stack-protector -fno-stack-protector-all
+ EMBEDDED_EXTRA_CFLAGS += -fno-exceptions
+