)]}'
{
  "log": [
    {
      "commit": "1725310324163f56fea71bb77c5d6e88f9ce4192",
      "tree": "95259df42d9de476593f2c8e813cccfffe88b78e",
      "parents": [
        "049763db6cd002cb447a5684b5a543a69d647d42"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed Jan 12 16:59:37 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 08:03:08 2011 -0800"
      },
      "message": "include/linux/unaligned/packed_struct.h: use __packed\n\nCc: Will Newton \u003cwill.newton@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": "4e06fd14d5fa78826397c891654a37e5a36ee827",
      "tree": "816fc9951f6a6c1246e7974f95ffd71c7e861f76",
      "parents": [
        "91facc22dec964683aef88f5620a790a6e46b98a"
      ],
      "author": {
        "name": "Will Newton",
        "email": "will.newton@gmail.com",
        "time": "Tue Dec 21 17:24:29 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 22 19:43:34 2010 -0800"
      },
      "message": "include/linux/unaligned: pack the whole struct rather than just the field\n\nThe current packed struct implementation of unaligned access adds the\npacked attribute only to the field within the unaligned struct rather than\nto the struct as a whole.  This is not sufficient to enforce proper\nbehaviour on architectures with a default struct alignment of more than\none byte.\n\nFor example, the current implementation of __get_unaligned_cpu16 when\ncompiled for arm with gcc -O1 -mstructure-size-boundary\u003d32 assumes the\nstruct is on a 4 byte boundary so performs the load of the 16bit packed\nfield as if it were on a 4 byte boundary:\n\n__get_unaligned_cpu16:\n        ldrh    r0, [r0, #0]\n        bx      lr\n\nMoving the packed attribute to the struct rather than the field causes the\nproper unaligned access code to be generated:\n\n__get_unaligned_cpu16:\n\tldrb\tr3, [r0, #0]\t@ zero_extendqisi2\n\tldrb\tr0, [r0, #1]\t@ zero_extendqisi2\n\torr\tr0, r3, r0, asl #8\n\tbx\tlr\n\nSigned-off-by: Will Newton \u003cwill.newton@gmail.com\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"
    },
    {
      "commit": "2fa4341074cd02fb39aa23410740764948755635",
      "tree": "0b01f80d461ca836c686acf218677568c66abdbe",
      "parents": [
        "6a8811629e9aa611aa710162f9e02020bba52c87"
      ],
      "author": {
        "name": "Albin Tonnerre",
        "email": "albin.tonnerre@free-electrons.com",
        "time": "Wed Sep 23 15:57:38 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:21:05 2009 -0700"
      },
      "message": "include/linux/unaligned/{l,b}e_byteshift.h: fix usage for compressed kernels\n\nWhen unaligned accesses are required for uncompressing a kernel (such as\nfor LZO decompression on ARM in a patch that follows), including\n\u003clinux/kernel.h\u003e causes issues as it brings in a lot of things that are\nnot available in the decompression environment.\n\nlinux/kernel.h brings at least:\nextern int console_printk[];\nextern const char hex_asc[];\nwhich causes errors at link-time as they are not available when\ncompiling the pre-boot environement. There are also a few others:\n\n  arch/arm/boot/compressed/misc.o: In function `valid_user_regs\u0027:\n   arch/arm/include/asm/ptrace.h:158: undefined reference to `elf_hwcap\u0027\n  arch/arm/boot/compressed/misc.o: In function `console_silent\u0027:\n   include/linux/kernel.h:292: undefined reference to `console_printk\u0027\n  arch/arm/boot/compressed/misc.o: In function `console_verbose\u0027:\n   include/linux/kernel.h:297: undefined reference to `console_printk\u0027\n  arch/arm/boot/compressed/misc.o: In function `pack_hex_byte\u0027:\n   include/linux/kernel.h:360: undefined reference to `hex_asc\u0027\n  arch/arm/boot/compressed/misc.o: In function `hweight_long\u0027:\n   include/linux/bitops.h:45: undefined reference to `hweight32\u0027\n  arch/arm/boot/compressed/misc.o: In function `__cmpxchg_local_generic\u0027:\n   include/asm-generic/cmpxchg-local.h:21: undefined reference to `wrong_size_cmpxchg\u0027\n   include/asm-generic/cmpxchg-local.h:42: undefined reference to `wrong_size_cmpxchg\u0027\n  arch/arm/boot/compressed/misc.o: In function `__xchg\u0027:\n   arch/arm/include/asm/system.h:309: undefined reference to `__bad_xchg\u0027\n\nHowever, those files apparently use nothing from \u003clinux/kernel.h\u003e, all\nthey need is the declaration of types such as u32 or u64, so\n\u003clinux/types.h\u003e should be enough\n\nSigned-off-by: Albin Tonnerre \u003calbin.tonnerre@free-electrons.com\u003e\nCc: Sam Ravnborg \u003csam@ravnborg.org\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Phillip Lougher \u003cphillip@lougher.demon.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "064106a91be5e76cb42c1ddf5d3871e3a1bd2a23",
      "tree": "7bb3931857c933343abf9a55d663e8a9b8af13ae",
      "parents": [
        "dddfbaf8f86894415abb8256b55da68dab966ebe"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Tue Apr 29 01:03:27 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:27 2008 -0700"
      },
      "message": "kernel: add common infrastructure for unaligned access\n\nCreate a linux/unaligned directory similar in spirit to the linux/byteorder\nfolder to hold generic implementations collected from various arches.\n\nCurrently there are five implementations:\n1) packed_struct.h: C-struct based, from asm-generic/unaligned.h\n2) le_byteshift.h: Open coded byte-swapping, heavily based on asm-arm\n3) be_byteshift.h: Open coded byte-swapping, heavily based on asm-arm\n4) memmove.h: taken from multiple implementations in tree\n5) access_ok.h: taken from x86 and others, unaligned access is ok.\n\nAll of the new implementations checks for sizes not equal to 1,2,4,8\nand will fail to link.\n\nAPI additions:\n\nget_unaligned_{le16|le32|le64|be16|be32|be64}(p) which is meant to replace\ncode of the form:\nle16_to_cpu(get_unaligned((__le16 *)p));\n\nput_unaligned_{le16|le32|le64|be16|be32|be64}(val, pointer) which is meant to\nreplace code of the form:\nput_unaligned(cpu_to_le16(val), (__le16 *)p);\n\nThe headers that arches should include from their asm/unaligned.h:\n\naccess_ok.h : Wrappers of the byteswapping functions in asm/byteorder\n\nChoose a particular implementation for little-endian access:\nle_byteshift.h\nle_memmove.h (arch must be LE)\nle_struct.h (arch must be LE)\n\nChoose a particular implementation for big-endian access:\nbe_byteshift.h\nbe_memmove.h (arch must be BE)\nbe_struct.h (arch must be BE)\n\nAfter including as needed from the above, include unaligned/generic.h and\ndefine your arch\u0027s get/put_unaligned as (for LE):\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.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"
    }
  ]
}
