Cover Letter Detail
Show a cover letter.
GET /api/covers/808319/?format=api
{ "id": 808319, "url": "http://patchwork.ozlabs.org/api/covers/808319/?format=api", "web_url": "http://patchwork.ozlabs.org/project/glibc/cover/1504198860-12951-1-git-send-email-Dave.Martin@arm.com/", "project": { "id": 41, "url": "http://patchwork.ozlabs.org/api/projects/41/?format=api", "name": "GNU C Library", "link_name": "glibc", "list_id": "libc-alpha.sourceware.org", "list_email": "libc-alpha@sourceware.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<1504198860-12951-1-git-send-email-Dave.Martin@arm.com>", "list_archive_url": null, "date": "2017-08-31T17:00:32", "name": "[v2,00/28] ARM Scalable Vector Extension (SVE)", "submitter": { "id": 26612, "url": "http://patchwork.ozlabs.org/api/people/26612/?format=api", "name": "Dave Martin", "email": "Dave.Martin@arm.com" }, "mbox": "http://patchwork.ozlabs.org/project/glibc/cover/1504198860-12951-1-git-send-email-Dave.Martin@arm.com/mbox/", "series": [ { "id": 882, "url": "http://patchwork.ozlabs.org/api/series/882/?format=api", "web_url": "http://patchwork.ozlabs.org/project/glibc/list/?series=882", "date": "2017-08-31T17:00:32", "name": "ARM Scalable Vector Extension (SVE)", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/882/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/covers/808319/comments/", "headers": { "Return-Path": "<libc-alpha-return-83961-incoming=patchwork.ozlabs.org@sourceware.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": [ "patchwork-incoming@bilbo.ozlabs.org", "mailing list libc-alpha@sourceware.org" ], "Authentication-Results": [ "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=sourceware.org\n\t(client-ip=209.132.180.131; helo=sourceware.org;\n\tenvelope-from=libc-alpha-return-83961-incoming=patchwork.ozlabs.org@sourceware.org;\n\treceiver=<UNKNOWN>)", "ozlabs.org; dkim=pass (1024-bit key;\n\tsecure) header.d=sourceware.org header.i=@sourceware.org\n\theader.b=\"CUgaCu4g\"; dkim-atps=neutral", "sourceware.org; auth=none" ], "Received": [ "from sourceware.org (server1.sourceware.org [209.132.180.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xjpYm1H8rz9t2W\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 1 Sep 2017 03:01:31 +1000 (AEST)", "(qmail 77674 invoked by alias); 31 Aug 2017 17:01:26 -0000", "(qmail 77658 invoked by uid 89); 31 Aug 2017 17:01:25 -0000" ], "DomainKey-Signature": "a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id\n\t:list-unsubscribe:list-subscribe:list-archive:list-post\n\t:list-help:sender:from:to:cc:subject:date:message-id\n\t:mime-version:content-type:content-transfer-encoding; q=dns; s=\n\tdefault; b=vExeHgXEW81qWfOavluaQ/rRTinTQzVEPDNjv8jbaA9UpwCD9n9px\n\tLRjWDsKtTcWariZJXTGm7yo7JD3FnW402qhwmSzqx20hVw0b254qUqtsXAii1OuO\n\tznsOL4YrhvyFxviMcDqwIFr2qPWAgsV4uLeXEUGLvWYTpfEIGLOWyU=", "DKIM-Signature": "v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id\n\t:list-unsubscribe:list-subscribe:list-archive:list-post\n\t:list-help:sender:from:to:cc:subject:date:message-id\n\t:mime-version:content-type:content-transfer-encoding; s=default;\n\tbh=onbHjW2IoHbJy55wNY4p86s5qZI=; b=CUgaCu4gHKXpp7gJTv2L82gJa0jJ\n\tBNeaT60v0O4+EQLFO/yH9kcW23JsQ3kKS03sLfYaxW3Hum8s/jh2o9GF7XVw5cRP\n\thdx9XQ5qW+polp/nQVCYK/1ZdhTzwBQva3RQcx9LLKjeN8Pah4yYwPB+XK2AXdm5\n\taPqu96uNaj1gSm4=", "Mailing-List": "contact libc-alpha-help@sourceware.org; run by ezmlm", "Precedence": "bulk", "List-Id": "<libc-alpha.sourceware.org>", "List-Unsubscribe": "<mailto:libc-alpha-unsubscribe-incoming=patchwork.ozlabs.org@sourceware.org>", "List-Subscribe": "<mailto:libc-alpha-subscribe@sourceware.org>", "List-Archive": "<http://sourceware.org/ml/libc-alpha/>", "List-Post": "<mailto:libc-alpha@sourceware.org>", "List-Help": "<mailto:libc-alpha-help@sourceware.org>,\n\t<http://sourceware.org/ml/#faqs>", "Sender": "libc-alpha-owner@sourceware.org", "X-Virus-Found": "No", "X-Spam-SWARE-Status": "No, score=-6.9 required=5.0 tests=BAYES_00, GIT_PATCH_3,\n\tRP_MATCHES_RCVD,\n\tSPF_PASS autolearn=ham version=3.3.2 spammy=guest, Treat, 1-5,\n\t2224", "X-HELO": "foss.arm.com", "From": "Dave Martin <Dave.Martin@arm.com>", "To": "linux-arm-kernel@lists.infradead.org", "Cc": "Catalin Marinas <catalin.marinas@arm.com>, Will Deacon\n\t<will.deacon@arm.com>, \tArd Biesheuvel <ard.biesheuvel@linaro.org>,\n\t=?utf-8?q?Alex_Benn=C3=A9?= =?utf-8?q?e?= <alex.bennee@linaro.org>,\n\tSzabolcs Nagy <szabolcs.nagy@arm.com>, Richard Sandiford\n\t<richard.sandiford@arm.com>, \tkvmarm@lists.cs.columbia.edu,\n\tlibc-alpha@sourceware.org, \tlinux-arch@vger.kernel.org", "Subject": "[PATCH v2 00/28] ARM Scalable Vector Extension (SVE)", "Date": "Thu, 31 Aug 2017 18:00:32 +0100", "Message-Id": "<1504198860-12951-1-git-send-email-Dave.Martin@arm.com>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit" }, "content": "This series implements Linux kernel support for the ARM Scalable Vector\nExtension (SVE). [1] It supersedes the previous v1: see [3] for link.\nSee the individual patches for details of changes.\n\nThe patches apply on v4.13-rc7 + linux-arm64/for-next/core.\nFor convenience, a git tree is available. [4]\n\n\nTo reduce spam, some people may not been copied on the entire series.\nFor those who did not receive the whole series, it can be found in the\nlinux-arm-kernel archive. [2]\n\n\n*Note* The final two patches (27-28) of the series are still RFC --\nbefore committing to this ABI it would be good to get feedback on\nwhether the approach makes sense and whether it suitable for other\narchitectures. These two patches are not required by the rest of the\nseries and can be revised or merged later.\n\n\nSupport for use of SVE by KVM guests is not currently included.\nInstead, such use will be trapped and reflected to the guest as\nundefined instruction execution. SVE is hidden from the view of the\nCPU feature registers visible to guests, so that guests will not\nexpect it to work.\n\n\nThis series has been build- and boot-tested on Juno r0 and the ARM FVP\nBase model with SVE plugin. Because there is no hardware with SVE\nsupport yet, testing of the SVE functionality has only been performed on\nthe model.\n\nRegression testing of v1 using LTP showed no regressions on the kernel\ntests.\n\nRegression testing of v2 is under way.\n\n\nSeries summary:\n\n * Patches 1-5 contain some individual bits of preparatory spadework,\n which are indirectly related to SVE.\n\nDave Martin (5):\n regset: Add support for dynamically sized regsets\n arm64: KVM: Hide unsupported AArch64 CPU features from guests\n arm64: efi: Add missing Kconfig dependency on KERNEL_MODE_NEON\n arm64: Port deprecated instruction emulation to new sysctl interface\n arm64: fpsimd: Simplify uses of {set,clear}_ti_thread_flag()\n\n Non-trivial changes among these are:\n\n * Patch 1: updates the regset core code to handle regsets whose size\n is not fixed at compile time. This avoids bloating coredumps even\n though the maximum theoretical SVE regset size is large.\n\n * Patch 2: extends KVM to modify the ARM architectural ID registers\n seen by guests, by trapping and emulating certain registers. For\n SVE this is a temporary measure, but it may be useful for other\n architecture extensions. This patch may also be built on in the\n future, since the only registers currently emulated are those\n required for hiding SVE.\n\n * Patches 6-10 add SVE-specific system register and structure layout\n definitions, and the low-level boot code and accessors needed for\n making use of SVE.\n\nDave Martin (5):\n arm64/sve: System register and exception syndrome definitions\n arm64/sve: Low-level SVE architectural state manipulation functions\n arm64/sve: Kconfig update and conditional compilation support\n arm64/sve: Signal frame and context structure definition\n arm64/sve: Low-level CPU setup\n\n * Patches 11-13 implement the core context management facilities to\n provide each user task with its own SVE register context, signal\n handling facilities, and sane programmer's model interoperation\n between SVE and FPSIMD.\n\nDave Martin (3):\n arm64/sve: Core task context handling\n arm64/sve: Support vector length resetting for new processes\n arm64/sve: Signal handling support\n\n * Patches 14 and 16 provide backend logic for detecting and making use\n of the different SVE vector lengths supported by the hardware.\n\n * Patch 15 moves around code in cpufeatures.c to fit.\n\nDave Martin (3):\n arm64/sve: Backend logic for setting the vector length\n arm64: cpufeature: Move sys_caps_initialised declarations\n arm64/sve: Probe SVE capabilities and usable vector lengths\n\n * Patches 17-18 update the kernel-mode NEON / EFI FPSIMD frameworks to\n interoperate correctly with SVE.\n\nDave Martin (2):\n arm64/sve: Preserve SVE registers around kernel-mode NEON use\n arm64/sve: Preserve SVE registers around EFI runtime service calls\n\n * Patches 19-21 implement the userspace frontend for managing SVE,\n comprising ptrace, some new arch-specific prctl() calls, and a new\n sysctl for init-time setup.\n\nDave Martin (3):\n arm64/sve: ptrace and ELF coredump support\n arm64/sve: Add prctl controls for userspace vector length management\n arm64/sve: Add sysctl to set the default vector length for new\n processes\n\n * Patches 22-24 provide stub KVM extensions for using KVM only on the\n host, while denying guest access. (A future series will extend this\n with full support for SVE in guests.)\n\nDave Martin (3):\n arm64/sve: KVM: Prevent guests from using SVE\n arm64/sve: KVM: Treat guest SVE use as undefined instruction\n execution\n arm64/sve: KVM: Hide SVE from CPU features exposed to guests\n\nAnd finally:\n\n * Patch 25 disengages the safety catch, enabling the kernel SVE runtime\n support and allowing userspace to use SVE.\n\nDave Martin (1):\n arm64/sve: Detect SVE and activate runtime support\n\n * Patch 26 adds some basic documentation.\n\nDave Martin (1):\n arm64/sve: Add documentation\n\n * Patches 27-28 (which may be considered RFC) propose a mechanism to\n report the maximum runtime signal frame size to userspace.\n\nDave Martin (2):\n arm64: signal: Report signal frame size to userspace via auxv\n arm64/sve: signal: Include SVE when computing AT_MINSIGSTKSZ\n\n\nReferences:\n\n[1] ARM Scalable Vector Extension\nhttps://community.arm.com/groups/processors/blog/2016/08/22/technology-update-the-scalable-vector-extension-sve-for-the-armv8-a-architecture\n\n[2] linux-arm-kernel August 2017 Archives by thread\nhttp://lists.infradead.org/pipermail/linux-arm-kernel/2017-August/thread.html\n\n[3] [PATCH 00/27] ARM Scalable Vector Extension (SVE)\nhttp://lists.infradead.org/pipermail/linux-arm-kernel/2017-August/524691.html\n\n[4] http://linux-arm.org/git?p=linux-dm.git;a=shortlog;h=refs/heads/sve/v2\n git://linux-arm.org/linux-dm.git sve/v2\n\n\nFull series and diffstat:\n\nDave Martin (28):\n regset: Add support for dynamically sized regsets\n arm64: KVM: Hide unsupported AArch64 CPU features from guests\n arm64: efi: Add missing Kconfig dependency on KERNEL_MODE_NEON\n arm64: Port deprecated instruction emulation to new sysctl interface\n arm64: fpsimd: Simplify uses of {set,clear}_ti_thread_flag()\n arm64/sve: System register and exception syndrome definitions\n arm64/sve: Low-level SVE architectural state manipulation functions\n arm64/sve: Kconfig update and conditional compilation support\n arm64/sve: Signal frame and context structure definition\n arm64/sve: Low-level CPU setup\n arm64/sve: Core task context handling\n arm64/sve: Support vector length resetting for new processes\n arm64/sve: Signal handling support\n arm64/sve: Backend logic for setting the vector length\n arm64: cpufeature: Move sys_caps_initialised declarations\n arm64/sve: Probe SVE capabilities and usable vector lengths\n arm64/sve: Preserve SVE registers around kernel-mode NEON use\n arm64/sve: Preserve SVE registers around EFI runtime service calls\n arm64/sve: ptrace and ELF coredump support\n arm64/sve: Add prctl controls for userspace vector length management\n arm64/sve: Add sysctl to set the default vector length for new\n processes\n arm64/sve: KVM: Prevent guests from using SVE\n arm64/sve: KVM: Treat guest SVE use as undefined instruction execution\n arm64/sve: KVM: Hide SVE from CPU features exposed to guests\n arm64/sve: Detect SVE and activate runtime support\n arm64/sve: Add documentation\n arm64: signal: Report signal frame size to userspace via auxv\n arm64/sve: signal: Include SVE when computing AT_MINSIGSTKSZ\n\n Documentation/arm64/cpu-feature-registers.txt | 6 +-\n Documentation/arm64/sve.txt | 477 +++++++++++++++++\n arch/arm/include/asm/kvm_host.h | 3 +\n arch/arm64/Kconfig | 12 +\n arch/arm64/include/asm/cpu.h | 4 +\n arch/arm64/include/asm/cpucaps.h | 3 +-\n arch/arm64/include/asm/cpufeature.h | 35 ++\n arch/arm64/include/asm/elf.h | 5 +\n arch/arm64/include/asm/esr.h | 3 +-\n arch/arm64/include/asm/fpsimd.h | 71 ++-\n arch/arm64/include/asm/fpsimdmacros.h | 148 ++++++\n arch/arm64/include/asm/kvm_arm.h | 5 +-\n arch/arm64/include/asm/kvm_host.h | 11 +\n arch/arm64/include/asm/processor.h | 10 +\n arch/arm64/include/asm/sysreg.h | 24 +\n arch/arm64/include/asm/thread_info.h | 2 +\n arch/arm64/include/asm/traps.h | 2 +\n arch/arm64/include/uapi/asm/auxvec.h | 3 +-\n arch/arm64/include/uapi/asm/hwcap.h | 1 +\n arch/arm64/include/uapi/asm/ptrace.h | 135 +++++\n arch/arm64/include/uapi/asm/sigcontext.h | 120 ++++-\n arch/arm64/kernel/armv8_deprecated.c | 15 +-\n arch/arm64/kernel/cpufeature.c | 96 +++-\n arch/arm64/kernel/cpuinfo.c | 7 +\n arch/arm64/kernel/entry-fpsimd.S | 17 +\n arch/arm64/kernel/entry.S | 14 +-\n arch/arm64/kernel/fpsimd.c | 729 +++++++++++++++++++++++++-\n arch/arm64/kernel/head.S | 13 +-\n arch/arm64/kernel/process.c | 4 +\n arch/arm64/kernel/ptrace.c | 270 +++++++++-\n arch/arm64/kernel/signal.c | 222 +++++++-\n arch/arm64/kernel/signal32.c | 2 +-\n arch/arm64/kernel/traps.c | 5 +-\n arch/arm64/kvm/handle_exit.c | 8 +\n arch/arm64/kvm/hyp/switch.c | 12 +-\n arch/arm64/kvm/sys_regs.c | 292 +++++++++--\n arch/arm64/mm/proc.S | 14 +-\n fs/binfmt_elf.c | 6 +-\n include/linux/regset.h | 67 ++-\n include/uapi/linux/elf.h | 1 +\n include/uapi/linux/prctl.h | 9 +\n kernel/sys.c | 12 +\n virt/kvm/arm/arm.c | 3 +\n 43 files changed, 2753 insertions(+), 145 deletions(-)\n create mode 100644 Documentation/arm64/sve.txt" }