)]}'
{
  "commit": "99cd5341eaafe92eaeb8906ac329262b2fd20df1",
  "tree": "f71aa279ba69ffaf9e2da38fc3613b29bd86674a",
  "parents": [
    "03681d57d4408ea739b749769e86e35c82e40a07"
  ],
  "author": {
    "name": "Ard Biesheuvel",
    "email": "ardb@kernel.org",
    "time": "Wed Oct 01 13:59:42 2025 +0200"
  },
  "committer": {
    "name": "Ard Biesheuvel",
    "email": "ardb@kernel.org",
    "time": "Fri Oct 31 11:30:05 2025 +0100"
  },
  "message": "arm64/fpsimd: Allocate kernel mode FP/SIMD buffers on the stack\n\nCommit aefbab8e77eb16b5\n\n  (\"arm64: fpsimd: Preserve/restore kernel mode NEON at context switch\")\n\nadded a \u0027kernel_fpsimd_state\u0027 field to struct thread_struct, which is\nthe arch-specific portion of struct task_struct, and is allocated for\neach task in the system. The size of this field is 528 bytes, resulting\nin non-negligible bloat of task_struct, and the resulting memory\noverhead may impact performance on systems with many processes.\n\nThis allocation is only used if the task is scheduled out or interrupted\nby a softirq while using the FP/SIMD unit in kernel mode, and so it is\npossible to transparently allocate this buffer on the caller\u0027s stack\ninstead.\n\nSo tweak the \u0027ksimd\u0027 scoped guard implementation so that a stack buffer\nis allocated and passed to both kernel_neon_begin() and\nkernel_neon_end(), and either record it in the task struct, or use it\ndirectly to preserve the task mode kernel FP/SIMD when running in\nsoftirq context. Passing the address to both functions, and checking the\naddresses for consistency ensures that callers of the updated bare\nbegin/end API use it in a manner that is consistent with the new context\nswitch semantics.\n\nSigned-off-by: Ard Biesheuvel \u003cardb@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "bdc4c6304c6a7c591f483ecdca5699aa1b1ed8b7",
      "old_mode": 33188,
      "old_path": "arch/arm64/include/asm/fpu.h",
      "new_id": "751e88a96734e69d058ff9b6a82c0ad6d38b57ce",
      "new_mode": 33188,
      "new_path": "arch/arm64/include/asm/fpu.h"
    },
    {
      "type": "modify",
      "old_id": "d4b1d172a79b67b2b815ef7df1f617784db1416f",
      "old_mode": 33188,
      "old_path": "arch/arm64/include/asm/neon.h",
      "new_id": "acebee4605b5c5cb7d1089dc0bfdd21892067198",
      "new_mode": 33188,
      "new_path": "arch/arm64/include/asm/neon.h"
    },
    {
      "type": "modify",
      "old_id": "61d62bfd5a7bfc0289b9feb93edab93ce63534f4",
      "old_mode": 33188,
      "old_path": "arch/arm64/include/asm/processor.h",
      "new_id": "de3c3b65461d0ca25bd999459e8fd27433ff116e",
      "new_mode": 33188,
      "new_path": "arch/arm64/include/asm/processor.h"
    },
    {
      "type": "modify",
      "old_id": "d9f83c47873676276dc39bde466cc4fce3bdf7d9",
      "old_mode": 33188,
      "old_path": "arch/arm64/include/asm/simd.h",
      "new_id": "7ddb25df5c9823a28d8a13f6c21ba0db06f1f2fa",
      "new_mode": 33188,
      "new_path": "arch/arm64/include/asm/simd.h"
    },
    {
      "type": "modify",
      "old_id": "e3f8f51748bc948cd6366517398011d17fbad84d",
      "old_mode": 33188,
      "old_path": "arch/arm64/kernel/fpsimd.c",
      "new_id": "1c652ce4d40dc5bae6e41e6b326537326a3d9175",
      "new_mode": 33188,
      "new_path": "arch/arm64/kernel/fpsimd.c"
    }
  ]
}
