Maverick

Revision 3 as of 2010-08-19 19:48:48

Clear message

Ubuntu Sauce Report

The purpose of this document is to dissect the Mainline to Ubuntu Kernel delta. Detailing the items we are carrying, their benefit to Ubuntu, and the plans for each going forward.

# patches

comment

231

patches on top of the v2.6.35.2 kernel (ignores commits like start new release, bump abi, rebase, and release version as these are just maintenance commits)

20

patches cherry-picked from upstream (ie missed 2.6.35 but in 2.6.36-rc1)

8

patches slated for upstream (ie in an upstream maintainer's tree or mailing list)

33

ubuntu/ driver patches

75

potential patches to keep as SAUCE (these will be reviewed at UDS to determine which should be kept as SAUCE and which should be submitted upstream)

External Drivers

  • SAUCE: update compcache version to 0.5.3
  • SAUCE: (no-up) swap: Add notify_swap_entry_free callback for compcache
    • We are carrying compcache to facilitate booting on small memory systems, typically those with less than 256MB of ram. Note: A newer version of compcache actually exists upstream. We continue to carry this older version until the userspace bits are updated to support the newer upstream version. At that time, we can drop carrying this SAUCE patch.
  • SAUCE: (no-up) Export dm_disk function of device-mapper
  • SAUCE: updated dm-raid45 module version to 2009.04.24 (2.6.30-rc3)
    • dm-raid45 is a PC part sw part hw raid implementation for a small number of raid cards. This has been objected to upstream by the maintainer as it abuses some of the interfaces.
  • SAUCE: Updated ndiswrapper to 1.56
  • SAUCE: make ndiswrapper available on X86 only
  • SAUCE: ndiswrapper: convert multicast list to list_head
  • SAUCE: ndiswrapper: rename usb_buffer_alloc() and usb_buffer_free()
    • ndiswrapper allows us to use Windows drivers for wireless and network cards. This is not acceptable upstream but key to support of a number of wireless cards.
  • SAUCE: Update to LIRC 0.8.6
  • SAUCE: lirc: rename usb_buffer_alloc() and usb_buffer_free()
  • lirc -- rename kfifo_put and kfifo_get
  • lirc -- pass kfifo to kfifo_alloc and move spinlock
  • lirc -- drop explicit include of linux/autoconf.h
  • [Upstream] lirc -- follow removal of .id element
    • LIRC brings in support for infrared controllers. Required for some Dell systems.
  • AUFS -- update to b37c575759dc4535ccc03241c584ad5fe69e3b25
  • AUFS -- AUFS -- add BOM and automated update script
    • Aufs provides our union filsystem support for live cds and for LTSP. Upstream objects to the way in which this patch set implements unions. The preferred option upstream is to implement unions at the VFS layer. We are maintaining and updating aufs until such time that VFS unions mounts are ready. We are engaging with upstream to help drive this including testing these new patches. We re-evaluated union mounts for Maverick but it was still to pre-mature. We will re-address this for M+1 so see AUFS can be dropped.
  • ubuntu: fsam7400 -- kill switch for Fujitsu Siemens Amilo M 7400
  • fsam7400: Depend on CHECK_SIGNATURE
  • fsam7400 -- Cleanup Makefile
    • This driver provides software rfkill for the Fujitsu Siemens Amilo M 7400. This driver does not appear to be automatically loaded nor protected against missloading. It is being reviewed for pushing to staging.
  • iscsitarget -- version 1.4.20.2
  • iscsitarget -- rename daddr inet_sock field
    • Adds iSCSI target driver, allowing devices on remote machines to be mounted as if local over a lan.
  • rtl8192se -- update to version 0017.0507.2010
    • Realtek driver for RTL8191/92 or RTL8171 wifi nic. It is being reviewed for pushing to staging.
  • ubuntu: rfkill drivers -- version 1.3
    • Adds software rfkill support for Averatec 5100P and Packard Bell EasyNote E5. Is being reviewed for pushing to staging.

  • SAUCE: AppArmor: Allow dfa backward compatibility with broken userspace

  • SAUCE: AppArmor 2.4 compatibility patch

  • SAUCE: AppArmor: -- sync to AppArmor mainline 2010-07-29

    • Add support for the AppArmor Linux Security Module. This has been merged upstream as of 2.6.36-rc1. This can be dropped in M+1.

  • [Upstream] security: Yama LSM
  • SAUCE: security: unconditionally chain to Yama LSM
  • SAUCE: Yama: add PTRACE exception tracking and interface
  • SAUCE: security: create task_free security callback
  • SAUCE: Yama: verify inode is symlink to avoid bind mounts
  • SAUCE: Yama: search for PTRACE exceptions via thread group leader
  • SAUCE: Yama: check PTRACE using thread group leader
    • Add support for the Yama Linux Security Module to collect several security features (symlink, hardlink, and PTRACE restrictions) that have existed in various forms over the years and have been carried outside the mainline kernel by other Linux distributions like Openwall and grsecurity.. This was accepted into the upstream security-next tree and was originally supposed to land in 2.6.36-rc1. However last minute push back from upstream resulted in this not being merged for 2.6.36-rc1. Discussion is ongoing with upstream.
  • omnibook -- support Toshiba (HP) netbooks

MULTI-TOUCH

  • SAUCE: hid: 3m: Simplify touchsreen emulation logic
  • input: Support Clickpad devices in ClickZone mode

ARM

  • SAUCE: (no-up) ARM: Resetting power_mode to its original value.
    • Without this the kernel fails to initialize the SDHC card and find the root partition. Work is currently underway with the community to find a real solution to the problem. This a temporary measure to unblock developers and will have to be reverted when the real fix gets upstream.
  • SAUCE: ARM: OMAP: Beagle: support twl gpio differences on xM
  • SAUCE: OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX
  • SAUCE: OMAP: DSS2: check for both cpu type and revision, rather than just revision
  • SAUCE: ARM: OMAP: Add macros for comparing silicon revision
    • Required setup to enable USB Ethernet (usb0) and USB host on the XM Beagleboard (A rev). See 608095

  • Stop ARM boards crashing when CUPS is loaded
    • 601226 Prevent parport_pc from loading on OMAP based systems

  • ARM: Adding regulator supply for vdds_sdi.
    • The omapfb driver couldn't locate its display sink because of an initialisation error in the DSS subsystem. This error was caused by a missing 'sdi' entry in the board power regulator list.
  • SAUCE: omap: remove calls to usb_nop_xceiv_register from board files
    • This will allow the OMAP USB drivers to be compiled in as modules. At the moment, CONFIG_NOP_USB_XCEIV cannot be a module. This has been submitted upstream, but the correct solution hasn't been agreed upon.

SLATED FOR UPSTREAM

These are all slated to be officially merged into Linus' upstream tree, but currently only reside in an upstream maintainers tree or mailing list.

  • x86, mce: Make xeon75xx memory driver dependent on PCI
  • x86, mce: Rename cpu_specific_poll to mce_cpu_specific_poll
  • x86, mce: Xeon75xx specific interface to get corrected memory error information
  • input: Support Clickpad devices in ClickZone mode

  • Staging: rt2870: Add USB ID for Buffalo Airstation WLI-UC-GN
  • [Upstream] add local prefix to oss local change_bits
  • drm/radeon/bo: add some fallback placements for VRAM only objects
  • SAUCE: vfs: Add a trace point in the mark_inode_dirty function

MISC PATCHES

  • SAUCE: (no-up) Modularize vesafb
  • SAUCE: (no-up) Modularize vesafb -- fix initialisation
    • Allows us to modularize vesafb. Not sure what we use this for, we've been carrying this since 2008. Should re-evaluate if this is still necessary or if we can drop this.
  • SAUCE: blkfront: default to sd devices
  • SAUCE: fix pv-ops for legacy Xen
    • The current EC2 kernel is based on the very large Xen patchset. A pv-ops based kernel would need a much smaller set of patches which could be maintained as a kernel flavor instead of the topic branch used for the current EC2 kernel.
  • SAUCE: Enable speedstep for sonoma processors.
  • UBUNTU: SAUCE: fix build error with CONFIG_BLK_DEV_INITRD=n
    • The original aynchronous boot patch (UBUNTU: SAUCE: Make populate_rootfs asynchronous) did not take into consideration the case when CONFIG_BLK_DEV_INITRD=n, e.g., populate_rootfs_domain becomes undefined. Therefore, add it to noinitramfs.c where its use is benign.
  • SAUCE: Restore VT fonts on switch
    • Not all X drivers save and restore fonts on text VTs. Add code to the kernel to explicitly save and restore them on VT switches.
  • SAUCE: trace: add trace events for open(), exec() and uselib().
    • 462111 This patch uses TRACE_EVENT to add tracepoints for the open(), exec() and uselib() syscalls so that ureadahead can cheaply trace the boot sequence to determine what to read to speed up the next. It's not upstream because it will need to be rebased onto the syscall trace events whenever that gets merged, and is a stop-gap.

  • SAUCE: Make populate_rootfs asynchronous
    • This reduces kernel initialisation time (the time from bootloader to starting userspace) by several 10ths of a second on a selection of test hardware particularly SMP systems, although UP system also benefit.
  • SAUCE: isapnp_init: make isa PNP scans occur async
    • This reduces kernel initialisation time (the time from bootloader to starting userspace) by several 10ths of a second x86 32bit systems.
  • SAUCE: KMS: cache the EDID information of the LVDS
    • you're not going to replace your LVDS at runtime..... so this patch caches the EDID information of the LVDS. An LVDS probe can easily take 200 milliseconds, and we do this multiple times during a system startup.
  • SAUCE: Increase the default prealloc buffer for HDA audio devices (non-modem)
    • This allows for buffering of up to 4 seconds of audio. This is intended to improve the audio experience.
  • SAUCE: async_populate_rootfs: move rootfs init earlier
    • Check to see if the machine has more than one active CPU, if it does then it is worth starting the decode of the rootfs earlier.
  • SAUCE: acpi battery -- move first lookup asynchronous
    • 507211 When instantiating the battery object on to the acpi bus in the kernel we talk to the BIOS to get the current battery state. This can take a long time and holds the acpi bus object locked for the duration. This leads to any other object wishing to add itself that bus blocking. This leads to unpredicatable delays of up to .3s when initialising the hpet during boot depending on execution order.

  • SAUCE: khubd -- switch USB product/manufacturer/serial handling to RCU
    • 510937 With the introduction of wireless USB hubs the product, manufacturer, and serial number are now mutable. This necessitates new locking in the consumers of these values including the sysfs read routines in order to prevent use-after-free acces to these values. These extra locks create significant lock contention leading to increased boot times (0.3s for an example Atom based system).

  • SAUCE: PM report driver and device suspend/resume times.
    • Based on a patch from Rafael J. Wysocki. This patch prints suspend/resume information for each driver/device to dmesg.
  • SAUCE: dma-mapping: Remove WARN_ON in dma_free_coherent
    • Prevent spamming dmesg
  • SAUCE: x86: implement cs-limit nx-emulation for ia32
    • This is a refresh from version 1.117 as carried by the Fedora Project. Implements NX emulation via CS-limits. It closes a gap in security protections on ia32 kernels without PAE, and for ia32 hardware that lacks the NX feature. Upstream feels this NX emulation is not appropriate for mainline, and as such, RedHat and others have carried it in their kernels for a long time now.

  • SAUCE: x86: more tightly confine cs-limit nx-emulation to ia32 only
    • This makes sure to not disable fast syscalls too generally, and clarifies nx-emulation code a bit more.
  • SAUCE: x86: brk away from exec rand area
    • This is a fix for the NX emulation patch to force the brk area well outside of the exec randomization area to avoid future allocation or brk growth collisions. Normally this isn't a problem, except when the text region has been loaded from a PIE binary and the CS limit can't be put just above bss.
  • SAUCE: add option to hand off all kernel parameters to init
    • 586386 Some init packages such as upstart find having all of the kernel parameters passed in useful.

  • SAUCE: add tracing for user initiated readahead requests
    • Track pages which undergo readahead and for each record which were actually consumed, via either read or faulted into a map. This allows userspace readahead applications (such as ureadahead) to track which pages in core at the end of a boot are actually required and generate an optimal readahead pack. It also allows pack adjustment and optimisation in parallel with readahead, allowing the pack to evolve to be accurate as userspace paths change.
  • SAUCE: vt -- maintain bootloader screen mode and content until vt switch
    • Introduce a new VT mode KD_TRANSPARENT which endevours to leave the current content of the framebuffer untouched. This allows the bootloader to insert a graphical splash and have the kernel maintain it until the OS splash can take over.
  • SAUCE: vt -- allow grub to request automatic vt_handoff
    • Add support for detecting a new graphics mode selected bit in the screen_info passed over at boot. Use this to automatically enable vt_handoff mode.
  • SAUCE: fbcon -- fix race between open and removal of framebuffers
    • This patch adds a reference count to the framebuffer descriptor to prevent it from being released until after all pending opens are closed.
  • SAUCE: drm -- stop early access to drm devices
    • When a drm driver is initialised we first allocate and initialise the drm minor numbers including creating the sysfs files, then we trigger the driver load method.

PACKAGING TWEEKS

These are all local modifications to allow packaging under Ubuntu and therefore will never be moved upstream.

  • SAUCE: disable adding scsi headers to linux-libc-dev
  • SAUCE: (no-up) Enable ubuntu extra subdirectory
  • SAUCE: (no-up) version: Implement version_signature proc file.
  • SAUCE: (no up) ports -- Build drivers in ubuntu sub-directory on powerpc
  • SAUCE: [PATCH] Add extra headers to linux-libc-dev
  • debian -- more agressivly clean up after depmod on purge cleanup conditional dependancy handling
  • add support for building selected stages of kernel
  • select debian source format 1.0
  • update Vcs-Git to point to maverick repo
  • debian -- include the debian packaging in the -source package
  • 'fdr editconfig' modification. Easily skip over unwanted menuconfigs.
  • debian -- ensure the version number is clean
  • arm -- enable ubuntu/ directory
  • update to ubuntu-debian:508b7aa34b578c0d1e51bfb571f2bfb824dc65ac
  • ARM: Adding MosChip MCS7830 to nic-usb

  • Enable perf to be more helpful when perf_<version> does not exist

QUIRKS

These are all minor changes quirking specific devices. They likely should all be pushed upstream where feasible.

  • Sony laptop: Some Sony Vaia laptops do not enable wwan power by default.
  • SAUCE: hotkey quirks for various Zeptro Znote and Fujitsu Amilo laptops
  • SAUCE: ipw2200: Enable LED by default
  • SAUCE: Added quirk to recognize GE0301 3G modem as an interface.

CONFIGURATION

Minor initialization and configuration changes

  • SAUCE: Add X86_LPIA config option
  • SAUCE: nbd: Change default partitions per device to 15
  • SAUCE: hostap: Change initial operation mode to managed (infra)
  • SAUCE: libata: Ignore HPA by default.
  • SAUCE: Raise the default console 'quiet' level to 2
  • SAUCE: set /proc/acpi/video/*/DOS to 4 by default
  • SAUCE: select a v7 CPU for versatile
  • SAUCE: i915 -- disable powersave by default
  • SAUCE: Make CONFIG_{OMNIBOOK, AVERATEC_5100P, PACKARDBELL_E5} depend on X86
  • SAUCE: PM report driver and device suspend/resume times -- move config
  • SAUCE: cdrom -- default to not locking the tray when in use
  • SAUCE: [um] Don't use nx_enabled under UML