{"id":2225964,"url":"http://patchwork.ozlabs.org/api/1.2/patches/2225964/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-pci/patch/20260421212818.4481-1-ramesh@linux.ibm.com/","project":{"id":28,"url":"http://patchwork.ozlabs.org/api/1.2/projects/28/?format=json","name":"Linux PCI development","link_name":"linux-pci","list_id":"linux-pci.vger.kernel.org","list_email":"linux-pci@vger.kernel.org","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260421212818.4481-1-ramesh@linux.ibm.com>","list_archive_url":null,"date":"2026-04-21T21:28:18","name":"[v3] PCI: hotplug: Add 'uevent' sysfs attribute to trigger slot events","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"4e0f7affba05d0dca251326756f301df43521819","submitter":{"id":91783,"url":"http://patchwork.ozlabs.org/api/1.2/people/91783/?format=json","name":"Ramesh Errabolu","email":"ramesh@linux.ibm.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-pci/patch/20260421212818.4481-1-ramesh@linux.ibm.com/mbox/","series":[{"id":500898,"url":"http://patchwork.ozlabs.org/api/1.2/series/500898/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-pci/list/?series=500898","date":"2026-04-21T21:28:18","name":"[v3] PCI: hotplug: Add 'uevent' sysfs attribute to trigger slot events","version":3,"mbox":"http://patchwork.ozlabs.org/series/500898/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2225964/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2225964/checks/","tags":{},"related":[],"headers":{"Return-Path":"\n <linux-pci+bounces-52883-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-pci@vger.kernel.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=cafNqEFM;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-pci+bounces-52883-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com\n header.b=\"cafNqEFM\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=148.163.158.5","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=linux.ibm.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=linux.ibm.com"],"Received":["from tor.lore.kernel.org (tor.lore.kernel.org\n [IPv6:2600:3c04:e001:36c::12fc:5321])\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 4g0b7k3j8Kz1yGs\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 07:28:34 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id 31CF5305E9DB\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 21 Apr 2026 21:28:31 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 9D6DF3A1D1B;\n\tTue, 21 Apr 2026 21:28:28 +0000 (UTC)","from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com\n [148.163.158.5])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id AD5A23B7B6B;\n\tTue, 21 Apr 2026 21:28:26 +0000 (UTC)","from pps.filterd (m0356516.ppops.net [127.0.0.1])\n\tby mx0a-001b2d01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63LIm30D679320;\n\tTue, 21 Apr 2026 21:28:25 GMT","from ppma13.dal12v.mail.ibm.com\n (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221])\n\tby mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 4dpeu7ggk2-1\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n\tTue, 21 Apr 2026 21:28:24 +0000 (GMT)","from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1])\n\tby ppma13.dal12v.mail.ibm.com (8.18.1.7/8.18.1.7) with ESMTP id\n 63LLKRqW007617;\n\tTue, 21 Apr 2026 21:28:24 GMT","from smtprelay03.dal12v.mail.ibm.com ([172.16.1.5])\n\tby ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 4dmpgga9hd-1\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n\tTue, 21 Apr 2026 21:28:24 +0000 (GMT)","from smtpav01.wdc07v.mail.ibm.com (smtpav01.wdc07v.mail.ibm.com\n [10.39.53.228])\n\tby smtprelay03.dal12v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id\n 63LLSN0427329096\n\t(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);\n\tTue, 21 Apr 2026 21:28:23 GMT","from smtpav01.wdc07v.mail.ibm.com (unknown [127.0.0.1])\n\tby IMSVA (Postfix) with ESMTP id E90D45804B;\n\tTue, 21 Apr 2026 21:28:22 +0000 (GMT)","from smtpav01.wdc07v.mail.ibm.com (unknown [127.0.0.1])\n\tby IMSVA (Postfix) with ESMTP id 0D69C58059;\n\tTue, 21 Apr 2026 21:28:22 +0000 (GMT)","from IBM-GVXK264.ibm.com (unknown [9.61.249.207])\n\tby smtpav01.wdc07v.mail.ibm.com (Postfix) with ESMTP;\n\tTue, 21 Apr 2026 21:28:21 +0000 (GMT)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1776806908; cv=none;\n b=D/RkOh5yDfWvk22kNHK7A9wU6jLhH56tVoU5Q94y15hcFu8li/kxbhVz8JS+8Lkw+Y3Bao3uZxL5uVOV95eMrG7ZqAkNWDFFPWYr1NEbuMF3j5oXnWRHo5mA0/NpaVqqzeKBlnd90cYWhsQkA7Dzc2flggkiCw8rSSWQiTUw2vw=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1776806908; c=relaxed/simple;\n\tbh=gLO72HpYILTjhJP3ADM6YgdW1vay2WGkfbYmUAKTFL0=;\n\th=From:To:Cc:Subject:Date:Message-ID:MIME-Version;\n b=F4FgUZiFIKLaMiuREFN5gUKUEjzWHiONwXpqGlhKg49HMgsOgfCw8Sqwq0GwcX9rq7yVyWt/v0K92A5EoLBkTVKmARsGwjgYypFP2ZQxSJT+e1MOrrLeUlgrAWdUnF5QLu488dFB+aSfSuZDITijlbXgEJRbm+fbkvwVeK62f8s=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=linux.ibm.com;\n spf=pass smtp.mailfrom=linux.ibm.com;\n dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com\n header.b=cafNqEFM; arc=none smtp.client-ip=148.163.158.5","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc\n\t:content-transfer-encoding:date:from:message-id:mime-version\n\t:subject:to; s=pp1; bh=7JjQ/P7hm0zpQ7/YHg7UQkUE4x9+XgshMilrWg0Z3\n\tHk=; b=cafNqEFM9DZbbuLm1UoqscKl/aPDksDwKYFo03n/5/6URRdAUjtS/7PIX\n\tcAR1PThsHupsqFH6I1B2QwcxhWfNHlTMQ6tIU4Y/fEO0tFjvDDU+uPAL4rYZv5Q6\n\tC2JPDEV0wFfTtd6l3I8TBGBJVsq9eVD/hvaFsuPMLOFveojx7V8oFwHL+6MKvuJC\n\tL4haWkshO8ZxjC9MOY827XtZUzN+gXoFTiBeaiJMr/yQem4FHOogHxDqQy9QA/7d\n\t/nvcGVb7Ce5YhrF3Ad5mHc2q/Vw9t8UUY5lWxnXWIrWYBsfT5Fvg8H+t/nblZt5G\n\t+pOxQndZqmUsoXqyHg0sNR6unv+lw==","From":"Ramesh Errabolu <ramesh@linux.ibm.com>","To":"linux-pci@vger.kernel.org","Cc":"linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org,\n        Bjorn Helgaas <bhelgaas@google.com>, Lukas Wunner <lukas@wunner.de>,\n        Niklas Schnelle <schnelle@linux.ibm.com>,\n        Peter Oberparleiter <oberpar@linux.ibm.com>,\n        Matthew Rosato <mjrosato@linux.ibm.com>,\n        Gerd Bayer <gbayer@linux.ibm.com>, Heiko Carstens <hca@linux.ibm.com>,\n        Vasily Gorbik <gor@linux.ibm.com>,\n        Alexander Gordeev <agordeev@linux.ibm.com>,\n        Ramesh Errabolu <ramesh@linux.ibm.com>","Subject":"[PATCH v3] PCI: hotplug: Add 'uevent' sysfs attribute to trigger slot\n events","Date":"Tue, 21 Apr 2026 16:28:18 -0500","Message-ID":"<20260421212818.4481-1-ramesh@linux.ibm.com>","X-Mailer":"git-send-email 2.43.0","Precedence":"bulk","X-Mailing-List":"linux-pci@vger.kernel.org","List-Id":"<linux-pci.vger.kernel.org>","List-Subscribe":"<mailto:linux-pci+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-pci+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","X-TM-AS-GCONF":"00","X-Proofpoint-Reinject":"loops=2 maxloops=12","X-Proofpoint-ORIG-GUID":"Hy186v1r5P2xMCgPA6DuL5Cvqq1jmcsl","X-Authority-Analysis":"v=2.4 cv=Ksp9H2WN c=1 sm=1 tr=0 ts=69e7ebf9 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=Y2IxJ9c9Rs8Kov3niI8_:22 a=VnNF1IyMAAAA:8 a=CMxJa-TJIm8yq2BzSosA:9","X-Proofpoint-GUID":"Hgbl4nBtl209U3aHG8EJ3c1K7NwgYmtP","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwNDIxMDIxMiBTYWx0ZWRfXyyMxe0uWTYAb\n qH/cCSZC+72qeclS/dF/hypyHWDvUiVOdT4Inp35QCGCrh6nEZNalaRuDkdBv/N5rYPTUPRF8h0\n E9RB2vn67onxGMWPv4EM1Jx6SdncWQ1aI6EX2dsPwON7rsSSZ+jibilDHCiIJSc8JRBWYrrpuWZ\n k8pqLmmz3O6hQ62FtYLleUOLPTTjkD8ri7mo5RQs0Z4Ri2Pi7ShOKCF5NhNEhdW7V5B9xFKfAJT\n KBa25v+aBKSqu08oQGXLj2c1WmHxHY+UX9DSDA3ZyeympX2imkwTRTNpNkK5jZktOFYObtlKTn6\n yqGszPDuFCtHtg3XbBgDEAanO83plYn6vm3u+RYY6aayDln02AMCtiYpmOyrLdxU0kqJQ8bbQsp\n yZXwZ/6DcIBr8gpzI7Ez9sgd83cIdCT+yc5qIjW2tku2Uh21t3Rsyku8q8zyyR900PhIlmJIzKM\n 9zoGp6LRVzkPMfb5Vuw==","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-21_03,2026-04-21_02,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n bulkscore=0 impostorscore=0 malwarescore=0 phishscore=0 priorityscore=1501\n lowpriorityscore=0 clxscore=1015 adultscore=0 suspectscore=0 spamscore=0\n classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0\n reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2604210212"},"content":"Add a write-only 'uevent' sysfs attribute for synthesizing\nuevents for a PCI slot. This extends the existing uevent\nsupport which emits a KOBJ_ADD uevent in pci_hp_add() with\nthe ability to replay such uevents for cold plugged devices.\nAs such events are only emitted by hotplug capable PCI slots\nso is the support for synthesizing them.\n\nThe change was validated by manually triggering 'add' uevent\nfor a specific hotplug PCI slot:\n\n    $ echo \"add $(uuidgen)\" | sudo tee   \\\n                /sys/bus/pci/slots/<slot-id>/uevent\n\nSigned-off-by: Ramesh Errabolu <ramesh@linux.ibm.com>\nReviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>\nTested-by: Niklas Schnelle <schnelle@linux.ibm.com>\n---\n drivers/pci/hotplug/pci_hotplug_core.c | 25 +++++++++++++++++++++++++\n 1 file changed, 25 insertions(+)\n\nChanges since v2:\n- Fix commit subject prefix to \"PCI: hotplug:\"\n- Add Reviewed-by and Tested-by from Niklas Schnelle","diff":"diff --git a/drivers/pci/hotplug/pci_hotplug_core.c b/drivers/pci/hotplug/pci_hotplug_core.c\nindex fadcf98a8a66..c3634b1cc7a8 100644\n--- a/drivers/pci/hotplug/pci_hotplug_core.c\n+++ b/drivers/pci/hotplug/pci_hotplug_core.c\n@@ -176,6 +176,21 @@ static struct pci_slot_attribute hotplug_slot_attr_presence = {\n \t.show = presence_read_file,\n };\n \n+static ssize_t uevent_write_file(struct pci_slot *slot,\n+\t\t\t\t const char *buf, size_t len)\n+{\n+\tint rc;\n+\n+\trc = kobject_synth_uevent(&slot->kobj, buf, len);\n+\treturn rc ? rc : len;\n+}\n+\n+static struct pci_slot_attribute hotplug_slot_attr_uevent = {\n+\t.attr = {.name = \"uevent\", .mode = S_IFREG | 0200},\n+\t.show = NULL,\n+\t.store = uevent_write_file\n+};\n+\n static ssize_t test_write_file(struct pci_slot *pci_slot, const char *buf,\n \t\t\t       size_t count)\n {\n@@ -254,6 +269,11 @@ static int fs_add_slot(struct hotplug_slot *slot, struct pci_slot *pci_slot)\n \t\tkobject_put(kobj);\n \t}\n \n+\tretval = sysfs_create_file(&pci_slot->kobj,\n+\t\t\t\t   &hotplug_slot_attr_uevent.attr);\n+\tif (retval)\n+\t\tgoto exit_uevent;\n+\n \tif (has_power_file(slot)) {\n \t\tretval = sysfs_create_file(&pci_slot->kobj,\n \t\t\t\t\t   &hotplug_slot_attr_power.attr);\n@@ -306,6 +326,9 @@ static int fs_add_slot(struct hotplug_slot *slot, struct pci_slot *pci_slot)\n \tif (has_power_file(slot))\n \t\tsysfs_remove_file(&pci_slot->kobj, &hotplug_slot_attr_power.attr);\n exit_power:\n+\tsysfs_remove_file(&pci_slot->kobj,\n+\t\t\t  &hotplug_slot_attr_uevent.attr);\n+exit_uevent:\n \tsysfs_remove_link(&pci_slot->kobj, \"module\");\n exit:\n \treturn retval;\n@@ -313,6 +336,8 @@ static int fs_add_slot(struct hotplug_slot *slot, struct pci_slot *pci_slot)\n \n static void fs_remove_slot(struct hotplug_slot *slot, struct pci_slot *pci_slot)\n {\n+\tsysfs_remove_file(&pci_slot->kobj, &hotplug_slot_attr_uevent.attr);\n+\n \tif (has_power_file(slot))\n \t\tsysfs_remove_file(&pci_slot->kobj, &hotplug_slot_attr_power.attr);\n \n","prefixes":["v3"]}