Show a cover letter.

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

{
    "id": 2227762,
    "url": "http://patchwork.ozlabs.org/api/1.1/covers/2227762/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/cover/20260424083837.214947-1-adityag@linux.ibm.com/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/1.1/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": ""
    },
    "msgid": "<20260424083837.214947-1-adityag@linux.ibm.com>",
    "date": "2026-04-24T08:38:27",
    "name": "[v6,00/10] Implement MPIPL for PowerNV",
    "submitter": {
        "id": 86610,
        "url": "http://patchwork.ozlabs.org/api/1.1/people/86610/?format=api",
        "name": "Aditya Gupta",
        "email": "adityag@linux.ibm.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/cover/20260424083837.214947-1-adityag@linux.ibm.com/mbox/",
    "series": [
        {
            "id": 501318,
            "url": "http://patchwork.ozlabs.org/api/1.1/series/501318/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=501318",
            "date": "2026-04-24T08:38:28",
            "name": "Implement MPIPL for PowerNV",
            "version": 6,
            "mbox": "http://patchwork.ozlabs.org/series/501318/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/covers/2227762/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=ibm.com header.i=@ibm.com header.a=rsa-sha256\n header.s=pp1 header.b=Mtm9B9dB;\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 4g25x91vSBz1yD5\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 18:39:39 +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 1wGC3v-0004Wm-M4; Fri, 24 Apr 2026 04:38:59 -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 <adityag@linux.ibm.com>)\n id 1wGC3s-0004UA-VI; Fri, 24 Apr 2026 04:38:57 -0400",
            "from mx0b-001b2d01.pphosted.com ([148.163.158.5])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <adityag@linux.ibm.com>)\n id 1wGC3q-00058B-AR; Fri, 24 Apr 2026 04:38:56 -0400",
            "from pps.filterd (m0353725.ppops.net [127.0.0.1])\n by mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63NIB4l03944217; Fri, 24 Apr 2026 08:38:48 GMT",
            "from ppma13.dal12v.mail.ibm.com\n (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221])\n by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4dpeu3v2j8-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n Fri, 24 Apr 2026 08:38:47 +0000 (GMT)",
            "from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1])\n by ppma13.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id\n 63O8ZUJJ015566;\n Fri, 24 Apr 2026 08:38:46 GMT",
            "from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226])\n by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4dpjkya3f6-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n Fri, 24 Apr 2026 08:38:46 +0000 (GMT)",
            "from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com\n [10.20.54.105])\n by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id\n 63O8chI950266402\n (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);\n Fri, 24 Apr 2026 08:38:43 GMT",
            "from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1])\n by IMSVA (Postfix) with ESMTP id EE99E2004E;\n Fri, 24 Apr 2026 08:38:42 +0000 (GMT)",
            "from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1])\n by IMSVA (Postfix) with ESMTP id 6B1C42004F;\n Fri, 24 Apr 2026 08:38:39 +0000 (GMT)",
            "from li-3c92a0cc-27cf-11b2-a85c-b804d9ca68fa.ibm.com (unknown\n [9.39.31.230]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP;\n Fri, 24 Apr 2026 08:38:39 +0000 (GMT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc\n :content-transfer-encoding:date:from:message-id:mime-version\n :subject:to; s=pp1; bh=sL9gp7I/jxSDHbP99e7HfABkGVMg3VPFh1Wfo+llI\n LA=; b=Mtm9B9dB47ruOvFU6OU/X9GASH4rb/k+Io/PfgY6oFXpOWAVcqCJWY3vU\n BeMtvktl//iMoFdMAznM57tJ8noI1K5S7xlsOHsKdnFWp92UEKGzRINMC5wtDpEB\n bYZ5Q8PJEX7VWv1BCu/oV0UasxaraFlnI/jT9WwfXFfqWylS0kRPj24KxWJkRgVm\n smSAxn+wlBW6riTnFdlNS3AhEGf6Qy5QGwl6ZRbLxQzBGdiHXF6+rFhOlLOb/273\n 9rfmh+HWSahFq/r6aWZWdMoCN8u59vNE5Sj54Hi+GTnoB4llRHWfB1WGcXELHYAP\n JpAZ0g4nyyUzW9HjRMJJJfjRKZVOA==",
        "From": "Aditya Gupta <adityag@linux.ibm.com>",
        "To": "<qemu-devel@nongnu.org>",
        "Cc": "<qemu-ppc@nongnu.org>, Hari Bathini <hbathini@linux.ibm.com>,\n Sourabh Jain <sourabhjain@linux.ibm.com>,\n Harsh Prateek Bora <harshpb@linux.ibm.com>,\n Nicholas Piggin <npiggin@gmail.com>,\n Miles Glenn <milesg@linux.ibm.com>, Chinmay Rath <rathc@linux.ibm.com>,\n Shivang Upadhyay <shivangu@linux.ibm.com>",
        "Subject": "[PATCH v6 00/10] Implement MPIPL for PowerNV",
        "Date": "Fri, 24 Apr 2026 14:08:27 +0530",
        "Message-ID": "<20260424083837.214947-1-adityag@linux.ibm.com>",
        "X-Mailer": "git-send-email 2.53.0",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-TM-AS-GCONF": "00",
        "X-Proofpoint-Reinject": "loops=2 maxloops=12",
        "X-Proofpoint-GUID": "yUepKAV0ddDhYJSV6pSu7arK8pcMlFKL",
        "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNDI0MDA3NiBTYWx0ZWRfX3/RyJpWobPwP\n PzTl13klBRWYYktukrt+1OPRmGztrnm21rmGL0jjWX7rNeHeJh8oU2BSqqWA5OW8U/maEEGKhn4\n PnnZ4Rd9QhywBuvOhYKORg7iMGk4hZrK5Zu5lqChhwEypSM6YCktyIxtThd2W1En3dYf/SXBFZR\n D2waY0V6gGoindKZUEJwF1SPPF4xh3SV0qIwA2xsDZIMjDqwDfX8r7yrN3RgmgLoDvFeUTwgynf\n HsYn11zUsXr3YyzwS6Vu9IlBCpKHcTfcsR4v0oN3iRJ+8OxGTyFmZxvgKpVQYiCUYk3M8K8H7nx\n K0bKpghpsEIDhC4JANsRG++KBNrCQsxekHhxO7SutTuOAWKrgD3VE1rlcS6JQzF2w/HdznFvWN0\n RNfQp2dpMV6+bWeTxpoKjycI7nMt4t0PdRS2axgo5fPEZf8D5oLUAH+lCJQGlB8mZ5LrnQTvAxJ\n RFe1QHcICsv7AQZkKYQ==",
        "X-Authority-Analysis": "v=2.4 cv=a6kAM0SF c=1 sm=1 tr=0 ts=69eb2c17 cx=c_pps\n a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17\n a=A5OVakUREuEA:10 a=VkNPw1HP01LnGYTKEx00:22 a=RnoormkPH1_aCDwRdu11:22\n a=V8glGbnc2Ofi9Qvn3v5h:22 a=p0WdMEafAAAA:8 a=OEKdL03DoN76juSg_5EA:9",
        "X-Proofpoint-ORIG-GUID": "3RrMm4t9tr2EbiJ_qaKELuJMKelE2iDF",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-23_03,2026-04-21_02,2025-10-01_01",
        "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n malwarescore=0 suspectscore=0 spamscore=0 adultscore=0 bulkscore=0\n lowpriorityscore=0 impostorscore=0 clxscore=1015 phishscore=0\n priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc=\n route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000\n definitions=main-2604240076",
        "Received-SPF": "pass client-ip=148.163.158.5;\n envelope-from=adityag@linux.ibm.com;\n helo=mx0b-001b2d01.pphosted.com",
        "X-Spam_score_int": "3",
        "X-Spam_score": "0.3",
        "X-Spam_bar": "/",
        "X-Spam_report": "(0.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1,\n DKIM_VALID_EF=-0.1, HEXHASH_WORD=2.984, RCVD_IN_DNSWL_LOW=-0.7,\n RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=no 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": "Overview\n=========\n\nImplemented MPIPL (Memory Preserving IPL, aka fadump) on PowerNV machine\nin QEMU.\n\nFadump is an alternative dump mechanism to kdump, in which we the firmware\ndoes a memory preserving boot, and the second/crashkernel is booted fresh\nlike a normal system reset, instead of the crashed kernel loading the\nsecond/crashkernel in case of kdump.\n\nMPIPL in PowerNV, is similar to fadump in Pseries. The idea is same, memory\npreserving, where in PowerNV we are assisted by SBE (Self Boot Engine) &\nHostboot, while in Pseries we are assisted by PHyp (Power Hypervisor)\n\nFor implementing in baremetal/powernv QEMU, we need to export a\n\"ibm,opal/dump\" node in the device tree, to tell the kernel we support\nMPIPL\n\nOnce kernel sees the support, and \"fadump=on\" is passed on commandline,\nkernel will register memory regions to preserve with Skiboot.\n\nKernel sends these data using OPAL calls, after which skiboot/opal saves\nthe memory region details to MDST and MDDT tables (S-source, D-destination)\n\nThen in the event of a kernel crash, the kernel initiates MPIPL with another\nOPAL code (opal_cec_reboot2), this request goes to Skiboot.\nSkiboot then triggers the \"S0 Interrupt\" to the SBE (Self Boot Engine),\nalong with OPAL's relocated base address.\n\nSBE then stops all core clocks, and only does particular ISteps for a\nmemory preserving boot.\n\nThen, hostboot comes up, and with help of the relocated base address, it\naccesses MDST & MDDT tables (S-source and D-destination), and preserves the\nmemory regions according to the data in these tables.\nAnd after preserving, it writes the preserved memory region details to MDRT\ntables (R-Result), for the kernel to know where/whether a memory region is\npreserved.\n\nBoth SBE's and hostboot responsiblities are implemented in the SBE code\nin QEMU.\n\nThen in the second kernel/crashkernel boot, OPAL passes the \"mpipl-boot\"\nproperty for the kernel to know that a dump is active, which kernel then\nexports in /proc/vmcore\n\nTesting\n====================\n\n1. Git tree for testing: https://gitlab.com/adi-g15-ibm/qemu/tree/fadump-powernv-v6\n\n2. Gitlab pipeline: https://gitlab.com/adi-g15-ibm/qemu/-/pipelines/2476290852\n\n3. QEMU ppc64 functional tests:\n    Ok:                13  \n    Fail:              0   \n    Skipped:           3   \n\n4. Analysing generated vmcore:\n\n    # file /proc/vmcore\n    /proc/vmcore: ELF 64-bit LSB core file, 64-bit PowerPC or cisco 7500, OpenPOWER ELF V2 ABI, version 1 (SYSV), SVR4-style\n\n    # crash vmlinux-38fec10eb60d-network vmcore-powernv-24apr26\n    ...\n          KERNEL: vmlinux-38fec10eb60d-network\n        DUMPFILE: vmcore-powernv-24apr26\n            CPUS: 2\n            DATE: Thu Jan  1 05:30:00 IST 1970\n          UPTIME: 00:01:38\n    LOAD AVERAGE: 0.13, 0.08, 0.03\n           TASKS: 84\n        NODENAME: buildroot\n         RELEASE: 6.14.0\n         VERSION: #1 SMP Thu Apr  3 08:06:13 CDT 2025\n         MACHINE: ppc64le  (1000 Mhz)\n          MEMORY: 6 GB\n           PANIC: \"Kernel panic - not syncing: sysrq triggered crash\"\n             PID: 239\n         COMMAND: \"sh\"\n            TASK: c00000000933cb00  [THREAD_INFO: c00000000933cb00]\n             CPU: 0\n           STATE: TASK_RUNNING (PANIC)\n    \n    crash> bt\n    PID: 239      TASK: c00000000933cb00  CPU: 0    COMMAND: \"sh\"\n     R0:  c000000000059604    R1:  c0000000093df9c0    R2:  c0000000020eaa00\n     R3:  c0000000bffffff8    R4:  c0000000071e0dc2    R5:  0000000000000002\n     R6:  5245424d554e0a32    R7:  4d5f584944415228    R8:  454b0a313d29554d\n     R9:  0000000000000000    R10: 4152430a303d5445    R11: 313d454d49544853\n     R12: 3837383030373737    R13: c00000017ffff480    R14: 00000001172c0460\n     R15: 0000000000000000    R16: 0000000000000000    R17: 00007fffe17bac78\n     R18: 000000012cd00700    R19: 0000000000000000    R20: 000000012cd006f8\n     R21: fcffffffffffffff    R22: c00000000933cb00    R23: 0000000000000000\n     R24: a8aaaaaaaaaaaaaa    R25: c000000003bb7eb8    R26: c000000003e5eab8\n     R27: c0000000c0000000    R28: 0000000000000000    R29: 0000000000000002\n     R30: c000000003e5eab8    R31: c000000003e16b30\n     NIP: c000000000059720    MSR: 9000000000001033    OR3: 0000000000000000\n     CTR: 0000000000000000    LR:  c00000000002f69c    XER: 0000000020040006\n     CCR: 0000000028002202    MQ:  0000000000000003    DAR: 0000000000000000\n     DSISR: 0000000000000000     Syscall Result: 0000000000000000\n     [NIP  : crash_fadump+560]\n     [LR   : ppc_panic_fadump_handler+84]\n     #0 [c0000000093df9c0] crash_fadump at c00000000005966c\n     #1 [c0000000093dfa20] ppc_panic_fadump_handler at c00000000002f69c\n     #2 [c0000000093dfa40] notifier_call_chain at c0000000001ab390\n     #3 [c0000000093dfaa0] atomic_notifier_call_chain at c0000000001ab4a4\n     #4 [c0000000093dfac0] panic at c000000000163598\n     #5 [c0000000093dfb60] sysrq_handle_crash at c000000000beafd4\n     #6 [c0000000093dfbc0] __handle_sysrq at c000000000beb9b4\n     #7 [c0000000093dfc60] write_sysrq_trigger at c000000000bec34c\n     #8 [c0000000093dfce0] proc_reg_write at c00000000071027c\n     #9 [c0000000093dfd10] vfs_write at c000000000620a28\n    #10 [c0000000093dfdc0] ksys_write at c000000000621010\n    #11 [c0000000093dfe10] system_call_exception at c0000000000324b8\n    #12 [c0000000093dfe50] system_call_vectored_common at c00000000000bff0\n    crash> kmem -i\n                     PAGES        TOTAL      PERCENTAGE\n        TOTAL MEM    92396       5.6 GB         ----\n             FREE    89710       5.5 GB   97% of TOTAL MEM\n             USED     2686     167.9 MB    2% of TOTAL MEM\n          BUFFERS        0            0    0% of TOTAL MEM\n           CACHED     1500      93.8 MB    1% of TOTAL MEM\n             SLAB      674      42.1 MB    0% of TOTAL MEM\n    \n       TOTAL HUGE        0            0         ----\n        HUGE FREE        0            0    0% of TOTAL HUGE\n    \n       TOTAL SWAP        0            0         ----\n        SWAP USED        0            0    0% of TOTAL SWAP\n        SWAP FREE        0            0    0% of TOTAL SWAP\n    \n     COMMIT LIMIT    46198       2.8 GB         ----\n        COMMITTED        0            0    0% of TOTAL LIMIT\n\tcrash> # ps and kmem -i works\n\nChangelog\n====================\n\nv5 -> v6:\n* rebased to upstream commit bb230769b4d01de714bed686161ad39a8f4f3fd1\n* #2,3,4: remove osdep.h include from .h file\n* #3: use RAM_ADDR_FMT format for ram size\n* #4,5: replace '__packed' with 'QEMU_PACKED'\n* #8: add pnv_dt_create in pnv_reset, to create dt after mpipl\n* #10: add sourabh as reviewer\n\nv4 -> v5:\n* #4/10: set chunk_id=0 before copying\n* #7/10: remove unnecessary bool check, ie. 'if (b1) b2=b1 else b2=!b1' => 'b2=b1'\n\nv3 -> v4:\n* #2/10: s/recieves/receives\n* #7/10: remove empty line at EOF\n\nv2 -> v3:\n* rebase to upstream, changes in patches below\n* #2/10: no code change. add comment that skiboot triggers S0\n* #3/10: stash command: handle invalid skiboot_base sent by guest\n* #4/10: s/src_len/data_len/\n* #4/10: use TARGET_FMT_lx/PRIx64 instead of %lx to prevent build errors\n* #4/10: stop copying chunks once copying a chunk fails\n* #5/10: use address_space_{read,write} instead of cpu_physical_memory_{read,write}\n* #5/10: add more SPRs to be saved, same set of SPRs as spapr FADump, except CR and FPSCR\n* #7/10: only export \"mpipl-boot\" property if preserving cpu states and writing MDRT was successful, otherwise continue with normal reboot\n* #7/10: use address_space_{read,write} instead of cpu_physical_memory_{read,write}\n* #8/10: reword commit description to mention fw-load-area, no code change\n* #10/10: add entry in MAINTAINERS file\n\nAditya Gupta (10):\n  ppc/pnv: Move SBE host doorbell function to top of file\n  ppc/mpipl: Implement S0 SBE interrupt\n  ppc/pnv: Handle stash command in PowerNV SBE\n  pnv/mpipl: Preserve memory regions as per MDST/MDDT tables\n  pnv/mpipl: Preserve CPU registers after crash\n  pnv/mpipl: Set thread entry size to be allocated by firmware\n  pnv/mpipl: Write the preserved CPU and MDRT state\n  pnv/mpipl: Enable MPIPL support\n  tests/functional: Add test for MPIPL in PowerNV\n  MAINTAINERS: Add entry for MPIPL (PowerNV)\n\n MAINTAINERS                           |   9 +\n hw/ppc/meson.build                    |   1 +\n hw/ppc/pnv.c                          | 108 +++++-\n hw/ppc/pnv_mpipl.c                    | 482 ++++++++++++++++++++++++++\n hw/ppc/pnv_sbe.c                      |  85 ++++-\n include/hw/ppc/pnv.h                  |   6 +\n include/hw/ppc/pnv_mpipl.h            | 168 +++++++++\n tests/functional/ppc64/test_fadump.py |  35 +-\n 8 files changed, 862 insertions(+), 32 deletions(-)\n create mode 100644 hw/ppc/pnv_mpipl.c\n create mode 100644 include/hw/ppc/pnv_mpipl.h"
}