Cover Letter Detail
Show a cover letter.
GET /api/covers/2196415/?format=api
{ "id": 2196415, "url": "http://patchwork.ozlabs.org/api/covers/2196415/?format=api", "web_url": "http://patchwork.ozlabs.org/project/opensbi/cover/20260213190459.2540597-1-raymondmaoca@gmail.com/", "project": { "id": 67, "url": "http://patchwork.ozlabs.org/api/projects/67/?format=api", "name": "OpenSBI development", "link_name": "opensbi", "list_id": "opensbi.lists.infradead.org", "list_email": "opensbi@lists.infradead.org", "web_url": "https://github.com/riscv/opensbi", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "https://github.com/riscv/opensbi/commit/{}" }, "msgid": "<20260213190459.2540597-1-raymondmaoca@gmail.com>", "list_archive_url": null, "date": "2026-02-13T19:04:56", "name": "[RFC,0/2] VIRQ (Virtual IRQ) layer to support paravirtual interrupt delivery", "submitter": { "id": 91989, "url": "http://patchwork.ozlabs.org/api/people/91989/?format=api", "name": "Raymond Mao", "email": "raymondmaoca@gmail.com" }, "mbox": "http://patchwork.ozlabs.org/project/opensbi/cover/20260213190459.2540597-1-raymondmaoca@gmail.com/mbox/", "series": [ { "id": 492133, "url": "http://patchwork.ozlabs.org/api/series/492133/?format=api", "web_url": "http://patchwork.ozlabs.org/project/opensbi/list/?series=492133", "date": "2026-02-13T19:04:57", "name": "VIRQ (Virtual IRQ) layer to support paravirtual interrupt delivery", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/492133/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/covers/2196415/comments/", "headers": { "Return-Path": "\n <opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.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 secure) header.d=lists.infradead.org header.i=@lists.infradead.org\n header.a=rsa-sha256 header.s=bombadil.20210309 header.b=bZM2nHnX;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20230601 header.b=dlpUbusR;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=none (no SPF record) smtp.mailfrom=lists.infradead.org\n (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org;\n envelope-from=opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org;\n receiver=patchwork.ozlabs.org)" ], "Received": [ "from bombadil.infradead.org (bombadil.infradead.org\n [IPv6:2607:7c80:54:3::133])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fCM7Y0Sxnz1xpl\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 14 Feb 2026 06:05:27 +1100 (AEDT)", "from localhost ([::1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1vqyTU-00000003pBb-2X6R;\n\tFri, 13 Feb 2026 19:05:08 +0000", "from mail-qt1-x82a.google.com ([2607:f8b0:4864:20::82a])\n\tby bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux))\n\tid 1vqyTS-00000003pAy-0RgA\n\tfor opensbi@lists.infradead.org;\n\tFri, 13 Feb 2026 19:05:07 +0000", "by mail-qt1-x82a.google.com with SMTP id\n d75a77b69052e-506a7bbe9d0so8526321cf.0\n for <opensbi@lists.infradead.org>;\n Fri, 13 Feb 2026 11:05:05 -0800 (PST)", "from ubuntu.localdomain (174-138-202-16.cpe.distributel.net.\n [174.138.202.16])\n by smtp.gmail.com with ESMTPSA id\n 6a1803df08f44-8971cd8b1bfsm70420096d6.28.2026.02.13.11.05.03\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Fri, 13 Feb 2026 11:05:03 -0800 (PST)" ], "DKIM-Signature": [ "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20210309; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc\n\t:To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:\n\tResent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:\n\tList-Owner; bh=HUcqaQLVgBQ2l1IUsPC4GAs6omkXmCIk7aKEd3VG2RA=; b=bZM2nHnX3dqY5w\n\te2/74Inrm83EQQ581cvBLv7i7f9Cd7gKwKyPKfHwcM0Je6BJ1NazKH7mxEPxKn9h5sBP+vOWSHF3j\n\tUGSl9T3tc48Yd8JX4lsrRl5vLY6zk+t6uKyLYoJwQVD7ksTJz1zWVgup/23jqbB2cbOT/bRypBDn9\n\tvBxUob0S2CZpokdSg+bLxTW5C+zxph/7iP+oQ0PgE5T+j4I77kP95nUDNcyZ9xyRkQkWTwQI7OnHa\n\tUJd10mTDdetyMkj9MebIP+VJOUoqtHK307nutTh4yKn85Zw6ItGHQOC2jhcmU5lQlHWR+2Xaod8mq\n\tQ/QmmVgolkLAimEHRZGA==;", "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20230601; t=1771009504; x=1771614304;\n darn=lists.infradead.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=nAogf0Fm3ULW8wKb/+fMC6u1aNls6Rtf6I1dANetz5k=;\n b=dlpUbusRp9GMrtZ2f4dxwNuxkyTgPLqkNOqkQnhKRNhFdfvdocMR+gcZXnKLEI0rXX\n PCWnbGdMvl/z33aI+zazEVaM79MDuAM5X9eJuiDOSoTCbdNEKeSxxUdeuwxG7k/Z+0ql\n gdtob2enpdpaSsApENgQpa9z3cppv8XZZKCEQyIh+xLF0jH7mIiRyo/A2G5S2/Rq0LpN\n V7fSb71U8j7MUkHnSDlLMw/1ciIQ8UdgdWI9CXBMUhY8xg2nliC7AEUjyPbEx5j2vRRr\n OWAcFW7+RKB817SPbUaWS50X5R0+qQ6UAC0CRCg6goVWR4qL8d025sP25ifxf42RyXSX\n E71g==" ], "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1771009504; x=1771614304;\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=nAogf0Fm3ULW8wKb/+fMC6u1aNls6Rtf6I1dANetz5k=;\n b=VUAOM64ZUiGT8c5uKMcnzn6RWrhmRQtFrDCw12ycmTJrRLSTjFz7uLu5uNkKQ6AGRX\n RsI4oSdh9SwZowH7/d66q+S0xlI+IuSje8Di0AD7Pv4Ltu1e/PgUSmkq5hgchFRjeuEI\n g0BagjgyHVF+zHJOzy/qcbpD2PoVlDBgcdXEUb8bgzvG+yfAihuZkfz57UtbbHgIvgIK\n JlKO1qMHBvy/hOhtOp6tL+ysn70hPM07qhAUUc8lTLO+SYqS9jpGnb+hMOk1ufILAPL5\n dMJlOnwXZZ7eAdkPnAUOHoN3a3MAvaDZdFe6iuQIkGF35yAs6PSYRS6+LazS8Erj4+wF\n FoEQ==", "X-Gm-Message-State": "AOJu0YwMR8Lr+0Ifr4qmZkugp/hwbWICtLYL1pxddeBDrTadXbU0oKvK\n\tBaAbzBeaK6b77OWvDmBO8Hs4R8hqWNBB87+N4yme4ku17RWCxyykG4upNDzH/g==", "X-Gm-Gg": "AZuq6aKUJ7X+3pdQOshuscQIvapHGU+rbgJ3WDhfvuYvCCUEIpAi3ez3WGigFiE/tft\n\tNWAfJIhW9PA/RpITxfXgfA6ff3gie8yU9g37NVet8J1YRQtkzHha0KJ2tklzpb4ohbyFDBzxz0e\n\tETI+XNEynJrUzkZucWLSrQfuT1sAxEXIFy8btd9bcfcthzSZYarEoYHEiXF5cUx3rjScONOWaoY\n\tqrcXbUFLCMP9BXtA3x42lmit6IgjQuGR20omPCR+DTQJtJDcBJD+ihQtRtBPpg36L9pzk7JG2Ng\n\tNWHWMo7fXf3dWGqsQ9X6qR1qDgja2GC9ThPIGVovxhfKm4huTbmtEvDdGbC/NLIbkb/Dsq/CBNt\n\tIXXy3LOF82nrwyyX/JyUdhEdYxFKGc+Fo3jyWCVFBycJ3vzdbdBB9/5VvlEkhYwuPQ388L+MKDa\n\t92GuKCWx1P0skBfL9iA7Ap6BHVdpRtnoncoxvXILv1uJ9t59xyaKbnvRaIbilT84RzdxxbJ06aW\n\t0XBFaKg2WE=", "X-Received": "by 2002:ac8:5a03:0:b0:4f3:5652:6743 with SMTP id\n d75a77b69052e-506a8319061mr37668731cf.39.1771009504012;\n Fri, 13 Feb 2026 11:05:04 -0800 (PST)", "From": "Raymond Mao <raymondmaoca@gmail.com>", "To": "opensbi@lists.infradead.org", "Cc": "scott@riscstar.com,\n\tdave.patel@riscstar.com,\n\traymond.mao@riscstar.com,\n\trobin.randhawa@sifive.com,\n\tsamuel.holland@sifive.com,\n\tanup.patel@qti.qualcomm.com,\n\tanuppate@qti.qualcomm.com,\n\tdhaval@rivosinc.com,\n\tpeter.lin@sifive.com", "Subject": "[PATCH RFC 0/2] VIRQ (Virtual IRQ) layer to support paravirtual\n interrupt delivery", "Date": "Fri, 13 Feb 2026 14:04:56 -0500", "Message-Id": "<20260213190459.2540597-1-raymondmaoca@gmail.com>", "X-Mailer": "git-send-email 2.25.1", "MIME-Version": "1.0", "X-CRM114-Version": "20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ", "X-CRM114-CacheID": "sfid-20260213_110506_183060_3EDD571F ", "X-CRM114-Status": "GOOD ( 11.34 )", "X-Spam-Score": "-1.1 (-)", "X-Spam-Report": "Spam detection software,\n running on the system \"bombadil.infradead.org\",\n has NOT identified this incoming email as spam. The original\n message has been attached to this so you can view it or label\n similar future email. If you have any questions, see\n the administrator of that system for details.\n Content preview: From: Raymond Mao This RFC proposes a lightweight VIRQ\n courier/routing\n layer for OpenSBI to support paravirtual / trap-n-emulate style interrupt\n delivery to S-mode payloads, while keeping host physical interrupts handl\n [...]\n Content analysis details: (-1.1 points, 5.0 required)\n pts rule name description\n ---- ----------------------\n --------------------------------------------------\n -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no\n trust\n [2607:f8b0:4864:20:0:0:0:82a listed in]\n [list.dnswl.org]\n 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record\n -0.0 SPF_PASS SPF: sender matches SPF record\n -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from\n author's\n domain\n -0.1 DKIM_VALID Message has at least one valid DKIM or DK\n signature\n 0.1 DKIM_SIGNED Message has a DKIM or DK signature,\n not necessarily valid\n -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from\n envelope-from domain\n -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1%\n [score: 0.0000]\n 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail\n provider\n [raymondmaoca(at)gmail.com]\n 1.0 FORGED_GMAIL_RCVD 'From' gmail.com does not match 'Received'\n headers", "X-BeenThere": "opensbi@lists.infradead.org", "X-Mailman-Version": "2.1.34", "Precedence": "list", "List-Id": "<opensbi.lists.infradead.org>", "List-Unsubscribe": "<http://lists.infradead.org/mailman/options/opensbi>,\n <mailto:opensbi-request@lists.infradead.org?subject=unsubscribe>", "List-Archive": "<http://lists.infradead.org/pipermail/opensbi/>", "List-Post": "<mailto:opensbi@lists.infradead.org>", "List-Help": "<mailto:opensbi-request@lists.infradead.org?subject=help>", "List-Subscribe": "<http://lists.infradead.org/mailman/listinfo/opensbi>,\n <mailto:opensbi-request@lists.infradead.org?subject=subscribe>", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "base64", "Sender": "\"opensbi\" <opensbi-bounces@lists.infradead.org>", "Errors-To": "opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org" }, "content": "From: Raymond Mao <raymond.mao@riscstar.com>\n\nThis RFC proposes a lightweight VIRQ courier/routing layer for\nOpenSBI to support paravirtual / trap-n-emulate style interrupt\ndelivery to S-mode payloads, while keeping host physical interrupts\nhandled in M-mode.\n\n# VIRQ High-level design\n\nAt a high-level the VIRQ layer is composed of three major parts:\n\n1. VIRQ mapping and allocation\n - Provide a stable mapping between a host interrupt endpoint\n (chip_uid, hwirq) and a VIRQ number.\n - VIRQ number allocation uses a growable bitmap.\n\n2. HWIRQ->Domain route rules\n - Route rules are described in DeviceTree under the OpenSBI domain\n configuration using:\n 'opensbi,host-irqs = <first_hwirq count> ...;'\n - Each <first_hwirq count> entry is converted into an internal\n inclusive range [first .. first+count-1] and cached as a route\n rule.\n - Default behavior: if an asserted HWIRQ does not match any route\n rule, it is routed to the root domain.\n\n3. Per-(domain,hart) pending queue couriering\n\n - Each domain maintains a per-hart ring buffer queue of pending\n VIRQs.\n - On an asserted HWIRQ, the courier handler:\n maps (chip_uid,hwirq) -> VIRQ;\n finds destination domain via route rules;\n masks the host HWIRQ (to avoid level-trigger storms);\n pushes the VIRQ into the per-(domain,hart) pending queue;\n injects an SSE event to notify the destination S-mode payload\n - In S-mode, the payload’s SSE trap handler:\n issues an ecall to pop pending VIRQ from the per-hart queue;\n runs its ISR for the device;\n issues an ecall to complete the VIRQ, which unmasks the\n corresponding host HWIRQ\n\n# VIRQ ECALL extension\n\nAdd a vendor-defined SBI extension ecall for VIRQ.\nThis allows S-mode payload to pop/complete the next pending VIRQ has\ncouried into the current domain.\n\n# Reference DT overlay for introducing the route rules:\n\nA reference DT overlay can be used to add route rules to a domain\nusing 'opensbi,host-irqs' property.\n\nFor example, to route UART RX HWIRQ 10 to domain1:\n```\n/ {\n fragment@0 {\n target-path = \"/chosen\";\n __overlay__ {\n opensbi-domains {\n compatible = \"opensbi,domain,config\";\n\n domain1: domain1 {\n compatible = \"opensbi,domain,instance\";\n possible-harts = <0x1>; /* cpu0 */\n regions = <...>; /* minimal executable + device MMIO */\n opensbi,host-irqs = <10 1>; /* route hwirq 10 to domain1 */\n };\n };\n };\n };\n};\n```\nA sample DT overlay dts for reference is attached together with the\nRFC.\n\n# Boot-time and runtime flow\n\n1. Cold boot flow (M-mode):\n - During FDT domain parsing, extract 'opensbi,host-irqs' from each\n domain instance and cache the route rules in VIRQ layer.\n - Initialize host irqchip drivers and register the VIRQ courier\n handler.\n2. When a host HWIRQ is asserted and trapped/handled in M-mode by the\n host irqchip driver.\n - The courier handler maps (chip_uid,hwirq) to a stable VIRQ number.\n - The courier handler routes the interrupt to the destination\n domain using cached route rules (or defaults to root domain if no\n rules match).\n - The courier handler masks the host HWIRQ and pushes the VIRQ into\n the per-hart pending queue of the routed domain.\n - The courier handler injects an SSE event to notify S-mode.\n - The S-mode payload traps the SSE, pops the pending VIRQ(s) via\n ecall, and runs the ISR.\n - The S-mode payload completes the interrupt via ecall, which\n unmasks the host HWIRQ, allowing further interrupts.\n\nRaymond Mao (2):\n lib: sbi: Prototype of Virtual IRQ (VIRQ) layer for\n mapping/routing/courier/ IRQs\n platform: generic: Add sample dts overlay for testing hwirq/domain\n route rules\n\n include/sbi/sbi_virq.h | 401 ++++++++++++++++++++\n platform/generic/virt/hwirq_bind_domain.dts | 79 ++++\n 2 files changed, 480 insertions(+)\n create mode 100644 include/sbi/sbi_virq.h\n create mode 100644 platform/generic/virt/hwirq_bind_domain.dts" }