)]}'
{
  "log": [
    {
      "commit": "3cb7396b7b26585b1ab7c1a8ca554ec103da5d37",
      "tree": "94720199f016045fe2a204ac8fd26c0029f4544c",
      "parents": [
        "d0b6e0e380d6a32d479120a8b5d98cdff936ec8c",
        "317a46a200e6514a1acf50ed30291160185a5c73"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 15:41:31 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 15:41:31 2007 -0700"
      },
      "message": "Merge master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6\n\n* master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6:\n  ide: fix PIO setup on resume for ATAPI devices\n  ide: legacy PCI bus order probing fixes\n  ide: add ide_proc_register_port()\n  ide: add \"initializing\" argument to ide_register_hw()\n  ide: cable detection fixes (take 2)\n  ide: move IDE settings handling to ide-proc.c\n  ide: split off ioctl handling from IDE settings (v2)\n  ide: make /proc/ide/ optional\n  ide: add ide_tune_dma() helper\n  ide: rework the code for selecting the best DMA transfer mode (v3)\n  ide: fix UDMA/MWDMA/SWDMA masks (v3)\n"
    },
    {
      "commit": "6d208b39c45edee5def6c201fcd51561c5a39828",
      "tree": "55645d2b6173e3161d12e5c9efdc4bd052b75b56",
      "parents": [
        "5cbf79cdb37be2aa2a1b4fa94144526b14557060"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu May 10 00:01:11 2007 +0200"
      },
      "committer": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu May 10 00:01:11 2007 +0200"
      },
      "message": "ide: legacy PCI bus order probing fixes\n\nIDE PCI host drivers should register themselves with IDE core only when\nIDE driver is built-in, otherwise (IDE driver is modular and thus IDE PCI\nhost drivers are also modular) the code has no effect and just complicates\nthe probing.\n\nFix it by adding new config option CONFIG_IDEPCI_PCIBUS (defined only when\nneeded and invisible to the user) and covering by #ifdef/#endif the code\nin question.  It turned out that \"ide\u003dreverse\" was silently accepted but did\nnothing in case when IDE driver was modular, this is fixed now.\n\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\n\n"
    },
    {
      "commit": "5cbf79cdb37be2aa2a1b4fa94144526b14557060",
      "tree": "1fcfbc1248b9904e5890cc593f018ee0a8a53238",
      "parents": [
        "869c56ee9de1b72cd3f8ab9cdfbd3601e55c61f2"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu May 10 00:01:11 2007 +0200"
      },
      "committer": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu May 10 00:01:11 2007 +0200"
      },
      "message": "ide: add ide_proc_register_port()\n\n* create_proc_ide_interfaces() tries to add /proc entries for every probed\n  and initialized IDE port, replace it by ide_proc_register_port() which does\n  it only for the given port (also rename destroy_proc_ide_interface() to\n  ide_proc_unregister_port() for consistency)\n  \n* convert {create,destroy}_proc_ide_interface[s]() users to use new functions\n\n* pmac driver depended on proc_ide_create() to add /proc port entries, fix it\n  \n* au1xxx-ide, swarm and cs5520 drivers depended indirectly on ide-generic\n  driver (CONFIG_IDE_GENERIC\u003dy) to add port /proc entries, fix them\n\n* there is now no need to add /proc entries for IDE ports in proc_ide_create()\n  so don\u0027t do it\n\n* proc_ide_create() needs now to be called before drivers are probed - fix it,\n  while at it make proc_ide_create() create /proc \"ide\" directory\n\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\n\n"
    },
    {
      "commit": "869c56ee9de1b72cd3f8ab9cdfbd3601e55c61f2",
      "tree": "0f295ba89c774f9a20b2b089a29f288cd80b8094",
      "parents": [
        "7f8f48af0861c38c28d4abd550102643e0ea9e6a"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu May 10 00:01:10 2007 +0200"
      },
      "committer": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu May 10 00:01:10 2007 +0200"
      },
      "message": "ide: add \"initializing\" argument to ide_register_hw()\n\nAdd \"initializing\" argument to ide_register_hw() and use it instead of ide.c\nwide variable of the same name.  Update all users of ide_register_hw()\naccordingly.\n\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\n\n"
    },
    {
      "commit": "7f8f48af0861c38c28d4abd550102643e0ea9e6a",
      "tree": "6ec47ace87afbd96cc1144d423854b09d9f21d75",
      "parents": [
        "7662d046df09e80680b77b68de896beab45e675e"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu May 10 00:01:10 2007 +0200"
      },
      "committer": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu May 10 00:01:10 2007 +0200"
      },
      "message": "ide: cable detection fixes (take 2)\n\nTejun\u0027s recent eighty_ninty_three() fix has inspired me to do more thorough\nreview of the cable detection code...\n\n* print user-friendly warning about limiting the maximum transfer speed\n  to UDMA33 (and the reason behind it) when 80-wire cable is not detected,\n  also while at it cleanup eighty_ninty_three() a bit\n\n* use eighty_ninty_three() in ide_ata66_check(), this actually fixes 3 bugs:\n  - bit 14 (word 93 validity check) \u003d\u003d 1 \u0026\u0026 bit 13 (80-wire cable test) \u003d\u003d 1\n    were used as 80-wire cable present test for CONFIG_IDEDMA_IVB\u003dn case\n    (please see FIXME comment in eighty_ninty_three() for more details)\n  - CONFIG_IDEDMA_IVB\u003dy/n cases were interchanged\n  - check for SATA devices was missing\n\n* remove private cable warnings from pdc_202xx{old,new} drivers now that core\n  code provides this functionality (plus, in pdc202xx_new case the test could\n  give false warnings for ATAPI devices because pdc202xx_new driver doesn\u0027t\n  even support ATAPI DMA)\n\nCc: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\n\n"
    },
    {
      "commit": "7662d046df09e80680b77b68de896beab45e675e",
      "tree": "ea2281c59399b3867fb37e1005a0f0e0d2170c5d",
      "parents": [
        "1497943ee692aa7519fa972d0e3a339649bf3a96"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu May 10 00:01:10 2007 +0200"
      },
      "committer": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu May 10 00:01:10 2007 +0200"
      },
      "message": "ide: move IDE settings handling to ide-proc.c\n\n* move\n\t__ide_add_setting()\n\tide_add_setting()\n\t__ide_remove_setting()\n\tauto_remove_settings()\n\tide_find_setting_by_name()\n\tide_read_setting()\n\tide_write_setting()\n\tset_xfer_rate()\n\tide_add_generic_settings()\n\tide_register_subdriver()\n\tide_unregister_subdriver()\n\n  from ide.c to ide-proc.c\n\n* set_{io_32bit,pio_mode,using_dma}() cannot be marked static now, fix it\n\n* rename ide_[un]register_subdriver() to ide_proc_[un]register_driver(),\n  update device drivers to use new names\n\n* add CONFIG_IDE_PROC_FS\u003dn versions of ide_proc_[un]register_driver()\n  and ide_add_generic_settings()\n\n* make ide_find_setting_by_name(), ide_{read,write}_setting()\n  and ide_{add,remove}_proc_entries() static\n\n* cover IDE settings code in device drivers with CONFIG_IDE_PROC_FS #ifdef,\n  also while at it cover with CONFIG_IDE_PROC_FS #ifdef ide_driver_t.proc\n\n* remove bogus comment from ide.h\n\n* cover with CONFIG_IDE_PROC_FS #ifdef .proc and .settings in ide_drive_t\n\nBesides saner code this patch results in the IDE core smaller by ~2 kB\n(on x86-32) and IDE disk driver by ~1 kB (ditto) when CONFIG_IDE_PROC_FS\u003dn.\n\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\n"
    },
    {
      "commit": "1497943ee692aa7519fa972d0e3a339649bf3a96",
      "tree": "dc70ee9731f66dd323ddb397380b62c0c2977add",
      "parents": [
        "ecfd80e4a514123070b4cfb674b817ba75055df2"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu May 10 00:01:10 2007 +0200"
      },
      "committer": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu May 10 00:01:10 2007 +0200"
      },
      "message": "ide: split off ioctl handling from IDE settings (v2)\n\n* do write permission and min/max checks in ide_procset_t functions\n\n* ide-disk.c: drive-\u003eid is always available so cleanup \"multcount\" setting\n  accordingly\n\n* ide-disk.c: \"address\" setting was incorrectly defined as type TYPE_INTA,\n  fix it by using type TYPE_BYTE and updating ide_drive_t-\u003eadressing field,\n  the bug didn\u0027t trigger because this IDE setting uses custom -\u003eset function\n\n* ide.c: add set_ksettings() for handling HDIO_SET_KEEPSETTINGS ioctl\n\n* ide.c: add set_unmaskirq() for handling HDIO_SET_UNMASKINTR ioctl\n\n* handle ioctls directly in generic_ide_ioclt() and idedisk_ioctl()\n  instead of using IDE settings to deal with them\n\n* remove no longer needed ide_find_setting_by_ioctl() and {read,write}_ioctl\n  fields from ide_settings_t, also remove now unused TYPE_INTA handling\n\nv2:\n* add missing EXPORT_SYMBOL_GPL(ide_setting_sem) needed now for ide-disk\n\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\n"
    },
    {
      "commit": "ecfd80e4a514123070b4cfb674b817ba75055df2",
      "tree": "956baa39e22030d139803b7585bd71e91c637bb5",
      "parents": [
        "29e744d088e3555f4efbdf390f01088dd66993b6"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu May 10 00:01:09 2007 +0200"
      },
      "committer": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu May 10 00:01:09 2007 +0200"
      },
      "message": "ide: make /proc/ide/ optional\n\nAll important information/features should be already available through\nsysfs and ioctl interfaces.\n\nAdd CONFIG_IDE_PROC_FS (CONFIG_SCSI_PROC_FS rip-off) config option,\ndisabling it makes IDE driver ~5 kB smaller (on x86-32).\n\nWhile at it add CONFIG_PROC_FS\u003dn versions of proc_ide_{create,destroy}()\nand remove no longer needed #ifdefs.\n\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\n"
    },
    {
      "commit": "29e744d088e3555f4efbdf390f01088dd66993b6",
      "tree": "2747692efcef505872d29e0b62cb2345b0d64978",
      "parents": [
        "2d5eaa6dd744a641e75503232a01f52d0768884c"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu May 10 00:01:09 2007 +0200"
      },
      "committer": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu May 10 00:01:09 2007 +0200"
      },
      "message": "ide: add ide_tune_dma() helper\n\nAfter reworking the code responsible for selecting the best DMA\ntransfer mode it is now possible to add generic ide_tune_dma() helper.\n\nConvert some IDE PCI host drivers to use it (the ones left need more work).\n\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\n\n"
    },
    {
      "commit": "2d5eaa6dd744a641e75503232a01f52d0768884c",
      "tree": "0736bd00ea3bd032d601d0a676c998cb043b877a",
      "parents": [
        "18137207236285989dfc0ee7f929b954199228f3"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu May 10 00:01:08 2007 +0200"
      },
      "committer": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu May 10 00:01:08 2007 +0200"
      },
      "message": "ide: rework the code for selecting the best DMA transfer mode (v3)\n\nDepends on the \"ide: fix UDMA/MWDMA/SWDMA masks\" patch.\n\n* add ide_hwif_t.udma_filter hook for filtering UDMA mask\n  (use it in alim15x3, hpt366, siimage and serverworks drivers)\n* add ide_max_dma_mode() for finding best DMA mode for the device\n  (loosely based on some older libata-core.c code)\n* convert ide_dma_speed() users to use ide_max_dma_mode()\n* make ide_rate_filter() take \"ide_drive_t *drive\" as an argument instead\n  of \"u8 mode\" and teach it to how to use UDMA mask to do filtering\n* use ide_rate_filter() in hpt366 driver\n* remove no longer needed ide_dma_speed() and *_ratemask()\n* unexport eighty_ninty_three()\n\nv2:\n* rename -\u003efilter_udma_mask to -\u003eudma_filter\n  [ Suggested by Sergei Shtylyov \u003csshtylyov@ru.mvista.com\u003e. ]\n\nv3:\n* updated for scc_pata driver (fixes XFER_UDMA_6 filtering for user-space\n  originated transfer mode change requests when 100MHz clock is used)\n\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\n"
    },
    {
      "commit": "18137207236285989dfc0ee7f929b954199228f3",
      "tree": "d55f1287ae64318190e18cb7a64ca514c76c3414",
      "parents": [
        "de372ecd80a42c4fb485c7232475301a18d05184"
      ],
      "author": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu May 10 00:01:07 2007 +0200"
      },
      "committer": {
        "name": "Bartlomiej Zolnierkiewicz",
        "email": "bzolnier@gmail.com",
        "time": "Thu May 10 00:01:07 2007 +0200"
      },
      "message": "ide: fix UDMA/MWDMA/SWDMA masks (v3)\n\n* use 0x00 instead of 0x80 to disable -\u003e{ultra,mwdma,swdma}_mask\n* add udma_mask field to ide_pci_device_t and use it to initialize\n  -\u003eultra_mask in aec62xx, cmd64x, pdc202xx_{new,old} and piix drivers\n* fix UDMA masks to match with chipset specific *_ratemask()\n  (alim15x3, hpt366, serverworks and siimage drivers need UDMA mask\n   filtering method - done in the next patch)\n\nv2:\n* piix: fix cable detection for 82801AA_1 and 82372FB_1\n  [ Noticed by Sergei Shtylyov \u003csshtylyov@ru.mvista.com\u003e. ]\n* cmd64x: use hwif-\u003ecds-\u003eudma_mask\n  [ Suggested by Sergei Shtylyov \u003csshtylyov@ru.mvista.com\u003e. ]\n* aec62xx: fix newly introduced bug - check DMA status not command register\n  [ Noticed by Sergei Shtylyov \u003csshtylyov@ru.mvista.com\u003e. ]\n\nv3:\n* piix: use hwif-\u003ecds-\u003eudma_mask\n  [ Suggested by Sergei Shtylyov \u003csshtylyov@ru.mvista.com\u003e. ]\n\nSigned-off-by: Bartlomiej Zolnierkiewicz \u003cbzolnier@gmail.com\u003e\n\n"
    },
    {
      "commit": "ba7cc09c9c9e29a57045dc5bbf843ac1cfad3283",
      "tree": "7e2d39269803b53ba048f3bad11cd6a1a38b35b9",
      "parents": [
        "d84c4124c4b6611301b402e8611b7e36de3bd351",
        "b7aa48be1e7a11e36448a7db58931bbf735d2718"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 13:10:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 13:10:11 2007 -0700"
      },
      "message": "Merge git://git.infradead.org/mtd-2.6\n\n* git://git.infradead.org/mtd-2.6: (21 commits)\n  [MTD] [CHIPS] Remove MTD_OBSOLETE_CHIPS (jedec, amd_flash, sharp)\n  [MTD] Delete allegedly obsolete \"bank_size\" field of mtd_info.\n  [MTD] Remove unnecessary user space check from mtd.h.\n  [MTD] [MAPS] Remove flash maps for no longer supported 405LP boards\n  [MTD] [MAPS] Fix missing printk() parameter in physmap_of.c MTD driver\n  [MTD] [NAND] platform NAND driver: add driver\n  [MTD] [NAND] platform NAND driver: update header\n  [JFFS2] Simplify and clean up jffs2_add_tn_to_tree() some more.\n  [JFFS2] Remove another bogus optimisation in jffs2_add_tn_to_tree()\n  [JFFS2] Remove broken insert_point optimisation in jffs2_add_tn_to_tree()\n  [JFFS2] Remember to calculate overlap on nodes which replace older nodes\n  [JFFS2] Don\u0027t advance c-\u003ewbuf_ofs to next eraseblock after wbuf flush\n  [MTD] [NAND] at91_nand.c: CMDLINE_PARTS support\n  [MTD] [NAND] Tidy up handling of page number in nand_block_bad()\n  [MTD] block2mtd_paramline[] mustn\u0027t be __initdata\n  [MTD] [NAND] Support multiple chips in CAFÉ driver\n  [MTD] [NAND] Rename cafe.c to cafe_nand.c and remove the multi-obj magic\n  [MTD] [NAND] Use rslib for CAFÉ ECC\n  [RSLIB] Support non-canonical GF representations\n  [JFFS2] Remove dead file histo_mips.h\n  ...\n"
    },
    {
      "commit": "aabded9c3aab5160ae2ca3dd1fa0fa37f3d510e4",
      "tree": "8544d546735bcb975b8dec296eb9b6dc6531fb2a",
      "parents": [
        "9a9136e270af14da506f66bcafcc506b86a86498",
        "f1a1eb299a8422c3e8d41753095bec44b2493398"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:56:01 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:56:01 2007 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc\n\n* \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc:\n  [POWERPC] Further fixes for the removal of 4level-fixup hack from ppc32\n  [POWERPC] EEH: log all PCI-X and PCI-E AER registers\n  [POWERPC] EEH: capture and log pci state on error\n  [POWERPC] EEH: Split up long error msg\n  [POWERPC] EEH: log error only after driver notification.\n  [POWERPC] fsl_soc: Make mac_addr const in fs_enet_of_init().\n  [POWERPC] Don\u0027t use SLAB/SLUB for PTE pages\n  [POWERPC] Spufs support for 64K LS mappings on 4K kernels\n  [POWERPC] Add ability to 4K kernel to hash in 64K pages\n  [POWERPC] Introduce address space \"slices\"\n  [POWERPC] Small fixes \u0026 cleanups in segment page size demotion\n  [POWERPC] iSeries: Make HVC_ISERIES the default\n  [POWERPC] iSeries: suppress build warning in lparmap.c\n  [POWERPC] Mark pages that don\u0027t exist as nosave\n  [POWERPC] swsusp: Introduce register_nosave_region_late\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": "5b479c91da90eef605f851508744bfe8269591a0",
      "tree": "d7c2844926d96d794d66b974b300eba2d047465e",
      "parents": [
        "08a02ecd28bad35a47357e611044dcbeab06e3d7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 09 02:35:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "md: improve partition detection in md array\n\nmd currently uses -\u003emedia_changed to make sure rescan_partitions\nis call on md array after they are assembled.\n\nHowever that doesn\u0027t happen until the array is opened, which is later\nthan some people would like.\n\nSo use blkdev_ioctl to do the rescan immediately that the\narray has been assembled.\n\nThis means we can remove all the -\u003echange infrastructure as it was only used\nto trigger a partition rescan.\n\nSigned-off-by: Neil Brown \u003cneilb@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": "880169dd2edc4297b7811a0542be9766ca6945bc",
      "tree": "38f9ecb7507c37982291fa9f131682daf91c3c27",
      "parents": [
        "5a87ede94595f58934000e26e8b13398e63868b5"
      ],
      "author": {
        "name": "Haavard Skinnemoen",
        "email": "hskinnemoen@atmel.com",
        "time": "Wed May 09 02:35:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "fbdev: add support for AVR32\n\nProvide framebuffer page protection flags and definitions of\nfb_readl/fb_writel for AVR32.\n\nSigned-off-by: Haavard Skinnemoen \u003chskinnemoen@atmel.com\u003e\nCc: \"Antonino A. Daplas\" \u003cadaplas@pol.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5a87ede94595f58934000e26e8b13398e63868b5",
      "tree": "e97b7e505753c8243ec10c008e9ff39e61c92d09",
      "parents": [
        "681e14730c73cc2c71af282c001de6bc71c22f00"
      ],
      "author": {
        "name": "Antonino A. Daplas",
        "email": "adaplas@gmail.com",
        "time": "Wed May 09 02:35:32 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "svgalib: move fb_get_caps to svgalib\n\nMove fb_get_caps() method to svgalib.c as svga_get_caps() so it can be used by\ns3fb, arkfb and vt8623fb.\n\nSigned-off-by: Antonino Daplas \u003cadaplas@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": "0d7ebbbc6eaa5539f78ab20ed6ff1725a4e332ef",
      "tree": "ddef8183ac6440e96678fd4d1159ee86619e2a97",
      "parents": [
        "f7e4217b007d1f73e7e3cf10ba4fea4a608c603f"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed May 09 02:35:27 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "compiler: introduce __used and __maybe_unused\n\n__used is defined to be __attribute__((unused)) for all pre-3.3 gcc\ncompilers to suppress warnings for unused functions because perhaps they\nare referenced only in inline assembly.  It is defined to be\n__attribute__((used)) for gcc 3.3 and later so that the code is still\nemitted for such functions.\n\n__maybe_unused is defined to be __attribute__((unused)) for both function\nand variable use if it could possibly be unreferenced due to the evaluation\nof preprocessor macros.  Function prototypes shall be marked with\n__maybe_unused if the actual definition of the function is dependant on\npreprocessor macros.\n\nNo update to compiler-intel.h is necessary because ICC supports both\n__attribute__((used)) and __attribute__((unused)) as specified by the gcc\nmanual.\n\n__attribute_used__ is deprecated and will be removed once all current\ncode is converted to using __used.\n\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Adrian Bunk \u003cbunk@stusta.de\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": "f7e4217b007d1f73e7e3cf10ba4fea4a608c603f",
      "tree": "9c3932bb871d4b6727dc588e4d6c9987637aaee5",
      "parents": [
        "c9f4f06d3191bd91c1a081b54a6c8e913e7b8a83"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Wed May 09 02:35:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "rename thread_info to stack\n\nThis finally renames the thread_info field in task structure to stack, so that\nthe assumptions about this field are gone and archs have more freedom about\nplacing the thread_info structure.\n\nNonbroken archs which have a proper thread pointer can do the access to both\ncurrent thread and task structure via a single pointer.\n\nIt\u0027ll allow for a few more cleanups of the fork code, from which e.g.  ia64\ncould benefit.\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\n[akpm@linux-foundation.org: build fix]\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Ian Molton \u003cspyro@f2s.com\u003e\nCc: Haavard Skinnemoen \u003chskinnemoen@atmel.com\u003e\nCc: Mikael Starvik \u003cstarvik@axis.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Yoshinori Sato \u003cysato@users.sourceforge.jp\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Hirokazu Takata \u003ctakata@linux-m32r.org\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: Greg Ungerer \u003cgerg@uclinux.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Kazumoto Kojima \u003ckkojima@rr.iij4u.or.jp\u003e\nCc: Richard Curnow \u003crc@rc0.org.uk\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Paolo \u0027Blaisorblade\u0027 Giarrusso \u003cblaisorblade@yahoo.it\u003e\nCc: Miles Bader \u003cuclinux-v850@lsi.nec.co.jp\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: Chris Zankel \u003cchris@zankel.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e61a1c1c4f240cec61300c8f27518c3e47570fd4",
      "tree": "479d3b921577eaa642c4b1071acfeb4cb8ecf8ab",
      "parents": [
        "b52f52a093bb1e841e014c2087b5bee7162da413"
      ],
      "author": {
        "name": "Roman Zippel",
        "email": "zippel@linux-m68k.org",
        "time": "Wed May 09 02:35:15 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "Allow arch to initialize arch field of the module structure\n\nThis will later allow an arch to add module specific information via linker\ngenerated tables instead of poking directly in the module object structure.\n\nSigned-off-by: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Geert Uytterhoeven \u003cgeert@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": "b52f52a093bb1e841e014c2087b5bee7162da413",
      "tree": "7b7135897195fc9d14473d3ab824d59a4b65e5ad",
      "parents": [
        "4037d452202e34214e8a939fa5621b2b3bbb45b7"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed May 09 02:35:15 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "clocksource: fix resume logic\n\nWe need to make sure that the clocksources are resumed, when timekeeping is\nresumed.  The current resume logic does not guarantee this.\n\nAdd a resume function pointer to the clocksource struct, so clocksource\ndrivers which need to reinitialize the clocksource can provide a resume\nfunction.\n\nAdd a resume function, which calls the maybe available clocksource resume\nfunctions and resets the watchdog function, so a stable TSC can be used\naccross suspend/resume.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \u003cstable@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": "4037d452202e34214e8a939fa5621b2b3bbb45b7",
      "tree": "31b59c0ca94fba4d53b6738b0bad3d1e9fde3063",
      "parents": [
        "77461ab33229d48614402decfb1b2eaa6d446861"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:35:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "Move remote node draining out of slab allocators\n\nCurrently the slab allocators contain callbacks into the page allocator to\nperform the draining of pagesets on remote nodes.  This requires SLUB to have\na whole subsystem in order to be compatible with SLAB.  Moving node draining\nout of the slab allocators avoids a section of code in SLUB.\n\nMove the node draining so that is is done when the vm statistics are updated.\nAt that point we are already touching all the cachelines with the pagesets of\na processor.\n\nAdd a expire counter there.  If we have to update per zone or global vm\nstatistics then assume that the pageset will require subsequent draining.\n\nThe expire counter will be decremented on each vm stats update pass until it\nreaches zero.  Then we will drain one batch from the pageset.  The draining\nwill cause vm counter updates which will then cause another expiration until\nthe pcp is empty.  So we will drain a batch every 3 seconds.\n\nNote that remote node draining is a somewhat esoteric feature that is required\non large NUMA systems because otherwise significant portions of system memory\ncan become trapped in pcp queues.  The number of pcp is determined by the\nnumber of processors and nodes in a system.  A system with 4 processors and 2\nnodes has 8 pcps which is okay.  But a system with 1024 processors and 512\nnodes has 512k pcps with a high potential for large amount of memory being\ncaught in them.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d1187ed21026fd512b87851d0ca26d9ae16f9059",
      "tree": "35d77758f134f3b69d3e00ca042a5d5ca6a59373",
      "parents": [
        "455c017ae3934797653549704c286e7bcc3a9397"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed May 09 02:35:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "vmstat: use our own timer events\n\nvmstat is currently using the cache reaper to periodically bring the\nstatistics up to date.  The cache reaper does only exists in SLUB as a way to\nprovide compatibility with SLAB.  This patch removes the vmstat calls from the\nslab allocators and provides its own handling.\n\nThe advantage is also that we can use a different frequency for the updates.\nRefreshing vm stats is a pretty fast job so we can run this every second and\nstagger this by only one tick.  This will lead to some overlap in large\nsystems.  F.e a system running at 250 HZ with 1024 processors will have 4 vm\nupdates occurring at once.\n\nHowever, the vm stats update only accesses per node information.  It is only\nnecessary to stagger the vm statistics updates per processor in each node.  Vm\ncounter updates occurring on distant nodes will not cause cacheline\ncontention.\n\nWe could implement an alternate approach that runs the first processor on each\nnode at the second and then each of the other processor on a node on a\nsubsequent tick.  That may be useful to keep a large amount of the second free\nof timer activity.  Maybe the timer folks will have some feedback on this one?\n\n[jirislaby@gmail.com: add missing break]\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8bb7844286fb8c9fce6f65d8288aeb09d03a5e0d",
      "tree": "f4e305edaedbde05774bb1e4acd89a9475661d2e",
      "parents": [
        "f37bc2712b54ec641e0c0c8634f1a4b61d9956c0"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed May 09 02:35:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "Add suspend-related notifications for CPU hotplug\n\nSince nonboot CPUs are now disabled after tasks and devices have been\nfrozen and the CPU hotplug infrastructure is used for this purpose, we need\nspecial CPU hotplug notifications that will help the CPU-hotplug-aware\nsubsystems distinguish normal CPU hotplug events from CPU hotplug events\nrelated to a system-wide suspend or resume operation in progress.  This\npatch introduces such notifications and causes them to be used during\nsuspend and resume transitions.  It also changes all of the\nCPU-hotplug-aware subsystems to take these notifications into consideration\n(for now they are handled in the same way as the corresponding \"normal\"\nones).\n\n[oleg@tv-sign.ru: cleanups]\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f37bc2712b54ec641e0c0c8634f1a4b61d9956c0",
      "tree": "0b73fd72a74115922e8e88bd56667c04b9299767",
      "parents": [
        "f2fff596955867d407cc7e8e426097bd9ad2be9b"
      ],
      "author": {
        "name": "Nate Diller",
        "email": "nate.diller@gmail.com",
        "time": "Wed May 09 02:35:09 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:56 2007 -0700"
      },
      "message": "fs: deprecate memclear_highpage_flush\n\nNow that all the in-tree users are converted over to zero_user_page(),\ndeprecate the old memclear_highpage_flush() call.\n\nSigned-off-by: Nate Diller \u003cnate.diller@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": "01f2705daf5a36208e69d7cf95db9c330f843af6",
      "tree": "2d2c7a042c2466ed985f6e0950450c099f02725f",
      "parents": [
        "38a23e311b6cd389b9d8af2ea6c28c8cffbe581c"
      ],
      "author": {
        "name": "Nate Diller",
        "email": "nate.diller@gmail.com",
        "time": "Wed May 09 02:35:07 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:55 2007 -0700"
      },
      "message": "fs: convert core functions to zero_user_page\n\nIt\u0027s very common for file systems to need to zero part or all of a page,\nthe simplist way is just to use kmap_atomic() and memset().  There\u0027s\nactually a library function in include/linux/highmem.h that does exactly\nthat, but it\u0027s confusingly named memclear_highpage_flush(), which is\ndescriptive of *how* it does the work rather than what the *purpose* is.\nSo this patchset renames the function to zero_user_page(), and calls it\nfrom the various places that currently open code it.\n\nThis first patch introduces the new function call, and converts all the\ncore kernel callsites, both the open-coded ones and the old\nmemclear_highpage_flush() ones.  Following this patch is a series of\nconversions for each file system individually, per AKPM, and finally a\npatch deprecating the old call.  The diffstat below shows the entire\npatchset.\n\n[akpm@linux-foundation.org: fix a few things]\nSigned-off-by: Nate Diller \u003cnate.diller@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": "34f01cc1f512fa783302982776895c73714ebbc2",
      "tree": "776b50ee9592803853b3b4c1845f8ba527b868b9",
      "parents": [
        "d0aa7a70bf03b9de9e995ab272293be1f7937822"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed May 09 02:35:04 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:55 2007 -0700"
      },
      "message": "FUTEX: new PRIVATE futexes\n\n  Analysis of current linux futex code :\n  --------------------------------------\n\nA central hash table futex_queues[] holds all contexts (futex_q) of waiting\nthreads.\n\nEach futex_wait()/futex_wait() has to obtain a spinlock on a hash slot to\nperform lookups or insert/deletion of a futex_q.\n\nWhen a futex_wait() is done, calling thread has to :\n\n1) - Obtain a read lock on mmap_sem to be able to validate the user pointer\n     (calling find_vma()). This validation tells us if the futex uses\n     an inode based store (mapped file), or mm based store (anonymous mem)\n\n2) - compute a hash key\n\n3) - Atomic increment of reference counter on an inode or a mm_struct\n\n4) - lock part of futex_queues[] hash table\n\n5) - perform the test on value of futex.\n\t(rollback is value !\u003d expected_value, returns EWOULDBLOCK)\n\t(various loops if test triggers mm faults)\n\n6) queue the context into hash table, release the lock got in 4)\n\n7) - release the read_lock on mmap_sem\n\n   \u003cblock\u003e\n\n8) Eventually unqueue the context (but rarely, as this part  may be done\n   by the futex_wake())\n\nFutexes were designed to improve scalability but current implementation has\nvarious problems :\n\n- Central hashtable :\n\n  This means scalability problems if many processes/threads want to use\n  futexes at the same time.\n  This means NUMA unbalance because this hashtable is located on one node.\n\n- Using mmap_sem on every futex() syscall :\n\n  Even if mmap_sem is a rw_semaphore, up_read()/down_read() are doing atomic\n  ops on mmap_sem, dirtying cache line :\n    - lot of cache line ping pongs on SMP configurations.\n\n  mmap_sem is also extensively used by mm code (page faults, mmap()/munmap())\n  Highly threaded processes might suffer from mmap_sem contention.\n\n  mmap_sem is also used by oprofile code. Enabling oprofile hurts threaded\n  programs because of contention on the mmap_sem cache line.\n\n- Using an atomic_inc()/atomic_dec() on inode ref counter or mm ref counter:\n  It\u0027s also a cache line ping pong on SMP. It also increases mmap_sem hold time\n  because of cache misses.\n\nMost of these scalability problems come from the fact that futexes are in\none global namespace.  As we use a central hash table, we must make sure\nthey are all using the same reference (given by the mm subsystem).  We\nchose to force all futexes be \u0027shared\u0027.  This has a cost.\n\nBut fact is POSIX defined PRIVATE and SHARED, allowing clear separation,\nand optimal performance if carefuly implemented.  Time has come for linux\nto have better threading performance.\n\nThe goal is to permit new futex commands to avoid :\n - Taking the mmap_sem semaphore, conflicting with other subsystems.\n - Modifying a ref_count on mm or an inode, still conflicting with mm or fs.\n\nThis is possible because, for one process using PTHREAD_PROCESS_PRIVATE\nfutexes, we only need to distinguish futexes by their virtual address, no\nmatter the underlying mm storage is.\n\nIf glibc wants to exploit this new infrastructure, it should use new\n_PRIVATE futex subcommands for PTHREAD_PROCESS_PRIVATE futexes.  And be\nprepared to fallback on old subcommands for old kernels.  Using one global\nvariable with the FUTEX_PRIVATE_FLAG or 0 value should be OK.\n\nPTHREAD_PROCESS_SHARED futexes should still use the old subcommands.\n\nCompatibility with old applications is preserved, they still hit the\nscalability problems, but new applications can fly :)\n\nNote : the same SHARED futex (mapped on a file) can be used by old binaries\n*and* new binaries, because both binaries will use the old subcommands.\n\nNote : Vast majority of futexes should be using PROCESS_PRIVATE semantic,\nas this is the default semantic. Almost all applications should benefit\nof this changes (new kernel and updated libc)\n\nSome bench results on a Pentium M 1.6 GHz (SMP kernel on a UP machine)\n\n/* calling futex_wait(addr, value) with value !\u003d *addr */\n433 cycles per futex(FUTEX_WAIT) call (mixing 2 futexes)\n424 cycles per futex(FUTEX_WAIT) call (using one futex)\n334 cycles per futex(FUTEX_WAIT_PRIVATE) call (mixing 2 futexes)\n334 cycles per futex(FUTEX_WAIT_PRIVATE) call (using one futex)\nFor reference :\n187 cycles per getppid() call\n188 cycles per umask() call\n181 cycles per ni_syscall() call\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nPierre Peiffer \u003cpierre.peiffer@bull.net\u003e\nCc: \"Ulrich Drepper\" \u003cdrepper@gmail.com\u003e\nCc: \"Nick Piggin\" \u003cnickpiggin@yahoo.com.au\u003e\nCc: \"Ingo Molnar\" \u003cmingo@elte.hu\u003e\nCc: 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": "d0aa7a70bf03b9de9e995ab272293be1f7937822",
      "tree": "194b30b7b8374b946f166996cb99fb95eb3b7819",
      "parents": [
        "c19384b5b296905d4988c7c684ff540a0f9d65be"
      ],
      "author": {
        "name": "Pierre Peiffer",
        "email": "pierre.peiffer@bull.net",
        "time": "Wed May 09 02:35:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:55 2007 -0700"
      },
      "message": "futex_requeue_pi optimization\n\nThis patch provides the futex_requeue_pi functionality, which allows some\nthreads waiting on a normal futex to be requeued on the wait-queue of a\nPI-futex.\n\nThis provides an optimization, already used for (normal) futexes, to be used\nwith the PI-futexes.\n\nThis optimization is currently used by the glibc in pthread_broadcast, when\nusing \"normal\" mutexes.  With futex_requeue_pi, it can be used with\nPRIO_INHERIT mutexes too.\n\nSigned-off-by: Pierre Peiffer \u003cpierre.peiffer@bull.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ulrich Drepper \u003cdrepper@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": "c19384b5b296905d4988c7c684ff540a0f9d65be",
      "tree": "071cfe0855d409d63de80ec1b9b663738efb09de",
      "parents": [
        "ec92d08292d3e9b0823eba138a4564d2d39f25c7"
      ],
      "author": {
        "name": "Pierre Peiffer",
        "email": "pierre.peiffer@bull.net",
        "time": "Wed May 09 02:35:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:55 2007 -0700"
      },
      "message": "Make futex_wait() use an hrtimer for timeout\n\nThis patch modifies futex_wait() to use an hrtimer + schedule() in place of\nschedule_timeout().\n\nschedule_timeout() is tick based, therefore the timeout granularity is the\ntick (1 ms, 4 ms or 10 ms depending on HZ).  By using a high resolution timer\nfor timeout wakeup, we can attain a much finer timeout granularity (in the\nmicrosecond range).  This parallels what is already done for futex_lock_pi().\n\nThe timeout passed to the syscall is no longer converted to jiffies and is\ntherefore passed to do_futex() and futex_wait() as an absolute ktime_t\ntherefore keeping nanosecond resolution.\n\nAlso this removes the need to pass the nanoseconds timeout part to\nfutex_lock_pi() in val2.\n\nIn futex_wait(), if there is no timeout then a regular schedule() is\nperformed.  Otherwise, an hrtimer is fired before schedule() is called.\n\n[akpm@linux-foundation.org: fix `make headers_check\u0027]\nSigned-off-by: Sebastien Dugue \u003csebastien.dugue@bull.net\u003e\nSigned-off-by: Pierre Peiffer \u003cpierre.peiffer@bull.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Ulrich Drepper \u003cdrepper@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": "f34c506b0385b43abd25c490335036ecbb173aed",
      "tree": "97b8348ddb9acbe6d931a62bdd94c389ecc534f4",
      "parents": [
        "b8522ead3534c6cd06752b47a3bc380956191a2a"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed May 09 02:34:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "declare struct ktime\n\nSome smarty went and inflicted ktime_t as a typedef upon us, so we cannot\nforward declare it.\n\nCreate a new `union ktime\u0027, map ktime_t onto that.  Now we need to kill off\nthis ktime_t thing.\n\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: john stultz \u003cjohnstul@us.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": "b8522ead3534c6cd06752b47a3bc380956191a2a",
      "tree": "748ff93b4d5a49e6e21392c30ecad143694dcd94",
      "parents": [
        "b41eeef14d7c73af6d16c7d02b7a939082a137ff"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Wed May 09 02:34:58 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "aio is unlikely\n\nStick an unlikely() around is_aio(): I assert that most IO is synchronous.\n\nCc: Suparna Bhattacharya \u003csuparna@in.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Benjamin LaHaise \u003cbcrl@kvack.org\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cd123012d99fde4759500fee611e724e4f3016e3",
      "tree": "a947c5e4210a2a51ea6619b3e127650feaa00421",
      "parents": [
        "669716433598a1498049e75a84a5aaf69c8da173"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Wed May 09 02:34:50 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "RPC: add wrapper for svc_reserve to account for checksum\n\nWhen the kernel calls svc_reserve to downsize the expected size of an RPC\nreply, it fails to account for the possibility of a checksum at the end of\nthe packet.  If a client mounts a NFSv2/3 with sec\u003dkrb5i/p, and does I/O\nthen you\u0027ll generally see messages similar to this in the server\u0027s ring\nbuffer:\n\nRPC request reserved 164 but used 208\n\nWhile I was never able to verify it, I suspect that this problem is also\nthe root cause of some oopses I\u0027ve seen under these conditions:\n\nhttps://bugzilla.redhat.com/bugzilla/show_bug.cgi?id\u003d227726\n\nThis is probably also a problem for other sec\u003d types and for NFSv4.  The\nlarge reserved size for NFSv4 compound packets seems to generally paper\nover the problem, however.\n\nThis patch adds a wrapper for svc_reserve that accounts for the possibility\nof a checksum.  It also fixes up the appropriate callers of svc_reserve to\ncall the wrapper.  For now, it just uses a hardcoded value that I\ndetermined via testing.  That value may need to be revised upward as things\nchange, or we may want to eventually add a new auth_op that attempts to\ncalculate this somehow.\n\nUnfortunately, there doesn\u0027t seem to be a good way to reliably determine\nthe expected checksum length prior to actually calculating it, particularly\nwith schemes like spkm3.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nAcked-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7ac1bea5507218da03f6005d228789da5a831c3f",
      "tree": "43c0a68d468352f8ca1f42ada7970e3a97411f5b",
      "parents": [
        "f34b95689d2ce001c157b1604289ff240b4bdee0"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 09 02:34:48 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "knfsd: rename sk_defer_lock to sk_lock\n\nNow that sk_defer_lock protects two different things, make the name more\ngeneric.\n\nAlso don\u0027t bother with disabling _bh as the lock is only ever taken from\nprocess context.\n\nSigned-off-by: Neil Brown \u003cneilb@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": "8842c9655b2b7f0e8e6c50a773b649e5d8a57678",
      "tree": "5f5e682ee03286f33c70775fed05c4645bbeb3ae",
      "parents": [
        "6e84d644b5929789398914b0ccf447355dec6fb0"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Wed May 09 02:34:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:54 2007 -0700"
      },
      "message": "remove nfs4_acl_add_ace()\n\nnfs4_acl_add_ace() can now be removed.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nAcked-by: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nAcked-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "10ab825bdef8df510f99c703a5a2d9b13a4e31a5",
      "tree": "e4db81f26c03ba5a5bff43ed44646a4ed4509d67",
      "parents": [
        "5de18d169739293e27e0cf9acfc75a2d2f4aa572"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "change kernel threads to ignore signals instead of blocking them\n\nCurrently kernel threads use sigprocmask(SIG_BLOCK) to protect against\nsignals.  This doesn\u0027t prevent the signal delivery, this only blocks\nsignal_wake_up().  Every \"killall -33 kthreadd\" means a \"struct siginfo\"\nleak.\n\nChange kthreadd_setup() to set all handlers to SIG_IGN instead of blocking\nthem (make a new helper ignore_signals() for that).  If the kernel thread\nneeds some signal, it should use allow_signal() anyway, and in that case it\nshould not use CLONE_SIGHAND.\n\nNote that we can\u0027t change daemonize() (should die!) in the same way,\nbecause it can be used along with CLONE_SIGHAND.  This means that\nallow_signal() still should unblock the signal to work correctly with\ndaemonize()ed threads.\n\nHowever, disallow_signal() doesn\u0027t block the signal any longer but ignores\nit.\n\nNOTE: with or without this patch the kernel threads are not protected from\nhandle_stop_signal(), this seems harmless, but not good.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "73c279927f89561ecb45b2dfdf9314bafcfd9f67",
      "tree": "2186e28c92c6f8229ea20eb9856714186bf77a4c",
      "parents": [
        "c93465181fed0f8f5942a41108943dadea0aa345"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed May 09 02:34:32 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "kthread: don\u0027t depend on work queues\n\nCurrently there is a circular reference between work queue initialization\nand kthread initialization.  This prevents the kthread infrastructure from\ninitializing until after work queues have been initialized.\n\nWe want the properties of tasks created with kthread_create to be as close\nas possible to the init_task and to not be contaminated by user processes.\nThe later we start our kthreadd that creates these tasks the harder it is\nto avoid contamination from user processes and the more of a mess we have\nto clean up because the defaults have changed on us.\n\nSo this patch modifies the kthread support to not use work queues but to\ninstead use a simple list of structures, and to have kthreadd start from\ninit_task immediately after our kernel thread that execs /sbin/init.\n\nBy being a true child of init_task we only have to change those process\nsettings that we want to have different from init_task, such as our process\nname, the cpus that are allowed, blocking all signals and setting SIGCHLD\nto SIG_IGN so that all of our children are reaped automatically.\n\nBy being a true child of init_task we also naturally get our ppid set to 0\nand do not wind up as a child of PID \u003d\u003d 1.  Ensuring that tasks generated\nby kthread_create will not slow down the functioning of the wait family of\nfunctions.\n\n[akpm@linux-foundation.org: use interruptible sleeps]\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "28e53bddf814485699a4142bc056fd37d4e11dd4",
      "tree": "5182090c4cc2186eedbda3cb90ed82a2836f6ff6",
      "parents": [
        "5830c5902138f80b0a097b797200c739466beedd"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:22 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:53 2007 -0700"
      },
      "message": "unify flush_work/flush_work_keventd and rename it to cancel_work_sync\n\nflush_work(wq, work) doesn\u0027t need the first parameter, we can use cwq-\u003ewq\n(this was possible from the very beginnig, I missed this).  So we can unify\nflush_work_keventd and flush_work.\n\nAlso, rename flush_work() to cancel_work_sync() and fix all callers.\nPerhaps this is not the best name, but \"flush_work\" is really bad.\n\n(akpm: this is why the earlier patches bypassed maintainers)\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Tejun Heo \u003chtejun@gmail.com\u003e\nCc: Auke Kok \u003cauke-jan.h.kok@intel.com\u003e,\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "23b2e5991afde5af91a1a661d7f47ee56120759e",
      "tree": "d4b8e5bc1a311abd6b6de469f862a8b53c5f9f36",
      "parents": [
        "c214b2cc5f9be7c236f9b91acf524688ff0e3e72"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:19 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: kill NOAUTOREL works\n\nWe don\u0027t have any users, and it is not so trivial to use NOAUTOREL works\ncorrectly.  It is better to simplify API.\n\nDelete NOAUTOREL support and rename work_release to work_clear_pending to\navoid a confusion.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: David Howells \u003cdhowells@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": "1634c48f8b85dcb05101f1eb2eab9af40b5976da",
      "tree": "143aa0fbf21e712a5258806b37f2024ba432b522",
      "parents": [
        "a848e3b67c07ed79374bd0f9b82f9ce45a419643"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "make cancel_rearming_delayed_work() work on any workqueue, not just keventd_wq\n\ncancel_rearming_delayed_workqueue(wq, dwork) doesn\u0027t need the first\nparameter.  We don\u0027t hang on un-queued dwork any longer, and work-\u003edata\ndoesn\u0027t change its type.  This means we can always figure out \"wq\" from\ndwork when it is needed.\n\nRemove this parameter, and rename the function to\ncancel_rearming_delayed_work().  Re-create an inline \"obsolete\"\ncancel_rearming_delayed_workqueue(wq) which just calls\ncancel_rearming_delayed_work().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7097a87afe937a5879528d52880c2d95f089e96c",
      "tree": "f06090c0f6ed327ee2894deb8ac7c588ab55bf4e",
      "parents": [
        "3af24433efac62f451bfdb1cf1edb7181fb73645"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:34:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:52 2007 -0700"
      },
      "message": "workqueue: kill run_scheduled_work()\n\nBecause it has no callers.\n\nActually, I think the whole idea of run_scheduled_work() was not right, not\ngood to mix \"unqueue this work and execute its -\u003efunc()\" in one function.\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "baaca49f415b25fdbe2a8f3c22b39929e450fbfd",
      "tree": "b152b4235fc07fe56619bd3a2e975e5ca90b8c5b",
      "parents": [
        "6f7cc11aa6c7d5002e16096c7590944daece70ed"
      ],
      "author": {
        "name": "Gautham R Shenoy",
        "email": "ego@in.ibm.com",
        "time": "Wed May 09 02:34:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:51 2007 -0700"
      },
      "message": "Define and use new events,CPU_LOCK_ACQUIRE and CPU_LOCK_RELEASE\n\nThis is an attempt to provide an alternate mechanism for postponing\na hotplug event instead of using a global mechanism like lock_cpu_hotplug.\n\nThe proposal is to add two new events namely CPU_LOCK_ACQUIRE and\nCPU_LOCK_RELEASE. The notification for these two events would be sent\nout before and after a cpu_hotplug event respectively.\n\nDuring the CPU_LOCK_ACQUIRE event, a cpu-hotplug-aware subsystem is\nsupposed to acquire any per-subsystem hotcpu mutex ( Eg. workqueue_mutex\nin kernel/workqueue.c ).\n\nDuring the CPU_LOCK_RELEASE release event the cpu-hotplug-aware subsystem\nis supposed to release the per-subsystem hotcpu mutex.\n\nThe reasons for defining new events as opposed to reusing the existing events\nlike CPU_UP_PREPARE/CPU_UP_FAILED/CPU_ONLINE for locking/unlocking of\nper-subsystem hotcpu mutexes are as follow:\n\n\t- CPU_LOCK_ACQUIRE: All hotcpu mutexes are taken before subsystems\n\tstart handling pre-hotplug events like CPU_UP_PREPARE/CPU_DOWN_PREPARE\n\tetc, thus ensuring a clean handling of these events.\n\n\t- CPU_LOCK_RELEASE: The hotcpu mutexes will be released only after\n\tall subsystems have handled post-hotplug events like CPU_DOWN_FAILED,\n\tCPU_DEAD,CPU_ONLINE etc thereby ensuring that there are no subsequent\n\tclashes amongst the interdependent subsystems after a cpu hotplugs.\n\nThis patch also uses __raw_notifier_call chain in _cpu_up to take care\nof the dependency between the two consequetive calls to\nraw_notifier_call_chain.\n\n[akpm@linux-foundation.org: fix a bug]\nSigned-off-by: Gautham R Shenoy \u003cego@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": "6f7cc11aa6c7d5002e16096c7590944daece70ed",
      "tree": "68a11e4b67189c44ac0f3ab579e52e134d479cf5",
      "parents": [
        "7c9cb38302e78d24e37f7d8a2ea7eed4ae5f2fa7"
      ],
      "author": {
        "name": "Gautham R Shenoy",
        "email": "ego@in.ibm.com",
        "time": "Wed May 09 02:34:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:51 2007 -0700"
      },
      "message": "Extend notifier_call_chain to count nr_calls made\n\nSince 2.6.18-something, the community has been bugged by the problem to\nprovide a clean and a stable mechanism to postpone a cpu-hotplug event as\nlock_cpu_hotplug was badly broken.\n\nThis is another proposal towards solving that problem.  This one is along the\nlines of the solution provided in kernel/workqueue.c\n\nInstead of having a global mechanism like lock_cpu_hotplug, we allow the\nsubsytems to define their own per-subsystem hot cpu mutexes.  These would be\ntaken(released) where ever we are currently calling\nlock_cpu_hotplug(unlock_cpu_hotplug).\n\nAlso, in the per-subsystem hotcpu callback function,we take this mutex before\nwe handle any pre-cpu-hotplug events and release it once we finish handling\nthe post-cpu-hotplug events.  A standard means for doing this has been\nprovided in [PATCH 2/4] and demonstrated in [PATCH 3/4].\n\nThe ordering of these per-subsystem mutexes might still prove to be a\nproblem, but hopefully lockdep should help us get out of that muddle.\n\nThe patch set to be applied against linux-2.6.19-rc5 is as follows:\n\n[PATCH 1/4] :\tExtend notifier_call_chain with an option to specify the\n\t\tnumber of notifications to be sent and also count the\n\t\tnumber of notifications actually sent.\n\n[PATCH 2/4] :\tDefine events CPU_LOCK_ACQUIRE and CPU_LOCK_RELEASE\n\t\tand send out notifications for these in _cpu_up and\n\t\t_cpu_down. This would help us standardise the acquire and\n\t\trelease of the subsystem locks in the hotcpu\n\t\tcallback functions of these subsystems.\n\n[PATCH 3/4] :\tEliminate lock_cpu_hotplug from kernel/sched.c.\n\n[PATCH 4/4] :\tIn workqueue_cpu_callback function, acquire(release) the\n\t\tworkqueue_mutex while handling\n\t\tCPU_LOCK_ACQUIRE(CPU_LOCK_RELEASE).\n\nIf the per-subsystem-locking approach survives the test of time, we can expect\na slow phasing out of lock_cpu_hotplug, which has not yet been eliminated in\nthese patches :)\n\nThis patch:\n\nProvide notifier_call_chain with an option to call only a specified number of\nnotifiers and also record the number of call to notifiers made.\n\nThe need for this enhancement was identified in the post entitled\n\"Slab - Eliminate lock_cpu_hotplug from slab\"\n(http://lkml.org/lkml/2006/10/28/92) by Ravikiran G Thirumalai and\nAndrew Morton.\n\nThis patch adds two additional parameters to notifier_call_chain API namely\n - int nr_to_calls : Number of notifier_functions to be called.\n \t\t     The don\u0027t care value is -1.\n\n - unsigned int *nr_calls : Records the total number of notifier_funtions\n\t\t\t    called by notifier_call_chain. The don\u0027t care\n\t\t\t    value is NULL.\n\n[michal.k.k.piotrowski@gmail.com: build fix]\nCredit: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Gautham R Shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Michal Piotrowski \u003cmichal.k.k.piotrowski@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": "7c9cb38302e78d24e37f7d8a2ea7eed4ae5f2fa7",
      "tree": "b65be3c42762e85f3611fe5298d203f7f901da02",
      "parents": [
        "d0758bc334780d70266c1d1b974ed26f740a0819"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "zanussi@comcast.net",
        "time": "Wed May 09 02:34:01 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:51 2007 -0700"
      },
      "message": "relay: use plain timer instead of delayed work\n\nrelay doesn\u0027t need to use schedule_delayed_work() for waking readers\nwhen a simple timer will do.\n\nSigned-off-by: Tom Zanussi \u003czanussi@comcast.net\u003e\nCc: Satyam Sharma \u003csatyam.sharma@gmail.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "19a75d83ffeab004cfcfac64024ad3997bac7220",
      "tree": "1a4c3d299527989cde6d87e18dd189cfb35749a8",
      "parents": [
        "a9df62c7585e6caa1e7d2425b2b14460ec3afc20"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Wed May 09 02:33:56 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:51 2007 -0700"
      },
      "message": "kblockd: use flush_work\n\nSwitch the kblockd flushing from a global flush to a more specific\nflush_work().\n\n(akpm: bypassed maintainers, sorry.  There are other patches which depend on\nthis)\n\nCc: \"Maciej W. Rozycki\" \u003cmacro@linux-mips.org\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Jens Axboe \u003caxboe@suse.de\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b89deed32ccc96098bd6bc953c64bba6b847774f",
      "tree": "7a5963bbc5203cfdb39bf2fb1204764df39c71db",
      "parents": [
        "fc2e4d70410546307344821eed6fd23803a45286"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Wed May 09 02:33:52 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:50 2007 -0700"
      },
      "message": "implement flush_work()\n\nA basic problem with flush_scheduled_work() is that it blocks behind _all_\npresently-queued works, rather than just the work whcih the caller wants to\nflush.  If the caller holds some lock, and if one of the queued work happens\nto want that lock as well then accidental deadlocks can occur.\n\nOne example of this is the phy layer: it wants to flush work while holding\nrtnl_lock().  But if a linkwatch event happens to be queued, the phy code will\ndeadlock because the linkwatch callback function takes rtnl_lock.\n\nSo we implement a new function which will flush a *single* work - just the one\nwhich the caller wants to free up.  Thus we avoid the accidental deadlocks\nwhich can arise from unrelated subsystems\u0027 callbacks taking shared locks.\n\nflush_work() non-blockingly dequeues the work_struct which we want to kill,\nthen it waits for its handler to complete on all CPUs.\n\nAdd -\u003ecurrent_work to the \"struct cpu_workqueue_struct\", it points to\ncurrently running \"struct work_struct\". When flush_work(work) detects\n-\u003ecurrent_work \u003d\u003d work, it inserts a barrier at the _head_ of -\u003eworklist\n(and thus right _after_ that work) and waits for completition. This means\nthat the next work fired on that CPU will be this barrier, or another\nbarrier queued by concurrent flush_work(), so the caller of flush_work()\nwill be woken before any \"regular\" work has a chance to run.\n\nWhen wait_on_work() unlocks workqueue_mutex (or whatever we choose to protect\nagainst CPU hotplug), CPU may go away. But in that case take_over_work() will\nmove a barrier we queued to another CPU, it will be fired sometime, and\nwait_on_work() will be woken.\n\nActually, we are doing cleanup_workqueue_thread()-\u003ekthread_stop() before\ntake_over_work(), so cwq-\u003ethread should complete its -\u003eworklist (and thus\nthe barrier), because currently we don\u0027t check kthread_should_stop() in\nrun_workqueue(). But even if we did, everything should be ok.\n\n[akpm@osdl.org: cleanup]\n[akpm@osdl.org: add flush_work_keventd() wrapper]\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "18d8362d517cb2bd97761294924fe6c2a6ee5e3c",
      "tree": "fff49e54cb725ba33ddf4453fb866838ad6ceeca",
      "parents": [
        "ae030e435f5400cff77c52506a8d3d7278f0947c"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed May 09 02:33:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:49 2007 -0700"
      },
      "message": "mutex_lock_interruptible(): add __must_check\n\nIt\u0027s not sane to use mutex_lock_interruptible() and to then ignore the result.\n\nDitto down_interruptible(), but I\u0027m lazy.\n\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "55c0d1f83e481dd6c77f52f7dcfeb043b8b740fa",
      "tree": "5d3240d565c158712345094362d40c3973483a7f",
      "parents": [
        "84963048ca8093e0aa71ac90c2a5fe7af5f617c3"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Wed May 09 02:33:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:49 2007 -0700"
      },
      "message": "Move sig_kernel_* et al macros to linux/signal.h\n\nThis patch moves the sig_kernel_* and related macros from kernel/signal.c\nto linux/signal.h, and cleans them up slightly.  I need the sig_kernel_*\nmacros for default signal behavior in the utrace code, and want to avoid\nduplication or overhead to share the knowledge.\n\nSigned-off-by: Roland McGrath \u003croland@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": "8813d1c00ca923c1683da625ff85959be1db9a49",
      "tree": "db16312db25ccfbef05f7cb05b58a9a6423f7b54",
      "parents": [
        "809aa5048fb7e7fd3bf0aa1fb169c42db0f63b08"
      ],
      "author": {
        "name": "James Bottomley",
        "email": "James.Bottomley@SteelEye.com",
        "time": "Wed May 09 02:33:30 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:49 2007 -0700"
      },
      "message": "mca: add integrated device bus matching\n\nThe MCA bus has a few \"integrated\" functions, which are effectively virtual\nslots on the bus.  The problem is that these special functions don\u0027t have\ndedicated pos IDs, so we have to manufacture ids for them outside the pos\nspace ...  and these ids can\u0027t be matched by the standard matching function,\nso add a special registration that requests a list of pos ids or a particular\nintegrated function.\n\nSigned-off-by: James Bottomley \u003cJames.Bottomley@SteelEye.com\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": "dd2a345f8f002845636dbf5d2d768bb5cd8a5f59",
      "tree": "9ddbe34d18cf97496f4d3d582ed127fee0d96a01",
      "parents": [
        "0e7d18b57c39bedcbd181e3c06d13572b33e5380"
      ],
      "author": {
        "name": "Dave Gilbert",
        "email": "linux@treblig.org",
        "time": "Wed May 09 02:33:24 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:48 2007 -0700"
      },
      "message": "Display all possible partitions when the root filesystem failed to mount\n\nDisplay all possible partitions when the root filesystem is not mounted.\nThis helps to track spell\u0027o\u0027s and missing drivers.\n\nUpdated to work with newer kernels.\n\nExample output:\n\nVFS: Cannot open root device \"foobar\" or unknown-block(0,0)\nPlease append a correct \"root\u003d\" boot option; here are the available partitions:\n0800    8388608 sda driver: sd\n  0801     192748 sda1\n  0802    8193150 sda2\n0810    4194304 sdb driver: sd\nKernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)\n\n[akpm@linux-foundation.org: cleanups, fix printk warnings]\nSigned-off-by: Jan Engelhardt \u003cjengelh@gmx.de\u003e\nCc: Dave Gilbert \u003clinux@treblig.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a3d25c275d383975504dc53c25b691df59bd3c48",
      "tree": "161a2ae12a20a630c2f639e144872db2b92eb098",
      "parents": [
        "d60846c4d16f9518b098b905af2b87cb6bf6dc42"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed May 09 02:33:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:48 2007 -0700"
      },
      "message": "PM: Separate hibernation code from suspend code\n\n[ With Johannes Berg \u003cjohannes@sipsolutions.net\u003e ]\n\nSeparate the hibernation (aka suspend to disk code) from the other suspend\ncode.  In particular:\n\n * Remove the definitions related to hibernation from include/linux/pm.h\n * Introduce struct hibernation_ops and a new hibernate() function to hibernate\n   the system, defined in include/linux/suspend.h\n * Separate suspend code in kernel/power/main.c from hibernation-related code\n   in kernel/power/disk.c and kernel/power/user.c (with the help of\n   hibernation_ops)\n * Switch ACPI (the only user of pm_ops.pm_disk_mode) to hibernation_ops\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nCc: Nigel Cunningham \u003cnigel@nigel.suspend2.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "97416ce82e20a9511ec369822098a8d20998398a",
      "tree": "a8ecca47df90e5844853b3578aac6e72ba2694f8",
      "parents": [
        "01f41ec7b36e14da18a4e162ef697ae358f36e37"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Wed May 09 02:32:35 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:44 2007 -0700"
      },
      "message": "Declare {compat_}sys_utimensat\n\nThis is needed before Powerpc can wire up the syscall.\n\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "42f209d3c94516affeb5e578fae62925f531a2d9",
      "tree": "806035c350303fa8e19c7aa5e5a5f4c4b3128752",
      "parents": [
        "36200b76008d52d16b170d4f7dae9cfe00f5eb2b"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Fri May 04 15:49:38 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Wed May 09 13:26:52 2007 +0100"
      },
      "message": "[MTD] Delete allegedly obsolete \"bank_size\" field of mtd_info.\n\nDelete the allegedly obsolete \"bank_size\" member of struct mtd_info.\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nSigned-off-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\n"
    },
    {
      "commit": "36200b76008d52d16b170d4f7dae9cfe00f5eb2b",
      "tree": "b1c37e3f80c0a6c1fb43e919552eb0b15241a17a",
      "parents": [
        "025257c7a7665a117b72097cc12021140eac8a34"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Thu May 03 15:58:49 2007 -0400"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "dwmw2@infradead.org",
        "time": "Wed May 09 13:24:37 2007 +0100"
      },
      "message": "[MTD] Remove unnecessary user space check from mtd.h.\n\nSince the header file include/linux/mtd/mtd.h is not exported to user\nspace, remove the user space check and error.\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nSigned-off-by: David Woodhouse \u003cdwmw2@infradead.org\u003e\n"
    },
    {
      "commit": "121e70b69aef898a3c02fa90d0a2108381bcf975",
      "tree": "18a32c745abe6d6cc812c03206744df3c223a667",
      "parents": [
        "f42df9e658be10ca10d0d9b19a0e9d484694f04f"
      ],
      "author": {
        "name": "John Anthony Kazos Jr",
        "email": "jakj@j-a-k-j.com",
        "time": "Wed May 09 08:30:57 2007 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Wed May 09 08:58:21 2007 +0200"
      },
      "message": "include files: convert \"include\" subdirectory to UTF-8\n\nConvert the \"include\" subdirectory to UTF-8.\n\nSigned-off-by: John Anthony Kazos Jr. \u003cjakj@j-a-k-j.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "5886269962f94fa9185c32db3ec936c612503235",
      "tree": "2f24dabcf5791319ebb1fbdfb5dbc58284714275",
      "parents": [
        "01afd80626e98c2347bc25be92ee4a3faf314514"
      ],
      "author": {
        "name": "Uwe Kleine-König",
        "email": "ukleinek@informatik.uni-freiburg.de",
        "time": "Wed May 09 07:51:49 2007 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Wed May 09 08:58:16 2007 +0200"
      },
      "message": "fix file specification in comments\n\nMany files include the filename at the beginning, serveral used a wrong one.\n\nSigned-off-by: Uwe Kleine-König \u003cukleinek@informatik.uni-freiburg.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "59c51591a0ac7568824f541f57de967e88adaa07",
      "tree": "243d20eb0a26b76d5d312f39ec5a1ff60e036711",
      "parents": [
        "02a3e59a088749c08b0293ee1535f5bf48f5926c"
      ],
      "author": {
        "name": "Michael Opdenacker",
        "email": "michael@free-electrons.com",
        "time": "Wed May 09 08:57:56 2007 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Wed May 09 08:57:56 2007 +0200"
      },
      "message": "Fix occurrences of \"the the \"\n\nSigned-off-by: Michael Opdenacker \u003cmichael@free-electrons.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "940d67f6b95166475ff6e600ef7658e1cd441278",
      "tree": "390f7e30228ae2f22d0009831f80fb909df1e177",
      "parents": [
        "de372ecd80a42c4fb485c7232475301a18d05184"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Tue May 08 19:23:49 2007 +1000"
      },
      "committer": {
        "name": "Paul Mackerras",
        "email": "paulus@samba.org",
        "time": "Wed May 09 16:34:56 2007 +1000"
      },
      "message": "[POWERPC] swsusp: Introduce register_nosave_region_late\n\nThis patch introduces a new register_nosave_region_late function that\ncan be called from initcalls when register_nosave_region can no longer\nbe used because it uses bootmem.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nAcked-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.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": "055b8224140e7a7515bf8113ce675d58abffedf1",
      "tree": "32528d9920e9819079fce8e0d43f06d75c28da01",
      "parents": [
        "36f021b579d195cdc5fa6f3e2bab198b4bf70643"
      ],
      "author": {
        "name": "Alex Dubov",
        "email": "oakad@yahoo.com",
        "time": "Tue May 01 20:14:55 2007 -0700"
      },
      "committer": {
        "name": "Pierre Ossman",
        "email": "drzeus@drzeus.cx",
        "time": "Tue May 08 22:41:47 2007 +0200"
      },
      "message": "disable socket power in adapter driver instead of media one\n\nSocket power must be fully controlled by adapter driver. This also prevents\nunnecessary power-off of the socket when media driver is unloaded, yet\nmedia remains in the socket.\n\nSigned-off-by: Alex Dubov \u003coakad@yahoo.com\u003e\nSigned-off-by: Pierre Ossman \u003cdrzeus@drzeus.cx\u003e\n"
    },
    {
      "commit": "4750def52cb2c21732dda9aa1d43a07db37b0186",
      "tree": "29fd6223665faabb593f8ae1f4f626685f425ff9",
      "parents": [
        "9028780a3e6d2c3dd940e89b377765cca008b6df",
        "27c78b372d05e47bbd059c9bb003c6d716abff54"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:58:20 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:58:20 2007 -0700"
      },
      "message": "Merge branch \u0027reset-seq\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev\n\n* \u0027reset-seq\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev:\n  [libata reset-seq] build and merge fixes\n  libata: reimplement reset sequencing\n  libata: improve ata_std_prereset()\n  libata: improve 0xff status handling\n  libata: add deadline support to prereset and reset methods\n"
    },
    {
      "commit": "393bfca19ecdce60a8d9a4d2577cac11ca924a25",
      "tree": "a609269ca3332b8f2f7b2b4a2c96f7d824c0e639",
      "parents": [
        "df6d3916f3b7b7e2067567a256dd4f0c1ea854a2",
        "ba0acb5ee318901646f82c134cca2e4de0c43934"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:51:43 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:51:43 2007 -0700"
      },
      "message": "Merge master.kernel.org:/pub/scm/linux/kernel/git/dtor/input\n\n* master.kernel.org:/pub/scm/linux/kernel/git/dtor/input:\n  Input: move USB miscellaneous devices under drivers/input/misc\n  Input: move USB mice under drivers/input/mouse\n  Input: move USB gamepads under drivers/input/joystick\n  Input: move USB touchscreens under drivers/input/touchscreen\n  Input: move USB tablets under drivers/input/tablet\n  Input: i8042 - fix AUX port detection with some chips\n  Input: aaed2000_kbd - convert to use polldev library\n  Input: drivers/usb/input - usb_buffer_free() cleanup\n  Input: synaptics - don\u0027t complain about failed resets\n  Input: pull input.h into uinpit.h\n  Input: drivers/usb/input - fix sparse warnings (signedness)\n  Input: evdev - fix some sparse warnings (signedness, shadowing)\n  Input: drivers/joystick - fix various sparse warnings\n  Input: force feedback - make sure effect is present before playing\n"
    },
    {
      "commit": "df6d3916f3b7b7e2067567a256dd4f0c1ea854a2",
      "tree": "0fdeab1ab5d566605fc99aeb5ea3f621f11e7608",
      "parents": [
        "74add80cbd7fe246c893b93ee75ac59acdd01dd4",
        "197686dfe0038fd190326d118b743ff65ad20c0e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:50:19 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:50:19 2007 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc\n\n* \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (77 commits)\n  [POWERPC] Abolish powerpc_flash_init()\n  [POWERPC] Early serial debug support for PPC44x\n  [POWERPC] Support for the Ebony 440GP reference board in arch/powerpc\n  [POWERPC] Add device tree for Ebony\n  [POWERPC] Add powerpc/platforms/44x, disable platforms/4xx for now\n  [POWERPC] MPIC U3/U4 MSI backend\n  [POWERPC] MPIC MSI allocator\n  [POWERPC] Enable MSI mappings for MPIC\n  [POWERPC] Tell Phyp we support MSI\n  [POWERPC] RTAS MSI implementation\n  [POWERPC] PowerPC MSI infrastructure\n  [POWERPC] Rip out the existing powerpc msi stubs\n  [POWERPC] Remove use of 4level-fixup.h for ppc32\n  [POWERPC] Add powerpc PCI-E reset API implementation\n  [POWERPC] Holly bootwrapper\n  [POWERPC] Holly DTS\n  [POWERPC] Holly defconfig\n  [POWERPC] Add support for 750CL Holly board\n  [POWERPC] Generalize tsi108 PCI setup\n  [POWERPC] Generalize tsi108 PHY types\n  ...\n\nFixed conflict in include/asm-powerpc/kdebug.h manually\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "34ed25f50b347c7e1ff78f9308e025ddd57c2f20",
      "tree": "f6416c654f112c48063ed8071882f50088be3696",
      "parents": [
        "9a31f0f7679aeaf79c613feaa3f4170741ccb218"
      ],
      "author": {
        "name": "Ondrej Zajicek",
        "email": "santiago@crfreenet.org",
        "time": "Tue May 08 00:40:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:33 2007 -0700"
      },
      "message": "s3fb: updates\n\nMove s3fb_get_tilemax to svgalib.c as svga_get_tilemax, because it reports\nlimitation of other code from svgalib (svga_settile, svga_tilecopy, ...)\n\nLimit font width to 8 pixels in 4 bpp mode.\n\nSigned-off-by: Ondrej Zajicek \u003csantiago@crfreenet.org\u003e\nSigned-off-by: Antonino Daplas \u003cadaplas@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": "c831c338f0ad299fcd1592c6e4f30657480f39af",
      "tree": "e2562fbcffe80e9d78255a92aab7f7db1f761e9d",
      "parents": [
        "159dde93692ef549a0b2012c9f25feb4df638c9c"
      ],
      "author": {
        "name": "Matthias Kaehlcke",
        "email": "matthias.kaehlcke@gmail.com",
        "time": "Tue May 08 00:39:49 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:33 2007 -0700"
      },
      "message": "use mutex instead of semaphore in virtual console driver\n\nThe virtual console driver uses a semaphore as mutex.  Use the mutex API\ninstead of the (binary) semaphore.\n\nSigned-off-by: Matthias Kaehlcke \u003cmatthias.kaehlcke@gmail.com\u003e\nCc: \"Antonino A. Daplas\" \u003cadaplas@pol.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "38a3dc51852d8350b156ea909c5aa8767d71b005",
      "tree": "933e9a4b7b0a0d871aaccd7d44e9224ea6c4a0b5",
      "parents": [
        "e15de77e74d429f14641ebe7a29ccd8aa6656f3c"
      ],
      "author": {
        "name": "Antonino A. Daplas",
        "email": "adaplas@gmail.com",
        "time": "Tue May 08 00:39:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:32 2007 -0700"
      },
      "message": "fbdev: fbcon: check if mode can handle new screen\n\nCheck if the mode can properly display the screen.  This will be needed by\ndrivers where the capability is not constant with each mode.  The function\nfb_set_var() will query fbcon the requirement, then it will query the driver\n(via a new hook fb_get_caps()) its capability.  If the driver\u0027s capability\ncannot handle fbcon\u0027s requirement, then fb_set_var() will fail.\n\nFor example, if a particular driver supports 2 modes where:\n\nmode1 \u003d can only display 8x16 bitmaps\nmode2 \u003d can display any bitmap\n\nthen if current mode \u003d mode2 and current font \u003d 12x22\n\nfbset \u003cmode1\u003e /* mode1 cannot handle 12x22 */\nfbset will fail\n\nSigned-off-by: Antonino Daplas \u003cadaplas@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": "11f11d522f74965fce421a5a09ff0ab178139d36",
      "tree": "179affdf2b4f7e7f8c111c19c6aa6141c64c760b",
      "parents": [
        "8db51668f5ef6ae31ed4e4f0c6e2976a190dfa11"
      ],
      "author": {
        "name": "Antonino A. Daplas",
        "email": "adaplas@gmail.com",
        "time": "Tue May 08 00:39:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:31 2007 -0700"
      },
      "message": "fbdev: add tile operation to get the maximum length of the map\n\nAdd a tile method, fb_get_tilemax(), that returns the maximum length of\nthe tile map (or font map).  This is needed by s3fb which can only handle\n256 characters.\n\nSigned-off-by: Antonino Daplas \u003cadaplas@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": "2d2699d984924890f6dac8cf51c3b6311f56816c",
      "tree": "bd8f50392ac6918589c6069177b89172f2263916",
      "parents": [
        "bf26ad72a60c0009a99179b449a43daa6bf4b4f6"
      ],
      "author": {
        "name": "Antonino A. Daplas",
        "email": "adaplas@gmail.com",
        "time": "Tue May 08 00:39:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:31 2007 -0700"
      },
      "message": "fbcon: font setting should check limitation of driver\n\nfbcon_set_font() will now check if the new font dimensions can be drawn by the\ndriver (by checking pixmap.blit_x and blit_y).  Similarly, add 2 new\nparameters to get_default_font(), font_w and font_h, to further aid in the\nfont selection process.\n\nSigned-off-by: Antonino Daplas \u003cadaplas@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": "bf26ad72a60c0009a99179b449a43daa6bf4b4f6",
      "tree": "55ba5c443aa0e0aa97e692f4be29c582356fd056",
      "parents": [
        "dc0e6e0544f1cb2af44e5d7a7e68acda05dec6fa"
      ],
      "author": {
        "name": "Antonino A. Daplas",
        "email": "adaplas@gmail.com",
        "time": "Tue May 08 00:39:09 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:30 2007 -0700"
      },
      "message": "fbdev: advertise limitation of drawing engine\n\nA few drivers are not capable of blitting rectangles of any dimension.\nvga16fb can only blit 8-pixel wide rectangles, while s3fb (in tileblitting\nmode) can only blit 8x16 rectangles.  For example, loading a 12x22 font in\nvga16fb will result in a corrupt display.\n\nAdvertise this limitation/capability in info-\u003epixmap.blit_x and blit_y.  These\nfields are 32-bit arrays (font max is 32x32 only), ie, if bit 7 is set, then\nwidth/height of 7+1 is supported.\n\nSigned-off-by: Antonino Daplas \u003cadaplas@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": "09aaf268eb1d22eee690d26a913f660e2081597f",
      "tree": "9179447608d1c7ee23af266d2bae2eef6d05a1c9",
      "parents": [
        "3f9b0880e4a96b02bc0131451f2f6231cd90bd94"
      ],
      "author": {
        "name": "Antonino A. Daplas",
        "email": "adaplas@gmail.com",
        "time": "Tue May 08 00:39:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:30 2007 -0700"
      },
      "message": "fbdev: add fb_read/fb_write functions for framebuffers in system RAM\n\nThe functions fb_read() and fb_write in fbmem.c assume that the framebuffer\nis in IO memory.  However, we have 3 drivers (hecubafb, arcfb, and vfb)\nwhere the framebuffer is allocated from system RAM (via vmalloc). Using\n__raw_read/__raw_write (fb_readl/fb_writel) for these drivers is\nillegal, especially in other platforms.\n\nCreate file read and write methods for these types of drivers.  These are\nnamed fb_sys_read() and fb_sys_write().\n\nSigned-off-by: Antonino Daplas \u003cadaplas@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": "3f9b0880e4a96b02bc0131451f2f6231cd90bd94",
      "tree": "a47339c46ab03918b24d501df54884c277326a74",
      "parents": [
        "87b4884935d387acc4c4418da6a75387bfcc24b9"
      ],
      "author": {
        "name": "Antonino A. Daplas",
        "email": "adaplas@gmail.com",
        "time": "Tue May 08 00:39:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:30 2007 -0700"
      },
      "message": "fbdev: pass struct fb_info to fb_read and fb_write\n\nIt is unnecessary to pass struct file to fb_read() and fb_write() in struct\nfb_ops. For consistency with the other methods, pass struct fb_info instead.\n\nSigned-off-by: Antonino Daplas \u003cadaplas@gmail.com\u003e\nAcked-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "68648ed1f58d98b8e8d994022e5e25331fbfe42a",
      "tree": "77c721d08b11aba58a30779e7b3294a96dd7fb29",
      "parents": [
        "a42dc9d4804cc5e111952008492dae9d34c6a541"
      ],
      "author": {
        "name": "Antonino A. Daplas",
        "email": "adaplas@gmail.com",
        "time": "Tue May 08 00:38:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:30 2007 -0700"
      },
      "message": "fbdev: add drawing functions for framebuffers in system RAM\n\nThe generic drawing functions (cfbimgblt, cfbcopyarea, cfbfillrect) assume\nthat the framebuffer is in IO memory.  However, we have 3 drivers (hecubafb,\narcfb, and vfb) where the framebuffer is allocated from system RAM (via\nvmalloc). Using _raw_read/write and family for these drivers (as used in\nthe cfb* functions) is illegal, especially in other platforms.\n\nCreate 3 new drawing functions, based almost entirely from the original\nexcept that the framebuffer memory is assumed to be in system RAM.\nThese are named as sysimgblt, syscopyarea, and sysfillrect.\n\nSigned-off-by: Antonino Daplas \u003cadaplas@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": "fa6ce9ab5fbcb4c276c48861584b70d387e787b3",
      "tree": "71b6295410513d17226a57be542f0a761db97841",
      "parents": [
        "1c2bbe6a11ec7d1de114acfc8a6bf2821b0224a5"
      ],
      "author": {
        "name": "Jan Engelhardt",
        "email": "jengelh@linux01.gwdg.de",
        "time": "Tue May 08 00:38:04 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:27 2007 -0700"
      },
      "message": "vt: add color support to the \"underline\" and \"italic\" attributes\n\nAdd color support to the \"underline\" and \"italic\" attributes as in\nOpenBSD/NetBSD-style (vt220) and xterm.\n\nSigned-off-by: Jan Engelhardt \u003cjengelh@gmx.de\u003e\nAcked-by: \"Antonino A. Daplas\" \u003cadaplas@pol.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5e841b88d23d0ea0a6ee4e76c489899d4d23ce25",
      "tree": "7268b4bbb85aa7b1c72f54f7f8cd309b34cfecce",
      "parents": [
        "7bf1ea33ad70cf49638092367d52859fbbc44fee"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Tue May 08 00:37:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:27 2007 -0700"
      },
      "message": "fb: fsync() method for deferred I/O flush.\n\nThere are cases when we do not want to wait on the delay for automatically\nupdating the \"real\" framebuffer, this implements a simple -\u003efsync() hook\nfor explicitly flushing the deferred I/O work.  The -\u003epage_mkwrite()\nhandler will rearm the work queue normally.\n\n(akpm: nuke unneeded ifdefs, forward-delcare struct dentry)\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Jaya Kumar \u003cjayakumar.lkml@gmail.com\u003e\nAcked-by: Antonino Daplas \u003cadaplas@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": "60b59beafba875aef6d378078bce0baf2287ae14",
      "tree": "bb599c0e2ad43ee8f515a9f9af009442931b6a37",
      "parents": [
        "3a2842480bbef42c3c90e14c1f378360d8c20a0c"
      ],
      "author": {
        "name": "Jaya Kumar",
        "email": "jayakumar.lkml@gmail.com",
        "time": "Tue May 08 00:37:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:26 2007 -0700"
      },
      "message": "fbdev: mm: Deferred IO support\n\nThis implements deferred IO support in fbdev.  Deferred IO is a way to delay\nand repurpose IO.  This implementation is done using mm\u0027s page_mkwrite and\npage_mkclean hooks in order to detect, delay and then rewrite IO.  This\nfunctionality is used by hecubafb.\n\n[adaplas]\nThis is useful for graphics hardware with no directly addressable/mappable\nframebuffer. Implementing this will allow the \"framebuffer\" to be accesible\nfrom user space via mmap().\n\nSigned-off-by: Jaya Kumar \u003cjayakumar.lkml@gmail.com\u003e\nSigned-off-by: Antonino Daplas \u003cadaplas@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": "2ee121631b9dd0291502ccac6f897907505faf8c",
      "tree": "241c6fed7da9fe24c998674d6ba9d8ec1bf10f52",
      "parents": [
        "825d0a97f3b9031235b1ee77b1e22fec15c758ba"
      ],
      "author": {
        "name": "James Simmons",
        "email": "jsimmons@infradead.org",
        "time": "Tue May 08 00:37:15 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:26 2007 -0700"
      },
      "message": "fbdev: display class\n\nAdd the new display class.  This is meant to unite the various solutions to\ndisplay units ie acpi output device, auxdisplay and the defunct lcd class\nin the backlight directory.\n\nSigned-off-by: James Simmons \u003cjsimmons@infradead.org\u003e\nCc: \"Antonino A. Daplas\" \u003cadaplas@pol.net\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dd025c0c7a047b1be7dfaa4061368b4783d89ebb",
      "tree": "7041390fe906a8a2e0e95463ce2212bca2df9e45",
      "parents": [
        "f2462bfe558559c9fbc4ef60812d5df30ccb01f6"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jirislaby@gmail.com",
        "time": "Tue May 08 00:37:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:25 2007 -0700"
      },
      "message": "Char: cyclades, dynamic ports\n\nand save thus approx. 160k of .bss\n\nSigned-off-by: Jiri Slaby \u003cjirislaby@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": "6a0aa67b177a3d84f789f7f19c523d8c5e8bb5f8",
      "tree": "732df5be0bca62d5a24636aed189a69a822058de",
      "parents": [
        "3991428d9efc7185312196f82cc36e9df4a2ddb0"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jirislaby@gmail.com",
        "time": "Tue May 08 00:36:55 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:25 2007 -0700"
      },
      "message": "Char: cyclades, remove unused timestamps\n\nSigned-off-by: Jiri Slaby \u003cjirislaby@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": "2c7fea992104b5ca2b510d585a27b3ba018b795f",
      "tree": "635126a471561a2a5fb7fb598f02ef69d6800abe",
      "parents": [
        "875b206b5f4971cc990a12e891f5519f0f6772a9"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jirislaby@gmail.com",
        "time": "Tue May 08 00:36:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:25 2007 -0700"
      },
      "message": "Char: cyclades, remove sleep_on\n\nconvert to wait_* and completion\n\nSigned-off-by: Jiri Slaby \u003cjirislaby@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": "875b206b5f4971cc990a12e891f5519f0f6772a9",
      "tree": "018ab8a287541f16b1ffda91fb7fc583cadb8a33",
      "parents": [
        "6d8248e850309c0f05beb5bdbfc89b7901bf3d85"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jirislaby@gmail.com",
        "time": "Tue May 08 00:36:49 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:25 2007 -0700"
      },
      "message": "Char: cyclades, make info-\u003ecard a pointer\n\nSigned-off-by: Jiri Slaby \u003cjirislaby@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": "46039f8a64cd50bbf70ce54fefe148e75598391b",
      "tree": "8a0ba0424eddd6e54ee23e12e8de6de7d9bf8d4f",
      "parents": [
        "b81cc310f1309f6090a5655af1fe5831ded53233"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jirislaby@gmail.com",
        "time": "Tue May 08 00:36:40 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:24 2007 -0700"
      },
      "message": "Char: cyclades, remove useless fileds from cyclades_card\n\npde, ctl_phys and base_phys are useless -- they are never used.\n\nSigned-off-by: Jiri Slaby \u003cjirislaby@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": "b81cc310f1309f6090a5655af1fe5831ded53233",
      "tree": "9897fa9dab4f446ab6703783a34517398947e212",
      "parents": [
        "cff9494fadb09e851b66096e3fd6fc08721bd683"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jirislaby@gmail.com",
        "time": "Tue May 08 00:36:38 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:24 2007 -0700"
      },
      "message": "Char: cyclades, unexport struct cyclades_card\n\nDo not export internal card data to userspace. cytune doesn\u0027t use this\nanyway.\n\nSigned-off-by: Jiri Slaby \u003cjirislaby@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": "8f81dd149806bc53c68c92f34d61f88427079039",
      "tree": "ae60b9f2485a44d68b91aa18bf0991e6cf1181f1",
      "parents": [
        "cab9bdd14dd7d8091b0aac7877ae9f29724eb741"
      ],
      "author": {
        "name": "Bjorn Helgaas",
        "email": "bjorn.helgaas@hp.com",
        "time": "Tue May 08 00:35:54 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:23 2007 -0700"
      },
      "message": "PNP: notice whether we have PNP devices (PNPBIOS or PNPACPI)\n\nThis series converts i386 and x86_64 legacy serial ports to be platform\ndevices and prevents probing for them if we have PNP.\n\nThis prevents double discovery, where a device was found both by the legacy\nprobe and by 8250_pnp.\n\nThis also prevents the serial driver from claiming IRDA devices (unless they\nhave a UART PNP ID).  The serial legacy probe sometimes assumed the wrong IRQ,\nso the user had to use \"setserial\" to fix it.\n\nRemoving the need for setserial to make IRDA devices work seems good, but it\ndoes break some things.  In particular, you may need to keep setserial from\npoking legacy UART stuff back in by doing something like \"dpkg-reconfigure\nsetserial\" with the \"kernel\" option.  Otherwise, the setserial-discovered\n\"UART\" will claim resources and prevent the IRDA driver from loading.\n\nThis patch:\n\nIf we can discover devices using PNP, we can skip some legacy probes.  This\nflag (\"pnp_platform_devices\") indicates that PNPBIOS or PNPACPI is enabled and\nshould tell us about builtin devices.\n\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": "db05c3b1ddaa06e658548f3d99e31a188b0b3bcc",
      "tree": "5b645d4da752988c21b6a66c7afe8a34f994c8df",
      "parents": [
        "ffa68e79ffa952ec909b66505f004e7323316369"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jirislaby@gmail.com",
        "time": "Tue May 08 00:35:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:22 2007 -0700"
      },
      "message": "Char: cyclades, cy_readX/writeX cleanup\n\ncyclades, cy_readX/writeX cleanup\n\n- cy_readX are placeholders for readX, remove it\n- move cy_writeX macros into do {} while(0) to be safe\n\nSigned-off-by: Jiri Slaby \u003cjirislaby@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": "d85a60d85ea5b7c597508c1510c88e657773d378",
      "tree": "2b5d1a5311074de8c12811e7ddf26e3cda4a41a0",
      "parents": [
        "951744fea0aea9adbd7c8cacb3605f2d69a66f96"
      ],
      "author": {
        "name": "Bernhard Walle",
        "email": "bwalle@suse.de",
        "time": "Tue May 08 00:35:24 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:22 2007 -0700"
      },
      "message": "Add IRQF_IRQPOLL flag (common code)\n\nirqpoll is broken on some architectures that don\u0027t use the IRQ 0 for the timer\ninterrupt like IA64.  This patch adds a IRQF_IRQPOLL flag.\n\nEach architecture is handled in a separate pach.  As I left the irq \u003d\u003d 0 as\ncondition, this should not break existing architectures that use timer_irq \u003d\u003d\n0 and that I did\u0027t address with that patch (because I don\u0027t know).\n\nThis patch:\n\nThis patch adds a IRQF_IRQPOLL flag that the interrupt registration code could\nuse for the interrupt it wants to use for IRQ polling.\n\nBecause this must not be the timer interrupt, an additional flag was added\ninstead of re-using the IRQF_TIMER constant.  Until all architectures will\nhave an IRQF_IRQPOLL interrupt, irq \u003d\u003d 0 will stay as alternative as it should\nnot break anything.\n\nAlso, note_interrupt() is called on CPU-specific interrupts to be used as\ninterrupt source for IRQ polling.\n\nSigned-off-by: Bernhard Walle \u003cbwalle@suse.de\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Matthew Wilcox \u003cwilly@debian.org\u003e\nCc: Grant Grundler \u003cgrundler@google.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "277866a0e3a4f97e859f7a621f5b4f5359c9526c",
      "tree": "20b244f5c0c7b6a692f0290f70f0fefae9d88d5a",
      "parents": [
        "79df3c19aa601d264719b04e3a788a7b852f4859"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue May 08 00:35:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:21 2007 -0700"
      },
      "message": "nfs: fix congestion control: use atomic_longs\n\nChange the atomic_t in struct nfs_server to atomic_long_t in anticipation\nof machines that can handle 8+TB of (4K) pages under writeback.\n\nHowever I suspect other things in NFS will start going *bang* by then.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bf8f6e5b3e51ee0c64c2d1350c70198ddc8ad3f7",
      "tree": "c48ebb92f836cfac58465eacc9658fbc2bac4783",
      "parents": [
        "4c4308cb93450989846ac49faeb6dab943e7657e"
      ],
      "author": {
        "name": "Ananth N Mavinakayanahalli",
        "email": "ananth@in.ibm.com",
        "time": "Tue May 08 00:34:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:19 2007 -0700"
      },
      "message": "Kprobes: The ON/OFF knob thru debugfs\n\nThis patch provides a debugfs knob to turn kprobes on/off\n\no A new file /debug/kprobes/enabled indicates if kprobes is enabled or\n  not (default enabled)\no Echoing 0 to this file will disarm all installed probes\no Any new probe registration when disabled will register the probe but\n  not arm it. A message will be printed out in such a case.\no When a value 1 is echoed to the file, all probes (including ones\n  registered in the intervening period) will be enabled\no Unregistration will happen irrespective of whether probes are globally\n  enabled or not.\no Update Documentation/kprobes.txt to reflect these changes. While there\n  also update the doc to make it current.\n\nWe are also looking at providing sysrq key support to tie to the disabling\nfeature provided by this patch.\n\n[akpm@linux-foundation.org: Use bool like a bool!]\n[akpm@linux-foundation.org: add printk facility levels]\n[cornelia.huck@de.ibm.com: Add the missing arch_trampoline_kprobe() for s390]\nSigned-off-by: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nSigned-off-by: Srinivasa DS \u003csrinivasa@in.ibm.com\u003e\nSigned-off-by: Cornelia Huck \u003ccornelia.huck@de.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": "4c4308cb93450989846ac49faeb6dab943e7657e",
      "tree": "c06092cae6f95a243cdd758d07491cf5fa24a1dd",
      "parents": [
        "6f716acd5fa20ae6a35ab29ae37fa9189e839ed5"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue May 08 00:34:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:19 2007 -0700"
      },
      "message": "kprobes: kretprobes simplifications\n\n - consolidate duplicate code in all arch_prepare_kretprobe instances\n   into common code\n - replace various odd helpers that use hlist_for_each_entry to get\n   the first elemenet of a list with either a hlist_for_each_entry_save\n   or an opencoded access to the first element in the caller\n - inline add_rp_inst into it\u0027s only remaining caller\n - use kretprobe_inst_table_head instead of opencoding it\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Prasanna S Panchamukhi \u003cprasanna@in.ibm.com\u003e\nAcked-by: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Anil S Keshavamurthy \u003canil.s.keshavamurthy@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "416ce32e704d778c283f2f86cadd836cd5d3696c",
      "tree": "ede7fe08271e40367d228ef4b7a79eba68030ad4",
      "parents": [
        "19bfe37caa8184768ecc15269302f42036625259"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue May 08 00:34:05 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:18 2007 -0700"
      },
      "message": "revert \"rtc: Add rtc_merge_alarm()\"\n\nDavid says \"884b4aaaa242a2db8c8252796f0118164a680ab5 should be reverted.  It\nadded an rtc_merge_alarm() call to the 2.6.20 kernel, which hasn\u0027t yet been\nused by any in-tree driver; this patch obviates the need for that call, and\nuses a more robust approach.\"\n\nCc: Scott Wood \u003cscottwood@freescale.com\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "87ac84f42a7a580d0dd72ae31d6a5eb4bfe04c6d",
      "tree": "e0750f2ee2146c990d048737aff0fb91942e4c54",
      "parents": [
        "9b5ef64a3a73757f1acdfb8565b5105115fc6e62"
      ],
      "author": {
        "name": "David Brownell",
        "email": "david-b@pacbell.net",
        "time": "Tue May 08 00:34:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:18 2007 -0700"
      },
      "message": "rtc-cmos wakeup interface\n\nI finally got around to testing the updated wakeup event hooks for rtc-cmos,\nand they follow in two patches:\n\n - Interface update ... when a simple enable_irq_wake() doesn\u0027t suffice,\n   the platform data can hold suspend/resume callback hooks.\n\n - ACPI implementation ... provides callback hooks to do ACPI magic, and\n   eliminate the legacy /proc/acpi/alarm file.\n\nThe interface update could go into 2.6.21, but that\u0027s not essential; they\nwill be NOPs on most PCs, without the ACPI stuff.\n\nI suspect the ACPI folk may have opinions about how to merge that second\npatch, and how to obsolete that legacy procfs file.  I\u0027d like to see that\nmerge into 2.6.22 if possible...\n\nAs for how to kick it in ... two ways:\n\n - The appended \"rtcwake\" program; updated since the last time it was\n   posted, it deals much better with timezones and DST.\n\n - Write the /sys/class/rtc/.../wakealarm file, then go to sleep.\n\nFor some reason RTC wake from \"swsusp\" stopped working on a system where\nit previously worked; the alarm setting appears to get clobbered.  But\non the bright side, RTC wake from \"standby\" worked on a system that had\nnever been able to resume from that state before ... IDEACPI is my guess\nas to why it finally started to work.  It\u0027s the old \"two steps forward,\none step back\" dance, I guess.\n\n- Dave\n\n/* gcc -Wall -Os -o rtcwake rtcwake.c */\n\n#include \u003cstdio.h\u003e\n#include \u003cgetopt.h\u003e\n#include \u003cfcntl.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cstring.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003cerrno.h\u003e\n#include \u003ctime.h\u003e\n\n#include \u003csys/ioctl.h\u003e\n#include \u003csys/time.h\u003e\n#include \u003csys/types.h\u003e\n\n#include \u003clinux/rtc.h\u003e\n\n/* constants from legacy PC/AT hardware */\n#define\tRTC_PF\t0x40\n#define\tRTC_AF\t0x20\n#define\tRTC_UF\t0x10\n\n/*\n * rtcwake -- enter a system sleep state until specified wakeup time.\n *\n * This uses cross-platform Linux interfaces to enter a system sleep state,\n * and leave it no later than a specified time.  It uses any RTC framework\n * driver that supports standard driver model wakeup flags.\n *\n * This is normally used like the old \"apmsleep\" utility, to wake from a\n * suspend state like ACPI S1 (standby) or S3 (suspend-to-RAM).  Most\n * platforms can implement those without analogues of BIOS, APM, or ACPI.\n *\n * On some systems, this can also be used like \"nvram-wakeup\", waking\n * from states like ACPI S4 (suspend to disk).  Not all systems have\n * persistent media that are appropriate for such suspend modes.\n *\n * The best way to set the system\u0027s RTC is so that it holds the current\n * time in UTC.  Use the \"-l\" flag to tell this program that the system\n * RTC uses a local timezone instead (maybe you dual-boot MS-Windows).\n */\n\nstatic char\t\t*progname;\n\n#ifdef\tDEBUG\n#define\tVERSION\t\"1.0 dev (\" __DATE__ \" \" __TIME__ \")\"\n#else\n#define\tVERSION\t\"0.9\"\n#endif\n\nstatic unsigned\t\tverbose;\nstatic int\t\trtc_is_utc \u003d -1;\n\nstatic int may_wakeup(const char *devname)\n{\n\tchar\tbuf[128], *s;\n\tFILE\t*f;\n\n\tsnprintf(buf, sizeof buf, \"/sys/class/rtc/%s/device/power/wakeup\",\n\t\t\tdevname);\n\tf \u003d fopen(buf, \"r\");\n\tif (!f) {\n\t\tperror(buf);\n\t\treturn 0;\n\t}\n\tfgets(buf, sizeof buf, f);\n\tfclose(f);\n\n\ts \u003d strchr(buf, \u0027\\n\u0027);\n\tif (!s)\n\t\treturn 0;\n\t*s \u003d 0;\n\n\t/* wakeup events could be disabled or not supported */\n\treturn strcmp(buf, \"enabled\") \u003d\u003d 0;\n}\n\n/* all times should be in UTC */\nstatic time_t\tsys_time;\nstatic time_t\trtc_time;\n\nstatic int get_basetimes(int fd)\n{\n\tstruct tm\ttm;\n\tstruct rtc_time\trtc;\n\n\t/* this process works in RTC time, except when working\n\t * with the system clock (which always uses UTC).\n\t */\n\tif (rtc_is_utc)\n\t\tsetenv(\"TZ\", \"UTC\", 1);\n\ttzset();\n\n\t/* read rtc and system clocks \"at the same time\", or as\n\t * precisely (+/- a second) as we can read them.\n\t */\n\tif (ioctl(fd, RTC_RD_TIME, \u0026rtc) \u003c 0) {\n\t\tperror(\"read rtc time\");\n\t\treturn 0;\n\t}\n\tsys_time \u003d time(0);\n\tif (sys_time \u003d\u003d (time_t)-1) {\n\t\tperror(\"read system time\");\n\t\treturn 0;\n\t}\n\n\t/* convert rtc_time to normal arithmetic-friendly form,\n\t * updating tm.tm_wday as used by asctime().\n\t */\n\tmemset(\u0026tm, 0, sizeof tm);\n\ttm.tm_sec \u003d rtc.tm_sec;\n\ttm.tm_min \u003d rtc.tm_min;\n\ttm.tm_hour \u003d rtc.tm_hour;\n\ttm.tm_mday \u003d rtc.tm_mday;\n\ttm.tm_mon \u003d rtc.tm_mon;\n\ttm.tm_year \u003d rtc.tm_year;\n\ttm.tm_isdst \u003d rtc.tm_isdst;\t/* stays unspecified? */\n\trtc_time \u003d mktime(\u0026tm);\n\n\tif (rtc_time \u003d\u003d (time_t)-1) {\n\t\tperror(\"convert rtc time\");\n\t\treturn 0;\n\t}\n\n\tif (verbose) {\n\t\tif (!rtc_is_utc) {\n\t\t\tprintf(\"\\ttzone   \u003d %ld\\n\", timezone);\n\t\t\tprintf(\"\\ttzname  \u003d %s\\n\", tzname[daylight]);\n\t\t\tgmtime_r(\u0026rtc_time, \u0026tm);\n\t\t}\n\t\tprintf(\"\\tsystime \u003d %ld, (UTC) %s\",\n\t\t\t\t(long) sys_time, asctime(gmtime(\u0026sys_time)));\n\t\tprintf(\"\\trtctime \u003d %ld, (UTC) %s\",\n\t\t\t\t(long) rtc_time, asctime(\u0026tm));\n\t}\n\n\treturn 1;\n}\n\nstatic int setup_alarm(int fd, time_t *wakeup)\n{\n\tstruct tm\t\t*tm;\n\tstruct rtc_wkalrm\twake;\n\n\ttm \u003d gmtime(wakeup);\n\n\twake.time.tm_sec \u003d tm-\u003etm_sec;\n\twake.time.tm_min \u003d tm-\u003etm_min;\n\twake.time.tm_hour \u003d tm-\u003etm_hour;\n\twake.time.tm_mday \u003d tm-\u003etm_mday;\n\twake.time.tm_mon \u003d tm-\u003etm_mon;\n\twake.time.tm_year \u003d tm-\u003etm_year;\n\twake.time.tm_wday \u003d tm-\u003etm_wday;\n\twake.time.tm_yday \u003d tm-\u003etm_yday;\n\twake.time.tm_isdst \u003d tm-\u003etm_isdst;\n\n\t/* many rtc alarms only support up to 24 hours from \u0027now\u0027 ... */\n\tif ((rtc_time + (24 * 60 * 60)) \u003e *wakeup) {\n\t\tif (ioctl(fd, RTC_ALM_SET, \u0026wake.time) \u003c 0) {\n\t\t\tperror(\"set rtc alarm\");\n\t\t\treturn 0;\n\t\t}\n\t\tif (ioctl(fd, RTC_AIE_ON, 0) \u003c 0) {\n\t\t\tperror(\"enable rtc alarm\");\n\t\t\treturn 0;\n\t\t}\n\n\t/* ... so use the \"more than 24 hours\" request only if we must */\n\t} else {\n\t\t/* avoid an extra AIE_ON call */\n\t\twake.enabled \u003d 1;\n\n\t\tif (ioctl(fd, RTC_WKALM_SET, \u0026wake) \u003c 0) {\n\t\t\tperror(\"set rtc wake alarm\");\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\treturn 1;\n}\n\nstatic void suspend_system(const char *suspend)\n{\n\tFILE\t*f \u003d fopen(\"/sys/power/state\", \"w\");\n\n\tif (!f) {\n\t\tperror(\"/sys/power/state\");\n\t\treturn;\n\t}\n\n\tfprintf(f, \"%s\\n\", suspend);\n\tfflush(f);\n\n\t/* this executes after wake from suspend */\n\tfclose(f);\n}\n\nint main(int argc, char **argv)\n{\n\tstatic char\t\t*devname \u003d \"rtc0\";\n\tstatic unsigned\t\tseconds \u003d 0;\n\tstatic char\t\t*suspend \u003d \"standby\";\n\n\tint\t\tt;\n\tint\t\tfd;\n\ttime_t\t\talarm \u003d 0;\n\n\tprogname \u003d strrchr(argv[0], \u0027/\u0027);\n\tif (progname)\n\t\tprogname++;\n\telse\n\t\tprogname \u003d argv[0];\n\tif (chdir(\"/dev/\") \u003c 0) {\n\t\tperror(\"chdir /dev\");\n\t\treturn 1;\n\t}\n\n\twhile ((t \u003d getopt(argc, argv, \"d:lm:s:t:uVv\")) !\u003d EOF) {\n\t\tswitch (t) {\n\n\t\tcase \u0027d\u0027:\n\t\t\tdevname \u003d optarg;\n\t\t\tbreak;\n\n\t\tcase \u0027l\u0027:\n\t\t\trtc_is_utc \u003d 0;\n\t\t\tbreak;\n\n\t\t/* what system power mode to use?  for now handle only\n\t\t * standardized mode names; eventually when systems define\n\t\t * their own state names, parse /sys/power/state.\n\t\t *\n\t\t * \"on\" is used just to test the RTC alarm mechanism,\n\t\t * bypassing all the wakeup-from-sleep infrastructure.\n\t\t */\n\t\tcase \u0027m\u0027:\n\t\t\tif (strcmp(optarg, \"standby\") \u003d\u003d 0\n\t\t\t\t\t|| strcmp(optarg, \"mem\") \u003d\u003d 0\n\t\t\t\t\t|| strcmp(optarg, \"disk\") \u003d\u003d 0\n\t\t\t\t\t|| strcmp(optarg, \"on\") \u003d\u003d 0\n\t\t\t\t\t) {\n\t\t\t\tsuspend \u003d optarg;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tprintf(\"%s: unrecognized suspend state \u0027%s\u0027\\n\",\n\t\t\t\t\tprogname, optarg);\n\t\t\tgoto usage;\n\n\t\t/* alarm time, seconds-to-sleep (relative) */\n\t\tcase \u0027s\u0027:\n\t\t\tt \u003d atoi(optarg);\n\t\t\tif (t \u003c 0) {\n\t\t\t\tprintf(\"%s: illegal interval %s seconds\\n\",\n\t\t\t\t\t\tprogname, optarg);\n\t\t\t\tgoto usage;\n\t\t\t}\n\t\t\tseconds \u003d t;\n\t\t\tbreak;\n\n\t\t/* alarm time, time_t (absolute, seconds since 1/1 1970 UTC) */\n\t\tcase \u0027t\u0027:\n\t\t\tt \u003d atoi(optarg);\n\t\t\tif (t \u003c 0) {\n\t\t\t\tprintf(\"%s: illegal time_t value %s\\n\",\n\t\t\t\t\t\tprogname, optarg);\n\t\t\t\tgoto usage;\n\t\t\t}\n\t\t\talarm \u003d t;\n\t\t\tbreak;\n\n\t\tcase \u0027u\u0027:\n\t\t\trtc_is_utc \u003d 1;\n\t\t\tbreak;\n\n\t\tcase \u0027v\u0027:\n\t\t\tverbose++;\n\t\t\tbreak;\n\n\t\tcase \u0027V\u0027:\n\t\t\tprintf(\"%s: version %s\\n\", progname, VERSION);\n\t\t\tbreak;\n\n\t\tdefault:\nusage:\n\t\t\tprintf(\"usage: %s [options]\"\n\t\t\t\t\"\\n\\t\"\n\t\t\t\t\"-d rtc0|rtc1|...\\t(select rtc)\"\n\t\t\t\t\"\\n\\t\"\n\t\t\t\t\"-l\\t\\t\\t(RTC uses local timezone)\"\n\t\t\t\t\"\\n\\t\"\n\t\t\t\t\"-m standby|mem|...\\t(sleep mode)\"\n\t\t\t\t\"\\n\\t\"\n\t\t\t\t\"-s seconds\\t\\t(seconds to sleep)\"\n\t\t\t\t\"\\n\\t\"\n\t\t\t\t\"-t time_t\\t\\t(time to wake)\"\n\t\t\t\t\"\\n\\t\"\n\t\t\t\t\"-u\\t\\t\\t(RTC uses UTC)\"\n\t\t\t\t\"\\n\\t\"\n\t\t\t\t\"-v\\t\\t\\t(verbose messages)\"\n\t\t\t\t\"\\n\\t\"\n\t\t\t\t\"-V\\t\\t\\t(show version)\"\n\t\t\t\t\"\\n\",\n\t\t\t\tprogname);\n\t\t\treturn 1;\n\t\t}\n\t}\n\n\tif (!alarm \u0026\u0026 !seconds) {\n\t\tprintf(\"%s: must provide wake time\\n\", progname);\n\t\tgoto usage;\n\t}\n\n\t/* REVISIT:  if /etc/adjtime exists, read it to see what\n\t * the util-linux version of hwclock assumes.\n\t */\n\tif (rtc_is_utc \u003d\u003d -1) {\n\t\tprintf(\"%s: assuming RTC uses UTC ...\\n\", progname);\n\t\trtc_is_utc \u003d 1;\n\t}\n\n\t/* this RTC must exist and (if we\u0027ll sleep) be wakeup-enabled */\n\tfd \u003d open(devname, O_RDONLY);\n\tif (fd \u003c 0) {\n\t\tperror(devname);\n\t\treturn 1;\n\t}\n\tif (strcmp(suspend, \"on\") !\u003d 0 \u0026\u0026 !may_wakeup(devname)) {\n\t\tprintf(\"%s: %s not enabled for wakeup events\\n\",\n\t\t\t\tprogname, devname);\n\t\treturn 1;\n\t}\n\n\t/* relative or absolute alarm time, normalized to time_t */\n\tif (!get_basetimes(fd))\n\t\treturn 1;\n\tif (verbose)\n\t\tprintf(\"alarm %ld, sys_time %ld, rtc_time %ld, seconds %u\\n\",\n\t\t\t\talarm, sys_time, rtc_time, seconds);\n\tif (alarm) {\n\t\tif (alarm \u003c sys_time) {\n\t\t\tprintf(\"%s: time doesn\u0027t go backward to %s\",\n\t\t\t\t\tprogname, ctime(\u0026alarm));\n\t\t\treturn 1;\n\t\t}\n\t\talarm +\u003d sys_time - rtc_time;\n\t} else\n\t\talarm \u003d rtc_time + seconds + 1;\n\tif (setup_alarm(fd, \u0026alarm) \u003c 0)\n\t\treturn 1;\n\n\tsync();\n\tprintf(\"%s: wakeup from \\\"%s\\\" using %s at %s\",\n\t\t\tprogname, suspend, devname,\n\t\t\tctime(\u0026alarm));\n\tfflush(stdout);\n\tusleep(10 * 1000);\n\n\tif (strcmp(suspend, \"on\") !\u003d 0)\n\t\tsuspend_system(suspend);\n\telse {\n\t\tunsigned long data;\n\n\t\tdo {\n\t\t\tt \u003d read(fd, \u0026data, sizeof data);\n\t\t\tif (t \u003c 0) {\n\t\t\t\tperror(\"rtc read\");\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (verbose)\n\t\t\t\tprintf(\"... %s: %03lx\\n\", devname, data);\n\t\t} while (!(data \u0026 RTC_AF));\n\t}\n\n\tif (ioctl(fd, RTC_AIE_OFF, 0) \u003c 0)\n\t\tperror(\"disable rtc alarm interrupt\");\n\n\tclose(fd);\n\treturn 0;\n}\n\nThis patch:\n\nMake rtc-cmos do the relevant magic so this RTC can wake the system from a\nsleep state.  That magic comes in two basic flavors:\n\n - Straightforward:  enable_irq_wake(), the way it\u0027d work on most SOC chips;\n   or generally with system sleep states which don\u0027t disable core IRQ logic.\n\n - Roundabout, using non-IRQ platform hooks.  This is needed with ACPI and\n   one almost-clone chip which uses a special wakeup-only alarm.  (That\u0027s\n   the RTC used on Footbridge boards, FWIW, which don\u0027t do PM in Linux.)\n\nA separate patch implements those hooks for ACPI platforms, so that rtc_cmos\ncan issue system wakeup events (and its sysfs \"wakealarm\" attribute works on\nat least some systems).\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: Len Brown \u003clenb@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": "cd9662094edf4173e87f0452e57e4eacc228f8ff",
      "tree": "819d487aad05c7e61531bd25e3e7a0d4c08c6616",
      "parents": [
        "7d9f99eccc8f94ace31030a2a7ff73cf5f8c12a0"
      ],
      "author": {
        "name": "David Brownell",
        "email": "david-b@pacbell.net",
        "time": "Tue May 08 00:33:40 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:18 2007 -0700"
      },
      "message": "rtc: remove rest of class_device\n\nFinish converting the RTC framework so it no longer uses class_device.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nAcked-By: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ab6a2d70d18edc7a716ef3127b9e13382faec98c",
      "tree": "6de624dfcbd0181e54e21f1730d2a52ae9822c47",
      "parents": [
        "5726fb2012f0d96153113ddb7f988a0daea587ce"
      ],
      "author": {
        "name": "David Brownell",
        "email": "david-b@pacbell.net",
        "time": "Tue May 08 00:33:30 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:18 2007 -0700"
      },
      "message": "rtc: rtc interfaces don\u0027t use class_device\n\nThis patch removes class_device from the programming interface that the RTC\nframework exposes to the rest of the kernel.  Now an rtc_device is passed,\nwhich is more type-safe and streamlines all the relevant code.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nAcked-By: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5726fb2012f0d96153113ddb7f988a0daea587ce",
      "tree": "27f31cfcc330cc3bc46dcc5297f85080f6f04ab7",
      "parents": [
        "1c710c896eb461895d3c399e15bb5f20b39c9073"
      ],
      "author": {
        "name": "David Brownell",
        "email": "david-b@pacbell.net",
        "time": "Tue May 08 00:33:27 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:18 2007 -0700"
      },
      "message": "rtc: remove /sys/class/rtc-dev/*\n\nThis simplifies the /dev support by removing a superfluous class_device (the\n/sys/class/rtc-dev stuff) and the class_interface that hooks it into the rtc\ncore.  Accordingly, if it\u0027s configured then /dev support is now part of the\nRTC core, and is never a separate module.\n\nIt\u0027s another step towards being able to remove \"struct class_device\".\n\n[bunk@stusta.de: drivers/rtc/rtc-dev.c should #include \"rtc-core.h\"]\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nAcked-By: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.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": "5517d86bea237c1d7078840182d9ebc0fe4c1afc",
      "tree": "67f1999895313878bfa904c66dffb7066f3c8d91",
      "parents": [
        "46cb4b7c88fa5517f64b5bee42939ea3614cddcb"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue May 08 00:32:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:17 2007 -0700"
      },
      "message": "Speed up divides by cpu_power in scheduler\n\nI noticed expensive divides done in try_to_wakeup() and\nfind_busiest_group() on a bi dual core Opteron machine (total of 4 cores),\nmoderatly loaded (15.000 context switch per second)\n\noprofile numbers :\n\nCPU: AMD64 processors, speed 2600.05 MHz (estimated)\nCounted CPU_CLK_UNHALTED events (Cycles outside of halt state) with a unit\nmask of 0x00 (No unit mask) count 50000\nsamples  %        symbol name\n...\n613914    1.0498  try_to_wake_up\n    834  0.0013 :ffffffff80227ae1:   div    %rcx\n77513  0.1191 :ffffffff80227ae4:   mov    %rax,%r11\n\n608893    1.0413  find_busiest_group\n   1841  0.0031 :ffffffff802260bf:       div    %rdi\n140109  0.2394 :ffffffff802260c2:       test   %sil,%sil\n\nSome of these divides can use the reciprocal divides we introduced some\ntime ago (currently used in slab AFAIK)\n\nWe can assume a load will fit in a 32bits number, because with a\nSCHED_LOAD_SCALE\u003d128 value, its still a theorical limit of 33554432\n\nWhen/if we reach this limit one day, probably cpus will have a fast\nhardware divide and we can zap the reciprocal divide trick.\n\nIngo suggested to rename cpu_power to __cpu_power to make clear it should\nnot be modified without changing its reciprocal value too.\n\nI did not convert the divide in cpu_avg_load_per_task(), because tracking\nnr_running changes may be not worth it ?  We could use a static table of 32\nreciprocal values but it would add a conditional branch and table lookup.\n\n[akpm@linux-foundation.org: !SMP build fix]\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "46cb4b7c88fa5517f64b5bee42939ea3614cddcb",
      "tree": "429b8092394974ae787bf0cfaefe5c7b6a1da782",
      "parents": [
        "bdecea3a9282d529b54954f3f1e59877629baba1"
      ],
      "author": {
        "name": "Siddha, Suresh B",
        "email": "suresh.b.siddha@intel.com",
        "time": "Tue May 08 00:32:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:17 2007 -0700"
      },
      "message": "sched: dynticks idle load balancing\n\nFix the process idle load balancing in the presence of dynticks.  cpus for\nwhich ticks are stopped will sleep till the next event wakes it up.\nPotentially these sleeps can be for large durations and during which today,\nthere is no periodic idle load balancing being done.\n\nThis patch nominates an owner among the idle cpus, which does the idle load\nbalancing on behalf of the other idle cpus.  And once all the cpus are\ncompletely idle, then we can stop this idle load balancing too.  Checks added\nin fast path are minimized.  Whenever there are busy cpus in the system, there\nwill be an owner(idle cpu) doing the system wide idle load balancing.\n\nOpen items:\n1. Intelligent owner selection (like an idle core in a busy package).\n2. Merge with rcu\u0027s nohz_cpu_mask?\n\nSigned-off-by: Suresh Siddha \u003csuresh.b.siddha@intel.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.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": "a7e27d5dd396419dc6d6288db6a6d86cf3a94ba5",
      "tree": "d724d785531a6c181b4b78c2fde96b122f07eff6",
      "parents": [
        "635244c59c27d3b22c4523d2a951cf553195a966"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@gentoo.org",
        "time": "Tue May 08 00:32:40 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:16 2007 -0700"
      },
      "message": "sanitize linux/isdn_divertif.h for userspace\n\nthe isdn_divertif contains kernel-only references so I\u0027ve wrapped them in\n__KERNEL__ and add proper #include statements.\n\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nCc: Karsten Keil \u003ckkeil@suse.de\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3a3a51d1f2efe10090cd779a66c4b3c8f57eaf9f",
      "tree": "f87e1158f8d3d578479e1ae1fc45cfa0e48978a2",
      "parents": [
        "1a1c9bb433af252767ee90d6394d287afa30cf8b"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Tue May 08 00:32:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:16 2007 -0700"
      },
      "message": "make drivers/isdn/capi/capiutil.c:cdebbuf_alloc() static\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nAcked-by: Karsten Keil \u003ckkeil@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": "33e34dc6ee2cb2cf2d50e65c5b825d9ebb8b9e66",
      "tree": "965e5feaaa7c7802129205bff03ec5e0982a75ba",
      "parents": [
        "814a8d50eb1d88cedcef97567be53ee0d4512631"
      ],
      "author": {
        "name": "David Brownell",
        "email": "david-b@pacbell.net",
        "time": "Tue May 08 00:32:21 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:16 2007 -0700"
      },
      "message": "SPI kerneldoc\n\nVarious documentation updates for the SPI infrastructure, to clarify things\nthat may not have been clear, to cope with lack of editing, and fix\nomissions.\n\nAlso, plug SPI into the kernel-api DocBook template, and fix all the\nresulting glitches in document generation.\n\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nCc: \"Randy.Dunlap\" \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "814a8d50eb1d88cedcef97567be53ee0d4512631",
      "tree": "edf10598ae95e5729edca3095b60641606b62939",
      "parents": [
        "735ce95e6b9a262d1fbc0ddb5620deb3a29d1067"
      ],
      "author": {
        "name": "Andrea Paterniani",
        "email": "a.paterniani@swapp-eng.it",
        "time": "Tue May 08 00:32:15 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:15 2007 -0700"
      },
      "message": "/dev/spidevB.C interface\n\nAdd a filesystem API for \u003clinux/spi/spi.h\u003e stack.  The initial version of\nthis interface is purely synchronous.\n\ndbrownell@users.sourceforge.net:\n\n Cleaned up, bugfixed; much simplified; added preliminary documentation.\n\n Works with mdev given CONFIG_SYSFS_DEPRECATED; and presumably udev.\n\n Updated SPI_IOC_MESSAGE ioctl to full spi_message semantics, supporting\n groups of one or more transfers (each of which may be full duplex if\n desired).\n\n This is marked as EXPERIMENTAL with an explicit disclaimer that the API\n (notably the ioctls) is subject to change.\n\nSigned-off-by: Andrea Paterniani \u003ca.paterniani@swapp-eng.it\u003e\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "ce0be1273d1473a5a7b57bf0b4995b40c22d6b54"
}
