Show a cover letter.

GET /api/1.2/covers/2233908/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2233908,
    "url": "http://patchwork.ozlabs.org/api/1.2/covers/2233908/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/cover/20260507022219.44171-1-imp@bsdimp.com/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/1.2/projects/14/?format=api",
        "name": "QEMU Development",
        "link_name": "qemu-devel",
        "list_id": "qemu-devel.nongnu.org",
        "list_email": "qemu-devel@nongnu.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260507022219.44171-1-imp@bsdimp.com>",
    "list_archive_url": null,
    "date": "2026-05-07T02:21:54",
    "name": "[00/25] bsd-user May 2026 pull request",
    "submitter": {
        "id": 1896,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/1896/?format=api",
        "name": "Warner Losh",
        "email": "imp@bsdimp.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/cover/20260507022219.44171-1-imp@bsdimp.com/mbox/",
    "series": [
        {
            "id": 503095,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/503095/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=503095",
            "date": "2026-05-07T02:21:57",
            "name": "bsd-user May 2026 pull request",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/503095/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/covers/2233908/comments/",
    "headers": {
        "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=bsdimp-com.20251104.gappssmtp.com\n header.i=@bsdimp-com.20251104.gappssmtp.com header.a=rsa-sha256\n header.s=20251104 header.b=FkI332r7;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"
        ],
        "Received": [
            "from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g9x0J5dZKz1yKd\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 07 May 2026 12:24:32 +1000 (AEST)",
            "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wKoPT-000632-L3; Wed, 06 May 2026 22:24:19 -0400",
            "from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <imp@bsdimp.com>) id 1wKoPR-00062Z-RA\n for qemu-devel@nongnu.org; Wed, 06 May 2026 22:24:17 -0400",
            "from mail-ot1-x32b.google.com ([2607:f8b0:4864:20::32b])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <imp@bsdimp.com>) id 1wKoPP-0007aO-C0\n for qemu-devel@nongnu.org; Wed, 06 May 2026 22:24:17 -0400",
            "by mail-ot1-x32b.google.com with SMTP id\n 46e09a7af769-7dea20cf21aso352229a34.1\n for <qemu-devel@nongnu.org>; Wed, 06 May 2026 19:24:14 -0700 (PDT)",
            "from rebo.bsdimp.com ([50.253.99.174])\n by smtp.gmail.com with ESMTPSA id\n 006d021491bc7-696896e72c4sm11088118eaf.9.2026.05.06.19.24.11\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Wed, 06 May 2026 19:24:11 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=bsdimp-com.20251104.gappssmtp.com; s=20251104; t=1778120653; x=1778725453;\n darn=nongnu.org;\n h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n :to:from:from:to:cc:subject:date:message-id:reply-to;\n bh=7F3BOhUWnj/0BE/eogouAdJfE7DJesDgdVpNbGkpLSE=;\n b=FkI332r7ppkPn157oD3VexcUrTEeSKCN4e9x7T9PXtoqcx7b1Tcc6hQ/byB4LVpRO0\n wPMvGATDnC+09oCbGnieVJGzFGdB2fRndxMm1IKtte5G10Z7VF3DjbB+Ey4D5wJ6dKRR\n fcneM4wa3WOORSaO9ciNnmkmVfzns13/byPjLek4p6lb+sIss18//QuCuTf9mfdtqQf6\n pn6e2ucg+c7GHXdygYn0u0mNDZf3aVoW4kTTLPBF6LR+Qy/vqQvnA9CVB8grP5S8DjAp\n QESOa6Ntm4jDdlpPHEvauTytq7jMWK8sGmntaQVAAbhF057tq1SicT90mP8whotDC3aI\n JsDw==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1778120653; x=1778725453;\n h=content-transfer-encoding:mime-version:message-id:date:subject:cc\n :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=7F3BOhUWnj/0BE/eogouAdJfE7DJesDgdVpNbGkpLSE=;\n b=rLMxUnbyfwvFENGygBrFehky63sY73J0iYzceGwIMWmg234VDYhlZcPZyF/3cn7Ys3\n x3VxL6a78M6M0Cv/zLoafQH09VMtRxzgduXShBUpoLi2b1AkqTXNRK9m4GrbfsUr5VKc\n MmfsVgZNnzbhP/G8pUi07zD0ODJSpqUNXNzXyc35f3bjrmu/iKblZGPmSvbOWkk+61MH\n 6tnmrqg25sJGE1VPKXjj2DRjFx4/BihEx2DCh//McN+aQ6cYsfoaGnACzdq1KfvFRKm3\n yGE1ssWpCdK38XUbMb21IRfQrAizn3LrhMtJzVKMpq59zEY+XFxTkO/Tb5fOJ1oEwWN8\n oA3g==",
        "X-Gm-Message-State": "AOJu0YzLHrrz1gYLb0I66xy8gO9/dbjmcrqjmN9fSZijpa51xQTpdI3L\n cAHVCVzGOUiSPFPpk6uoo0gnIRmFMbvDeGuLvSguodZOX1+0adUQ8pJsAyoXrA1gipcq9lGV+DK\n lfnC24W0=",
        "X-Gm-Gg": "AeBDievJjA8GNb04c0iN/KKAUWOgzW8DJMsFJjaceArAvOVgM6oSYji1LihXNVxTgVo\n A5P/JTzoxStEIW9yrSwOQPc74aCKclvwTazCVe2CtdN3jMyeLYF/fRp2Agzd3CT0tnxL+tm7bv2\n 7IqSWS3MCfjZ7T2wqIps1aH6CfYBAYFXKbCqW/5TUEYwMBvxLO3PLPssOroF23YgmP14xL/k9kj\n 0ZpYky8JRzxxrz5ni3Zxwhi2+dTDbuK8GotWm7l2PIzeiMnmHSfS1HQ9Me05YWhF0XOakct6/B8\n bjnXEOCx01tdC5sz+7h7Yia/D6zODQkyvQepZCi8XQDD/8qxKD4bcLZiDM+69/qfZRTGEu9ROqh\n iyNZZXznLJN7784APhp1LYwsZqPQEekyslIG+TtgA/EcrdChsbUt9R0waeRs/1jG9GEtzIVsRz1\n NYNOLblUmFKbsMClQ7qbF7",
        "X-Received": "by 2002:a05:6820:2017:b0:696:1f5a:9bf0 with SMTP id\n 006d021491bc7-69998cca75amr3265099eaf.15.1778120652936;\n Wed, 06 May 2026 19:24:12 -0700 (PDT)",
        "From": "Warner Losh <imp@bsdimp.com>",
        "To": "qemu-devel@nongnu.org",
        "Cc": "Warner Losh <imp@bsdimp.com>,\n\tKyle Evans <kevans@freebsd.org>",
        "Subject": "[PATCH 00/25] bsd-user May 2026 pull request",
        "Date": "Wed,  6 May 2026 20:21:54 -0600",
        "Message-ID": "<20260507022219.44171-1-imp@bsdimp.com>",
        "X-Mailer": "git-send-email 2.52.0",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"utf-8\"",
        "Content-Transfer-Encoding": "8bit",
        "Received-SPF": "none client-ip=2607:f8b0:4864:20::32b;\n envelope-from=imp@bsdimp.com; helo=mail-ot1-x32b.google.com",
        "X-Spam_score_int": "-18",
        "X-Spam_score": "-1.9",
        "X-Spam_bar": "-",
        "X-Spam_report": "(-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_NONE=0.001 autolearn=ham autolearn_force=no",
        "X-Spam_action": "no action",
        "X-BeenThere": "qemu-devel@nongnu.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "qemu development <qemu-devel.nongnu.org>",
        "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>",
        "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>",
        "List-Post": "<mailto:qemu-devel@nongnu.org>",
        "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>",
        "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>",
        "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org",
        "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"
    },
    "content": "Three patch series were reviewed during the code freeze and are finally ready to\nhead into the tree.\n\n(1) Use SPDX identifiers in most places. This makes it easier for me to upstream\nsince I can do almost all of the files in the forked tree and not have it be an\nissue each time I add a new file.\n\n(2) Per discussions in the review, copy thunk.c to bsd-user from linux-user. We\nwill use this in the third set of patches, ioctls. All that changed is the\ncopyright header. This file has style problems, but fixing them would be a worse\nproblem than the style issues since we share it with linux-user and want to\ntrack changes there. In the future we may actually share, but for now this was\nthe compromise.\n\n(3) All the ioctls that bsd-user supports in FreeBSD. This uses the thunk.c code\nto translate back and forth between host and target. A number of pedantic\nchanges were made against the blitz branch upstream and were discovered or\nhighlighted by claude code.\n\nI used claude to extract all the ioctl code from the blitz branch for\nupstreaming. I had it review the code and fixed the problems it found (though\none was a false positive). I've not tagged these as Assisted-by: since that part\nof our policy is in flux. No creative output of claude was applied here, though\nit also suggested the commit messages (that I rewrote in large part, but\nvestiges of the original remain). To be clear: Claude didn't write any of\nthe actual code.\n\nStacey Son (19):\n  bsd-user: ioctl: add common definitions\n  bsd-user: Add FreeBSD tty ioctl definitions\n  bsd-user: Add FreeBSD file I/O ioctl definitions\n  bsd-user: Add FreeBSD socket ioctl definitions\n  bsd-user: Add FreeBSD cryptodev ioctl definitions\n  bsd-user: Add FreeBSD disk ioctl definitions\n  bsd-user: Add FreeBSD IPv6 ioctl definitions\n  bsd-user: Add FreeBSD ioctl type definitions\n  bsd-user: Add FreeBSD ioctl command table\n  bsd-user: Add bsd-ioctl.h header\n  bsd-user: Add target_sockaddr and safe_ioctl to syscall_defs.h\n  bsd-user: Add bsd-ioctl.c infrastructure and termios conversion\n  bsd-user: Add log_unsupported_ioctl function\n  bsd-user: Add do_ioctl_unsupported function\n  bsd-user: Add target_to_host_sockaddr_in6 function\n  bsd-user: Add do_ioctl_in6_ifreq_sockaddr_int function\n  bsd-user: Add do_bsd_ioctl main function\n  bsd-user: Add init_bsd_ioctl function\n  bsd-user: Add call to do_bsd_ioctl and add bsd-ioctl.c to the build\n\nWarner Losh (6):\n  bsd-user: Switch to SPDX-License-Expression\n  bsd-user: Add syscall header generator for FreeBSD\n  bsd-user: Delete sbrk and sstk system calls.\n  bsd-user: Create os-syscall.h\n  bsd-user: Switch to generated syscall_nr.h\n  bsd-user: Copy linux-user/thunk.c to bsd-user\n\n bsd-user/aarch64/signal.c               |  15 +-\n bsd-user/aarch64/target_arch.h          |  16 +-\n bsd-user/aarch64/target_arch_cpu.c      |  15 +-\n bsd-user/aarch64/target_arch_cpu.h      |  18 +-\n bsd-user/aarch64/target_arch_elf.h      |  14 +-\n bsd-user/aarch64/target_arch_reg.h      |  19 +-\n bsd-user/aarch64/target_arch_signal.h   |  16 +-\n bsd-user/aarch64/target_arch_sigtramp.h |  16 +-\n bsd-user/aarch64/target_arch_sysarch.h  |  16 +-\n bsd-user/aarch64/target_arch_thread.h   |  16 +-\n bsd-user/aarch64/target_arch_vmparam.h  |  16 +-\n bsd-user/aarch64/target_syscall.h       |  16 +-\n bsd-user/arm/signal.c                   |  18 +-\n bsd-user/arm/target_arch.h              |  16 +-\n bsd-user/arm/target_arch_cpu.c          |  18 +-\n bsd-user/arm/target_arch_cpu.h          |  18 +-\n bsd-user/arm/target_arch_elf.h          |  18 +-\n bsd-user/arm/target_arch_reg.h          |  18 +-\n bsd-user/arm/target_arch_signal.h       |  18 +-\n bsd-user/arm/target_arch_sigtramp.h     |  18 +-\n bsd-user/arm/target_arch_sysarch.h      |  18 +-\n bsd-user/arm/target_arch_thread.h       |  18 +-\n bsd-user/arm/target_arch_vmparam.h      |  18 +-\n bsd-user/arm/target_syscall.h           |  18 +-\n bsd-user/bsd-file.h                     |  18 +-\n bsd-user/bsd-ioctl.c                    | 436 ++++++++++++++++++++\n bsd-user/bsd-ioctl.h                    |  14 +\n bsd-user/bsd-mem.c                      |  17 +-\n bsd-user/bsd-mem.h                      |  30 +-\n bsd-user/bsd-proc.c                     |  17 +-\n bsd-user/bsd-proc.h                     |  17 +-\n bsd-user/freebsd/meson.build            |  10 +-\n bsd-user/freebsd/os-ioctl-cmds.h        | 149 +++++++\n bsd-user/freebsd/os-ioctl-cryptodev.h   |  84 ++++\n bsd-user/freebsd/os-ioctl-disk.h        |  52 +++\n bsd-user/freebsd/os-ioctl-filio.h       |  34 ++\n bsd-user/freebsd/os-ioctl-in6_var.h     | 226 +++++++++++\n bsd-user/freebsd/os-ioctl-ioccom.h      |  43 ++\n bsd-user/freebsd/os-ioctl-sockio.h      | 246 +++++++++++\n bsd-user/freebsd/os-ioctl-ttycom.h      | 239 +++++++++++\n bsd-user/freebsd/os-ioctl-types.h       | 109 +++++\n bsd-user/freebsd/os-misc.h              |  18 +-\n bsd-user/freebsd/os-proc.c              |  17 +-\n bsd-user/freebsd/os-proc.h              |  18 +-\n bsd-user/freebsd/os-stat.c              |  17 +-\n bsd-user/freebsd/os-stat.h              |  18 +-\n bsd-user/freebsd/os-strace.h            |  19 +-\n bsd-user/freebsd/os-syscall.c           |  17 +-\n bsd-user/freebsd/os-syscall.h           |  21 +\n bsd-user/freebsd/scripts/syscallhdr.sh  |   9 +\n bsd-user/freebsd/strace.list            |   4 +\n bsd-user/freebsd/syscall_nr.h           | 515 ------------------------\n bsd-user/freebsd/target_os_elf.h        |  18 +-\n bsd-user/freebsd/target_os_siginfo.h    |  18 +-\n bsd-user/freebsd/target_os_signal.h     |   7 +\n bsd-user/freebsd/target_os_stack.h      |  18 +-\n bsd-user/freebsd/target_os_thread.h     |  18 +-\n bsd-user/freebsd/target_os_user.h       |  18 +-\n bsd-user/freebsd/target_os_vmparam.h    |  18 +-\n bsd-user/i386/signal.c                  |  17 +-\n bsd-user/i386/target_arch.h             |  16 +-\n bsd-user/i386/target_arch_cpu.c         |  17 +-\n bsd-user/i386/target_arch_cpu.h         |  17 +-\n bsd-user/i386/target_arch_elf.h         |  18 +-\n bsd-user/i386/target_arch_reg.h         |  19 +-\n bsd-user/i386/target_arch_signal.h      |  16 +-\n bsd-user/i386/target_arch_sigtramp.h    |  16 +-\n bsd-user/i386/target_arch_sysarch.h     |  18 +-\n bsd-user/i386/target_arch_thread.h      |  18 +-\n bsd-user/i386/target_arch_vmparam.h     |  18 +-\n bsd-user/i386/target_syscall.h          |  16 +-\n bsd-user/meson.build                    |   2 +\n bsd-user/qemu-bsd.h                     |  18 +-\n bsd-user/syscall_defs.h                 |  50 +--\n bsd-user/thunk.c                        | 470 +++++++++++++++++++++\n bsd-user/x86_64/signal.c                |  16 +-\n bsd-user/x86_64/target_arch.h           |  16 +-\n bsd-user/x86_64/target_arch_cpu.c       |  17 +-\n bsd-user/x86_64/target_arch_cpu.h       |  17 +-\n bsd-user/x86_64/target_arch_elf.h       |  18 +-\n bsd-user/x86_64/target_arch_reg.h       |  19 +-\n bsd-user/x86_64/target_arch_signal.h    |  17 +-\n bsd-user/x86_64/target_arch_sigtramp.h  |  17 +-\n bsd-user/x86_64/target_arch_sysarch.h   |  17 +-\n bsd-user/x86_64/target_arch_thread.h    |  18 +-\n bsd-user/x86_64/target_arch_vmparam.h   |  18 +-\n bsd-user/x86_64/target_syscall.h        |  16 +-\n 87 files changed, 2362 insertions(+), 1526 deletions(-)\n create mode 100644 bsd-user/bsd-ioctl.c\n create mode 100644 bsd-user/bsd-ioctl.h\n create mode 100644 bsd-user/freebsd/os-ioctl-cmds.h\n create mode 100644 bsd-user/freebsd/os-ioctl-cryptodev.h\n create mode 100644 bsd-user/freebsd/os-ioctl-disk.h\n create mode 100644 bsd-user/freebsd/os-ioctl-filio.h\n create mode 100644 bsd-user/freebsd/os-ioctl-in6_var.h\n create mode 100644 bsd-user/freebsd/os-ioctl-ioccom.h\n create mode 100644 bsd-user/freebsd/os-ioctl-sockio.h\n create mode 100644 bsd-user/freebsd/os-ioctl-ttycom.h\n create mode 100644 bsd-user/freebsd/os-ioctl-types.h\n create mode 100644 bsd-user/freebsd/os-syscall.h\n create mode 100644 bsd-user/freebsd/scripts/syscallhdr.sh\n delete mode 100644 bsd-user/freebsd/syscall_nr.h\n create mode 100644 bsd-user/thunk.c"
}