)]}'
{
  "log": [
    {
      "commit": "c916874d60d9daf2e2d5f4f622b185ef57deb6a4",
      "tree": "e5e939d2d5565ea59089b3b5ba2c6a325c1bd502",
      "parents": [
        "21240f9bc1b0ac925cd18b74618327a110022332"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Tue Nov 15 14:53:11 2011 -0800"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Tue Nov 22 20:21:10 2011 +0000"
      },
      "message": "drivers/gpu/vga/vgaarb.c: add missing kfree\n\nkbuf is a buffer that is local to this function, so all of the error paths\nleaving the function should release it.\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Jesper Juhl \u003cjj@chaosbits.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "f6252114cbb7edabc1c92bf794153922ee0ea46d",
      "tree": "d4fc856af59dc962a7af5117eff0587de97edfbc",
      "parents": [
        "d53dab3ae1a3c6b438738c3792c98ac63f0061f4"
      ],
      "author": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Mon Oct 10 09:29:18 2011 +0100"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Mon Nov 14 10:03:15 2011 +0000"
      },
      "message": "vgaarb: a NULL bridge is acceptable for root devices.\n\nI assumed all PCI buses had a bridge, but playing with qemu recently, I\ndiscovered vgaarb bug where it wasn\u0027t detecting both devices shared a bridge\nat the root level.\n\nDon\u0027t check for NULL, if two buses have a NULL bridge, assume they share the\nroot bus.\n\nAcked-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "f35119d6681300ba6d76da53cb1ebc2eed62e77a",
      "tree": "0dfd0d1bf9acf3e48791059b50bc68fff01c4db9",
      "parents": [
        "f1c93e4946ae1cc268729451de6335a7e7d2bea9"
      ],
      "author": {
        "name": "Rakib Mullick",
        "email": "rakib.mullick@gmail.com",
        "time": "Mon Jul 25 17:12:56 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 20:57:13 2011 -0700"
      },
      "message": "drivers: use kzalloc/kcalloc instead of \u0027kmalloc+memset\u0027, where possible\n\nSigned-off-by: Rakib Mullick \u003crakib.mullick@gmail.com\u003e\nCc: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nCc: David Airlie \u003cairlied@linux.ie\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "98b98d316349e9a028e632629fe813d07fa5afdd",
      "tree": "caaf6a662a86c5e2a418f0929ca05f0748803ac5",
      "parents": [
        "0d66cba1ac3ad38614077443d604d6a09cec99de",
        "931474c4c30633400ff0dff8fb452ae20e01d067"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 24 12:06:40 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 24 12:06:40 2011 -0700"
      },
      "message": "Merge branch \u0027drm-core-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6\n\n* \u0027drm-core-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (169 commits)\n  drivers/gpu/drm/radeon/atom.c: fix warning\n  drm/radeon/kms: bump kms version number\n  drm/radeon/kms: properly set num banks for fusion asics\n  drm/radeon/kms/atom: move dig phy init out of modesetting\n  drm/radeon/kms/cayman: fix typo in register mask\n  drm/radeon/kms: fix typo in spread spectrum code\n  drm/radeon/kms: fix tile_config value reported to userspace on cayman.\n  drm/radeon/kms: fix incorrect comparison in cayman setup code.\n  drm/radeon/kms: add wait idle ioctl for eg-\u003ecayman\n  drm/radeon/cayman: setup hdp to invalidate and flush when asked\n  drm/radeon/evergreen/btc/fusion: setup hdp to invalidate and flush when asked\n  agp/uninorth: Fix lockups with radeon KMS and \u003e1x.\n  drm/radeon/kms: the SS_Id field in the LCD table if for LVDS only\n  drm/radeon/kms: properly set the CLK_REF bit for DCE3 devices\n  drm/radeon/kms: fixup eDP connector handling\n  drm/radeon/kms: bail early for eDP in hotplug callback\n  drm/radeon/kms: simplify hotplug handler logic\n  drm/radeon/kms: rewrite DP handling\n  drm/radeon/kms/atom: add support for setting DP panel mode\n  drm/radeon/kms: atombios.h updates for DP panel mode\n  ...\n"
    },
    {
      "commit": "a67b8887ced9d54cab7759bdb19deafed37481eb",
      "tree": "87ad4a1f9f2b5fd48d820949c827fea7264fa885",
      "parents": [
        "3a8ab79eae4500e6ac618a92a90cee63d6e804a8"
      ],
      "author": {
        "name": "Florian Mickler",
        "email": "florian@mickler.org",
        "time": "Sun May 15 16:32:50 2011 +0200"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Mon May 16 08:57:04 2011 +1000"
      },
      "message": "vga_switcheroo: don\u0027t toggle-switch devices\n\nIf the requested device is already active, ignore the request.\n\nThis restores the original behaviour of the interface. The change was\nprobably an unintended side effect of\n\ncommit 66b37c6777c4 vga_switcheroo: split switching into two stages\n\nwhich did not take into account to duplicate the !active check in the split-off\nstage2.\n\nFix this by factoring that check out of stage1 into the debugfs_write routine.\n\nReferences: https://bugzilla.kernel.org/show_bug.cgi?id\u003d34252\nReported-by: Igor Murzov \u003ce-mail@date.by\u003e\nTested-by: Igor Murzov \u003ce-mail@date.by\u003e\nSigned-off-by: Florian Mickler \u003cflorian@mickler.org\u003e\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "3448a19da479b6bd1e28e2a2be9fa16c6a6feb39",
      "tree": "b69bfa9e71e46c8c7470cbdf49de8530227d6687",
      "parents": [
        "8116188fdef5946bcbb2d73e41d7412a57ffb034"
      ],
      "author": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Tue Jun 01 15:32:24 2010 +1000"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Wed May 04 13:38:46 2011 +1000"
      },
      "message": "vgaarb: use bridges to control VGA routing where possible.\n\nSo in a lot of modern systems, a GPU will always be below a parent bridge that won\u0027t share with any other GPUs. This means VGA arbitration on those GPUs can be controlled by using the bridge routing instead of io/mem decodes.\n\nThe problem is locating which GPUs share which upstream bridges. This patch attempts to identify all the GPUs which can be controlled via bridges, and ones that can\u0027t. This patch endeavours to work out the bridge sharing semantics.\n\nWhen disabling GPUs via a bridge, it doesn\u0027t do irq callbacks or touch the io/mem decodes for the gpu.\n\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "d4a3b10c16a1bdb09483233bd7aeac684ccc160a",
      "tree": "025bda468b9857e67a093204dc467fc5a3570d09",
      "parents": [
        "508c8d60bd08640db39146edbbfdbf01a802163d"
      ],
      "author": {
        "name": "Alex Williamson",
        "email": "alex.williamson@redhat.com",
        "time": "Sun May 01 18:49:33 2011 -0600"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Wed May 04 13:46:01 2011 +1000"
      },
      "message": "vga_switcheroo: Remove unbalanced pci_enable_device\n\nThis is unbalanced and probably more fitting for the client\nto take care of.  Remove it.\n\nSigned-off-by: Alex Williamson \u003calex.williamson@redhat.com\u003e\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "8a327f23e23fa509e6e3c2263ae1cc0a67dec387",
      "tree": "119abf09e1ec9babaf78e6889187f9d54864b118",
      "parents": [
        "5a9a8d1a99c617df82339456fbdd30d6ed3a856b",
        "d315777b32a4696feb86f2a0c9e9f39c94683649"
      ],
      "author": {
        "name": "Chris Wilson",
        "email": "chris@chris-wilson.co.uk",
        "time": "Sun Jan 23 17:22:16 2011 +0000"
      },
      "committer": {
        "name": "Chris Wilson",
        "email": "chris@chris-wilson.co.uk",
        "time": "Mon Jan 24 18:27:32 2011 +0000"
      },
      "message": "Merge remote branch \u0027linus/master\u0027 into drm-intel-fixes\n\nMerge with Linus to resolve conflicting fixes for the reusing the stale\nHEAD value during intel_ring_wait().\n\nConflicts:\n\tdrivers/gpu/drm/i915/intel_ringbuffer.c\n"
    },
    {
      "commit": "934f992c763ae1e5eefcce8af769c16444085df7",
      "tree": "782f06fc0cf77813499d3d77e47a23c0f613625e",
      "parents": [
        "076e2c0eb83f1a0e2e7d0ae1e4d4c0f7b13f1f64"
      ],
      "author": {
        "name": "Chris Wilson",
        "email": "chris@chris-wilson.co.uk",
        "time": "Thu Jan 20 13:09:12 2011 +0000"
      },
      "committer": {
        "name": "Chris Wilson",
        "email": "chris@chris-wilson.co.uk",
        "time": "Sun Jan 23 12:52:16 2011 +0000"
      },
      "message": "drm/i915: Recognise non-VGA display devices\n\nStarting with SandyBridge (though possible with earlier hacked BIOSes),\nthe BIOS may initialise the IGFX as secondary to a discrete GPU. Prior,\nit would simply disable the integrated GPU. So we adjust our PCI class\nmask to match any DISPLAY_CLASS device.\n\nIn such a configuration, the IGFX is not a primary VGA controller and\nso should not take part in VGA arbitration, and the error return from\nvga_client_register() is expected.\n\nSigned-off-by: Chris Wilson \u003cchris@chris-wilson.co.uk\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "6a108a14fa356ef607be308b68337939e56ea94e",
      "tree": "1bf260572bd8f95ed867307a2bcf5d881c8ae4a6",
      "parents": [
        "12fcdba1b7ae8b25696433f420b775aeb556d89b"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Thu Jan 20 14:44:16 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 20 17:02:05 2011 -0800"
      },
      "message": "kconfig: rename CONFIG_EMBEDDED to CONFIG_EXPERT\n\nThe meaning of CONFIG_EMBEDDED has long since been obsoleted; the option\nis used to configure any non-standard kernel with a much larger scope than\nonly small devices.\n\nThis patch renames the option to CONFIG_EXPERT in init/Kconfig and fixes\nreferences to the option throughout the kernel.  A new CONFIG_EMBEDDED\noption is added that automatically selects CONFIG_EXPERT when enabled and\ncan be used in the future to isolate options that should only be\nconsidered for embedded systems (RISC architectures, SLOB, etc).\n\nCalling the option \"EXPERT\" more accurately represents its intention: only\nexpert users who understand the impact of the configuration changes they\nare making should enable it.\n\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: David Woodhouse \u003cdavid.woodhouse@intel.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Greg KH \u003cgregkh@suse.de\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Robin Holt \u003cholt@sgi.com\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": "fea6f330cdd18f79d50bcdfbedb96d929a173e0d",
      "tree": "9ea6e24eb96ea58b1db44b2e6c942278b2305aec",
      "parents": [
        "dfe63bb0ad9810db13aab0058caba97866e0a681"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Fri Jan 07 08:12:27 2011 +0300"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Fri Jan 07 15:29:37 2011 +1000"
      },
      "message": "vga_switcheroo: comparing too few characters in strncmp()\n\nThis is a copy-and-paste bug.  We should be comparing 4 characters here\ninstead of 3.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "66b37c6777c4686f121fe4a83176e535a7f4b1af",
      "tree": "9fcea9832dd3a9a349e1ea001e1038bbb1148440",
      "parents": [
        "5bcf719b7db0f9366cedaf102b081f99b1c325ae"
      ],
      "author": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Tue Dec 07 14:24:25 2010 +1000"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Wed Jan 05 13:45:46 2011 +1000"
      },
      "message": "vga_switcheroo: split switching into two stages.\n\nstage 1: turn card on, switch boot vga pointer.\nstage 2: switch fbs, switch mux and power off old card.\n\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "8d608aa6295242fe4c4b6105b8c59c6a5b232d89",
      "tree": "89205a1d839b0b002ec58d7988c2bebea7d8efc8",
      "parents": [
        "d1fbd923da0f982f12b61a44e74c2e1f74c6ef56"
      ],
      "author": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Tue Dec 07 08:57:57 2010 +1000"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Wed Jan 05 13:44:07 2011 +1000"
      },
      "message": "vga_switcheroo: add reprobe hook for fbcon to recheck connected outputs.\n\nThis adds a hook after the mux is switched for the driver to reprobe\nthe connected outputs.\n\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "851ab954daee0d8328e239a468835e36e6215182",
      "tree": "eb179d7340780843e7a9853232691e05228d5947",
      "parents": [
        "5cfb3c3a1013e7fca54c3624871755cdfd960b3b"
      ],
      "author": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Mon Dec 06 12:35:52 2010 +1000"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Wed Jan 05 13:43:15 2011 +1000"
      },
      "message": "vga_switcheroo: add debugging mux switch option.\n\nThis allows the mux to be switched from userspace using MIGD/MDIS\ncommand to the switch.\n\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "5cfb3c3a1013e7fca54c3624871755cdfd960b3b",
      "tree": "eefe3260161c4ada9988e18bb9d8b49626bc0947",
      "parents": [
        "6c2df40ec00e52a5fb0c691b0e79324b9015aaa4"
      ],
      "author": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Mon Dec 06 12:31:50 2010 +1000"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Wed Jan 05 13:43:05 2011 +1000"
      },
      "message": "vga_switcheroo: make power switch handler optional\n\nAt least on the nvidia mux the power switch seems to be executed\nby the ACPI PS0/PS3 methods so need to do it explicitly.\n\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "6c2df40ec00e52a5fb0c691b0e79324b9015aaa4",
      "tree": "3e8b3a425304f1ae2856623359e1438a84c5e0d8",
      "parents": [
        "17db7042b7ff77a4ae8b83ab42ec8286a9715a48"
      ],
      "author": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Mon Dec 06 12:30:31 2010 +1000"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Wed Jan 05 13:42:59 2011 +1000"
      },
      "message": "vga_switcheroo: print the IGD/DIS flag in the debugfs output.\n\nWe really want to see this so we can confirm that we pick the right one.\n\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "092e0e7e520a1fca03e13c9f2d157432a8657ff2",
      "tree": "451897252c4c08c4b5a8ef535da156f1e817e80b",
      "parents": [
        "79f14b7c56d3b3ba58f8b43d1f70b9b71477a800",
        "776c163b1b93c8dfa5edba885bc2bfbc2d228a5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "message": "Merge branch \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:\n  vfs: make no_llseek the default\n  vfs: don\u0027t use BKL in default_llseek\n  llseek: automatically add .llseek fop\n  libfs: use generic_file_llseek for simple_attr\n  mac80211: disallow seeks in minstrel debug code\n  lirc: make chardev nonseekable\n  viotape: use noop_llseek\n  raw: use explicit llseek file operations\n  ibmasmfs: use generic_file_llseek\n  spufs: use llseek in all file operations\n  arm/omap: use generic_file_llseek in iommu_debug\n  lkdtm: use generic_file_llseek in debugfs\n  net/wireless: use generic_file_llseek in debugfs\n  drm: use noop_llseek\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "201ba4c43214c6c386cff66b33efb612b6260ba2",
      "tree": "a05eeb5983a5d0574916476645f1793f8750d82a",
      "parents": [
        "4417d7f60218d838158f1f85eab5e9ca8d1aa92e"
      ],
      "author": {
        "name": "Daniel J Blueman",
        "email": "daniel.blueman@gmail.com",
        "time": "Wed Sep 22 18:05:35 2010 +0100"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Fri Sep 24 10:13:44 2010 +1000"
      },
      "message": "vgaarb: trivial fix\n\nCorrect function being needlessly visible outside compilation unit\nwhen the only users are internal.\n\nSigned-off-by: Daniel J Blueman \u003cdaniel.blueman@gmail.com\u003e\nReviewed-by: Alex Deucher \u003calexdeucher@gmail.com\u003e\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "c0db9cbc73338d8e2987a19a02388d67aeec0bfe",
      "tree": "e298c03a1c8c146208bdbde73c29db06dd6b93ac",
      "parents": [
        "2d6e9b91971034103ac51b20fa692258bf6bdd40"
      ],
      "author": {
        "name": "Tiago Vignatti",
        "email": "tiago.vignatti@nokia.com",
        "time": "Mon May 24 18:24:31 2010 +0300"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Thu Jun 03 13:13:34 2010 +1000"
      },
      "message": "vgaarb: use MIT license\n\nSigned-off-by: Tiago Vignatti \u003ctiago.vignatti@nokia.com\u003e\nCc: Henry Zhao \u003cHenry.Zhao@Sun.COM\u003e\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "2d6e9b91971034103ac51b20fa692258bf6bdd40",
      "tree": "5776999a2fd3d4eb190efa2a6c73d32af5612c53",
      "parents": [
        "ce04cc089b22862f7d6ad5aa3ada0dd07e41b833"
      ],
      "author": {
        "name": "Tiago Vignatti",
        "email": "tiago.vignatti@nokia.com",
        "time": "Mon May 24 18:24:30 2010 +0300"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Thu Jun 03 13:13:33 2010 +1000"
      },
      "message": "vgaarb: convert pr_devel() to pr_debug()\n\nWe want to be able to use CONFIG_DYNAMIC_DEBUG in arbiter code, switch\nthe few existing pr_devel() calls to pr_debug().\n\nAlso, add one more debug information regarding decoding count.\n\nSigned-off-by: Tiago Vignatti \u003ctiago.vignatti@nokia.com\u003e\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "05ea893c46805b2981ea8ba6df881e3d65edd63b",
      "tree": "ea381e22d99f49bd2c95238f88491d48b797a17b",
      "parents": [
        "26481fb15644b5fd85d4cea020f74a234cdf6803",
        "a7c542782e92f9487c62a571565637be3d6b0ffd"
      ],
      "author": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Wed May 19 09:35:51 2010 +1000"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Wed May 19 09:35:51 2010 +1000"
      },
      "message": "Merge remote branch \u0027anholt/drm-intel-next\u0027 into drm-next\n\n* anholt/drm-intel-next: (515 commits)\n  drm/i915: Fix out of tree builds\n  drm/i915: move fence lru to struct drm_i915_fence_reg\n  drm/i915: don\u0027t allow tiling changes on pinned buffers v2\n  drm/i915: Be extra careful about A/D matching for multifunction SDVO\n  drm/i915: Fix DDC bus selection for multifunction SDVO\n  drm/i915: cleanup mode setting before unmapping registers\n  drm/i915: Make fbc control wrapper functions\n  drm/i915: Wait for the GPU whilst shrinking, if truly desperate.\n  drm/i915: Use spatio-temporal dithering on PCH\n  [MTD] Remove zero-length files mtdbdi.c and internal.ho\n  pata_pcmcia / ide-cs: Fix bad hashes for Transcend and kingston IDs\n  libata: Fix several inaccuracies in developer\u0027s guide\n  slub: Fix bad boundary check in init_kmem_cache_nodes()\n  raid6: fix recovery performance regression\n  KEYS: call_sbin_request_key() must write lock keyrings before modifying them\n  KEYS: Use RCU dereference wrappers in keyring key type code\n  KEYS: find_keyring_by_name() can gain access to a freed keyring\n  ALSA: hda: Fix 0 dB for Packard Bell models using Conexant CX20549 (Venice)\n  ALSA: hda - Add quirk for Dell Inspiron 19T using a Conexant CX20582\n  ALSA: take tu-\u003eqlock with irqs disabled\n  ...\n"
    },
    {
      "commit": "ca117d6df95a8f809d37d74c2d715ec3c8c3a4ed",
      "tree": "5abe1973bc95e53224fcdd6750e037e0001c05c4",
      "parents": [
        "0bcad4c95eb4a017029ab82c2c9dee4198503aef"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Mon May 17 10:54:04 2010 -0700"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Tue May 18 15:55:31 2010 +1000"
      },
      "message": "vga: fix kconfig text typos\n\nFix typos in vga/Kconfig file\nand use GPU (upper case) consistently.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: dri-devel@lists.freedesktop.org\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "7ebd467551ed6ae200d7835a84bbda0dcadaa511",
      "tree": "e288bedf1bc4be63b7970efa21353d462398078c",
      "parents": [
        "d7526f271f2111684211fc7d27814e86a36336c9",
        "68b3adb429e0abf5c0a3deb75d71671436b3af10"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 04 19:08:12 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 04 19:08:12 2010 -0700"
      },
      "message": "Merge branch \u0027drm-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6\n\n* \u0027drm-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:\n  drm/radeon/kms/legacy: only enable load detection property on DVI-I\n  drm/radeon/kms: fix panel scaling adjusted mode setup\n  drivers/gpu/drm/drm_sysfs.c: sysfs files error handling\n  drivers/gpu/drm/radeon/radeon_atombios.c: range check issues\n  gpu: vga_switcheroo, fix lock imbalance\n  drivers/gpu/drm/drm_memory.c: fix check for end of loop\n  drivers/gpu/drm/via/via_video.c: fix off by one issue\n  drm/radeon/kms/agp The wrong AGP chipset can cause a NULL pointer dereference\n  drm/radeon/kms: r300 fix CS checker to allow zbuffer-only fastfill\n"
    },
    {
      "commit": "8c88e50bcf7f9f7e1b4987aaac3dfacc3ac6bd24",
      "tree": "c10e68f52a3fc35bf46ba24bf433d244934bbf5e",
      "parents": [
        "404b017d00a9f472bdf725a06892d42f1cba5ed8"
      ],
      "author": {
        "name": "Jiri Slaby",
        "email": "jslaby@suse.cz",
        "time": "Tue Apr 27 14:11:03 2010 -0700"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Wed Apr 28 18:41:52 2010 +1000"
      },
      "message": "gpu: vga_switcheroo, fix lock imbalance\n\nStanse found that one error path in vga_switcheroo_debugfs_write omits to\nunlock vgasr_mutex.  Fix that.\n\nSigned-off-by: Jiri Slaby \u003cjslaby@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "03a2c4d76c9e99b80d74ab8a4f344e135a5ae44b",
      "tree": "7fd7940a4f87dc1ace1c1bdeb1fb0d90ac3beb13",
      "parents": [
        "a27341cd5fcb7cf2d2d4726e9f324009f7162c00",
        "d424b925f7092b9d95e0a8556872349abe79d9b6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 04 07:49:37 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 04 07:49:37 2010 -0800"
      },
      "message": "Merge branch \u0027drm-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6\n\n* \u0027drm-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (151 commits)\n  vga_switcheroo: disable default y by new rules.\n  drm/nouveau: fix *staging* driver build with switcheroo off.\n  drm/radeon: fix typo in Makefile\n  vga_switcheroo: fix build on platforms with no ACPI\n  drm/radeon: Fix printf type warning in 64bit system.\n  drm/radeon/kms: bump the KMS version number for square tiling support.\n  vga_switcheroo: initial implementation (v15)\n  drm/radeon/kms: do not disable audio engine twice\n  Revert \"drm/radeon/kms: disable HDMI audio for now on rv710/rv730\"\n  drm/radeon/kms: do not preset audio stuff and start timer when not using audio\n  drm/radeon: r100/r200 ums: block ability for userspace app to trash 0 page and beyond\n  drm/ttm: fix function prototype to match implementation\n  drm/radeon: use ALIGN instead of open coding it\n  drm/radeon/kms: initialize set_surface_reg reg for rs600 asic\n  drm/i915: Use a dmi quirk to skip a broken SDVO TV output.\n  drm/i915: enable/disable LVDS port at DPMS time\n  drm/i915: check for multiple write domains in pin_and_relocate\n  drm/i915: clean-up i915_gem_flush_gpu_write_domain\n  drm/i915: reuse i915_gpu_idle helper\n  drm/i915: ensure lru ordering of fence_list\n  ...\n\nFixed trivial conflicts in drivers/gpu/vga/Kconfig\n"
    },
    {
      "commit": "d424b925f7092b9d95e0a8556872349abe79d9b6",
      "tree": "a83742bb135b543389342daaddff8252211995ce",
      "parents": [
        "2f41a7f11c4bb93c41715008a693cadaee5efd82"
      ],
      "author": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Wed Mar 03 09:26:35 2010 +1000"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Wed Mar 03 09:26:35 2010 +1000"
      },
      "message": "vga_switcheroo: disable default y by new rules.\n\nAnother undocumented rule of kernel folklore, no default y\nconfig options anymore, apparantly hinting to distros they might\nwant something isn\u0027t preferred anymore.\n\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "8edb381d6705811b278527907a5ae2a9c4db8074",
      "tree": "3e9c0c6474eba65cfafc2652c49be002ae76a493",
      "parents": [
        "55a5cb5d594c18b3147a2288b00ea359c1a38cf8"
      ],
      "author": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Mon Mar 01 21:50:01 2010 +1100"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@ppcg5.localdomain",
        "time": "Mon Mar 01 22:21:58 2010 +1100"
      },
      "message": "vga_switcheroo: fix build on platforms with no ACPI\n\nradeon was always including the atpx code unnecessarily, also core\nswitcheroo was including acpi headers.\n\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "6a9ee8af344e3bd7dbd61e67037096cdf7f83289",
      "tree": "07cdb493a790cf45bc473f2fc2ea1b9a166d5191",
      "parents": [
        "9fd1de52945e06ed88a440c99ca92dab74b9b33c"
      ],
      "author": {
        "name": "Dave Airlie",
        "email": "airlied@linux.ie",
        "time": "Mon Feb 01 15:38:10 2010 +1000"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Mon Mar 01 16:20:37 2010 +1000"
      },
      "message": "vga_switcheroo: initial implementation (v15)\n\nMany new laptops now come with 2 gpus, one to be used for low power\nmodes and one for gaming/on-ac applications. These GPUs are typically\nwired to the laptop panel and VGA ports via a multiplexer unit which\nis controlled via ACPI methods.\n\n4 combinations of systems typically exist - with 2 ACPI methods.\nIntel/ATI - Lenovo W500/T500 - use ATPX ACPI method\nATI/ATI - some ASUS - use ATPX ACPI Method\nIntel/Nvidia - - use _DSM ACPI method\nNvidia/Nvidia -  - use _DSM ACPI method.\n\nTODO:\nThis patch adds support for the ATPX method and initial bits\nfor the _DSM methods that need to written by someone with\naccess to the hardware.\nAdd a proper non-debugfs interface - need to get some proper\ntesting first.\n\nv2: add power up/down support for both devices\non W500 puts i915/radeon into D3 and cuts power to radeon.\n\nv3: redo probing methods, no DMI list, drm devices call to\nregister with switcheroo, it tries to find an ATPX method on\nany device and once there is two devices + ATPX it inits the\nswitcher.\n\nv4: ATPX msg handling using buffers - should work on more machines\n\nv5: rearchitect after more mjg59 discussion - move ATPX handling to\n    radeon driver.\n\nv6: add file headers + initial nouveau bits (to be filled out).\n\nv7: merge delayed switcher code.\n\nv8: avoid suspend/resume of gpu that is off\n\nv9: rearchitect - mjg59 is always right. - move all ATPX code to\nradeon, should allow simpler DSM also proper ATRM handling\n\nv10: add ATRM support for radeon BIOS, add mutex to lock vgasr_priv\n\nv11: fix bug in resuming Intel for 2nd time.\n\nv12: start fixing up nvidia code blindly.\n\nv13: blindly guess at finishing nvidia code\n\nv14: remove radeon audio hacks - fix up intel resume more like upstream\n\nv15: clean up printks + remove unnecessary igd/dis pointers\n\nmount debugfs\n\n/sys/kernel/debug/vgaswitcheroo/switch - should exist if ATPX detected\n + 2 cards.\n\nDIS - immediate change to discrete\nIGD - immediate change to IGD\nDDIS - delayed change to discrete\nDIGD - delayed change to IGD\nON - turn on not in use\nOFF - turn off not in use\n\nTested on W500 (Intel/ATI) and T500 (Intel/ATI)\n\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "c7e15899d07c9813c1aa96b21699d2d9c8314c4b",
      "tree": "16e9b4dceddf1b4d1dad05588d700c70cf8fcb88",
      "parents": [
        "f6a0b5cd34d6e922cc7258c5429fb0f17508ceb6",
        "78c06176466cbd1b3f0f67709d3023c40dbebcbd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Feb 28 10:59:18 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Feb 28 10:59:18 2010 -0800"
      },
      "message": "Merge branch \u0027x86-pci-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027x86-pci-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86: Enable NMI on all cpus on UV\n  vgaarb: Add user selectability of the number of GPUS in a system\n  vgaarb: Fix VGA arbiter to accept PCI domains other than 0\n  x86, uv: Update UV arch to target Legacy VGA I/O correctly.\n  pci: Update pci_set_vga_state() to call arch functions\n"
    },
    {
      "commit": "2cc9116c2b37c525965d76a3e6def38913259427",
      "tree": "16d5540bae7da373a52efd179c094f5cfc80c472",
      "parents": [
        "6b15835282f9c6a023e2625455bfdb822bb9cc64"
      ],
      "author": {
        "name": "Kyle McMartin",
        "email": "kyle@redhat.com",
        "time": "Tue Feb 16 16:18:37 2010 -0500"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Sat Feb 20 07:28:04 2010 +1000"
      },
      "message": "vgaarb: fix \"target\u003ddefault\" passing\n\nCommit 77c1ff3982c6b36961725dd19e872a1c07df7f3b fixed the userspace\npointer dereference, but introduced another bug pointed out by Eugene Teo\nin RH bug #564264. Instead of comparing the point we were at in the string,\nwe instead compared the beginning of the string to \"default\".\n\nSigned-off-by: Kyle McMartin \u003ckyle@redhat.com\u003e\nReported-by: Eugene Teo \u003ceteo@redhat.com\u003e\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "77c1ff3982c6b36961725dd19e872a1c07df7f3b",
      "tree": "679ddde451763655c6594ae18afa58fcfc7339b1",
      "parents": [
        "0a4583eb98af3fad7a8ab7d4915bd3ae179618c3"
      ],
      "author": {
        "name": "Andy Getzendanner",
        "email": "james.getzendanner@students.olin.edu",
        "time": "Thu Feb 11 14:04:48 2010 +1000"
      },
      "committer": {
        "name": "Dave Airlie",
        "email": "airlied@redhat.com",
        "time": "Thu Feb 11 14:04:48 2010 +1000"
      },
      "message": "vgaarb: fix incorrect dereference of userspace pointer.\n\nThis patch corrects a userspace pointer dereference in the VGA arbiter\nin 2.6.32.1.\n\ncopy_from_user() is used at line 822 to copy the contents of buf into\nkbuf, but a call to strncmp() on line 964 uses buf rather than kbuf.  This\nproblem led to a GPF in strncmp() when X was started on my x86_32 systems.\n X triggered the behavior with a write of \"target PCI:0000:01:00.0\" to\n/dev/vga_arbiter.\n\nThe patch has been tested against 2.6.32.1 and observed to correct the GPF\nobserved when starting X or manually writing the string \"target\nPCI:0000:01:00.0\" to /dev/vga_arbiter.\n\nSigned-off-by: Andy Getzendanner \u003cjames.getzendanner@students.olin.edu\u003e\nCc: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\n"
    },
    {
      "commit": "36028f3383872eefb558a4aae4c12ec2b5fa640f",
      "tree": "c6716b619537d54991d17bd4296f9e3bd194086e",
      "parents": [
        "773a38dbdad03474c5ee235f7d9bf9f51c9e3c2b"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Tue Feb 02 17:45:01 2010 -0800"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Fri Feb 05 15:02:47 2010 -0800"
      },
      "message": "vgaarb: Add user selectability of the number of GPUS in a system\n\nUpdate the VGA Arbiter to allow the user to select the number\nof GPU\u0027s supported in a system.\n\nv2: simplify setting of MAX_USER_CARDS, revert back to original default of 16\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nLKML-Reference: \u003c4B68D51D.6090401@sgi.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Robin Holt \u003cholt@sgi.com\u003e\nCc: Jack Steiner \u003csteiner@sgi.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\nCc: David Airlie \u003cairlied@linux.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n"
    },
    {
      "commit": "773a38dbdad03474c5ee235f7d9bf9f51c9e3c2b",
      "tree": "0ae8953a3ad092f9294f51de0f6b3f2c48d1a0ef",
      "parents": [
        "841582ea9e29a8f757c30c5377ce649586ba793a"
      ],
      "author": {
        "name": "Mike Travis",
        "email": "travis@sgi.com",
        "time": "Tue Feb 02 14:38:15 2010 -0800"
      },
      "committer": {
        "name": "H. Peter Anvin",
        "email": "hpa@zytor.com",
        "time": "Fri Feb 05 14:05:41 2010 -0800"
      },
      "message": "vgaarb: Fix VGA arbiter to accept PCI domains other than 0\n\nUpdate the VGA Arbiter to accept PCI Domains other than 0.\n\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nLKML-Reference: \u003c201002022238.o12McFe8018730@imap1.linux-foundation.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Robin Holt \u003cholt@sgi.com\u003e\nCc: Jack Steiner \u003csteiner@sgi.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\nCc: David Airlie \u003cairlied@linux.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n"
    },
    {
      "commit": "6ac3bd527007eeecb148b67ca47b21731fd8a503",
      "tree": "bce4a885075a26bf0980956017f9ff2c79c2703b",
      "parents": [
        "6e19314cc98ab9ccc22c30d1c414984ac6de5ce2"
      ],
      "author": {
        "name": "Dave Airlie",
        "email": "airlied@linux.ie",
        "time": "Wed Aug 19 15:21:57 2009 +1000"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Sep 09 13:29:41 2009 -0700"
      },
      "message": "PCI/vgaarb: cleanup some warnings + cleanup some comments.\n\nFix some warnings reported in linux-next + also cleanup some\ncomment errors noticed by Pekka Paalanen.\n\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    },
    {
      "commit": "deb2d2ecd43dfc51efe71eed7128fda514da96c6",
      "tree": "ba05339620bc285265f88d2c7c43df5fc25b732c",
      "parents": [
        "500559a92dd36af7cee95ed2f5b7722fb95a82e7"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Tue Aug 11 15:52:06 2009 +1000"
      },
      "committer": {
        "name": "Jesse Barnes",
        "email": "jbarnes@virtuousgeek.org",
        "time": "Wed Sep 09 13:29:36 2009 -0700"
      },
      "message": "PCI/GPU: implement VGA arbitration on Linux\n\nBackground:\nGraphic devices are accessed through ranges in I/O or memory space. While most\nmodern devices allow relocation of such ranges, some \"Legacy\" VGA devices\nimplemented on PCI will typically have the same \"hard-decoded\" addresses as\nthey did on ISA. For more details see \"PCI Bus Binding to IEEE Std 1275-1994\nStandard for Boot (Initialization Configuration) Firmware Revision 2.1\"\nSection 7, Legacy Devices.\n\nThe Resource Access Control (RAC) module inside the X server currently does\nthe task of arbitration when more than one legacy device co-exists on the same\nmachine. But the problem happens when these devices are trying to be accessed\nby different userspace clients (e.g. two server in parallel). Their address\nassignments conflict. Therefore an arbitration scheme _outside_ of the X\nserver is needed to control the sharing of these resources. This document\nintroduces the operation of the VGA arbiter implemented for Linux kernel.\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Tiago Vignatti \u003ctiago.vignatti@nokia.com\u003e\nSigned-off-by: Dave Airlie \u003cairlied@redhat.com\u003e\nSigned-off-by: Jesse Barnes \u003cjbarnes@virtuousgeek.org\u003e\n"
    }
  ]
}
