LineageOS 16.0 (v4.4.153) kernel with Halium 9 patches
Find a file
Linux Build Service Account 3c45c2a8a2 Promotion of kernel.lnx.4.4-161119.
CRs      Change ID                                   Subject
--------------------------------------------------------------------------------------------------------------
1088658   I2f994ae0250ffc8f740ea633324815ae429c74be   msm: ipa3: linearize large skbs
1077102   I09359b528b4742f72a76690930f3d0ed90bb2caa   msm: mdss: move warnings and errors out of mdss spinlock
1089895   I84185558fa6e80b13d7d0078bda9d75143680941   tcp: take care of truncations done by sk_filter()
1091511   Ia151b2dd5229f07790ac961af298305b24e098fb   msm: wlan: update regulatory database
1081957   I24820bd6254002f8a8db9604d230dcbce59b1beb   clk: qcom: Add support to be able to slew PLL
1081738   I10a788726358c56df9bfe11f2332e3823d7cd332   ARM: dts: msm: Enable auto GM for WLED in pmicobalt
1077726   I031ca48f0e0c39f1b2cb51081ecd55b086fb4c9b   msm: mdss: fix pp timeout during transition from LP1 to
1074985   Ib2268181a617c23d62b5b6f857be5327113b2a67   soc: qcom: smem: Redesign smem memory architecture
1090708   I9cda84d1c199b72ce8b9e2997601bcc7430ddbf3   ARM: dts: msm: Update the console uart gpios for msmfalc
1080245   I3b4cf83e776750d993d53331142223109bf0862e   clk: qcom: Add support for debugfs support
1087110   I3694952289c76394af8d40cd89fd2175f49ac127   msm: mdss: Add systrace for readptr_done
1089865   Ia73ab1ba51df7b501d246bb45141018409496d01   ARM: dts: msm: ensure contiguous MSI for PCIe on msmcoba
941978   Idee8691d769218d7e732c9b7f936a2c40946b239   Revert "scsi: ufs: stub UFS shutdown handler"
1091072   I7e9ada5de1f619c6a34a4b2e1764f5e908564ce5   iio: rradc: Update reading USBIN_V channel
1075082   I971e555ec8d02ccf4382e83132a696b065a8ff12   qseecom: improve error checks in qseecom_probe()
1080245   Ib67b3a3409c9e7d8adb710bb524f54f543abf712   clk: add/modify debugfs support for clocks
941978   Id499abc27303bfed72fab4d61abb872bad7d9043   scsi: ufs: error out all issued requests after shutdown
1083537   I73fc02b812f2e6694e2a6aa8bdad2381a5f19406   ASoC: msm: Fix sound card registration failure
1085331   I92e98ab46107fbcfd843898423b41716a204c2ae   ARM: dts: msm: Correct interrupt assignments for msmcoba
1073250   Idc9ca896b3fe6c1c6a72a066a6e453d27a3173e8   Asoc: clean up bootup errors
1091147   I30b8488a1c19815601e6a1c5bcbdeed53715f8fa   usb: phy: qusb: Make sure QUSB PHY is into proper state
1086292   I6482dc3d21fdc3e570fd53022e2fb9427668d939   msm: mdss: add null check before dereferencing src_fmt
1086292   I4812330453dedacd16dad1d920a2bacc3f67042b   msm: mdss: fix race condition in dsi clk off request
1088709   I21e1c029e6b245cfa26a187b35bb1f6845302484   clk: msm: Add the CLKFLAG_NO_RATE_CACHE flag for MM cloc
1082112   I171c91e700c24ecc213ccda705bbe6188d22a43a   scsi: ufs: fix sleep in atomic context
1091354   I9f928f0aad6af346de43965755beb039e422047a   Revert "defconfig: msm: avoid compilation of MDSS DP dri
1090727   I78d2c27743d30b90a96e3d8df60859f67db7ddb8   ARM: dts: msm: Add ufs regulators for msmfalcon interpos
1090029   I66f6de42b106fa2027285e7393b6f9fc143d00d8   leds: qpnp-flash: Fix the mask in the flash prepare API
1089181   I4a382915a6c3a6b9d445ec1f5d57fb499a011f1a   driver: thermal: msm_thermal: Enable Reliability algorit
1079438   Ib14c5b9121190dded5071ff60ecf0be8e5e5c232   ARM: dts: msm: Add physical dimensions for NT35597 panel
1060212   Iabe79bae5f9471c3c6128ed21efd04de00739daa   leds: qpnp-flash-v2: Add support for thermal derate feat
1091127   I7220ad565212c325514301e4c59415b807deb99a   ARM: dts: msm: Add gladiator support on msmfalcon and ms
1091440   I0eb8b9a357f172984612175d1b03dd872df91b6f   diag: Call diagmem_exit only if the mempool is initializ
1090076   Ia85688854f26fe871d5c1253c2d51d75d84deb8f   ARM: dts: msm: Add dummy regulator for LCDB bias
1064071   Ic0dedbad372fd9029b932dd99633a650049751ed   msm: kgsl: Fix pagetable member of struct kgsl_memdesc
1083537   I3d2765535793d6ef9153cfcab4b44a9adad67e15   ASoC: msm: Add support for USB/WCN/TDM Audio
1091141   I6ce48512df5973bf8a2a3081a3a6f8759aeb499f   ARM: dts: msm: Set USB core clock rate for USB2/USB3 for
1060212   Ie7a94f59e58b8f1b0816afda2496449694629205   leds: qpnp-flash-v2: add support to read pmic revid
1080701   If08ff46e72d537254e90707f28c849a86f262853   ARM: dts: msm: specify I2C configuration for msmfalcon
1079442   I822d6280b301b2db6194c845098c935e612ca61c   ASoC: wcd934x: Fix adie loopback through sidetone src pa
1089895   Idc52737bc96097a9220dfe47bb76e94ff1026a05   rose: limit sk_filter trim to payload
1091147   Ibfecfe1846d02b959bd249acac3fe4c57b88aaf0   USB: phy: qusb: Turn on vdd along with 1p8/3p3 LDOs when
1090701   I0e06be169edc2eb1d35ef7fc6c41ff1809aebd03   pinctrl: qcom: msmfalcon: Update gpios as per latest gpi
1086292   I422d53d008223a9b0520f499e629f681bb6afa05   mdss: mdp: avoid panic if recovery handler is uninitiali
1060212   I42503ccd2b2dcc62c5c868132d202b9698c9d216   leds: qpnp-flash-v2: change from dev_*() to pr_*() for l
1090076   Ie828c8568ef09c89cff157d16d3cb322647b6f6e   ARM: dts: msm: enable mdss power supplies for falcon tra
1074879   I8d224a70cbef162f27078b62b73acaa22670861d   sched/hmp: Enhance co-location and scheduler boost featu
1087471   I15323e3ef91401142d3841db59c18fd8fee753fd   sched: Remove thread group iteration from colocation
1085170   Ie23d473302d7fbda9b243a150e5c52d025007e4f   usb: pd: Stop processing SVDM if handler found
1091540   I61523188f45daca026b90943c845b43a8327f51e   qcom-charger: smb2: Disable try.SINK mode in the probe
1081738   Iee99e9d1b999c84ece075d2f17e9cdf6aef9a2ac   leds: qpnp-wled: Add support to configure AUTO_GM settin
1081922   I9aa7a000e75b50c6b26970deaba2131c87087b8c   msm: mdss: fix autorefresh disable during handoff
1075694   I9cf2f94892bdeb83fab0068902419b1603520364   msm: kgsl: preserve ISENSE registers across GPU power co
1085321 1085649   I3c9422f3a790c0c1633ab64d4213a088faaeb9e5   diag: Set the diag write buffers to busy state on channe
1090311   I96cdcb9e3642906b4afa08d9bde07e123d9b3977   USB: Allow skipping device resume during system resume
1074879   I470bcd0588e038b4a540d337fe6a412f2fa74920   sched: revise boost logic when boost_type is SCHED_BOOST
1087020   I6f9b7a630158355a7f920dcf9cfffe537b1c6a85   ASoC: msm: q6dspv2: fix potentional information leak
1089062   Icb04f6175b66fa46405e77d10fddf06b0051ee5f   phy: qcom-ufs: update ufs phy 1-lane settings
1082590   I4cdcbd31b5fa5ceac0eea7c743ea9286f231b80b   scsi: ufs: handle LINERESET during hibern8
1081738   I964b3452d0cdb3618b4ab446655ae75fa3a1049d   leds: qpnp-wled: Add support to configure auto PFM for p
1080245   I936496e553bc958c10e743fd8a225ffc7fbc0f79   clk: Add support to allow client to print all enabled cl
1079373   Ifd7b2b88e7ab4c952b743fede6e24795069d653a   qcom-charger: WA for legacy bit set on hard reboot
1090518   I7f1c0d9d84607821893a1e5d17934dae5acef5f4   clk: qcom: Add support for RCGs with dynamic and fixed s
1089865   I1e74f1b03c3e15880efdac7ff07aca2f628de99d   ARM: dts: msm: enable QGIC MSI for PCIe on msmcobalt
1088059   I66cbe48b7f4910228a6af57610a8427fea7fd1f2   msm: mdss: fix incorrect mutex unlocking during NOTIFY_U
1087418   Ia3fb69dca00654dacd8d1faae34715e40e097480   scsi: ufs: enable auto hibern8 only after device initial
1088216   I326eceeddff8e77d346c3365fa46cd539324451f   ARM: dts: msm: Add support for USB device for msmfalcon
1060212   Iafb7915e196a18b5f8076dda8fb06a4bd71a8e6e   leds: qpnp-flash-v2: Add support for configuring OTST th
1086372   Ia03380dfa4852c80fedb38f3c79f55d8d1a9a7f6   icnss: Reset mpm_wcssaon_config bits before top level re
1080245   I0a202af6f46c7cf164036d65487db5c40aab4063   clk: Add support for list_rates ops for clocks
1091477   I7435f05f20e12a7704ae5d9597b5cdc9b5a61d00   qcom-charger: Change usb_icl votable for PD vote
1089062   Ief5df61d91fbd765c595533b3380a602a2540e5e   scsi: ufs-qcom: update clock scaling sequence
1085217   I62de66e9b0bb1eeeac3c94d1ac1037285811b631   msm: ipa3: header file change for wdi-stats
1080674   I15ef73049cee76c6ea5b3916d9281bbd9fdfc563   ARM: dts: msm: specify UART configuration on msmfalcon.
1090525   I48c50bc320425c0db40cd4865e05c6b7a7fb5da3   msm: sde: remove secure camera ctrl_id definition
1061507   Iad71abbed72aa40b5c839260f5c297a885f7d128   ASoC: wcd-mbhc: correct cross connection check
1085064   Ib53902459646e590df4dc7fcb00f833d5e8f41ed   usb: pd: Don't suspend charging unless changing voltages
1064071   Ic0dedbad661143977a226d50263c26b5af579ce3   msm: kgsl: Make sure USE_CPU_MAP + MAP_USER_MEM work tog
1090862 987021   I0d1797a4df9ff67f3b162a1b5d26320ca989f54a   msm: mdss: hide additional kernel addresses from unprivi

Change-Id: Ic6272ada932975c2562cb87d4a617520002db3d3
CRs-Fixed: 1082112, 1075694, 1091440, 1085331, 1089062, 1081922, 1089895, 1077726, 1090029, 1061507, 1091354, 1074879, 987021, 1086292, 1085217, 1087020, 1080245, 1088709, 1089181, 1085064, 1087471, 1088059, 1080674, 1090862, 1079442, 1087418, 1090727, 1085649, 1064071, 1081738, 1086372, 941978, 1090518, 1090708, 1077102, 1090076, 1085321, 1091477, 1090701, 1090311, 1091511, 1091141, 1074985, 1079438, 1091147, 1075082, 1091127, 1087110, 1082590, 1081957, 1090525, 1085170, 1088658, 1080701, 1083537, 1091540, 1088216, 1079373, 1060212, 1073250, 1089865, 1091072
2016-11-19 05:39:11 -07:00
android/configs
arch Merge "Revert "defconfig: msm: avoid compilation of MDSS DP driver for 32-bit msmfalcon"" 2016-11-18 20:32:03 -08:00
block
certs
crypto
Documentation Merge "leds: qpnp-wled: Add support to configure auto PFM for pmicobalt" 2016-11-18 01:55:01 -08:00
drivers Merge "usb: pd: Don't suspend charging unless changing voltages" 2016-11-18 20:32:00 -08:00
firmware
fs
include Merge "msm: ipa3: header file change for wdi-stats" 2016-11-18 20:31:57 -08:00
init
ipc
kernel sched/hmp: Enhance co-location and scheduler boost features 2016-11-16 17:57:56 -08:00
lib
mm Merge "debug-pagealloc: Panic on pagealloc corruption" 2016-11-10 22:49:44 -08:00
net Merge "msm: wlan: update regulatory database" into msm-4.4 2016-11-18 15:41:21 -08:00
samples
scripts
security
sound Merge "ASoC: msm: q6dspv2: fix potentional information leak" 2016-11-18 20:32:05 -08:00
tools
usr
virt
.get_maintainer.ignore
.gitignore
.mailmap
AndroidKernel.mk
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.