)]}'
{
  "commit": "cb2ded37fd2e1039f96c8c892da024a8f033add5",
  "tree": "47dd8e3c19760b17130cedfe40b77299d7cd95af",
  "parents": [
    "bc030d6cb9532877c1c5a3f5e7123344fa24a285"
  ],
  "author": {
    "name": "Yinghai Lu",
    "email": "yinghai@kernel.org",
    "time": "Tue Jan 04 16:38:52 2011 -0800"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@elte.hu",
    "time": "Wed Jan 05 14:09:23 2011 +0100"
  },
  "message": "x86: Fix APIC ID sizing bug on larger systems, clean up MAX_APICS confusion\n\nFound one x2apic pre-enabled system, x2apic_mode suddenly get\ncorrupted after register some cpus, when compiled\nCONFIG_NR_CPUS\u003d255 instead of 512.\n\nIt turns out that generic_processor_info() \u003d\u003d\u003e phyid_set(apicid,\nphys_cpu_present_map) causes the problem.\n\nphys_cpu_present_map is sized by MAX_APICS bits, and pre-enabled\nsystem some cpus have an apic id \u003e 255.\n\nThe variable after phys_cpu_present_map may get corrupted\nsilently:\n\n ffffffff828e8420 B phys_cpu_present_map\n ffffffff828e8440 B apic_verbosity\n ffffffff828e8444 B local_apic_timer_c2_ok\n ffffffff828e8448 B disable_apic\n ffffffff828e844c B x2apic_mode\n ffffffff828e8450 B x2apic_disabled\n ffffffff828e8454 B num_processors\n ...\n\nActually phys_cpu_present_map is referenced via apic id, instead\nindex. We should use MAX_LOCAL_APIC instead MAX_APICS.\n\nFor 64-bit it will be 32768 in all cases. BSS will increase by 4k bytes\non 64-bit:\n\n\ttext\t\tdata\t\tbss\t\tdec\t\tfilename\n\t21696943\t4193748\t\t12787712\t38678403\tvmlinux.before\n\t21696943\t4193748\t\t12791808\t38682499\tvmlinux.after\n\nNo change on 32bit.\n\nFinally we can remove MAX_APCIS that was rather confusing.\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: H. Peter Anvin \u003chpa@linux.intel.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nLKML-Reference: \u003c4D23BD9C.3070102@kernel.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7c1aebf8fcbf79d42f9939e0d0ef7ca2007c3f58",
      "old_mode": 33188,
      "old_path": "arch/x86/include/asm/mpspec.h",
      "new_id": "0c90dd9f05053c83591df6e04ec5d7979fee779f",
      "new_mode": 33188,
      "new_path": "arch/x86/include/asm/mpspec.h"
    },
    {
      "type": "modify",
      "old_id": "4a7f96d7c188edd92387cdec4a3be36e23028f35",
      "old_mode": 33188,
      "old_path": "arch/x86/include/asm/mpspec_def.h",
      "new_id": "c0a955a9a08784f662a071d976ef57bc0637c8c6",
      "new_mode": 33188,
      "new_path": "arch/x86/include/asm/mpspec_def.h"
    },
    {
      "type": "modify",
      "old_id": "7235e5fbdb6da4531adff7aa8c197422a958a645",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/acpi/boot.c",
      "new_id": "17c8090fabd4703d324240328e2a15a55299bb70",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/acpi/boot.c"
    },
    {
      "type": "modify",
      "old_id": "943d814ef8e421955154b3944c277cfff22936ab",
      "old_mode": 33188,
      "old_path": "arch/x86/kernel/apic/io_apic.c",
      "new_id": "2fc696e4d565c9cf0d11efd5d8f8b5308e0167ec",
      "new_mode": 33188,
      "new_path": "arch/x86/kernel/apic/io_apic.c"
    },
    {
      "type": "modify",
      "old_id": "dd4c281ffe5720c3ff15f1eceaa09759e17df7d1",
      "old_mode": 33188,
      "old_path": "arch/x86/platform/sfi/sfi.c",
      "new_id": "ca54875ac795117079b7a9521bfd0bf42bf9f980",
      "new_mode": 33188,
      "new_path": "arch/x86/platform/sfi/sfi.c"
    },
    {
      "type": "modify",
      "old_id": "3371bd053b89f29e14e5f55d88929d2427f123b2",
      "old_mode": 33188,
      "old_path": "arch/x86/platform/visws/visws_quirks.c",
      "new_id": "63203767174683b3db1ab410be9263aabe280ab0",
      "new_mode": 33188,
      "new_path": "arch/x86/platform/visws/visws_quirks.c"
    }
  ]
}
