LineageOS 16.0 (v4.4.153) kernel with Halium 9 patches
Find a file
Linux Build Service Account aa36bb38fc Promotion of kernel.lnx.4.4-161227.
CRs      Change ID                                   Subject
--------------------------------------------------------------------------------------------------------------
1104858   I482bbf480d4129cdc6a1dfe08f37a1ec56c3131e   clk: qcom: Add FORCE_ENABLE_RCGR & CLK_ENABLE_HAND_OFF f
1104679   I53ac153ba9f7ae81bb0657b17e0e798fd3fe4f48   power_supply: Add SOC_REPORTING_READY property
1104679   I415e322e99bacd61c4e9ac921643d87d3eec4b3e   power: qpnp-fg-gen3: add SOC_REPORTING_READY property
1068294   I779074d0aba35827e1a8264385149967cb9973f3   regulator: cpr4-mmss: Add mmss CPR platform specific dri
1105323   I073ab59cc4ef1b71545a9e77b76d94f09d659aac   msm_11ad: Add option to enable SMMU fastmap
1102641   I39a1266f4158e71238f374b6cba49e1a8c2b1a3b   leds: qpnp-wled: Update WLED config
1104760   I2f9b4e9d45f95066ec93bb5fab179a14bc2c62ee   power: reset: Store KASLR offset in IMEM
986540   I711354941b4168f3f6ffe2d29185597bdad4da89   spi: spi_qsd: Fix the register peek/poke debug feature
1102726   I806456737485dfcbca8a71d59db0927bbd843708   clk: qcom: add MDSS PLL support for msmfalcon
1093863   I47cfe2cd7d93ba5db57365cf250c600dac22bab1   i2c-msm-v2:Synchronise runtime PM callback operations
1102841   I2661a639c19dd451f22c9a29d7d75d9b3fb98114   msm: mdss: Initialize mdss v3 pp driver ops for msmfalco
1101084   I334fd782a2c5d604cafb94f44832d9c700891ba2   msm: thermal: Update error handling of device offline
1105169   Ib089e7ddd38d0d15285ed65c8a29039451cfc3c5   ARM: dts: msm: Add initial support for msm8998 QRD SKUK
1104865   Ib1291524c53c4ec757a494a1e08cb0925720e1a6   msm: rtb: record counter timestamp for every log record
1081961   I5680dc5333c9664e1316c29a91e29231f15eb4f1   defconfig: msm: Add support for CPU OSM clock
1094763   Ifd41990058f8bbce8ba488770ffbfcd9b6067ad6   ASoC: msm: add support for WCD interrupt config via LPI
1103739   Ie5474c42ccdd88df4c101b2113ca8d924eddf037   usb: phy: qusb2: Switch to SE clk from diff clk upon sus
1068294   I2111fe55c9335d57ac91f18f4a4fb3689d80660d   defconfig: Compile GFX LDO regulator driver for msmfalco
1046799   I47db9f66c95846dbff882f631b915655c33c3d55   spi: spi_qsd: Don't restrict first transfer in FIFO mode
1104607   Ie85f7ede2d91767d0d5d20c90a481e6365ad7189   ARM: dts: msm: Add thermal mitigation properties to msmt
1104981   I476397d88e0f9d2b32ae375afc6f15eca4b9ec95   ARM: dts: msm: Add initial support for msm8998 QRD SKUK
1098662   I214bb19385f855af61da628fdf1cf7efc5dd08d6   msm: mdss: dp: fix calculation of link rate
1102900   Ide652165711eec23644d36837f3847d896293709   msm: mdss: Add mdss capabilities for msmfalcon
1104876   I9a707d953a85c16c9c5be82fd36960b49da36e3c   smcinvoke: support listener service request
1104976   Ic8c9657752271026d796ecd6c3b9f9f46f831f37   ARM: dts: msm: update icnss device node for msm8998-inte
1052835   I7f1419c8f7fd7c371767f6921afe0cd8cfaad18f   msm: camera: Change %p into %pK
1081961   I0aca021e51ef9ae59dedce855430a63937eb98c6   ARM: dts: msm: Add support for CPU clocks for msmfalcon
1076516   I290ec786bbe5c45873265ea74290eefcd3d16cb1   msm: mdss: dp: add support for PHY compliance tests
1100632   Iab69062336966e61683117a17974f46cd8f513aa   ARM: dts: msm: Allocate memory for diag client for msmfa
1103405   Iaaa69a56f13db9304640f115863bb882c72551a8   ARM: dts: msm: Update VA range for venus_ns and modify c
1083444   Ie2702223379b9c77ce4fe30376d446c63223dbc8   diag: dci: Fix possible dangling reference
1102776   I77f8e6de6f1b5c447a3516380c51db9c7129d2f3   spcom: abort any read() operation on SSR
1094456   Ib5247f6bceb1f555c03103f061af089755b2de62   clk: introduce CLK_ENABLE_HAND_OFF flag
1094763   Ib17d8bbd5894be5fbf3fa0cafdbec958abc42649   ARM: dts: msm: Enable audio internal codec nodes for msm
1103891   Iec6247a69c3258660eae398d6e3fe8215e3f254a   ARM: dts: msm: Add TP device node into msm8998 interpose
1104880 868394   I885ae66be2d8cca17bcc0b87b7635a71c734e4b2   usb/xhci: Add support for EHSET tests for host complianc
1094456   I7d527571c2eb4d53d58d82126989bd673de12e2d   clk: move check for CLK_ENABLE_HAND_OFF at unused tree
1093271   I472449c52bff40d48f7d65b05e145cc47cba9357   msm: crypto: fix AEAD issues for HW crypto driver on msm
1105038   I45d13b40fab9bf6686277c0c26a07668410cdfb2   usb: gadget: u_data_ipa: Fix condition check for IPA pip
1081961   I389cc9e93a26a434be752cf74444d6c0985ff36d   clk: qcom: Support CPU clock for OSM for common clock fr
1104001   Ib4cc69afb32a7654bbdd98f2efff901729c4d3da   clk: qcom: Add voltage voting for MSM8996 GCC driver
1104876   Ifeed957b99d2becd986629f60e145d6fdb717244   qseecom: support listener request for smcinvoke
1105100   Ic64d89b960c5effada93118d67a30cc051640be2   ARM: dts: msm: set rcu_expedited for msmfalcon and msmtr
1104853   If624bf14e8588e50fa6a97d29b528d7d02ef64dc   ARM: dts: msm: disable soft hot JEITA for 8998 QRD SKUK
1099484   I58c30a50c7834e7897daa2849b9885b3e797cf07   ARM: dts: msm: enable vdd and vdd-io for sdhc_2 on msm89
1099101   I41ab0baf1bbe6ccda6b8da2ecd077bea2a388e56   ASoC: msm: Check prepare state to avoid duplicate channe
1104977   I575aecb616a56974ec2680e5888190adb40c969a   ARM: dts: msm: set wled string/full scale current for QR
1092969   I6e315eec256f01c143ffc8b463279f2b30e64610   input: qpnp-power-on: Set ship mode in system_pwr_off
1104886   Ic44359e224e0f9070238748bd9b16eed35974ba6   ARM: dts: msm: add support of PM3FALCON based MSMFALCON
1097878   I3f895deaae3acf329088cf8135859cc41e781763   drivers: soc: qcom: Add error handling in function avtim
1104880   I88f2748f0c8cf96fe7f6ab9ebaa82d51ec97f4fd   defconfig: msmcortex: Enable EHSET Test Fixture device d
1104760   I456c62764c88149b785ecf1d65691ea5a775c1db   ARM: dts: msm: Add kaslr offset IMEM entry for msm8998
1104607   I780f9187256596d6f5d93b3847dc98a3c410a51e   ARM: dts: msm: Configure lmh hardware for msmtriton
1104928   I6aad9916c92d2f775632406374dbb803063148de   input: misc: fix heap overflow issue in hbtp_input.c
1101260   I6d59c7804d0dac5087e9b0e6c4a0cdacb5ddf3db   ARM: dts: msm: Add support for new flash mode on msm8998
1100528   I1fd7b7e7324b79544608a9d9ce73aa53608d1f3e   RM: dts: Update SD card Detect GPIO for msmfalcon
1104880   I638ca552f6dae735147378f3e6f6068e0003094b   usb: xhci: Add support for SINGLE_STEP_SET_FEATURE test
1103468   I547d792b38649aa1d60525b0dc335791b37989fd   msm: kgsl: Do a midframe sampling of power stats if enab
1104607   Id65a720d20fb34b9b5dccf8626af00a1d0519ce3   ARM: dts: msm: Add thermal sensor info for msmtriton
1100213   I29572841624c1cb96d85e2dcfe620b455867d41e   ARM: dts: msm: add devfreq nodes to msmfalcon target
1100018   I8e7c4be090107618cd6cbac394a57f109f8a1ced   usb: gadget: f_qc_rndis: Fix double-free in qcrndis_free
1084177   I2bbe7be3daedef45a5990c23168df5185e72e82f   msm: sensor: correcting return value for get actuator in
1102137   I2fce80cec72e3bd8b1561fd46fa1a1520cddd294   msm: mdss: dp: fix handling of link training mutex
1102584   Idd40a0b471293048833b34dda3ac5044a87fc3c9   ASoC: wcd934x: Fix headset TX mode setting
1103939   I03e4a8e10452ef53d8e35e7cee44bdf51f53483b   ARM: dts: msm: Add support for home hard key at QRD8998H
1098041   I8cc22af138a343cd387f4400cff487faa66b3da0   ASoC: wcd934x: Update class-H parameters based on headph
1095411   Ie639a26543e2f20b61d6dfc73b3bcbd6a43b24be   msm: mdss: Move PP programming after mdp wait for ping p
1093271   I406a41ac961757d31209ae0a0a4b4d9cc4d31a1e   defconfig: msm: disable CRYPTO_DEC_QCE device on msm8998
1104183   I58e19def0042022046e730dd97008a9e1c25b6d6   icnss: Add EXEC permission when assigning the MSA0 back
1104001   Ie596ddee60aac3e6fc996f9a3e8dc988b0f4aa88   clk: qcom: Add smd-rpm voter & voter branch clocks for M
1102726   I49efddea0228e3129d36eabc102d6df0fcd53d12   ARM: dts: msm: add mdss node for msmfalcon target
1099101   I1e76eb2e1c575b433e3899ae2471719bf68ab1c1   ASoC: msm: decrement slim channel ref to set the propert
1105246   I4de26881620dde4230d0a907bd0fd39bebe2bb3d   wil6210: missing reinit_completion in wmi_call

Change-Id: I0c6d90c668b09a08de714b3bcd03e1e513f1853a
CRs-Fixed: 1102584, 986540, 1104976, 1076516, 1104977, 1100018, 1102841, 1105100, 1104880, 1102900, 1081961, 1103939, 1104865, 1104679, 1105169, 1084177, 1105038, 1102641, 1099484, 1046799, 1052835, 1102137, 1098662, 1104853, 1098041, 1095411, 1083444, 1100632, 1104981, 1104858, 1100213, 1104607, 1093271, 1104928, 1102726, 1104876, 1093863, 1099101, 1103891, 1092969, 868394, 1094763, 1105246, 1103739, 1105323, 1094456, 1104760, 1101260, 1100528, 1097878, 1104886, 1104001, 1103468, 1102776, 1068294, 1101084, 1104183, 1103405
2016-12-27 21:28:56 -07:00
android/configs
arch Merge "ARM: dts: msm: set wled string/full scale current for QRD8998 SKUK" 2016-12-26 18:24:18 -08:00
block
certs
crypto
Documentation Merge "msm: kgsl: Do a midframe sampling of power stats if enabled" 2016-12-26 08:58:23 -08:00
drivers Merge "msm_11ad: Add option to enable SMMU fastmap" 2016-12-26 18:24:19 -08:00
firmware
fs
include Merge "clk: qcom: Add voltage voting for MSM8996 GCC driver" 2016-12-26 08:58:26 -08:00
init
ipc
kernel Merge "msm: rtb: record counter timestamp for every log record" 2016-12-23 03:55:26 -08:00
lib
mm
net Merge "nl80211: Use different attrs for BSSID and random MAC addr in scan req" 2016-12-21 15:48:04 -08:00
samples
scripts
security
sound Merge "ASoC: wcd934x: Fix headset TX mode setting" 2016-12-23 03:55:22 -08:00
tools
usr
virt
.get_maintainer.ignore
.gitignore
.mailmap
AndroidKernel.mk
backported-features
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS
Makefile
README
REPORTING-BUGS

        Linux kernel release 4.x <http://kernel.org/>

These are the release notes for Linux version 4.  Read them carefully,
as they tell you what this is all about, explain how to install the
kernel, and what to do if something goes wrong. 

WHAT IS LINUX?

  Linux is a clone of the operating system Unix, written from scratch by
  Linus Torvalds with assistance from a loosely-knit team of hackers across
  the Net. It aims towards POSIX and Single UNIX Specification compliance.

  It has all the features you would expect in a modern fully-fledged Unix,
  including true multitasking, virtual memory, shared libraries, demand
  loading, shared copy-on-write executables, proper memory management,
  and multistack networking including IPv4 and IPv6.

  It is distributed under the GNU General Public License - see the
  accompanying COPYING file for more details. 

ON WHAT HARDWARE DOES IT RUN?

  Although originally developed first for 32-bit x86-based PCs (386 or higher),
  today Linux also runs on (at least) the Compaq Alpha AXP, Sun SPARC and
  UltraSPARC, Motorola 68000, PowerPC, PowerPC64, ARM, Hitachi SuperH, Cell,
  IBM S/390, MIPS, HP PA-RISC, Intel IA-64, DEC VAX, AMD x86-64, AXIS CRIS,
  Xtensa, Tilera TILE, AVR32, ARC and Renesas M32R architectures.

  Linux is easily portable to most general-purpose 32- or 64-bit architectures
  as long as they have a paged memory management unit (PMMU) and a port of the
  GNU C compiler (gcc) (part of The GNU Compiler Collection, GCC). Linux has
  also been ported to a number of architectures without a PMMU, although
  functionality is then obviously somewhat limited.
  Linux has also been ported to itself. You can now run the kernel as a
  userspace application - this is called UserMode Linux (UML).

DOCUMENTATION:

 - There is a lot of documentation available both in electronic form on
   the Internet and in books, both Linux-specific and pertaining to
   general UNIX questions.  I'd recommend looking into the documentation
   subdirectories on any Linux FTP site for the LDP (Linux Documentation
   Project) books.  This README is not meant to be documentation on the
   system: there are much better sources available.

 - There are various README files in the Documentation/ subdirectory:
   these typically contain kernel-specific installation notes for some 
   drivers for example. See Documentation/00-INDEX for a list of what
   is contained in each file.  Please read the Changes file, as it
   contains information about the problems, which may result by upgrading
   your kernel.

 - The Documentation/DocBook/ subdirectory contains several guides for
   kernel developers and users.  These guides can be rendered in a
   number of formats:  PostScript (.ps), PDF, HTML, & man-pages, among others.
   After installation, "make psdocs", "make pdfdocs", "make htmldocs",
   or "make mandocs" will render the documentation in the requested format.

INSTALLING the kernel source:

 - If you install the full sources, put the kernel tarball in a
   directory where you have permissions (eg. your home directory) and
   unpack it:

     xz -cd linux-4.X.tar.xz | tar xvf -

   Replace "X" with the version number of the latest kernel.

   Do NOT use the /usr/src/linux area! This area has a (usually
   incomplete) set of kernel headers that are used by the library header
   files.  They should match the library, and not get messed up by
   whatever the kernel-du-jour happens to be.

 - You can also upgrade between 4.x releases by patching.  Patches are
   distributed in the xz format.  To install by patching, get all the
   newer patch files, enter the top level directory of the kernel source
   (linux-4.X) and execute:

     xz -cd ../patch-4.x.xz | patch -p1

   Replace "x" for all versions bigger than the version "X" of your current
   source tree, _in_order_, and you should be ok.  You may want to remove
   the backup files (some-file-name~ or some-file-name.orig), and make sure
   that there are no failed patches (some-file-name# or some-file-name.rej).
   If there are, either you or I have made a mistake.

   Unlike patches for the 4.x kernels, patches for the 4.x.y kernels
   (also known as the -stable kernels) are not incremental but instead apply
   directly to the base 4.x kernel.  For example, if your base kernel is 4.0
   and you want to apply the 4.0.3 patch, you must not first apply the 4.0.1
   and 4.0.2 patches. Similarly, if you are running kernel version 4.0.2 and
   want to jump to 4.0.3, you must first reverse the 4.0.2 patch (that is,
   patch -R) _before_ applying the 4.0.3 patch. You can read more on this in
   Documentation/applying-patches.txt

   Alternatively, the script patch-kernel can be used to automate this
   process.  It determines the current kernel version and applies any
   patches found.

     linux/scripts/patch-kernel linux

   The first argument in the command above is the location of the
   kernel source.  Patches are applied from the current directory, but
   an alternative directory can be specified as the second argument.

 - Make sure you have no stale .o files and dependencies lying around:

     cd linux
     make mrproper

   You should now have the sources correctly installed.

SOFTWARE REQUIREMENTS

   Compiling and running the 4.x kernels requires up-to-date
   versions of various software packages.  Consult
   Documentation/Changes for the minimum version numbers required
   and how to get updates for these packages.  Beware that using
   excessively old versions of these packages can cause indirect
   errors that are very difficult to track down, so don't assume that
   you can just update packages when obvious problems arise during
   build or operation.

BUILD directory for the kernel:

   When compiling the kernel, all output files will per default be
   stored together with the kernel source code.
   Using the option "make O=output/dir" allow you to specify an alternate
   place for the output files (including .config).
   Example:

     kernel source code: /usr/src/linux-4.X
     build directory:    /home/name/build/kernel

   To configure and build the kernel, use:

     cd /usr/src/linux-4.X
     make O=/home/name/build/kernel menuconfig
     make O=/home/name/build/kernel
     sudo make O=/home/name/build/kernel modules_install install

   Please note: If the 'O=output/dir' option is used, then it must be
   used for all invocations of make.

CONFIGURING the kernel:

   Do not skip this step even if you are only upgrading one minor
   version.  New configuration options are added in each release, and
   odd problems will turn up if the configuration files are not set up
   as expected.  If you want to carry your existing configuration to a
   new version with minimal work, use "make oldconfig", which will
   only ask you for the answers to new questions.

 - Alternative configuration commands are:

     "make config"      Plain text interface.

     "make menuconfig"  Text based color menus, radiolists & dialogs.

     "make nconfig"     Enhanced text based color menus.

     "make xconfig"     X windows (Qt) based configuration tool.

     "make gconfig"     X windows (GTK+) based configuration tool.

     "make oldconfig"   Default all questions based on the contents of
                        your existing ./.config file and asking about
                        new config symbols.

     "make silentoldconfig"
                        Like above, but avoids cluttering the screen
                        with questions already answered.
                        Additionally updates the dependencies.

     "make olddefconfig"
                        Like above, but sets new symbols to their default
                        values without prompting.

     "make defconfig"   Create a ./.config file by using the default
                        symbol values from either arch/$ARCH/defconfig
                        or arch/$ARCH/configs/${PLATFORM}_defconfig,
                        depending on the architecture.

     "make ${PLATFORM}_defconfig"
                        Create a ./.config file by using the default
                        symbol values from
                        arch/$ARCH/configs/${PLATFORM}_defconfig.
                        Use "make help" to get a list of all available
                        platforms of your architecture.

     "make allyesconfig"
                        Create a ./.config file by setting symbol
                        values to 'y' as much as possible.

     "make allmodconfig"
                        Create a ./.config file by setting symbol
                        values to 'm' as much as possible.

     "make allnoconfig" Create a ./.config file by setting symbol
                        values to 'n' as much as possible.

     "make randconfig"  Create a ./.config file by setting symbol
                        values to random values.

     "make localmodconfig" Create a config based on current config and
                           loaded modules (lsmod). Disables any module
                           option that is not needed for the loaded modules.

                           To create a localmodconfig for another machine,
                           store the lsmod of that machine into a file
                           and pass it in as a LSMOD parameter.

                   target$ lsmod > /tmp/mylsmod
                   target$ scp /tmp/mylsmod host:/tmp

                   host$ make LSMOD=/tmp/mylsmod localmodconfig

                           The above also works when cross compiling.

     "make localyesconfig" Similar to localmodconfig, except it will convert
                           all module options to built in (=y) options.

   You can find more information on using the Linux kernel config tools
   in Documentation/kbuild/kconfig.txt.

 - NOTES on "make config":

    - Having unnecessary drivers will make the kernel bigger, and can
      under some circumstances lead to problems: probing for a
      nonexistent controller card may confuse your other controllers

    - Compiling the kernel with "Processor type" set higher than 386
      will result in a kernel that does NOT work on a 386.  The
      kernel will detect this on bootup, and give up.

    - A kernel with math-emulation compiled in will still use the
      coprocessor if one is present: the math emulation will just
      never get used in that case.  The kernel will be slightly larger,
      but will work on different machines regardless of whether they
      have a math coprocessor or not.

    - The "kernel hacking" configuration details usually result in a
      bigger or slower kernel (or both), and can even make the kernel
      less stable by configuring some routines to actively try to
      break bad code to find kernel problems (kmalloc()).  Thus you
      should probably answer 'n' to the questions for "development",
      "experimental", or "debugging" features.

COMPILING the kernel:

 - Make sure you have at least gcc 3.2 available.
   For more information, refer to Documentation/Changes.

   Please note that you can still run a.out user programs with this kernel.

 - Do a "make" to create a compressed kernel image. It is also
   possible to do "make install" if you have lilo installed to suit the
   kernel makefiles, but you may want to check your particular lilo setup first.

   To do the actual install, you have to be root, but none of the normal
   build should require that. Don't take the name of root in vain.

 - If you configured any of the parts of the kernel as `modules', you
   will also have to do "make modules_install".

 - Verbose kernel compile/build output:

   Normally, the kernel build system runs in a fairly quiet mode (but not
   totally silent).  However, sometimes you or other kernel developers need
   to see compile, link, or other commands exactly as they are executed.
   For this, use "verbose" build mode.  This is done by inserting
   "V=1" in the "make" command.  E.g.:

     make V=1 all

   To have the build system also tell the reason for the rebuild of each
   target, use "V=2".  The default is "V=0".

 - Keep a backup kernel handy in case something goes wrong.  This is 
   especially true for the development releases, since each new release
   contains new code which has not been debugged.  Make sure you keep a
   backup of the modules corresponding to that kernel, as well.  If you
   are installing a new kernel with the same version number as your
   working kernel, make a backup of your modules directory before you
   do a "make modules_install".

   Alternatively, before compiling, use the kernel config option
   "LOCALVERSION" to append a unique suffix to the regular kernel version.
   LOCALVERSION can be set in the "General Setup" menu.

 - In order to boot your new kernel, you'll need to copy the kernel
   image (e.g. .../linux/arch/i386/boot/bzImage after compilation)
   to the place where your regular bootable kernel is found. 

 - Booting a kernel directly from a floppy without the assistance of a
   bootloader such as LILO, is no longer supported.

   If you boot Linux from the hard drive, chances are you use LILO, which
   uses the kernel image as specified in the file /etc/lilo.conf.  The
   kernel image file is usually /vmlinuz, /boot/vmlinuz, /bzImage or
   /boot/bzImage.  To use the new kernel, save a copy of the old image
   and copy the new image over the old one.  Then, you MUST RERUN LILO
   to update the loading map!! If you don't, you won't be able to boot
   the new kernel image.

   Reinstalling LILO is usually a matter of running /sbin/lilo. 
   You may wish to edit /etc/lilo.conf to specify an entry for your
   old kernel image (say, /vmlinux.old) in case the new one does not
   work.  See the LILO docs for more information. 

   After reinstalling LILO, you should be all set.  Shutdown the system,
   reboot, and enjoy!

   If you ever need to change the default root device, video mode,
   ramdisk size, etc.  in the kernel image, use the 'rdev' program (or
   alternatively the LILO boot options when appropriate).  No need to
   recompile the kernel to change these parameters. 

 - Reboot with the new kernel and enjoy. 

IF SOMETHING GOES WRONG:

 - If you have problems that seem to be due to kernel bugs, please check
   the file MAINTAINERS to see if there is a particular person associated
   with the part of the kernel that you are having trouble with. If there
   isn't anyone listed there, then the second best thing is to mail
   them to me (torvalds@linux-foundation.org), and possibly to any other
   relevant mailing-list or to the newsgroup.

 - In all bug-reports, *please* tell what kernel you are talking about,
   how to duplicate the problem, and what your setup is (use your common
   sense).  If the problem is new, tell me so, and if the problem is
   old, please try to tell me when you first noticed it.

 - If the bug results in a message like

     unable to handle kernel paging request at address C0000010
     Oops: 0002
     EIP:   0010:XXXXXXXX
     eax: xxxxxxxx   ebx: xxxxxxxx   ecx: xxxxxxxx   edx: xxxxxxxx
     esi: xxxxxxxx   edi: xxxxxxxx   ebp: xxxxxxxx
     ds: xxxx  es: xxxx  fs: xxxx  gs: xxxx
     Pid: xx, process nr: xx
     xx xx xx xx xx xx xx xx xx xx

   or similar kernel debugging information on your screen or in your
   system log, please duplicate it *exactly*.  The dump may look
   incomprehensible to you, but it does contain information that may
   help debugging the problem.  The text above the dump is also
   important: it tells something about why the kernel dumped code (in
   the above example, it's due to a bad kernel pointer). More information
   on making sense of the dump is in Documentation/oops-tracing.txt

 - If you compiled the kernel with CONFIG_KALLSYMS you can send the dump
   as is, otherwise you will have to use the "ksymoops" program to make
   sense of the dump (but compiling with CONFIG_KALLSYMS is usually preferred).
   This utility can be downloaded from
   ftp://ftp.<country>.kernel.org/pub/linux/utils/kernel/ksymoops/ .
   Alternatively, you can do the dump lookup by hand:

 - In debugging dumps like the above, it helps enormously if you can
   look up what the EIP value means.  The hex value as such doesn't help
   me or anybody else very much: it will depend on your particular
   kernel setup.  What you should do is take the hex value from the EIP
   line (ignore the "0010:"), and look it up in the kernel namelist to
   see which kernel function contains the offending address.

   To find out the kernel function name, you'll need to find the system
   binary associated with the kernel that exhibited the symptom.  This is
   the file 'linux/vmlinux'.  To extract the namelist and match it against
   the EIP from the kernel crash, do:

     nm vmlinux | sort | less

   This will give you a list of kernel addresses sorted in ascending
   order, from which it is simple to find the function that contains the
   offending address.  Note that the address given by the kernel
   debugging messages will not necessarily match exactly with the
   function addresses (in fact, that is very unlikely), so you can't
   just 'grep' the list: the list will, however, give you the starting
   point of each kernel function, so by looking for the function that
   has a starting address lower than the one you are searching for but
   is followed by a function with a higher address you will find the one
   you want.  In fact, it may be a good idea to include a bit of
   "context" in your problem report, giving a few lines around the
   interesting one. 

   If you for some reason cannot do the above (you have a pre-compiled
   kernel image or similar), telling me as much about your setup as
   possible will help.  Please read the REPORTING-BUGS document for details.

 - Alternatively, you can use gdb on a running kernel. (read-only; i.e. you
   cannot change values or set break points.) To do this, first compile the
   kernel with -g; edit arch/i386/Makefile appropriately, then do a "make
   clean". You'll also need to enable CONFIG_PROC_FS (via "make config").

   After you've rebooted with the new kernel, do "gdb vmlinux /proc/kcore".
   You can now use all the usual gdb commands. The command to look up the
   point where your system crashed is "l *0xXXXXXXXX". (Replace the XXXes
   with the EIP value.)

   gdb'ing a non-running kernel currently fails because gdb (wrongly)
   disregards the starting offset for which the kernel is compiled.