)]}'
{
  "log": [
    {
      "commit": "9626f1f117be21b6e4b7a1cb49814fc065dd3d2d",
      "tree": "259ba0c9362924d1a7e21a6befcc43e23f9fa9d5",
      "parents": [
        "4c06be10c790008aa2b2d19df2872ff39990b7bd"
      ],
      "author": {
        "name": "Bjorn Helgaas",
        "email": "bjorn.helgaas@hp.com",
        "time": "Wed Nov 14 16:59:57 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Nov 14 18:45:41 2007 -0800"
      },
      "message": "rtc: fall back to requesting only the ports we actually use\n\nFirmware like PNPBIOS or ACPI can report the address space consumed by the\nRTC.  The actual space consumed may be less than the size (RTC_IO_EXTENT)\nassumed by the RTC driver.\n\nThe PNP core doesn\u0027t request resources yet, but I\u0027d like to make it do so.\nIf/when it does, the RTC_IO_EXTENT request may fail, which prevents the RTC\ndriver from loading.\n\nSince we only use the RTC index and data registers at RTC_PORT(0) and\nRTC_PORT(1), we can fall back to requesting just enough space for those.\n\nIf the PNP core requests resources, this results in typical I/O port usage\nlike this:\n\n    0070-0073 : 00:06\t\t\u003c-- PNP device 00:06 responds to 70-73\n      0070-0071 : rtc\t\t\u003c-- RTC driver uses only 70-71\n\ninstead of the current:\n\n    0070-0077 : rtc\t\t\u003c-- RTC_IO_EXTENT \u003d\u003d 8\n\nSigned-off-by: Bjorn Helgaas \u003cbjorn.helgaas@hp.com\u003e\nCc: Alessandro Zummo \u003ca.zummo@towertech.it\u003e\nCc: David Brownell \u003cdavid-b@pacbell.net\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\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": "7be2c7c96aff2871240d61fef508c41176c688b5",
      "tree": "37d39d2869b99021d0157f2ac3982a03901e0943",
      "parents": [
        "f1f8810cf48dd88ee70e974924f2dd76e5669dd5"
      ],
      "author": {
        "name": "David Brownell",
        "email": "david-b@pacbell.net",
        "time": "Sat Feb 10 01:46:02 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:32 2007 -0800"
      },
      "message": "[PATCH] RTC framework driver for CMOS RTCs\n\nThis is an \"RTC framework\" driver for the \"CMOS\" RTCs which are standard on\nPCs and some other platforms.  That\u0027s MC146818 compatible silicon.\nAdvantages of this vs.  drivers/char/rtc.c (use one _or_ the other, only\none will be able to claim the RTC irq) include:\n\n - This leverages both the new RTC framework and the driver model; both\n   PNPACPI and platform device modes are supported.  (A separate patch\n   creates a platform device on PCs where PNPACPI isn\u0027t configured.)\n\n - It supports common extensions like longer alarms.  (A separate patch\n   exports that information from ACPI through platform_data.)\n\n - Likewise, system wakeup events use \"real driver model support\", with\n   policy control via sysfs \"wakeup\" attributes and and using normal rtc\n   ioctls to manage wakeup.  (Patch in the works.  The ACPI hooks are\n   known; /proc/acpi/alarm can vanish.  Making it work with EFI will\n   be a minor challenge to someone with e.g. a MiniMac.)\n\nIt\u0027s not yet been tested on non-x86 systems, without ACPI, or with HPET.\nAnd the RTC framework will surely have teething pains on \"mainstream\"\nPC-based systems (though must embedded Linux systems use it heavily), not\nlimited to sorting out the \"/dev/rtc0\" issue (udev easily tweaked).  Also,\nthe ALSA rtctimer code doesn\u0027t use the new RTC API.\n\nOtherwise, this should be a no-known-regressions replacement for the old\ndrivers/char/rtc.c driver, and should help the non-embedded distros (and\nthe new timekeeping code) start to switch to the framework.\n\nNote also that any systems using \"rtc-m48t86\" are candidates to switch over\nto this more functional driver; the platform data is different, and the way\nbytes are read is different, but otherwise those chips should be compatible.\n\n[akpm@osdl.org: sparc32 fix]\n[akpm@osdl.org: sparc64 fix]\nSigned-off-by: David Brownell \u003cdbrownell@users.sourceforge.net\u003e\nCc: Woody Suwalski \u003cwoodys@xandros.com\u003e\nCc: Alessandro Zummo \u003calessandro.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": "38e0e8c0550eaed1af48ec5ad9ddb8a25e8b04ae",
      "tree": "f38daa22e42969c8eabccfd73dc298dcaec99821",
      "parents": [
        "06c67befeeb16f2995c11b0e04a348103ddbfab1"
      ],
      "author": {
        "name": "Maciej W. Rozycki",
        "email": "macro@linux-mips.org",
        "time": "Mon Jul 10 04:45:30 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 10 13:24:25 2006 -0700"
      },
      "message": "[PATCH] char/rtc: Handle memory-mapped chips properly\n\nHandle memory-mapped chips properly, needed for example on DECstations.\nThis support was in Linux 2.4 but for some reason got lost in 2.6.  This\npatch is taken directly from the linux-mips repository.\n\n[akpm@osdl.org: cleanup]\nSigned-off-by: Maciej W. Rozycki \u003cmacro@linux-mips.org\u003e\nSigned-off-by: Martin Michlmayr \u003ctbm@cyrius.com\u003e\nCc: Paul Gortmaker \u003cpenguin@muskoka.com\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
