)]}'
{
  "log": [
    {
      "commit": "5a18c92aab13aac7917bc87ceefa23da68698be4",
      "tree": "ee03d8c6ee5d695ea4e548680ab09253f5874685",
      "parents": [
        "0cfe61e1a72b345073bb7900a7887da8541abc7a"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu May 10 03:15:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu May 10 09:26:53 2007 -0700"
      },
      "message": "Revert \"[PATCH] paravirt: Add startup infrastructure for paravirtualization\"\n\nThis reverts commit c9ccf30d77f04064fe5436027ab9d2230c7cdd94.\n\nEntering the kernel at startup_32 without passing our real mode data in\n%esi, and without guaranteeing that physical and virtual addresses are\nidentity mapped makes head.S impossible to maintain.\n\nThe only user of this infrastructure is lguest which is not merged so\nnothing we currently support will break by removing this over designed\nnightmare, and only the pending lguest patches will be affected.  The\npending Xen patches have a different entry point that they use.\n\nWe are currently discussing what Xen and lguest need to do to boot the\nkernel in a more normal fashion so using startup_32 in this weird manner is\nclearly not their long term direction.\n\nSo let\u0027s remove this code in head.S before it causes brain damage to people\ntrying to maintain head.S\n\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nCc: Zachary Amsden \u003czach@vmware.com\u003e\nCC: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9a9136e270af14da506f66bcafcc506b86a86498",
      "tree": "b4d0a6877d92635134b7a944d0032fbc43227fd2",
      "parents": [
        "3960208f9ca0cf6bdb31c21c59ac0526303f8b34",
        "7bb2acb76e8168ca5d0bde5a5a56585a11b3525a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:54:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:54:17 2007 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial: (25 commits)\n  sound: convert \"sound\" subdirectory to UTF-8\n  MAINTAINERS: Add cxacru website/mailing list\n  include files: convert \"include\" subdirectory to UTF-8\n  general: convert \"kernel\" subdirectory to UTF-8\n  documentation: convert the Documentation directory to UTF-8\n  Convert the toplevel files CREDITS and MAINTAINERS to UTF-8.\n  remove broken URLs from net drivers\u0027 output\n  Magic number prefix consistency change to Documentation/magic-number.txt\n  trivial: s/i_sem /i_mutex/\n  fix file specification in comments\n  drivers/base/platform.c: fix small typo in doc\n  misc doc and kconfig typos\n  Remove obsolete fat_cvf help text\n  Fix occurrences of \"the the \"\n  Fix minor typoes in kernel/module.c\n  Kconfig: Remove reference to external mqueue library\n  Kconfig: A couple of grammatical fixes in arch/i386/Kconfig\n  Correct comments in genrtc.c to refer to correct /proc file.\n  Fix more \"deprecated\" spellos.\n  Fix \"deprecated\" typoes.\n  ...\n\nFix trivial comment conflict in kernel/relay.c.\n"
    },
    {
      "commit": "b0b73cb41d56ee391f20cbd3e4304e2303a8829b",
      "tree": "69d6ebfed9c252e8689001a82dc438a74f89fd46",
      "parents": [
        "29bd44337799e4cb85aec5157a9c88a0da66642a"
      ],
      "author": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Wed May 09 00:02:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:49:33 2007 -0700"
      },
      "message": "i386: msr.h: be paranoid about types and parentheses\n\nWhen implementing things as macros, make sure we use typecasts and\nparentheses where needed.  The macros as defined were vulnerable to\nsurreptitious promotion causing problems.\n\nAvoid macros where practical; e.g. wrmsr() can be an inline instead.\n\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "29bd44337799e4cb85aec5157a9c88a0da66642a",
      "tree": "454124f8ce577a814fde5edc08b26cdf1138f122",
      "parents": [
        "21c42bd8db2acd7c884d132efbf7aee9ca970b06"
      ],
      "author": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Wed May 09 00:02:06 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:49:33 2007 -0700"
      },
      "message": "i386: remove unused rdtsc() macro\n\nAll users to the two-part rdtsc() macro have already switched to using\nrdtscl() or rdtscll().  Remove the now-obsolete macro.\n\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c3c117f06e95ea993ba4ed3b246fd76f87a4683f",
      "tree": "c6bc7a29d7e07e78588d4edd064c038dcd0d86aa",
      "parents": [
        "affd872ebbe4f045d70a3f4b33b20f5f6c894bcc"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed May 09 02:35:30 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "i386 mmzone: use __maybe_unused\n\nReplace automatic variable instances of __attribute__ ((unused)) with\n__maybe_unused.\n\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c9f4f06d3191bd91c1a081b54a6c8e913e7b8a83",
      "tree": "fe6bb926f612e67b1e57c6a448c7e5d41dd69dad",
      "parents": [
        "e61a1c1c4f240cec61300c8f27518c3e47570fd4"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Wed May 09 02:35:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "wrap access to thread_info\n\nRecently a few direct accesses to the thread_info in the task structure snuck\nback, so this wraps them with the appropriate wrapper.\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a36166c6ef45081fea6eeaf5ca785d7ed786b6e2",
      "tree": "bdb5a99e3c80883cbb84d6e190b4dabefec79032",
      "parents": [
        "2f4dfe206a2fc07099dfad77a8ea2f4b4ae2140f"
      ],
      "author": {
        "name": "Fernando Luis Vazquez Cao",
        "email": "fernando@oss.ntt.co.jp",
        "time": "Wed May 09 02:33:27 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:48 2007 -0700"
      },
      "message": "Use the APIC to determine the hardware processor id - i386\n\nhard_smp_processor_id used to be just a macro that hard-coded\nhard_smp_processor_id to 0 in the non SMP case.  When booting non SMP kernels\non hardware where the boot ioapic id is not 0 this turns out to be a problem.\nThis is happens frequently in the case of kdump and once in a great while in\nthe case of real hardware.\n\nUse the APIC to determine the hardware processor id in both UP and SMP kernels\nto fix this issue.\n\nNotice that hard_smp_processor_id is only used by SMP code or by code that\nworks with apics so we do not need to handle the case when apics are not\npresent and hard_smp_processor_id should never be called there.\n\nSigned-off-by: Fernando Luis Vazquez Cao \u003cfernando@oss.ntt.co.jp\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nAcked-by: Andi Kleen \u003cak@suse.de\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Vivek Goyal \u003cvgoyal@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2f4dfe206a2fc07099dfad77a8ea2f4b4ae2140f",
      "tree": "b66a624ba68766282fa0ddb509ff641552703da4",
      "parents": [
        "dd2a345f8f002845636dbf5d2d768bb5cd8a5f59"
      ],
      "author": {
        "name": "Fernando Luis Vazquez Cao",
        "email": "fernando@oss.ntt.co.jp",
        "time": "Wed May 09 02:33:25 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:48 2007 -0700"
      },
      "message": "Remove hardcoding of hard_smp_processor_id on UP systems\n\nWith the advent of kdump, the assumption that the boot CPU when booting an UP\nkernel is always the CPU with a particular hardware ID (often 0) (usually\nreferred to as BSP on some architectures) is not valid anymore.  The reason\nbeing that the dump capture kernel boots on the crashed CPU (the CPU that\ninvoked crash_kexec), which may be or may not be that particular CPU.\n\nMove definition of hard_smp_processor_id for the UP case to\narchitecture-specific code (\"asm/smp.h\") where it belongs, so that each\narchitecture can provide its own implementation.\n\nSigned-off-by: Fernando Luis Vazquez Cao \u003cfernando@oss.ntt.co.jp\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nAcked-by: Andi Kleen \u003cak@suse.de\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Vivek Goyal \u003cvgoyal@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "beb7dd86a101263bf63a78c7c6d4da3849b35bd6",
      "tree": "9afe81ca9e92ab8aacc999ae118b27d547721f11",
      "parents": [
        "3dde6ad8fc3939d345a3768464ecff43c91d511a"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Wed May 09 07:14:03 2007 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Wed May 09 07:14:03 2007 +0200"
      },
      "message": "Fix misspellings collected by members of KJ list.\n\nFix the misspellings of \"propogate\", \"writting\" and (oh, the shame\n:-) \"kenrel\" in the source tree.\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "36f021b579d195cdc5fa6f3e2bab198b4bf70643",
      "tree": "96d3c97f5e5214d2aa7151c12a22a7eb345dbaa1",
      "parents": [
        "215d06780d13fd7de629b02b61b7b7bf88ce5039",
        "1d72acf91abb327e25137ad2e371c1a788b34e45"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 12:07:28 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 12:07:28 2007 -0700"
      },
      "message": "Merge branch \u0027hwmon-for-linus\u0027 of git://jdelvare.pck.nerim.net/jdelvare-2.6\n\n* \u0027hwmon-for-linus\u0027 of git://jdelvare.pck.nerim.net/jdelvare-2.6: (32 commits)\n  Use menuconfig objects - hwmon\n  hwmon/smsc47b397: Use dynamic sysfs callbacks\n  hwmon/smsc47b397: Convert to a platform driver\n  hwmon/w83781d: Deprecate W83627HF support\n  hwmon/w83781d: Use dynamic sysfs callbacks\n  hwmon/w83781d: Be less i2c_client-centric\n  hwmon/w83781d: Clean up conversion macros\n  hwmon/w83781d: No longer use i2c-isa\n  hwmon/ams: Do not print error on systems without apple motion sensor\n  hwmon/ams: Fix I2C read retry logic\n  hwmon: New AD7416, AD7417 and AD7418 driver\n  hwmon/coretemp: Add documentation\n  hwmon: New coretemp driver\n  i386: Use functions from library in msr driver\n  i386: Add safe variants of rdmsr_on_cpu and wrmsr_on_cpu\n  hwmon/lm75: Use dynamic sysfs callbacks\n  hwmon/lm78: Use dynamic sysfs callbacks\n  hwmon/lm78: Be less i2c_client-centric\n  hwmon/lm78: No longer use i2c-isa\n  hwmon: New max6650 driver\n  ...\n"
    },
    {
      "commit": "7e92b4fc345f5b6f57585fbe5ffdb0f24d7c9b26",
      "tree": "a8e9dac38a9c8dd22bd182c13e2ae0e6d32bd729",
      "parents": [
        "d0d4f69bb65a8c1c1430c577a583632709b874c6"
      ],
      "author": {
        "name": "Bjorn Helgaas",
        "email": "bjorn.helgaas@hp.com",
        "time": "Tue May 08 00:36:07 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:23 2007 -0700"
      },
      "message": "x86, serial: convert legacy COM ports to platform devices\n\nMake x86 COM ports into platform devices and don\u0027t probe for them\nif we have PNP.\n\nThis prevents double discovery, where a device was found both by\nthe legacy probe and by 8250_pnp, e.g.,\n\n    serial8250: ttyS0 at I/O 0x3f8 (irq \u003d 4) is a 16550A\n    00:02: ttyS0 at I/O 0x3f8 (irq \u003d 4) is a 16550A\n\nThis also means IRDA devices without a UART PNP ID will no longer be\nclaimed by the serial driver, which might require changes in IRDA\ndrivers and administration.\n\nIn addition to this patch, you may need to configure a setserial init\nscript, e.g., /etc/init.d/setserial, so it doesn\u0027t poke legacy UART\nstuff back in.  On Debian, \"dpkg-reconfigure setserial\" with the \"kernel\"\noption does this.\n\nTo force the old legacy probe behavior even when we have PNPBIOS or\nACPI, load the new legacy_serial module (or build 8250 static) with\nthe \"legacy_serial.force\" option.\n\n[akpm@linux-foundation.org: fix makefiles]\nSigned-off-by: Bjorn Helgaas \u003cbjorn.helgaas@hp.com\u003e\nCc: Keith Owens \u003ckaos@ocs.com.au\u003e\nCc: Len Brown \u003clenb@kernel.org\u003e\nCc: Adam Belay \u003cambx1@neo.rr.com\u003e\nCc: Matthieu CASTET \u003ccastet.matthieu@free.fr\u003e\nCc: Jean Tourrilhes \u003cjt@hpl.hp.com\u003e\nCc: Matthew Garrett \u003cmjg59@srcf.ucam.org\u003e\nCc: Ville Syrjala \u003csyrjala@sci.fi\u003e\nCc: Russell King \u003crmk+serial@arm.linux.org.uk\u003e\nCc: Samuel Ortiz \u003csamuel@sortiz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cc38682f356f95ca0e409679b76db46af6036460",
      "tree": "6d4df198c8a72c6bcb8649cd30c147c188dbec3b",
      "parents": [
        "0ba34e197a45c1639aa56aea0399e97f827abb35"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Tue May 08 00:35:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:20 2007 -0700"
      },
      "message": "Some grammatical fixups and additions to atomic.h kernel-doc content\n\nTweak and add content for extractable documentation in asm-i386/atomic.h.\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nAcked-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a436ed9c5106b41606cbb55ab3b28389fe8ae04f",
      "tree": "b8df0bde6d7eb2808c37da815d8857396ee1eaf1",
      "parents": [
        "5dc12ddee93d63d7107cbbf70db23476d7b30e43"
      ],
      "author": {
        "name": "Jeff Dike",
        "email": "jdike@addtoit.com",
        "time": "Tue May 08 00:35:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:20 2007 -0700"
      },
      "message": "x86: create asm/cmpxchg.h\n\ni386:\n\n  Rearrange the cmpxchg code to allow atomic.h to get it without needing to\n  include system.h.  This kills warnings in the UML build from atomic.h about\n  implicit declarations of cmpxchg symbols.  The i386 build presumably isn\u0027t\n  seeing this because a separate inclusion of system.h is covering it over.\n\n  The cmpxchg stuff is moved to asm-i386/cmpxchg.h, with an include left in\n  system.h for the benefit of generic code which expects cmpxchg there.\n\n  Meanwhile, atomic.h includes cmpxchg.h.\n\n  This causes no noticable damage to the i386 build.\n\nx86_64:\n\n  Move cmpxchg into its own header.  atomic.h already included system.h, so\n  this is changed to include cmpxchg.h.\n\n  This is purely cleanup - it\u0027s not fixing any warnings - so if the x86_64\n  system.h isn\u0027t considered as cleanup-worthy as i386, then this can be\n  dropped.\n\n  It causes no noticable damage to the x86_64 build.\n\numl:\n\n  The i386 and x86_64 cmpxchg patches require an asm-um/cmpxchg.h for the\n  UML build.\n\nSigned-off-by: Jeff Dike \u003cjdike@linux.intel.com\u003e\nCc: Paolo \u0027Blaisorblade\u0027 Giarrusso \u003cblaisorblade@yahoo.it\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5dc12ddee93d63d7107cbbf70db23476d7b30e43",
      "tree": "a0c53f8a4d826e73213268c87657ae933d7634b3",
      "parents": [
        "c343c14aec1e70a51575e3c29391ee86ae7dbeb2"
      ],
      "author": {
        "name": "Jeff Dike",
        "email": "jdike@addtoit.com",
        "time": "Tue May 08 00:34:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:20 2007 -0700"
      },
      "message": "Remove tas()\n\ntas() has no users, so get rid of it.\n\nSigned-off-by: Jeff Dike \u003cjdike@linux.intel.com\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: Paolo \u0027Blaisorblade\u0027 Giarrusso \u003cblaisorblade@yahoo.it\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a075227948636e10aa2cc2d8725fbbab27681d4a",
      "tree": "6b459363916c4db4cc62a293f122f4c9172b1d6a",
      "parents": [
        "f43f7b46eb101f50950cfcead0cb0b7a9c4f6823"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@polymtl.ca",
        "time": "Tue May 08 00:34:44 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:20 2007 -0700"
      },
      "message": "local_t: i386 extension\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2856f5e31c1413bf6e4f1371e07e17078a5fee5e",
      "tree": "587dfe584f0913813d0cf2414a9378618143db15",
      "parents": [
        "79d365a306c3af53d8a732fec79b76c0b285d816"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "compudj@krystal.dyndns.org",
        "time": "Tue May 08 00:34:38 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:20 2007 -0700"
      },
      "message": "atomic.h: atomic_add_unless as inline. Remove system.h atomic.h circular dependency\n\natomic_add_unless as inline. Remove system.h atomic.h circular dependency.\nI agree (with Andi Kleen) this typeof is not needed and more error\nprone. All the original atomic.h code that uses cmpxchg (which includes\nthe atomic_add_unless) uses defines instead of inline functions,\nprobably to circumvent a circular dependency between system.h and\natomic.h on powerpc (which my patch addresses). Therefore, it makes\nsense to use inline functions that will provide type checking.\n\natomic_add_unless as inline. Remove system.h atomic.h circular dependency.\nDigging into the FRV architecture shows me that it is also affected by\nsuch a circular dependency. Here is the diff applying this against the\nrest of my atomic.h patches.\n\nIt applies over the atomic.h standardization patches.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e656e245d5adf19f3c431e7f7792659c204e32f2",
      "tree": "55c58fcf25c8a7d527dae3b4fa271aa7ec3dc944",
      "parents": [
        "bb2382c3e4395ab595278cc7b92ac3f2eaf23f66"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@polymtl.ca",
        "time": "Tue May 08 00:34:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:19 2007 -0700"
      },
      "message": "atomic.h: i386 type safety fix\n\nRemove an explicit cast to an integer type for the result returned by cmpxchg.\n It is not per se a problem on the i386 architecture, because sizeof(int) \u003d\u003d\nsizeof(long), but whenever this code is cut\u0027n\u0027pasted to a accept passing an\natomic64_t value as parameter to cmpxchg, xchg and add_unless, having 64 bits\ninputs casted to 32 bits.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1c710c896eb461895d3c399e15bb5f20b39c9073",
      "tree": "862e210cc6dad50abffd7640f01d50c3e9f3d375",
      "parents": [
        "ade5fb818fb1861fd5f84619c761920ade762b5d"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Tue May 08 00:33:25 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:18 2007 -0700"
      },
      "message": "utimensat implementation\n\nImplement utimensat(2) which is an extension to futimesat(2) in that it\n\na) supports nano-second resolution for the timestamps\nb) allows to selectively ignore the atime/mtime value\nc) allows to selectively use the current time for either atime or mtime\nd) supports changing the atime/mtime of a symlink itself along the lines\n   of the BSD lutimes(3) functions\n\nFor this change the internally used do_utimes() functions was changed to\naccept a timespec time value and an additional flags parameter.\n\nAdditionally the sys_utime function was changed to match compat_sys_utime\nwhich already use do_utimes instead of duplicating the work.\n\nAlso, the completely missing futimensat() functionality is added.  We have\nsuch a function in glibc but we have to resort to using /proc/self/fd/* which\nnot everybody likes (chroot etc).\n\nTest application (the syscall number will need per-arch editing):\n\n#include \u003cerrno.h\u003e\n#include \u003cfcntl.h\u003e\n#include \u003ctime.h\u003e\n#include \u003csys/time.h\u003e\n#include \u003cstddef.h\u003e\n#include \u003csyscall.h\u003e\n\n#define __NR_utimensat 280\n\n#define UTIME_NOW       ((1l \u003c\u003c 30) - 1l)\n#define UTIME_OMIT      ((1l \u003c\u003c 30) - 2l)\n\nint\nmain(void)\n{\n  int status \u003d 0;\n\n  int fd \u003d open(\"ttt\", O_RDWR|O_CREAT|O_EXCL, 0666);\n  if (fd \u003d\u003d -1)\n    error (1, errno, \"failed to create test file \\\"ttt\\\"\");\n\n  struct stat64 st1;\n  if (fstat64 (fd, \u0026st1) !\u003d 0)\n    error (1, errno, \"fstat failed\");\n\n  struct timespec t[2];\n  t[0].tv_sec \u003d 0;\n  t[0].tv_nsec \u003d 0;\n  t[1].tv_sec \u003d 0;\n  t[1].tv_nsec \u003d 0;\n  if (syscall(__NR_utimensat, AT_FDCWD, \"ttt\", t, 0) !\u003d 0)\n    error (1, errno, \"utimensat failed\");\n\n  struct stat64 st2;\n  if (fstat64 (fd, \u0026st2) !\u003d 0)\n    error (1, errno, \"fstat failed\");\n\n  if (st2.st_atim.tv_sec !\u003d 0 || st2.st_atim.tv_nsec !\u003d 0)\n    {\n      puts (\"atim not reset to zero\");\n      status \u003d 1;\n    }\n  if (st2.st_mtim.tv_sec !\u003d 0 || st2.st_mtim.tv_nsec !\u003d 0)\n    {\n      puts (\"mtim not reset to zero\");\n      status \u003d 1;\n    }\n  if (status !\u003d 0)\n    goto out;\n\n  t[0] \u003d st1.st_atim;\n  t[1].tv_sec \u003d 0;\n  t[1].tv_nsec \u003d UTIME_OMIT;\n  if (syscall(__NR_utimensat, AT_FDCWD, \"ttt\", t, 0) !\u003d 0)\n    error (1, errno, \"utimensat failed\");\n\n  if (fstat64 (fd, \u0026st2) !\u003d 0)\n    error (1, errno, \"fstat failed\");\n\n  if (st2.st_atim.tv_sec !\u003d st1.st_atim.tv_sec\n      || st2.st_atim.tv_nsec !\u003d st1.st_atim.tv_nsec)\n    {\n      puts (\"atim not set\");\n      status \u003d 1;\n    }\n  if (st2.st_mtim.tv_sec !\u003d 0 || st2.st_mtim.tv_nsec !\u003d 0)\n    {\n      puts (\"mtim changed from zero\");\n      status \u003d 1;\n    }\n  if (status !\u003d 0)\n    goto out;\n\n  t[0].tv_sec \u003d 0;\n  t[0].tv_nsec \u003d UTIME_OMIT;\n  t[1] \u003d st1.st_mtim;\n  if (syscall(__NR_utimensat, AT_FDCWD, \"ttt\", t, 0) !\u003d 0)\n    error (1, errno, \"utimensat failed\");\n\n  if (fstat64 (fd, \u0026st2) !\u003d 0)\n    error (1, errno, \"fstat failed\");\n\n  if (st2.st_atim.tv_sec !\u003d st1.st_atim.tv_sec\n      || st2.st_atim.tv_nsec !\u003d st1.st_atim.tv_nsec)\n    {\n      puts (\"mtim changed from original time\");\n      status \u003d 1;\n    }\n  if (st2.st_mtim.tv_sec !\u003d st1.st_mtim.tv_sec\n      || st2.st_mtim.tv_nsec !\u003d st1.st_mtim.tv_nsec)\n    {\n      puts (\"mtim not set\");\n      status \u003d 1;\n    }\n  if (status !\u003d 0)\n    goto out;\n\n  sleep (2);\n\n  t[0].tv_sec \u003d 0;\n  t[0].tv_nsec \u003d UTIME_NOW;\n  t[1].tv_sec \u003d 0;\n  t[1].tv_nsec \u003d UTIME_NOW;\n  if (syscall(__NR_utimensat, AT_FDCWD, \"ttt\", t, 0) !\u003d 0)\n    error (1, errno, \"utimensat failed\");\n\n  if (fstat64 (fd, \u0026st2) !\u003d 0)\n    error (1, errno, \"fstat failed\");\n\n  struct timeval tv;\n  gettimeofday(\u0026tv,NULL);\n\n  if (st2.st_atim.tv_sec \u003c\u003d st1.st_atim.tv_sec\n      || st2.st_atim.tv_sec \u003e tv.tv_sec)\n    {\n      puts (\"atim not set to NOW\");\n      status \u003d 1;\n    }\n  if (st2.st_mtim.tv_sec \u003c\u003d st1.st_mtim.tv_sec\n      || st2.st_mtim.tv_sec \u003e tv.tv_sec)\n    {\n      puts (\"mtim not set to NOW\");\n      status \u003d 1;\n    }\n\n  if (symlink (\"ttt\", \"tttsym\") !\u003d 0)\n    error (1, errno, \"cannot create symlink\");\n\n  t[0].tv_sec \u003d 0;\n  t[0].tv_nsec \u003d 0;\n  t[1].tv_sec \u003d 0;\n  t[1].tv_nsec \u003d 0;\n  if (syscall(__NR_utimensat, AT_FDCWD, \"tttsym\", t, AT_SYMLINK_NOFOLLOW) !\u003d 0)\n    error (1, errno, \"utimensat failed\");\n\n  if (lstat64 (\"tttsym\", \u0026st2) !\u003d 0)\n    error (1, errno, \"lstat failed\");\n\n  if (st2.st_atim.tv_sec !\u003d 0 || st2.st_atim.tv_nsec !\u003d 0)\n    {\n      puts (\"symlink atim not reset to zero\");\n      status \u003d 1;\n    }\n  if (st2.st_mtim.tv_sec !\u003d 0 || st2.st_mtim.tv_nsec !\u003d 0)\n    {\n      puts (\"symlink mtim not reset to zero\");\n      status \u003d 1;\n    }\n  if (status !\u003d 0)\n    goto out;\n\n  t[0].tv_sec \u003d 1;\n  t[0].tv_nsec \u003d 0;\n  t[1].tv_sec \u003d 1;\n  t[1].tv_nsec \u003d 0;\n  if (syscall(__NR_utimensat, fd, NULL, t, 0) !\u003d 0)\n    error (1, errno, \"utimensat failed\");\n\n  if (fstat64 (fd, \u0026st2) !\u003d 0)\n    error (1, errno, \"fstat failed\");\n\n  if (st2.st_atim.tv_sec !\u003d 1 || st2.st_atim.tv_nsec !\u003d 0)\n    {\n      puts (\"atim not reset to one\");\n      status \u003d 1;\n    }\n  if (st2.st_mtim.tv_sec !\u003d 1 || st2.st_mtim.tv_nsec !\u003d 0)\n    {\n      puts (\"mtim not reset to one\");\n      status \u003d 1;\n    }\n\n  if (status \u003d\u003d 0)\n     puts (\"all OK\");\n\n out:\n  close (fd);\n  unlink (\"ttt\");\n  unlink (\"tttsym\");\n\n  return status;\n}\n\n[akpm@linux-foundation.org: add missing i386 syscall table entry]\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@openvz.org\u003e\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0bb5e19d63cc1b09aed8aef3a20926ac435bb8e7",
      "tree": "c6b2a03259a86ca96d3fac02fc0f2f05220e6682",
      "parents": [
        "53f049fa5f18730b61faaee582ea0e045fd44f49"
      ],
      "author": {
        "name": "David Gibson",
        "email": "david@gibson.dropbear.id.au",
        "time": "Tue May 08 00:30:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:13 2007 -0700"
      },
      "message": "Clean up mostly unused IOSPACE macros\n\nMost architectures defined three macros, MK_IOSPACE_PFN(), GET_IOSPACE()\nand GET_PFN() in pgtable.h.  However, the only callers of any of these\nmacros are in Sparc specific code, either in arch/sparc, arch/sparc64 or\ndrivers/sbus.\n\nThis patch removes the redundant macros from all architectures except\nsparc and sparc64.\n\nSigned-off-by: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7e80d0d0b64f5c00b0ac7e623d96189309c298ca",
      "tree": "748942edea32fb94fdc74c0aaee06acd3d1bffc5",
      "parents": [
        "b259d74b39595f6ac74c3627b9c3657ac90249a0"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue May 08 00:28:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:08 2007 -0700"
      },
      "message": "i386: sched.h inclusion from module.h is baack\n\n  linux/module.h\n  -\u003e linux/elf.h\n     -\u003e asm-i386/elf.h\n        -\u003e linux/utsname.h\n           -\u003e linux/sched.h\n\nNoticeably cut the number of files which are rebuild upon touching sched.h\nand cut down pulled junk from every module.h inclusion.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6672f76a5a1878d42264c1deba8f1ab52b4618d9",
      "tree": "77396eefed3548183c1f0c3d1dc38f034d8fc429",
      "parents": [
        "73285082745045bcd64333c1fbaa88f8490f2626"
      ],
      "author": {
        "name": "Simon Horman",
        "email": "horms@verge.net.au",
        "time": "Tue May 08 00:28:22 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:07 2007 -0700"
      },
      "message": "kdump/kexec: calculate note size at compile time\n\nCurrently the size of the per-cpu region reserved to save crash notes is\nset by the per-architecture value MAX_NOTE_BYTES.  Which in turn is\ncurrently set to 1024 on all supported architectures.\n\nWhile testing ia64 I recently discovered that this value is in fact too\nsmall.  The particular setup I was using actually needs 1172 bytes.  This\nlead to very tedious failure mode where the tail of one elf note would\noverwrite the head of another if they ended up being alocated sequentially\nby kmalloc, which was often the case.\n\nIt seems to me that a far better approach is to caclculate the size that\nthe area needs to be.  This patch does just that.\n\nIf a simpler stop-gap patch for ia64 to be squeezed into 2.6.21(.X) is\nneeded then this should be as easy as making MAX_NOTE_BYTES larger in\narch/asm-ia64/kexec.h.  Perhaps 2048 would be a good choice.  However, I\nthink that the approach in this patch is a much more robust idea.\n\nAcked-by:  Vivek Goyal \u003cvgoyal@in.ibm.com\u003e\nSigned-off-by: Simon Horman \u003chorms@verge.net.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1eeb66a1bb973534dc3d064920a5ca683823372e",
      "tree": "19c22d611e6adefb352dbc107b859e4d13ba38c1",
      "parents": [
        "e3869792990f708c97be5877499cada70d469bd3"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue May 08 00:27:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:04 2007 -0700"
      },
      "message": "move die notifier handling to common code\n\nThis patch moves the die notifier handling to common code.  Previous\nvarious architectures had exactly the same code for it.  Note that the new\ncode is compiled unconditionally, this should be understood as an appel to\nthe other architecture maintainer to implement support for it aswell (aka\nsprinkling a notify_die or two in the proper place)\n\narm had a notifiy_die that did something totally different, I renamed it to\narm_notify_die as part of the patch and made it static to the file it\u0027s\ndeclared and used at.  avr32 used to pass slightly less information through\nthis interface and I brought it into line with the other architectures.\n\n[akpm@linux-foundation.org: build fix]\n[akpm@linux-foundation.org: fix vmalloc_sync_all bustage]\n[bryan.wu@analog.com: fix vmalloc_sync_all in nommu]\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nSigned-off-by: Bryan Wu \u003cbryan.wu@analog.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6de02123bf3e8baeee97fff7efc50bc192332804",
      "tree": "bd27e1695889caee401316feb3546e6d6ea368b4",
      "parents": [
        "c23fbb6bcb3eb9cdf39a103edadf57bde8ce309c"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@lxorguk.ukuu.org.uk",
        "time": "Tue May 08 00:26:21 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:03 2007 -0700"
      },
      "message": "tty: i386/x86_64 arbitary speed support\n\nAdds the needed TCGETS2/TCSETS2 ioctl calls, structures, defines and the like.\nTested against the test suite and passes.  Other platforms should need\nroughly the same change.\n\nSigned-off-by: Alan Cox \u003calan@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f64da958dfc83335de1d2bef9d3868f30feb4e53",
      "tree": "ebf2ca43cf50ea05742b19806ca72c5027c0911a",
      "parents": [
        "ee6cd5f8f573ad11f270a07fb201822c2862474d"
      ],
      "author": {
        "name": "Corey Minyard",
        "email": "minyard@acm.org",
        "time": "Tue May 08 00:23:58 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:58 2007 -0700"
      },
      "message": "ipmi: add new IPMI nmi watchdog handling\n\nConvert over to the new NMI handling for getting IPMI watchdog timeouts via an\nNMI.  This add config options to know if there is the ability to receive NMIs\nand if it has an NMI post processing call.  Then it modifies the IPMI watchdog\nto take advantage of this so that it can know if an NMI comes in.\n\nIt also adds testing that the IPMI NMI watchdog works.\n\nSigned-off-by: Corey Minyard \u003cminyard@acm.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4e9baad8f5cb2040e802eff484fad7e721b21c0b",
      "tree": "35bd0bdbc9185b0a21d56b32fbd78390a06b1b41",
      "parents": [
        "9ca8e40c8414d25e880b587cbd4d130750c49588"
      ],
      "author": {
        "name": "Rudolf Marek",
        "email": "r.marek@assembler.cz",
        "time": "Tue May 08 17:22:01 2007 +0200"
      },
      "committer": {
        "name": "Jean Delvare",
        "email": "khali@hyperion.delvare",
        "time": "Tue May 08 17:22:01 2007 +0200"
      },
      "message": "i386: Add safe variants of rdmsr_on_cpu and wrmsr_on_cpu\n\nAdd safe (exception handled) variants of rdmsr_on_cpu and wrmsr_on_cpu.\nYou should use these when the target MSR may not actually exist, as\ndoing so could trigger an exception which the regular functions do not\nhandle. The safe variants are slower, though.\n\nThe upcoming coretemp hardware monitoring driver will need this.\n\nSigned-off-by: Rudolf Marek \u003cr.marek@assembler.cz\u003e\nCc: Alexey Dobriyan \u003cadobriyan@openvz.org\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nSigned-off-by: Jean Delvare \u003ckhali@linux-fr.org\u003e\n"
    },
    {
      "commit": "b5637e65ee2cecd344b1f8ff750013f697d3ae16",
      "tree": "1916269a4f89ceef3a157bd70368d84071c94a3b",
      "parents": [
        "c596d9f320aaf30d28c1d793ff3a976dee1db8f5"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Sun May 06 14:49:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:53 2007 -0700"
      },
      "message": "i386: use page allocator to allocate thread_info structure\n\ni386 uses kmalloc to allocate the threadinfo structure assuming that the\nallocations result in a page sized aligned allocation.  That has worked so\nfar because SLAB exempts page sized slabs from debugging and aligns them in\nspecial ways that goes beyond the restrictions imposed by\nKMALLOC_ARCH_MINALIGN valid for other slabs in the kmalloc array.\n\nSLUB also works fine without debugging since page sized allocations neatly\nalign at page boundaries.  However, if debugging is switched on then SLUB\nwill extend the slab with debug information.  The resulting slab is not\nlonger of page size.  It will only be aligned following the requirements\nimposed by KMALLOC_ARCH_MINALIGN.  As a result the threadinfo structure may\nnot be page aligned which makes i386 fail to boot with SLUB debug on.\n\nReplace the calls to kmalloc with calls into the page allocator.\n\nAn alternate solution may be to create a custom slab cache where the\nalignment is set to PAGE_SIZE.  That would allow slub debugging to be\napplied to the threadinfo structure.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0013572b2ae535bfd6314f22d9aef53725ea00d8",
      "tree": "0c405dfe8a106099696ed9955b4405e6d7caed70",
      "parents": [
        "10a8d6ae4b3182d6588a5809a8366343bc295c20"
      ],
      "author": {
        "name": "Zachary Amsden",
        "email": "zach@vmware.com",
        "time": "Sun May 06 14:49:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:52 2007 -0700"
      },
      "message": "i386: use pte_update_defer in ptep_test_and_clear_{dirty,young}\n\nIf you actually clear the bit, you need to:\n\n+         pte_update_defer(vma-\u003evm_mm, addr, ptep);\n\nThe reason is, when updating PTEs, the hypervisor must be notified.  Using\natomic operations to do this is fine for all hypervisors I am aware of.\nHowever, for hypervisors which shadow page tables, if these PTE\nmodifications are not trapped, you need a post-modification call to fulfill\nthe update of the shadow page table.\n\nAcked-by: Zachary Amsden \u003czach@vmware.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "10a8d6ae4b3182d6588a5809a8366343bc295c20",
      "tree": "37a1d626c350df5f4a4234a0fcaf524f5755fe4a",
      "parents": [
        "9490991482a2091a828d997adbc088e24c310a4d"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Sun May 06 14:49:19 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:52 2007 -0700"
      },
      "message": "i386: add ptep_test_and_clear_{dirty,young}\n\nAdd ptep_test_and_clear_{dirty,young} to i386.  They advertise that they\nhave it and there is at least one place where it needs to be called without\nthe page table lock: to clear the accessed bit on write to\n/proc/pid/clear_refs.\n\nptep_clear_flush_{dirty,young} are updated to use the new functions.  The\noverall net effect to current users of ptep_clear_flush_{dirty,young} is\nthat we introduce an additional branch.\n\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ea62ccd00fd0b6720b033adfc9984f31130ce195",
      "tree": "9837b797b2466fffcb0af96c388b06eae9c3df18",
      "parents": [
        "886a0768affe9a32f18c45f8e1393bca9ece5392",
        "35060b6a9a4e1c89bc6fbea61090e302dbc61847"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat May 05 14:55:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat May 05 14:55:20 2007 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://one.firstfloor.org/home/andi/git/linux-2.6\n\n* \u0027for-linus\u0027 of git://one.firstfloor.org/home/andi/git/linux-2.6: (231 commits)\n  [PATCH] i386: Don\u0027t delete cpu_devs data to identify different x86 types in late_initcall\n  [PATCH] i386: type may be unused\n  [PATCH] i386: Some additional chipset register values validation.\n  [PATCH] i386: Add missing !X86_PAE dependincy to the 2G/2G split.\n  [PATCH] x86-64: Don\u0027t exclude asm-offsets.c in Documentation/dontdiff\n  [PATCH] i386: avoid redundant preempt_disable in __unlazy_fpu\n  [PATCH] i386: white space fixes in i387.h\n  [PATCH] i386: Drop noisy e820 debugging printks\n  [PATCH] x86-64: Fix allnoconfig error in genapic_flat.c\n  [PATCH] x86-64: Shut up warnings for vfat compat ioctls on other file systems\n  [PATCH] x86-64: Share identical video.S between i386 and x86-64\n  [PATCH] x86-64: Remove CONFIG_REORDER\n  [PATCH] x86-64: Print type and size correctly for unknown compat ioctls\n  [PATCH] i386: Remove copy_*_user BUG_ONs for (size \u003c 0)\n  [PATCH] i386: Little cleanups in smpboot.c\n  [PATCH] x86-64: Don\u0027t enable NUMA for a single node in K8 NUMA scanning\n  [PATCH] x86: Use RDTSCP for synchronous get_cycles if possible\n  [PATCH] i386: Add X86_FEATURE_RDTSCP\n  [PATCH] i386: Implement X86_FEATURE_SYNC_RDTSC on i386\n  [PATCH] i386: Implement alternative_io for i386\n  ...\n\nFix up trivial conflict in include/linux/highmem.h manually.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fabb5c4e4a474ff0f7d6c1d3466a1b79bbce5f49",
      "tree": "c77845e116145fe4e5f172c39f4da2f87b8476ce",
      "parents": [
        "aa12b2842aba8cc367a2e1ddb5c6ae4fd8ddb1da",
        "d6444514b89098284099c17b9f168ef6236d3e8f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat May 05 13:30:23 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat May 05 13:30:23 2007 -0700"
      },
      "message": "Merge master.kernel.org:/pub/scm/linux/kernel/git/jejb/voyager-2.6\n\n* master.kernel.org:/pub/scm/linux/kernel/git/jejb/voyager-2.6:\n  [VOYAGER] add smp alternatives\n  [VOYAGER] Use modern techniques to setup and teardown low identiy mappings.\n  [VOYAGER] Convert the monitor thread to use the kthread API\n  [VOYAGER] clockevents driver: bring voyager in to line\n  [VOYAGER] clockevents: correct boot cpu is zero assumption\n  [VOYAGER] add smp_call_function_single\n"
    },
    {
      "commit": "89661adaaee2f85116b399e642129ccd4dafd195",
      "tree": "86a0bea62ef1ebbd454d5daa4deef1534ab5a222",
      "parents": [
        "6adae5d9e69743aede91b274224751811f7174f1",
        "9890b12a4a65a7b3181dd963421740edf0e14d69"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 04 18:04:29 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 04 18:04:29 2007 -0700"
      },
      "message": "Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6\n\n* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6: (59 commits)\n  PCI: Free resource files in error path of pci_create_sysfs_dev_files()\n  pci-quirks: disable MSI on RS400-200 and RS480\n  PCI hotplug: Use menuconfig objects\n  PCI: ZT5550 CPCI Hotplug driver fix\n  PCI: rpaphp: Remove semaphores\n  PCI: rpaphp: Ensure more pcibios_add/pcibios_remove symmetry\n  PCI: rpaphp: Use pcibios_remove_pci_devices() symmetrically\n  PCI: rpaphp: Document is_php_dn()\n  PCI: rpaphp: Document find_php_slot()\n  PCI: rpaphp: Rename rpaphp_register_pci_slot() to rpaphp_enable_slot()\n  PCI: rpaphp: refactor tail call to rpaphp_register_slot()\n  PCI: rpaphp: remove rpaphp_set_attention_status()\n  PCI: rpaphp: remove print_slot_pci_funcs()\n  PCI: rpaphp: Remove setup_pci_slot()\n  PCI: rpaphp: remove a call that does nothing but a pointer lookup\n  PCI: rpaphp: Remove another wrappered function\n  PCI: rpaphp: Remve another call that is a wrapper\n  PCI: rpaphp: remove a function that does nothing but wrap debug printks\n  PCI: rpaphp: Remove un-needed goto\n  PCI: rpaphp: Fix a memleak; slot-\u003elocation string was never freed\n  ...\n"
    },
    {
      "commit": "98b96173c777c67daaa7d163a35e591e1928a164",
      "tree": "0530429db1328a00b89972ca67d15e1b61e66ba8",
      "parents": [
        "cf8ba7a95511b86608acb481ad96219fe2da4b3a",
        "881ba59d4685b28433bf313b6db51672a02696a3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 04 17:38:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri May 04 17:38:16 2007 -0700"
      },
      "message": "Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart\n\n* master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart:\n  [AGPGART] sworks-agp: Switch to PCI ref counting APIs\n  [AGPGART] Nvidia AGP: Use refcount aware PCI interfaces\n  [AGPGART] Fix sparse warning in sgi-agp.c\n  [AGPGART] Intel-agp adjustments\n  [AGPGART] Move [un]map_page_into_agp into asm/agp.h\n  [AGPGART] Add missing calls to global_flush_tlb() to ali-agp\n  [AGPGART] prevent probe collision of sis-agp and amd64_agp\n"
    },
    {
      "commit": "a9dfd281a7e12f6d9b53b5a28649b3a3c76a70e6",
      "tree": "824e770379f8dea598e411ba43aeb7659f26c8dc",
      "parents": [
        "e325e1f0783382298141c74737712637943c6063"
      ],
      "author": {
        "name": "Jean Delvare",
        "email": "khali@linux-fr.org",
        "time": "Tue Mar 06 02:45:12 2007 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Wed May 02 19:02:34 2007 -0700"
      },
      "message": "PCI: scatterlist.h needs types.h\n\nMost architectures\u0027 scatterlist.h use the type dma_addr_t, but omit to\ninclude \u003casm/types.h\u003e which defines it.  This could lead to build failures,\nso let\u0027s add the missing includes.\n\nSigned-off-by: Jean Delvare \u003ckhali@linux-fr.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "c41bf8fa5e777b6a8a19cf2484937a7167eac77f",
      "tree": "982494445301d399078fe6abdedc724843561f5d",
      "parents": [
        "02b64dab5675bc08048c7f70cbb0d8a417d20dbe"
      ],
      "author": {
        "name": "Jan Kiszka",
        "email": "jan.kiszka@web.de",
        "time": "Wed May 02 19:27:21 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:21 2007 +0200"
      },
      "message": "[PATCH] i386: avoid redundant preempt_disable in __unlazy_fpu\n\nThere are two callers of __unlazy_fpu, unlazy_fpu and __switch_to, and\nnone of them appear to require additional preempt_disable/enable here.\nLet\u0027s open-code save_init_fpu in __unlazy_fpu to save a few ops.\n\nSigned-off-by: Jan Kiszka \u003cjan.kiszka@web.de\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "02b64dab5675bc08048c7f70cbb0d8a417d20dbe",
      "tree": "441b11859069ad99f2d0e9696a52531f9d53f7cf",
      "parents": [
        "1306383282aaf58e85e5461404db367be0f88dca"
      ],
      "author": {
        "name": "Jan Kiszka",
        "email": "jan.kiszka@web.de",
        "time": "Wed May 02 19:27:21 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:21 2007 +0200"
      },
      "message": "[PATCH] i386: white space fixes in i387.h\n\nSigned-off-by: Jan Kiszka \u003cjan.kiszka@web.de\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "c5bcb5635a03da3158f121ae20ccbbf72b4fc62a",
      "tree": "a69fff3138ad14a7949d979f2d2e5893c5cb77de",
      "parents": [
        "9bccb23dc5fc2d268ab676e2d4212d29e230fd86"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Wed May 02 19:27:21 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:21 2007 +0200"
      },
      "message": "[PATCH] x86: Use RDTSCP for synchronous get_cycles if possible\n\nRDTSCP is already synchronous and doesn\u0027t need an explicit CPUID.\nThis is a little faster and more importantly avoids VMEXITs on Hypervisors.\n\nOriginal patch from Joerg Roedel, but reworked by AK\nAlso includes miscompilation fix by Eric Biederman\n\nCc: \"Joerg Roedel\" \u003cjoerg.roedel@amd.com\u003e\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "9bccb23dc5fc2d268ab676e2d4212d29e230fd86",
      "tree": "a72855bec8be802ff90e529c1b0fc33bf94f783a",
      "parents": [
        "3aefbe0746580a710d4392a884ac1e4aac7c728f"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Wed May 02 19:27:20 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:20 2007 +0200"
      },
      "message": "[PATCH] i386: Add X86_FEATURE_RDTSCP\n\nFollowing x86-64\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "3aefbe0746580a710d4392a884ac1e4aac7c728f",
      "tree": "a83d2b9dccdce97c57e5914831310762dd27a5de",
      "parents": [
        "e859dc553c857f4672b3bbb73ee9170a901f8712"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Wed May 02 19:27:20 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:20 2007 +0200"
      },
      "message": "[PATCH] i386: Implement X86_FEATURE_SYNC_RDTSC on i386\n\nSyncs up with x86-64.\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "e859dc553c857f4672b3bbb73ee9170a901f8712",
      "tree": "b71603823255c6eadfb8edbe66c8e8f4bb9caefe",
      "parents": [
        "3671df8572a299acff9c9cac2bf7279ee614d154"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Wed May 02 19:27:20 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:20 2007 +0200"
      },
      "message": "[PATCH] i386: Implement alternative_io for i386\n\nPorted from x86-64.\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "3671df8572a299acff9c9cac2bf7279ee614d154",
      "tree": "e92e13da85eee016ade75e2f46445d47a4d3d143",
      "parents": [
        "c7f81c9453375d6416658995eafd3397cb9bba1d"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Wed May 02 19:27:20 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:20 2007 +0200"
      },
      "message": "[PATCH] i386: Evaluate constant cpu features at runtime\n\nRedefine cpu_has() to evaluate cpu features already checked in early\nboot at compile time.  This way the compiler might eliminate some dead code.\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "c7f81c9453375d6416658995eafd3397cb9bba1d",
      "tree": "44e018745a0b7c12b127eb54106f2f0c2bb5a570",
      "parents": [
        "484ad393659f20d784a3a93613fb3fd3d9f171fa"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Wed May 02 19:27:20 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:20 2007 +0200"
      },
      "message": "[PATCH] i386: Verify important CPUID bits in real mode\n\nCheck some CPUID bits that are needed for compiler generated early in boot.\nWhen the system is still in real mode before changing the VESA BIOS mode\nit is possible to still display an visible error message on the screen.\n\nSimilar to x86-64.\n\nIncludes cleanups from Eric Biederman\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "09198e68501a7e34737cd9264d266f42429abcdc",
      "tree": "3b13e10f47007f882a7c69be5a043384a6b4a930",
      "parents": [
        "e3f1caeef9a70b0699518092d653c15274b025ab"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Wed May 02 19:27:20 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:20 2007 +0200"
      },
      "message": "[PATCH] i386: Clean up NMI watchdog code\n\n- Introduce a wd_ops structure\n- Convert the various nmi watchdogs over to it\n- This allows to split the perfctr reservation from the watchdog\nsetup cleanly.\n- Do perfctr reservation globally as it should have always been\n- Remove dead code referenced only by unused EXPORT_SYMBOLs\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "9e5e3162b2d5e4466187ecd63c9eec2de33cb7bc",
      "tree": "e0d9231574833f17b509bc2ca1971af90f657eb2",
      "parents": [
        "142dd975911fdd82b1b6f6617cd20ac90a8ccf00"
      ],
      "author": {
        "name": "Zachary Amsden",
        "email": "zach@vmware.com",
        "time": "Wed May 02 19:27:19 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:19 2007 +0200"
      },
      "message": "[PATCH] i386: pte simplify ops\n\nAdd comment and condense code to make use of native_local_ptep_get_and_clear\nfunction.  Also, it turns out the 2-level and 3-level paging definitions were\nidentical, so move the common definition into pgtable.h\n\nSigned-off-by: Zachary Amsden \u003czach@vmware.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "142dd975911fdd82b1b6f6617cd20ac90a8ccf00",
      "tree": "1e72e96bce64d9301d3305b4dd0b30675c8676b0",
      "parents": [
        "c2c1accd4b2f9c82fb89d40611c7f581948db255"
      ],
      "author": {
        "name": "Zachary Amsden",
        "email": "zach@vmware.com",
        "time": "Wed May 02 19:27:19 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:19 2007 +0200"
      },
      "message": "[PATCH] i386: pte xchg optimization\n\nIn situations where page table updates need only be made locally, and there is\nno cross-processor A/D bit races involved, we need not use the heavyweight\nxchg instruction to atomically fetch and clear page table entries.  Instead,\nwe can just read and clear them directly.\n\nThis introduces a neat optimization for non-SMP kernels; drop the atomic xchg\noperations from page table updates.\n\nThanks to Michel Lespinasse for noting this potential optimization.\n\nSigned-off-by: Zachary Amsden \u003czach@vmware.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "c2c1accd4b2f9c82fb89d40611c7f581948db255",
      "tree": "0d4c6b8c2c53ff3d5657fdabe029f14f655fdac7",
      "parents": [
        "df3624aa293dfa2d46089747d919711089a702eb"
      ],
      "author": {
        "name": "Zachary Amsden",
        "email": "zach@vmware.com",
        "time": "Wed May 02 19:27:19 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:19 2007 +0200"
      },
      "message": "[PATCH] i386: pte clear optimization\n\nWhen exiting from an address space, no special hypervisor notification of page\ntable updates needs to occur; direct page table hypervisors, such as Xen,\nswitch to another address space first (init_mm) and unprotects the page tables\nto avoid the cost of trapping to the hypervisor for each pte_clear.  Shadow\nmode hypervisors, such as VMI and lhype don\u0027t need to do the extra work of\ncalling through paravirt-ops, and can just directly clear the page table\nentries without notifiying the hypervisor, since all the page tables are about\nto be freed.\n\nSo introduce native_pte_clear functions which bypass any paravirt-ops\nnotification.  This results in a significant performance win for VMI and\nremoves some indirect calls from zap_pte_range.\n\nNote the 3-level paging already had a native_pte_clear function, thus\ndemanding argument conformance and extra args for the 2-level definition.\n\nSigned-off-by: Zachary Amsden \u003czach@vmware.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "f2b218dd6199983b120a96bc6531c1b81f4090d8",
      "tree": "c698c752d4424e926badbfe1bda2ff5c738cacf6",
      "parents": [
        "de938c51d5fec4ae03af64b06beb15d4423ec611"
      ],
      "author": {
        "name": "Fernando Luis VazquezCao",
        "email": "fernando@oss.ntt.co.jp",
        "time": "Wed May 02 19:27:17 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:17 2007 +0200"
      },
      "message": "[PATCH] i386: safe_apic_wait_icr_idle - i386\n\napic_wait_icr_idle looks like this:\n\nstatic __inline__ void apic_wait_icr_idle(void)\n{\n  while (apic_read(APIC_ICR) \u0026 APIC_ICR_BUSY)\n    cpu_relax();\n}\n\nThe busy loop in this function would not be problematic if the\ncorresponding status bit in the ICR were always updated, but that does\nnot seem to be the case under certain crash scenarios. Kdump uses an IPI\nto stop the other CPUs in the event of a crash, but when any of the\nother CPUs are locked-up inside the NMI handler the CPU that sends the\nIPI will end up looping forever in the ICR check, effectively\nhard-locking the whole system.\n\nQuoting from Intel\u0027s \"MultiProcessor Specification\" (Version 1.4), B-3:\n\n\"A local APIC unit indicates successful dispatch of an IPI by\nresetting the Delivery Status bit in the Interrupt Command\nRegister (ICR). The operating system polls the delivery status\nbit after sending an INIT or STARTUP IPI until the command has\nbeen dispatched.\n\nA period of 20 microseconds should be sufficient for IPI dispatch\nto complete under normal operating conditions. If the IPI is not\nsuccessfully dispatched, the operating system can abort the\ncommand. Alternatively, the operating system can retry the IPI by\nwriting the lower 32-bit double word of the ICR. This “time-out”\nmechanism can be implemented through an external interrupt, if\ninterrupts are enabled on the processor, or through execution of\nan instruction or time-stamp counter spin loop.\"\n\nIntel\u0027s documentation suggests the implementation of a time-out\nmechanism, which, by the way, is already being open-coded in some parts\nof the kernel that tinker with ICR.\n\nCreate a apic_wait_icr_idle replacement that implements the time-out\nmechanism and that can be used to solve the aforementioned problem.\n\nAK: moved both functions out of line\nAK: added improved loop from Keith Owens\n\nSigned-off-by: Fernando Luis Vazquez Cao \u003cfernando@oss.ntt.co.jp\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "de938c51d5fec4ae03af64b06beb15d4423ec611",
      "tree": "aabb457fda132a7d88e771427aa3da04c7944d4b",
      "parents": [
        "3ebad5905609476a4ff1151a66b21d9794009961"
      ],
      "author": {
        "name": "Bernhard Kaindl",
        "email": "bk@suse.de",
        "time": "Wed May 02 19:27:17 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:17 2007 +0200"
      },
      "message": "[PATCH] i386: Enable support for fixed-range IORRs to keep RdMem \u0026 WrMem in sync\n\nIf our copy of the MTRRs of the BSP has RdMem or WrMem set, and\nwe are running on an AMD64/K8 system, the boot CPU must have had\nMtrrFixDramEn and MtrrFixDramModEn set (otherwise our RDMSR would\nhave copied these bits cleared), so we set them on this CPU as well.\n\nThis allows us to keep the AMD64/K8 RdMem and WrMem bits in sync\nacross the CPUs of SMP systems in order to fullfill the duty of\nsystem software to \"initialize and maintain MTRR consistency\nacross all processors.\" as written in the AMD and Intel manuals.\n\nIf an WRMSR instruction fails because MtrrFixDramModEn is not\nset, I expect that also the Intel-style MTRR bits are not updated.\n\nAK: minor cleanup, moved MSR defines around\n\nSigned-off-by: Bernhard Kaindl \u003cbk@suse.de\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Dave Jones \u003cdavej@codemonkey.org.uk\u003e\n"
    },
    {
      "commit": "2b1f6278d77c1f2f669346fc2bb48012b5e9495a",
      "tree": "52a30a649b4786869a51bceefb2c7ca696e0fe32",
      "parents": [
        "2b3b4835c94226681c496de9446d456dcf42ed08"
      ],
      "author": {
        "name": "Bernhard Kaindl",
        "email": "bk@suse.de",
        "time": "Wed May 02 19:27:17 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:17 2007 +0200"
      },
      "message": "[PATCH] x86: Save the MTRRs of the BSP before booting an AP\n\nApplied fix by Andew Morton:\nhttp://lkml.org/lkml/2007/4/8/88 - Fix `make headers_check\u0027.\n\nAMD and Intel x86 CPU manuals state that it is the responsibility of\nsystem software to initialize and maintain MTRR consistency across\nall processors in Multi-Processing Environments.\n\nQuote from page 188 of the AMD64 System Programming manual (Volume 2):\n\n7.6.5 MTRRs in Multi-Processing Environments\n\n\"In multi-processing environments, the MTRRs located in all processors must\ncharacterize memory in the same way. Generally, this means that identical\nvalues are written to the MTRRs used by the processors.\" (short omission here)\n\"Failure to do so may result in coherency violations or loss of atomicity.\nProcessor implementations do not check the MTRR settings in other processors\nto ensure consistency. It is the responsibility of system software to\ninitialize and maintain MTRR consistency across all processors.\"\n\nCurrent Linux MTRR code already implements the above in the case that the\nBIOS does not properly initialize MTRRs on the secondary processors,\nbut the case where the fixed-range MTRRs of the boot processor are changed\nafter Linux started to boot, before the initialsation of a secondary\nprocessor, is not handled yet.\n\nIn this case, secondary processors are currently initialized by Linux\nwith MTRRs which the boot processor had very early, when mtrr_bp_init()\ndid run, but not with the MTRRs which the boot processor uses at the\ntime when that secondary processors is actually booted,\ncausing differing MTRR contents on the secondary processors.\n\nSuch situation happens on Acer Ferrari 1000 and 5000 notebooks where the\nBIOS enables and sets AMD-specific IORR bits in the fixed-range MTRRs\nof the boot processor when it transitions the system into ACPI mode.\nThe SMI handler of the BIOS does this in SMM, entered while Linux ACPI\ncode runs acpi_enable().\n\nOther occasions where the SMI handler of the BIOS may change bits in\nthe MTRRs could occur as well. To initialize newly booted secodary\nprocessors with the fixed-range MTRRs which the boot processor uses\nat that time, this patch saves the fixed-range MTRRs of the boot\nprocessor before new secondary processors are started. When the\nsecondary processors run their Linux initialisation code, their\nfixed-range MTRRs will be updated with the saved fixed-range MTRRs.\n\nIf CONFIG_MTRR is not set, we define mtrr_save_state\nas an empty statement because there is nothing to do.\n\nPossible TODOs:\n\n*) CPU-hotplugging outside of SMP suspend/resume is not yet tested\n   with this patch.\n\n*) If, even in this case, an AP never runs i386/do_boot_cpu or x86_64/cpu_up,\n   then the calls to mtrr_save_state() could be replaced by calls to\n   mtrr_save_fixed_ranges(NULL) and  mtrr_save_state() would not be\n   needed.\n\n   That would need either verification of the CPU-hotplug code or\n   at least a test on a \u003e2 CPU machine.\n\n*) The MTRRs of other running processors are not yet checked at this\n   time but it might be interesting to syncronize the MTTRs of all\n   processors before booting. That would be an incremental patch,\n   but of rather low priority since there is no machine known so\n   far which would require this.\n\nAK: moved prototypes on x86-64 around to fix warnings\n\nSigned-off-by: Bernhard Kaindl \u003cbk@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Dave Jones \u003cdavej@codemonkey.org.uk\u003e\n"
    },
    {
      "commit": "2b3b4835c94226681c496de9446d456dcf42ed08",
      "tree": "a7f005ccb038107153059691dbabf048b560521d",
      "parents": [
        "856f44ff4af6e57fdc39a8b2bec498c88438bd27"
      ],
      "author": {
        "name": "Bernhard Kaindl",
        "email": "bk@suse.de",
        "time": "Wed May 02 19:27:17 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:17 2007 +0200"
      },
      "message": "[PATCH] x86: Adds mtrr_save_fixed_ranges() for use in two later patches.\n\nIn this current implementation which is used in other patches,\nmtrr_save_fixed_ranges() accepts a dummy void pointer because\nin the current implementation of one of these patches, this\nfunction may be called from smp_call_function_single() which\nrequires that this function takes a void pointer argument.\n\nThis function calls get_fixed_ranges(), passing mtrr_state.fixed_ranges\nwhich is the element of the static struct which stores our current\nbackup of the fixed-range MTRR values which all CPUs shall be\nusing.\n\nBecause  mtrr_save_fixed_ranges calls get_fixed_ranges after\nkernel initialisation time, __init needs to be removed from\nthe declaration of get_fixed_ranges().\n\nIf CONFIG_MTRR is not set, we define mtrr_save_fixed_ranges\nas an empty statement because there is nothing to do.\n\nAK: Moved prototypes for x86-64 around to fix warnings\n\nSigned-off-by: Bernhard Kaindl \u003cbk@suse.de\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Dave Jones \u003cdavej@codemonkey.org.uk\u003e\n"
    },
    {
      "commit": "441d40dca024deb305a5e3d5003e8cd9d364d10f",
      "tree": "e6836e5e325aa717bca9fab4fa188b64a979261a",
      "parents": [
        "e0bb8643974397a8d36670e06e6a54bb84f3289f"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:16 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:16 2007 +0200"
      },
      "message": "[PATCH] x86: PARAVIRT: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\n\nThe other symbols used to delineate the alt-instructions sections have the\nform __foo/__foo_end.  Rename parainstructions to match.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e0bb8643974397a8d36670e06e6a54bb84f3289f",
      "tree": "196c6929fb8ccfe839f044a73be2f9861a88f175",
      "parents": [
        "eeef9c68aae2f4f21ab810d0339e0f22d30b0cd8"
      ],
      "author": {
        "name": "Zachary Amsden",
        "email": "zach@vmware.com",
        "time": "Wed May 02 19:27:16 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:16 2007 +0200"
      },
      "message": "[PATCH] i386: Convert VMI timer to use clock events\n\nConvert VMI timer to use clock events, making it properly able to use the NO_HZ\ninfrastructure.  On UP systems, with no local APIC, we just continue to route\nthese events through the PIT.  On systems with a local APIC, or SMP, we provide\na single source interrupt chip which creates the local timer IRQ.  It actually\ngets delivered by the APIC hardware, but we don\u0027t want to use the same local\nAPIC clocksource processing, so we create our own handler here.\n\nSigned-off-by: Zachary Amsden \u003czach@vmware.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCC: Dan Hecht \u003cdhecht@vmware.com\u003e\nCC: Ingo Molnar \u003cmingo@elte.hu\u003e\nCC: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "57decbda6a2a7c400b2a3b3b12e52ccbdc977118",
      "tree": "f4702143a15df7e455392ccb7eb466e9c5aa241e",
      "parents": [
        "9ce8c2ed12550f90fd6e902990652b13df647793"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:16 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:16 2007 +0200"
      },
      "message": "[PATCH] x86: update for i386 and x86-64 check_bugs\n\nRemove spurious comments, headers and keywords from x86-64 bugs.[ch].\n\nUse identify_boot_cpu()\n\nAK: merged with other patch\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "c5413fbe894924ddb8aa474a4d4da52e7a6c7e0b",
      "tree": "8f317bf2494b6b4bceb5e6d1ee35fabc0eeb9971",
      "parents": [
        "1956c73bb5bf81ee577ed7d3c64e3cad876ad2a5"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:16 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:16 2007 +0200"
      },
      "message": "[PATCH] i386: Fix UP gdt bugs\n\nFixes two problems with the GDT when compiling for uniprocessor:\n - There\u0027s no percpu segment, so trying to load its selector into %fs fails.\n   Use a null selector instead.\n - The real gdt needs to be loaded at some point.  Do it in cpu_init().\n\nSigned-off-by: Chris Wright \u003cchrisw@sous-sol.org\u003e\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "1956c73bb5bf81ee577ed7d3c64e3cad876ad2a5",
      "tree": "4e47be7446a6c9e42cbf03410280b7c06ad4e841",
      "parents": [
        "978c038ec944e4f2c940b0975c6acb433203a9be"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:16 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:16 2007 +0200"
      },
      "message": "[PATCH] i386: Define per_cpu_offset\n\nDefine per_cpu_offset in asm-i386/percpu.h when SMP defined, like\nasm-generic/percpu.h does for UP.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "978c038ec944e4f2c940b0975c6acb433203a9be",
      "tree": "f4bab9c040e5c4876fadeea765fed623f148ad69",
      "parents": [
        "7c3576d261ce046789a7db14f43303f8120910c7"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:16 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:16 2007 +0200"
      },
      "message": "[PATCH] i386: cleanups to help using per-cpu variables from asm\n\nThis patch does a few small cleanups:\n - use PER_CPU_NAME to generate the names of per-cpu variables\n - use lea to add the per_cpu offset in PER_CPU(), because it doesn\u0027t\n   affect condition flags\n - add PER_CPU_VAR which allows direct access to pre-cpu variables\n   with the %fs: prefix on SMP.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "7c3576d261ce046789a7db14f43303f8120910c7",
      "tree": "ad27a8459bbcdb183fe2411aec3b840942992ad5",
      "parents": [
        "7a61d35d4b4056e7711031202da7605e052f4137"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:16 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:16 2007 +0200"
      },
      "message": "[PATCH] i386: Convert PDA into the percpu section\n\nCurrently x86 (similar to x84-64) has a special per-cpu structure\ncalled \"i386_pda\" which can be easily and efficiently referenced via\nthe %fs register.  An ELF section is more flexible than a structure,\nallowing any piece of code to use this area.  Indeed, such a section\nalready exists: the per-cpu area.\n\nSo this patch:\n(1) Removes the PDA and uses per-cpu variables for each current member.\n(2) Replaces the __KERNEL_PDA segment with __KERNEL_PERCPU.\n(3) Creates a per-cpu mirror of __per_cpu_offset called this_cpu_off, which\n    can be used to calculate addresses for this CPU\u0027s variables.\n(4) Simplifies startup, because %fs doesn\u0027t need to be loaded with a\n    special segment at early boot; it can be deferred until the first\n    percpu area is allocated (or never for UP).\n\nThe result is less code and one less x86-specific concept.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "7a61d35d4b4056e7711031202da7605e052f4137",
      "tree": "4b21e0d541d0a189c2f9f16f53eb6489f07c5a84",
      "parents": [
        "39b7ee06859b07ca5fd4fabb44c4600316532574"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:15 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:15 2007 +0200"
      },
      "message": "[PATCH] i386: Page-align the GDT\n\nXen wants a dedicated page for the GDT.  I believe VMI likes it too.\nlguest, KVM and native don\u0027t care.\n\nSimple transformation to page-aligned \"struct gdt_page\".\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nAcked-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\n"
    },
    {
      "commit": "4cdd9c8931767e1c56a51a1078d33a8c340f4405",
      "tree": "bf8b49009011bb2dffe9683dffdcbfe3b90375f9",
      "parents": [
        "1a45b7aaa5051489b46afbc48509bd91f8b4a1ba"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:15 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:15 2007 +0200"
      },
      "message": "[PATCH] i386: PARAVIRT: drop unused ptep_get_and_clear\n\nIn shadow mode hypervisors, ptep_get_and_clear achieves the desired\npurpose of keeping the shadows in sync by issuing a native_get_and_clear,\nfollowed by a call to pte_update, which indicates the PTE has been\nmodified.\n\nDirect mode hypervisors (Xen) have no need for this anyway, and will trap\nthe update using writable pagetables.\n\nThis means no hypervisor makes use of ptep_get_and_clear; there is no\nreason to have it in the paravirt-ops structure.  Change confusing\nterminology about raw vs. native functions into consistent use of\nnative_pte_xxx for operations which do not invoke paravirt-ops.\n\nSigned-off-by: Zachary Amsden \u003czach@vmware.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "1a45b7aaa5051489b46afbc48509bd91f8b4a1ba",
      "tree": "2e0f39a0f801b33a9fbccca2afe1beb9cfaa82be",
      "parents": [
        "4e0fa85602a4fa219fc3a9c053d5140bf987d3e3"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:15 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:15 2007 +0200"
      },
      "message": "[PATCH] i386: PARAVIRT: Clean up paravirt patchable wrappers\n\nReplace all the open-coded macros for generating calls with a pair of\nmore general macros (__PVOP_CALL/VCALL), and redefine all the\nPVOP_V?CALL[0-4] in terms of them.\n\n[ Andrew, Andi: this should slot in immediately after \"Document asm-i386/paravirt.h\"\n  (paravirt_ops-document-asm-i386-paravirth.patch) ]\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4e0fa85602a4fa219fc3a9c053d5140bf987d3e3",
      "tree": "834d782a6782ac9c038ef64dac5ab015f6bfbf2d",
      "parents": [
        "7b2f27f4e1818fad980da7bea688dca2b9e9c3f3"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:15 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:15 2007 +0200"
      },
      "message": "[PATCH] i386: PARAVIRT: Use enums for paravirt lazy flush modi\n\nRemove #defines, add enum for PARAVIRT_LAZY_FLUSH.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "ce6234b5298902aaec831a67d5f8d9bd2ef5a488",
      "tree": "939c22684e11a4f5f17abb89c4898f016e878e21",
      "parents": [
        "a27fe809b82c5e18932fcceded28d0d1481ce7bb"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:15 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:15 2007 +0200"
      },
      "message": "[PATCH] i386: PARAVIRT: add kmap_atomic_pte for mapping highpte pages\n\nXen and VMI both have special requirements when mapping a highmem pte\npage into the kernel address space.  These can be dealt with by adding\na new kmap_atomic_pte() function for mapping highptes, and hooking it\ninto the paravirt_ops infrastructure.\n\nXen specifically wants to map the pte page RO, so this patch exposes a\nhelper function, kmap_atomic_prot, which maps the page with the\nspecified page protections.\n\nThis also adds a kmap_flush_unused() function to clear out the cached\nkmap mappings.  Xen needs this to clear out any potential stray RW\nmappings of pages which will become part of a pagetable.\n\n[ Zach - vmi.c will need some attention after this patch.  It wasn\u0027t\n  immediately obvious to me what needs to be done. ]\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Zachary Amsden \u003czach@vmware.com\u003e\n"
    },
    {
      "commit": "a27fe809b82c5e18932fcceded28d0d1481ce7bb",
      "tree": "b4d33cd8b3f038a84534d4d3302c0704e3959599",
      "parents": [
        "d4c104771a1c58e3de2a888b73b0ba1b54c0ae76"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:15 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:15 2007 +0200"
      },
      "message": "[PATCH] i386: PARAVIRT: revert map_pt_hook.\n\nBack out the map_pt_hook to clear the way for kmap_atomic_pte.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Zachary Amsden \u003czach@vmware.com\u003e\n"
    },
    {
      "commit": "d4c104771a1c58e3de2a888b73b0ba1b54c0ae76",
      "tree": "77ca2c6771e946aa926cb21c06702fdc7d230364",
      "parents": [
        "63f70270ccd981ce40a8ff58c03a8c2e97e368be"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:15 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:15 2007 +0200"
      },
      "message": "[PATCH] i386: PARAVIRT: add flush_tlb_others paravirt_op\n\nThis patch adds a pv_op for flush_tlb_others.  Linux running on native\nhardware uses cross-CPU IPIs to flush the TLB on any CPU which may\nhave a particular mm\u0027s pagetable entries cached in its TLB.  This is\ninefficient in a paravirtualized environment, since the hypervisor\nknows which real CPUs actually contain cached mappings, which may be a\nsmall subset of a guest\u0027s VCPUs.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "63f70270ccd981ce40a8ff58c03a8c2e97e368be",
      "tree": "7ffe766f25007845c99cfc337365c3006a153b83",
      "parents": [
        "294688c028e80fd467cdd22da79f62c5f311eaf5"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:14 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:14 2007 +0200"
      },
      "message": "[PATCH] i386: PARAVIRT: add common patching machinery\n\nImplement the actual patching machinery.  paravirt_patch_default()\ncontains the logic to automatically patch a callsite based on a few\nsimple rules:\n\n - if the paravirt_op function is paravirt_nop, then patch nops\n - if the paravirt_op function is a jmp target, then jmp to it\n - if the paravirt_op function is callable and doesn\u0027t clobber too much\n    for the callsite, call it directly\n\nparavirt_patch_default is suitable as a default implementation of\nparavirt_ops.patch, will remove most of the expensive indirect calls\nin favour of either a direct call or a pile of nops.\n\nBackends may implement their own patcher, however.  There are several\nhelper functions to help with this:\n\nparavirt_patch_nop\tnop out a callsite\nparavirt_patch_ignore\tleave the callsite as-is\nparavirt_patch_call\tpatch a call if the caller and callee\n\t\t\thave compatible clobbers\nparavirt_patch_jmp\tpatch in a jmp\nparavirt_patch_insns\tpatch some literal instructions over\n\t\t\tthe callsite, if they fit\n\nThis patch also implements more direct patches for the native case, so\nthat when running on native hardware many common operations are\nimplemented inline.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Zachary Amsden \u003czach@vmware.com\u003e\nCc: Anthony Liguori \u003canthony@codemonkey.ws\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "294688c028e80fd467cdd22da79f62c5f311eaf5",
      "tree": "3a2dcacf3f4f9997ae0032fb3c8342a2a7e5753d",
      "parents": [
        "f8822f42019eceed19cc6c0f985a489e17796ed8"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:14 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:14 2007 +0200"
      },
      "message": "[PATCH] i386: PARAVIRT: Document asm-i386/paravirt.h\n\nClean things up, and broadly document:\n - the paravirt_ops functions themselves\n - the patching mechanism\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "f8822f42019eceed19cc6c0f985a489e17796ed8",
      "tree": "d47728ad3a41343912e4556e6abd5cd79d75b3aa",
      "parents": [
        "42c24fa22e86365055fc931d833f26165e687c19"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:14 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:14 2007 +0200"
      },
      "message": "[PATCH] i386: PARAVIRT: Consistently wrap paravirt ops callsites to make them patchable\n\nWrap a set of interesting paravirt_ops calls in a wrapper which makes\nthe callsites available for patching.  Unfortunately this is pretty\nugly because there\u0027s no way to get gcc to generate a function call,\nbut also wrap just the callsite itself with the necessary labels.\n\nThis patch supports functions with 0-4 arguments, and either void or\nreturning a value.  64-bit arguments must be split into a pair of\n32-bit arguments (lower word first).  Small structures are returned in\nregisters.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Zachary Amsden \u003czach@vmware.com\u003e\nCc: Anthony Liguori \u003canthony@codemonkey.ws\u003e\n"
    },
    {
      "commit": "42c24fa22e86365055fc931d833f26165e687c19",
      "tree": "c74861202966ccb80afaae8469843cf2617fea65",
      "parents": [
        "d582203578a1f3d408e27bb9042e8635954cd320"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:14 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:14 2007 +0200"
      },
      "message": "[PATCH] i386: PARAVIRT: Fix patch site clobbers to include return register\n\nFix a few clobbers to include the return register.  The clobbers set\nis the set of all registers modified (or may be modified) by the code\nsnippet, regardless of whether it was deliberate or accidental.\n\nAlso, make sure that callsites which are used in contexts which don\u0027t\nallow clobbers actually save and restore all clobberable registers.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Zachary Amsden \u003czach@vmware.com\u003e\n"
    },
    {
      "commit": "d582203578a1f3d408e27bb9042e8635954cd320",
      "tree": "385952bdda8f9c2b6b4c9c659a0eba872749e948",
      "parents": [
        "98de032b681d8a7532d44dfc66aa5c0c1c755a9d"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:14 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:14 2007 +0200"
      },
      "message": "[PATCH] i386: PARAVIRT: Use patch site IDs computed from offset in paravirt_ops structure\n\nUse patch type identifiers derived from the offset of the operation in\nthe paravirt_ops structure.  This avoids having to maintain a separate\nenum for patch site types.\n\nAlso, since the identifier is derived from the offset into\nparavirt_ops, the offset can be derived from the identifier.  This is\nused to remove replicated information in the various callsite macros,\nwhich has been a source of bugs in the past.\n\nThis patch also drops the fused save_fl+cli operation, which doesn\u0027t\nreally add much and makes things more complex - specifically because\nit breaks the 1:1 relationship between identifiers and offsets.  If\nthis operation turns out to be particularly beneficial, then the right\nanswer is to define a new entrypoint for it.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Zachary Amsden \u003czach@vmware.com\u003e\n"
    },
    {
      "commit": "98de032b681d8a7532d44dfc66aa5c0c1c755a9d",
      "tree": "7e36cf682a113354427ad1076b38d0c3d0aebd8c",
      "parents": [
        "d6dd61c831226f9cd7750885da04d360d6455101"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:14 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:14 2007 +0200"
      },
      "message": "[PATCH] i386: PARAVIRT: rename struct paravirt_patch to paravirt_patch_site for clarity\n\nRename struct paravirt_patch to paravirt_patch_site, so that it\nclearly refers to a callsite, and not the patch which may be applied\nto that callsite.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Zachary Amsden \u003czach@vmware.com\u003e\n"
    },
    {
      "commit": "d6dd61c831226f9cd7750885da04d360d6455101",
      "tree": "30f84a429821d207f7de5dd6225d3d9515042c0a",
      "parents": [
        "5311ab62cdc7788784971ed816ce85e926f3e994"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:14 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:14 2007 +0200"
      },
      "message": "[PATCH] x86: PARAVIRT: add hooks to intercept mm creation and destruction\n\nAdd hooks to allow a paravirt implementation to track the lifetime of\nan mm.  Paravirtualization requires three hooks, but only two are\nneeded in common code.  They are:\n\narch_dup_mmap, which is called when a new mmap is created at fork\n\narch_exit_mmap, which is called when the last process reference to an\n  mm is dropped, which typically happens on exit and exec.\n\nThe third hook is activate_mm, which is called from the arch-specific\nactivate_mm() macro/function, and so doesn\u0027t need stub versions for\nother architectures.  It\u0027s called when an mm is first used.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: linux-arch@vger.kernel.org\nCc: James Bottomley \u003cJames.Bottomley@SteelEye.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5311ab62cdc7788784971ed816ce85e926f3e994",
      "tree": "08ceda3c1bbdc6c403107f5329d775c772b752ce",
      "parents": [
        "90caccb9758e88db68a69553689baee38254287b"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:13 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:13 2007 +0200"
      },
      "message": "[PATCH] i386: PARAVIRT: Allow paravirt backend to choose kernel PMD sharing\n\nNormally when running in PAE mode, the 4th PMD maps the kernel address space,\nwhich can be shared among all processes (since they all need the same kernel\nmappings).\n\nXen, however, does not allow guests to have the kernel pmd shared between page\ntables, so parameterize pgtable.c to allow both modes of operation.\n\nThere are several side-effects of this.  One is that vmalloc will update the\nkernel address space mappings, and those updates need to be propagated into\nall processes if the kernel mappings are not intrinsically shared.  In the\nnon-PAE case, this is done by maintaining a pgd_list of all processes; this\nlist is used when all process pagetables must be updated.  pgd_list is\nthreaded via otherwise unused entries in the page structure for the pgd, which\nmeans that the pgd must be page-sized for this to work.\n\nNormally the PAE pgd is only 4x64 byte entries large, but Xen requires the PAE\npgd to page aligned anyway, so this patch forces the pgd to be page\naligned+sized when the kernel pmd is unshared, to accomodate both these\nrequirements.\n\nAlso, since there may be several distinct kernel pmds (if the user/kernel\nsplit is below 3G), there\u0027s no point in allocating them from a slab cache;\nthey\u0027re just allocated with get_free_page and initialized appropriately.  (Of\ncourse the could be cached if there is just a single kernel pmd - which is the\ndefault with a 3G user/kernel split - but it doesn\u0027t seem worthwhile to add\nyet another case into this code).\n\n[ Many thanks to wli for review comments. ]\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Zachary Amsden \u003czach@vmware.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "90caccb9758e88db68a69553689baee38254287b",
      "tree": "d58d07649c62475810cfa527768034163c89eb15",
      "parents": [
        "b239fb2501117bf3aeb4dd6926edd855be92333d"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:13 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:13 2007 +0200"
      },
      "message": "[PATCH] i386: PARAVIRT: Allocate a fixmap slot\n\nAllocate a fixmap slot for use by a paravirt_ops implementation.  This\nis intended for early-boot bootstrap mappings.  Once the zones and\nallocator have been set up, it would be better to use get_vm_area() to\nallocate some virtual space.\n\nXen uses this to map the hypervisor\u0027s shared info page, which doesn\u0027t\nhave a pseudo-physical page number, and therefore can\u0027t be mapped\nordinarily.  It is needed early because it contains the vcpu state,\nincluding the interrupt mask.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b239fb2501117bf3aeb4dd6926edd855be92333d",
      "tree": "62ac25204632ef0b14e3bd84580c722e69800cf7",
      "parents": [
        "3dc494e86d1c93afd4c66385f270899dbfae483d"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:13 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:13 2007 +0200"
      },
      "message": "[PATCH] i386: PARAVIRT: Hooks to set up initial pagetable\n\nThis patch introduces paravirt_ops hooks to control how the kernel\u0027s\ninitial pagetable is set up.\n\nIn the case of a native boot, the very early bootstrap code creates a\nsimple non-PAE pagetable to map the kernel and physical memory.  When\nthe VM subsystem is initialized, it creates a proper pagetable which\nrespects the PAE mode, large pages, etc.\n\nWhen booting under a hypervisor, there are many possibilities for what\npaging environment the hypervisor establishes for the guest kernel, so\nthe constructon of the kernel\u0027s pagetable depends on the hypervisor.\n\nIn the case of Xen, the hypervisor boots the kernel with a fully\nconstructed pagetable, which is already using PAE if necessary.  Also,\nXen requires particular care when constructing pagetables to make sure\nall pagetables are always mapped read-only.\n\nIn order to make this easier, kernel\u0027s initial pagetable construction\nhas been changed to only allocate and initialize a pagetable page if\nthere\u0027s no page already present in the pagetable.  This allows the Xen\nparavirt backend to make a copy of the hypervisor-provided pagetable,\nallowing the kernel to establish any more mappings it needs while\nkeeping the existing ones.\n\nA slightly subtle point which is worth highlighting here is that Xen\nrequires all kernel mappings to share the same pte_t pages between all\npagetables, so that updating a kernel page\u0027s mapping in one pagetable\nis reflected in all other pagetables.  This makes it possible to\nallocate a page and attach it to a pagetable without having to\nexplicitly enumerate that page\u0027s mapping in all pagetables.\n\nAnd:\n\n+From: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\n\nIf we don\u0027t set the leaf page table entries it is quite possible that\nwill inherit and incorrect page table entry from the initial boot\npage table setup in head.S.  So we need to redo the effort here,\nso we pick up PSE, PGE and the like.\n\nHypervisors like Xen require that their page tables be read-only,\nwhich is slightly incompatible with our low identity mappings, however\nI discussed this with Jeremy he has modified the Xen early set_pte\nfunction to avoid problems in this area.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nAcked-by: William Irwin \u003cbill.irwin@oracle.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3dc494e86d1c93afd4c66385f270899dbfae483d",
      "tree": "6583b57492dc91ef7cc6c23a233f7d5bb95bb5f6",
      "parents": [
        "45876233605c268e929a7875081e129debe34bdc"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:13 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:13 2007 +0200"
      },
      "message": "[PATCH] i386: PARAVIRT: Add pagetable accessors to pack and unpack pagetable entries\n\nAdd a set of accessors to pack, unpack and modify page table entries\n(at all levels).  This allows a paravirt implementation to control the\ncontents of pgd/pmd/pte entries.  For example, Xen uses this to\nconvert the (pseudo-)physical address into a machine address when\npopulating a pagetable entry, and converting back to pphys address\nwhen an entry is read.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "45876233605c268e929a7875081e129debe34bdc",
      "tree": "c16487f8e8428e86ecf9802c8ba0da82225622ee",
      "parents": [
        "7f63c41c6c57371a0931da3940c6620c2301442c"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:13 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:13 2007 +0200"
      },
      "message": "[PATCH] i386: PARAVIRT: use paravirt_nop to consistently mark no-op operations\n\nAdd a _paravirt_nop function for use as a stub for no-op operations,\nand paravirt_nop #defined void * version to make using it easier\n(since all its uses are as a void *).\n\nThis is useful to allow the patcher to automatically identify noop\noperations so it can simply nop out the callsite.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n[mingo] but only as a cleanup of the current open-coded (void *) casts.\nMy problem with this is that it loses the types. Not that there is much\nto check for, but still, this adds some assumptions about how function\ncalls look like\n"
    },
    {
      "commit": "a75c54f933bd8db9f4a609bd128663c179b3e6a1",
      "tree": "8b7dd866185bec34146eb537f057b6b496c78443",
      "parents": [
        "82d1bb725e128c97b362a4b33fcbfff08fdaaa5a"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed May 02 19:27:13 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:13 2007 +0200"
      },
      "message": "[PATCH] i386: i386 separate hardware-defined TSS from Linux additions\n\nOn Thu, 2007-03-29 at 13:16 +0200, Andi Kleen wrote:\n\u003e Please clean it up properly with two structs.\n\nNot sure about this, now I\u0027ve done it.  Running it here.\n\nIf you like it, I can do x86-64 as well.\n\n\u003d\u003d\nlguest defines its own TSS struct because the \"struct tss_struct\"\ncontains linux-specific additions.  Andi asked me to split the struct\nin processor.h.\n\nUnfortunately it makes usage a little awkward.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "d0175ab64412aabc93da8682aaa99124d6815056",
      "tree": "46607da58133cb1d51883bf91e13b108f20bfb90",
      "parents": [
        "4bc5aa91fb1e544ad37805520030a0d9fc6e11d3"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:13 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:13 2007 +0200"
      },
      "message": "[PATCH] i386: Remove smp_alt_instructions\n\nThe .smp_altinstructions section and its corresponding symbols are\ncompletely unused, so remove them.\n\nAlso, remove stray #ifdef __KENREL__ in asm-i386/alternative.h\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "4bc5aa91fb1e544ad37805520030a0d9fc6e11d3",
      "tree": "207870aad2f53fcec914ea5084de4fdfe1a02a23",
      "parents": [
        "b6e3590f8145c77b8fcef3247e2412335221412f"
      ],
      "author": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Wed May 02 19:27:12 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:12 2007 +0200"
      },
      "message": "[PATCH] x86: Clean up x86 control register and MSR macros (corrected)\n\nThis patch is based on Rusty\u0027s recent cleanup of the EFLAGS-related\nmacros; it extends the same kind of cleanup to control registers and\nMSRs.\n\nIt also unifies these between i386 and x86-64; at least with regards\nto MSRs, the two had definitely gotten out of sync.\n\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "f039b754714a422959027cb18bb33760eb8153f0",
      "tree": "c5f28502adf35f5ea7738a974cd7c4fc81e1dd21",
      "parents": [
        "c169859d6dfc7471ef9f2dbd720936e17906a084"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Wed May 02 19:27:12 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:12 2007 +0200"
      },
      "message": "[PATCH] x86: Don\u0027t use MWAIT on AMD Family 10\n\nIt doesn\u0027t put the CPU into deeper sleep states, so it\u0027s better to use the standard\nidle loop to save power. But allow to reenable it anyways for benchmarking.\n\nI also removed the obsolete idle\u003dhalt on i386\n\nCc: andreas.herrmann@amd.com\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "1dbf527c51c6c20c19869c8125cb5b87c3d09506",
      "tree": "ab480b3eff886e54c6d3c881936f046599e7ea61",
      "parents": [
        "d4f7a2c18e59e0304a1c733589ce14fc02fec1bd"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:12 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:12 2007 +0200"
      },
      "message": "[PATCH] i386: Make COMPAT_VDSO runtime selectable.\n\nNow that relocation of the VDSO for COMPAT_VDSO users is done at\nruntime rather than compile time, it is possible to enable/disable\ncompat mode at runtime.\n\nThis patch allows you to enable COMPAT_VDSO mode with \"vdso\u003d2\" on the\nkernel command line, or via sysctl.  (Switching on a running system\nshouldn\u0027t be done lightly; any process which was relying on the compat\nVDSO will be upset if it goes away.)\n\nThe COMPAT_VDSO config option still exists, but if enabled it just\nmakes vdso_enabled default to VDSO_COMPAT.\n\n+From: Hugh Dickins \u003chugh@veritas.com\u003e\n\nFix oops from i386-make-compat_vdso-runtime-selectable.patch.\n\nEven mingetty at system startup finds it easy to trigger an oops\nwhile reading /proc/PID/maps: though it has a good hold on the mm\nitself, that cannot stop exit_mm() from resetting tsk-\u003emm to NULL.\n\n(It is usually show_map()\u0027s call to get_gate_vma() which oopses,\nand I expect we could change that to check priv-\u003etail_vma instead;\nbut no matter, even m_start()\u0027s call just after get_task_mm() is racy.)\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Zachary Amsden \u003czach@vmware.com\u003e\nCc: \"Jan Beulich\" \u003cJBeulich@novell.com\u003e\nCc: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\n"
    },
    {
      "commit": "d4f7a2c18e59e0304a1c733589ce14fc02fec1bd",
      "tree": "99c64275f7eb50925aad71a74ae083ececdbb795",
      "parents": [
        "a6c4e076ee4c1ea670e4faa55814e63dd08e3f29"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:12 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:12 2007 +0200"
      },
      "message": "[PATCH] i386: Relocate VDSO ELF headers to match mapped location with COMPAT_VDSO\n\nSome versions of libc can\u0027t deal with a VDSO which doesn\u0027t have its\nELF headers matching its mapped address.  COMPAT_VDSO maps the VDSO at\na specific system-wide fixed address.  Previously this was all done at\nbuild time, on the grounds that the fixed VDSO address is always at\nthe top of the address space.  However, a hypervisor may reserve some\nof that address space, pushing the fixmap address down.\n\nThis patch does the adjustment dynamically at runtime, depending on\nthe runtime location of the VDSO fixmap.\n\n[ Patch has been through several hands: Jan Beulich wrote the orignal\n  version; Zach reworked it, and Jeremy converted it to relocate phdrs\n  as well as sections. ]\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Zachary Amsden \u003czach@vmware.com\u003e\nCc: \"Jan Beulich\" \u003cJBeulich@novell.com\u003e\nCc: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\n"
    },
    {
      "commit": "a6c4e076ee4c1ea670e4faa55814e63dd08e3f29",
      "tree": "42ae132ca8ad99b05904af07ed8abc6aeef33aa8",
      "parents": [
        "1353ebb4b48151e3810d9a60449edd43a90ea3c3"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:12 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:12 2007 +0200"
      },
      "message": "[PATCH] i386: clean up identify_cpu\n\nidentify_cpu() is used to identify both the boot CPU and secondary\nCPUs, but it performs some actions which only apply to the boot CPU.\nThose functions are therefore really __init functions, but because\nthey\u0027re called by identify_cpu(), they must be marked __cpuinit.\n\nThis patch splits identify_cpu() into identify_boot_cpu() and\nidentify_secondary_cpu(), and calls the appropriate init functions\nfrom each.  Also, identify_boot_cpu() and all the functions it\ndominates are marked __init.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "1353ebb4b48151e3810d9a60449edd43a90ea3c3",
      "tree": "eb21d594e0aa029e38a3a79d47ed17c3d2d67f7d",
      "parents": [
        "0d08e0d3a97cce22ebf80b54785e00d9b94e1add"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:12 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:12 2007 +0200"
      },
      "message": "[PATCH] i386: Clean up asm-i386/bugs.h\n\nMost of asm-i386/bugs.h is code which should be in a C file, so put it there.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b92e9fac400d4ae5bc7a75c568e9844ec53ea329",
      "tree": "2e5d5194d2532a4d8d4849802e19adcc617013f6",
      "parents": [
        "b00742d399513a4100c24cc2accefdc1bb1e0b15"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "jbeulich@novell.com",
        "time": "Wed May 02 19:27:11 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:11 2007 +0200"
      },
      "message": "[PATCH] x86: fix amd64-agp aperture validation\n\nUnder CONFIG_DISCONTIGMEM, assuming that a !pfn_valid() implies all\nsubsequent pfn-s are also invalid is wrong. Thus replace this by\nexplicitly checking against the E820 map.\n\nAK: make e820 on x86-64 not initdata\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nAcked-by: Mark Langsdorf \u003cmark.langsdorf@amd.com\u003e\n"
    },
    {
      "commit": "07f3331c6bfd27a06dfb0ca9fa4f06dec6606876",
      "tree": "e68ced26e1c1bebef4c1eb75f5a4a6a1ac0d3805",
      "parents": [
        "01a2f435564b4baab61328b4018d36464468f57b"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:11 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:11 2007 +0200"
      },
      "message": "[PATCH] i386: Add machine_ops interface to abstract halting and rebooting\n\nmachine_ops is an interface for the machine_* functions defined in\n\u003clinux/reboot.h\u003e.  This is intended to allow hypervisors to intercept\nthe reboot process, but it could be used to implement other x86\nsubarchtecture reboots.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "01a2f435564b4baab61328b4018d36464468f57b",
      "tree": "991f6a1604a203736131b855262d78fb75711f9b",
      "parents": [
        "4fbb5968810b237e81977f131986b9efd5245368"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:11 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:11 2007 +0200"
      },
      "message": "[PATCH] i386: Add smp_ops interface\n\nAdd a smp_ops interface.  This abstracts the API defined by\n\u003clinux/smp.h\u003e for use within arch/i386.  The primary intent is that it\nbe used by a paravirtualizing hypervisor to implement SMP, but it\ncould also be used by non-APIC-using sub-architectures.\n\nThis is related to CONFIG_PARAVIRT, but is implemented unconditionally\nsince it is simpler that way and not a highly performance-sensitive\ninterface.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "4fbb5968810b237e81977f131986b9efd5245368",
      "tree": "e2d67eee96c143da26ccad791b3e1f23c3bcbe03",
      "parents": [
        "141f9cfe0a948c8fe26e5669364ee62c03ea42e8"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed May 02 19:27:11 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:11 2007 +0200"
      },
      "message": "[PATCH] i386: cleanup GDT Access\n\nNow we have an explicit per-cpu GDT variable, we don\u0027t need to keep the\ndescriptors around to use them to find the GDT: expose cpu_gdt directly.\n\nWe could go further and make load_gdt() pack the descriptor for us, or even\nassume it means \"load the current cpu\u0027s GDT\" which is what it always does.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b4531e863dbd06b5d336afefdb37483b690dea59",
      "tree": "31d481e2b1b9727b6ee180ce876b73fbc0983a15",
      "parents": [
        "78eea47ac3e256559d97f0c2434928be39cba524"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Wed May 02 19:27:10 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:10 2007 +0200"
      },
      "message": "[PATCH] i386: Use X86_EFLAGS_IF in irqflags.h.\n\nMove X86_EFLAGS_IF et al out to a new header: processor-flags.h, so we\ncan include it from irqflags.h and use it in raw_irqs_disabled_flags().\n\nAs a side-effect, we could now use these flags in .S files.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "d01ad8dd56527be72947b4b9997bb2c05783c3ed",
      "tree": "4bb9ad792fae974101d0baec755202eebc8181aa",
      "parents": [
        "90a0a06aa81692028864c21f981905fda46b1208"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "jbeulich@novell.com",
        "time": "Wed May 02 19:27:10 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:10 2007 +0200"
      },
      "message": "[PATCH] x86: Improve handling of kernel mappings in change_page_attr\n\nFix various broken corner cases in i386 and x86-64 change_page_attr.\n\nAK: split off from tighten kernel image access rights\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "90a0a06aa81692028864c21f981905fda46b1208",
      "tree": "516528b328d5288ee057d1eff5491e2ba1b49af1",
      "parents": [
        "52de74dd3994e165ef1b35c33d54655a6400e30c"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed May 02 19:27:10 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:10 2007 +0200"
      },
      "message": "[PATCH] i386: rationalize paravirt wrappers\n\nparavirt.c used to implement native versions of all low-level\nfunctions.  Far cleaner is to have the native versions exposed in the\nheaders and as inline native_XXX, and if !CONFIG_PARAVIRT, then simply\n#define XXX native_XXX.\n\nThere are several nice side effects:\n\n1) write_dt_entry() now takes the correct \"struct Xgt_desc_struct *\"\n   not \"void *\".\n\n2) load_TLS is reintroduced to the for loop, not manually unrolled\n   with a #error in case the bounds ever change.\n\n3) Macros become inlines, with type checking.\n\n4) Access to the native versions is trivial for KVM, lguest, Xen and\n   others who might want it.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: Avi Kivity \u003cavi@qumranet.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d2cbcc49e2bfd6eaa44d7e4e5e5f171aaa5ec80d",
      "tree": "f7fb6a01cde18200aa6db57c3abffe69ae90b394",
      "parents": [
        "bf50467204b435421d8de33ad080fa46c6f3d50b"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed May 02 19:27:10 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:10 2007 +0200"
      },
      "message": "[PATCH] i386: clean up cpu_init()\n\nWe now have cpu_init() and secondary_cpu_init() doing nothing but calling\n_cpu_init() with the same arguments.  Rename _cpu_init() to cpu_init() and use\nit as a replcement for secondary_cpu_init().\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bf50467204b435421d8de33ad080fa46c6f3d50b",
      "tree": "87a27c6f23f28d0e7dacee4ac45986e897d244a8",
      "parents": [
        "ae1ee11be77f51cedb6c569887dddc70c163ab6d"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed May 02 19:27:10 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:10 2007 +0200"
      },
      "message": "[PATCH] i386: Use per-cpu GDT immediately upon boot\n\nNow we are no longer dynamically allocating the GDT, we don\u0027t need the\n\"cpu_gdt_table\" at all: we can switch straight from \"boot_gdt_table\" to the\nper-cpu GDT.  This means initializing the cpu_gdt array in C.\n\nThe boot CPU uses the per-cpu var directly, then in smp_prepare_cpus() it\nswitches to the per-cpu copy just allocated.  For secondary CPUs, the\nearly_gdt_descr is set to point directly to their per-cpu copy.\n\nFor UP the code is very simple: it keeps using the \"per-cpu\" GDT as per SMP,\nbut we never have to move.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ae1ee11be77f51cedb6c569887dddc70c163ab6d",
      "tree": "e579a6a6d10c6835cab9af47a2795bf40f669da6",
      "parents": [
        "8f9aeca7a081d81c4c9862be1e04f15b5ab5461f"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed May 02 19:27:10 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:10 2007 +0200"
      },
      "message": "[PATCH] i386: Use per-cpu variables for GDT, PDA\n\nAllocating PDA and GDT at boot is a pain.  Using simple per-cpu variables adds\nhappiness (although we need the GDT page-aligned for Xen, which we do in a\nfollowup patch).\n\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "79e030114a8d97a1dcd593ab84fb986f8c91c536",
      "tree": "ae96f84611dd963c11ce2962a67197030ddd0f3e",
      "parents": [
        "eab0c72aecd7982b2c848f7d493ba379efcef15e"
      ],
      "author": {
        "name": "Ian Campbell",
        "email": "ian.campbell@xensource.com",
        "time": "Wed May 02 19:27:09 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:09 2007 +0200"
      },
      "message": "[PATCH] i386: Allow i386 crash kernels to handle x86_64 dumps\n\nThe specific case I am encountering is kdump under Xen with a 64 bit\nhypervisor and 32 bit kernel/userspace.  The dump created is 64 bit due to\nthe hypervisor but the dump kernel is 32 bit for maximum compatibility.\n\nIt\u0027s possibly less likely to be useful in a purely native scenario but I\nsee no reason to disallow it.\n\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Ian Campbell \u003cian.campbell@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nAcked-by: Vivek Goyal \u003cvgoyal@in.ibm.com\u003e\nCc: Horms \u003chorms@verge.net.au\u003e\nCc: Magnus Damm \u003cmagnus.damm@gmail.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "692174b97d5b871f4b0f648b1fb17aa37b955876",
      "tree": "17a91a0549cb5dbd22b7375becd937ee13d193d4",
      "parents": [
        "1b523fb54977c9bb81b16c4badce581a2b455994"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Wed May 02 19:27:09 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:09 2007 +0200"
      },
      "message": "[PATCH] i386: Initialize esp0 properly all the time\n\nWhenever we schedule, __switch_to calls load_esp0 which does:\n\n\ttss-\u003eesp0 \u003d thread-\u003eesp0;\n\nThis is never initialized for the initial thread (ie \"swapper\"), so when we\u0027re\nscheduling that, we end up setting esp0 to 0.  This is fine: the swapper never\nleaves ring 0, so this field is never used.\n\nlguest, however, gets upset that we\u0027re trying to used an unmapped page as our\nkernel stack.  Rather than work around it there, let\u0027s initialize it.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5a90cf205c922707ffed2d8f87cefd942e96b0ba",
      "tree": "5e9c9c1be3d149bff7620db89e1ede2317ba7362",
      "parents": [
        "2714221985ce6388ec2fa78d7d52e2a5bef78eec"
      ],
      "author": {
        "name": "john stultz",
        "email": "johnstul@us.ibm.com",
        "time": "Wed May 02 19:27:08 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:08 2007 +0200"
      },
      "message": "[PATCH] x86: Log reason why TSC was marked unstable\n\nChange mark_tsc_unstable() so it takes a string argument, which holds the\nreason the TSC was marked unstable.\n\nThis is then displayed the first time mark_tsc_unstable is called.\n\nThis should help us better debug why the TSC was marked unstable on certain\nsystems and allow us to make sure we\u0027re not being overly paranoid when\nthrowing out this troublesome clocksource.\n\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "1833d6bc72893265f22addd79cf52e6987496e0f",
      "tree": "8f7e85a034603325b7e5cc46bb5c832e49a6e3d9",
      "parents": [
        "e073ae1b34d5600ffc550407625dcb2d4cf46c6e"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@in.ibm.com",
        "time": "Wed May 02 19:27:08 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:08 2007 +0200"
      },
      "message": "[PATCH] i386: modpost apic related warning fixes\n\no Modpost generates warnings for i386 if compiled with CONFIG_RELOCATABLE\u003dy\n\nWARNING: vmlinux - Section mismatch: reference to .init.text:find_unisys_acpi_oem_table from .text between \u0027acpi_madt_oem_check\u0027 (at offset 0xc0101eda) and \u0027enable_apic_mode\u0027\nWARNING: vmlinux - Section mismatch: reference to .init.text:acpi_get_table_header_early from .text between \u0027acpi_madt_oem_check\u0027 (at offset 0xc0101ef0) and \u0027enable_apic_mode\u0027\nWARNING: vmlinux - Section mismatch: reference to .init.text:parse_unisys_oem from .text between \u0027acpi_madt_oem_check\u0027 (at offset 0xc0101f2e) and \u0027enable_apic_mode\u0027\nWARNING: vmlinux - Section mismatch: reference to .init.text:setup_unisys from .text between \u0027acpi_madt_oem_check\u0027 (at offset 0xc0101f37) and \u0027enable_apic_mode\u0027WARNING: vmlinux - Section mismatch: reference to .init.text:parse_unisys_oem from .text between \u0027mps_oem_check\u0027 (at offset 0xc0101ec7) and \u0027acpi_madt_oem_check\u0027\nWARNING: vmlinux - Section mismatch: reference to .init.text:es7000_sw_apic from .text between \u0027enable_apic_mode\u0027 (at offset 0xc0101f48) and \u0027check_apicid_present\u0027\n\no Some functions which are inline (acpi_madt_oem_check) are not inlined by\n  compiler as these functions are accessed using function pointer. These\n  functions are put in .text section and they in-turn access __init type\n  functions hence modpost generates warnings.\n\no Do not iniline acpi_madt_oem_check, instead make it __init.\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@in.ibm.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Len Brown \u003clenb@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "973efae21beb2feda138f152ed06d4204774d93c",
      "tree": "72aea5fab6d059b35a79198bf09cc9163338b5c2",
      "parents": [
        "6d1c426158131b11d05d66e7dd6bf91e5b1b4fc7"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Wed May 02 19:27:06 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:06 2007 +0200"
      },
      "message": "[PATCH] i386: clean up mach_reboot_fixups\n\nThe reboot_fixups stuff seems to be a bit of a mess, specifically the\nheader is in linux/ when its a purely i386-specific piece of code.  I\u0027m\nnot sure why it has its config option; its only currently needed for\n\"geode-gx1/cs5530a\", so perhaps whatever config option controls that\nhardware should enable this?\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "6d1c426158131b11d05d66e7dd6bf91e5b1b4fc7",
      "tree": "fd4c8d77edece77f9d7f22153b98dfddfc202208",
      "parents": [
        "c8fdd247255a3a027cd9f66dcf93e6847d1d2f85"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@gmail.com",
        "time": "Wed May 02 19:27:06 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:06 2007 +0200"
      },
      "message": "[PATCH] i386: Update __copy_to_user_inatomic linuxdoc description\n\nExplicity specify that the caller should pin the user memory\notherwise the function will sleep\n\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@gmail.com\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "0949be35095b53dbaa72db700cb5074c5c249629",
      "tree": "4dcca21a4e726dae5dd7afcaaebff2a5dd154031",
      "parents": [
        "f5e8861583a591020176c90c10c6a130fed4f3ec"
      ],
      "author": {
        "name": "Simon Arlott",
        "email": "simon@arlott.org",
        "time": "Wed May 02 19:27:05 2007 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Wed May 02 19:27:05 2007 +0200"
      },
      "message": "[PATCH] i386: Add an option for the VIA C7 which sets appropriate L1 cache\n\nThe VIA C7 is a 686 (with TSC) that supports MMX, SSE and SSE2, it also has\na cache line length of 64 according to\nhttp://www.digit-life.com/articles2/cpu/rmma-via-c7.html.  This patch sets\ngcc to -march\u003d686 and select s the correct cache shift.\n\nSigned-off-by: Simon Arlott \u003csimon@fire.lp0.eu\u003e\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Dave Jones \u003cdavej@codemonkey.org.uk\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    }
  ],
  "next": "f5e8861583a591020176c90c10c6a130fed4f3ec"
}
