Linux driver-core infrastructure
 help / color / mirror / Atom feed
From: Niklas Schnelle <schnelle@linux.ibm.com>
To: Bjorn Helgaas <helgaas@kernel.org>,
	Ramesh Errabolu <ramesh@linux.ibm.com>
Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-s390@vger.kernel.org, "Bjorn Helgaas" <bhelgaas@google.com>,
	"Lukas Wunner" <lukas@wunner.de>,
	"Krzysztof Wilczyński" <kw@linux.com>,
	"Peter Oberparleiter" <oberpar@linux.ibm.com>,
	"Matthew Rosato" <mjrosato@linux.ibm.com>,
	"Gerd Bayer" <gbayer@linux.ibm.com>,
	"Heiko Carstens" <hca@linux.ibm.com>,
	"Vasily Gorbik" <gor@linux.ibm.com>,
	"Alexander Gordeev" <agordeev@linux.ibm.com>,
	"Farhan Ali" <alifm@linux.ibm.com>,
	"Leon Romanovsky" <leon@kernel.org>,
	driver-core@lists.linux.dev
Subject: Re: [PATCH v4] PCI: hotplug: Add 'uevent' sysfs attribute to trigger slot events
Date: Tue, 16 Jun 2026 17:40:16 +0200	[thread overview]
Message-ID: <ec9d383ff4881945a6b242a37e4024cacc406261.camel@linux.ibm.com> (raw)
In-Reply-To: <20260521144853.GA163149@bhelgaas>

On Thu, 2026-05-21 at 09:48 -0500, Bjorn Helgaas wrote:
> [+cc Leon, driver-core]
> 
> (Ramesh, when you post new versions of a series, please cc anybody who
> responded to earlier versions.  Also, v2, v3, and v4 are identical, so
> there's no need to post them as new "versions"; you can just ping the
> original thread or label them as "RESEND")
> 
> On Wed, May 20, 2026 at 05:13:20PM -0500, Ramesh Errabolu wrote:
> > Add a write-only 'uevent' sysfs attribute for synthesizing
> > uevents for a PCI slot. This extends the existing uevent
> > support which emits a KOBJ_ADD uevent in pci_hp_add() with
> > the ability to replay such uevents for cold plugged devices.
> > As such events are only emitted by hotplug capable PCI slots
> > so is the support for synthesizing them.
> > 
> > The change was validated by manually triggering 'add' uevent
> > for a specific hotplug PCI slot:
> > 
> >     $ echo "add $(uuidgen)" | sudo tee   \
> >                 /sys/bus/pci/slots/<slot-id>/uevent
> > 
> > Signed-off-by: Ramesh Errabolu <ramesh@linux.ibm.com>
> > Reviewed-by: Niklas Schnelle <schnelle@linux.ibm.com>
> > Tested-by: Niklas Schnelle <schnelle@linux.ibm.com>
> > ---
> >  drivers/pci/hotplug/pci_hotplug_core.c | 25 +++++++++++++++++++++++++
> >  1 file changed, 25 insertions(+)
> > 
> > diff --git a/drivers/pci/hotplug/pci_hotplug_core.c b/drivers/pci/hotplug/pci_hotplug_core.c
> > index fadcf98a8a66..c3634b1cc7a8 100644
> > --- a/drivers/pci/hotplug/pci_hotplug_core.c
> > +++ b/drivers/pci/hotplug/pci_hotplug_core.c
> > @@ -173,12 +173,27 @@ static ssize_t presence_read_file(struct pci_slot *pci_slot, char *buf)
> >  
> >  static struct pci_slot_attribute hotplug_slot_attr_presence = {
> >  	.attr = {.name = "adapter", .mode = S_IFREG | S_IRUGO},
> >  	.show = presence_read_file,
> >  };
> >  
> > +static ssize_t uevent_write_file(struct pci_slot *slot,
> > +				 const char *buf, size_t len)
> > +{
> > +	int rc;
> > +
> > +	rc = kobject_synth_uevent(&slot->kobj, buf, len);
> 
> I haven't followed the discussion closely, but I'm skeptical because
> this would be the only use of kobject_synth_uevent() outside the
> driver core.  That means a change like this should include a
> description of something unique about this PCI slot situation that is
> different from all other buses.
> 
> For driver-core, the preceding discussion is here:
> https://lore.kernel.org/linux-pci/20260225150815.81268-1-ramesh@linux.ibm.com/t/#m57bf51ce1c073b685b391867d4a9932e5f9dccc9

Sorry for the late reply. In the previous discussion we decided to move
this here because this is the same file where the existing add uevent,
which we're trying to synthesize for cold plug, is handled in
pci_hp_add(). So from our point of view this is really a missing part
to that existing uevent support that is causing real issues for us. In
particular we need to be able to create udev rules that react on
plugging of an s390 hotplug slot. On s390 a hotplug slot being plugged
is how the (machine) hypervisor makes a PCI function available to the
system where the function may first appear as powered off to multiple
Linux instances and only gets actually attached once one instances
powers it on. For example such a rule would be used to automatically
power on the function in cases where we know that we're the only
instance that will see it. Of course we'd like to have the same rule
handle hotplug (works already) and cold plug during boot (needs
synthesized uevents).

As for what's special, I think it is that as far as I understand the
PCI hotplug slot "drivers" don't seem to be well integrated with the
driver model. For example neither our s390_pci_hpc nor the acpiphp
hotplug driver seem to actually have an associated struct device_driver
nor do these hotplug slots appear on a bus which I guess would allow
using the bus's uevent. Fixing that does seem like a much bigger effort
though.

There is also the call to kobject_synth_uevent() in
kernel/module/main.c which looks at least somewhat similar. But yeah I
do see your point that basically all other drivers and devices get
their uevent syfs file from the driver core.

Thanks,
Niklas

      reply	other threads:[~2026-06-16 15:41 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20260520221320.99788-1-ramesh@linux.ibm.com>
2026-05-21 14:48 ` [PATCH v4] PCI: hotplug: Add 'uevent' sysfs attribute to trigger slot events Bjorn Helgaas
2026-06-16 15:40   ` Niklas Schnelle [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ec9d383ff4881945a6b242a37e4024cacc406261.camel@linux.ibm.com \
    --to=schnelle@linux.ibm.com \
    --cc=agordeev@linux.ibm.com \
    --cc=alifm@linux.ibm.com \
    --cc=bhelgaas@google.com \
    --cc=driver-core@lists.linux.dev \
    --cc=gbayer@linux.ibm.com \
    --cc=gor@linux.ibm.com \
    --cc=hca@linux.ibm.com \
    --cc=helgaas@kernel.org \
    --cc=kw@linux.com \
    --cc=leon@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=lukas@wunner.de \
    --cc=mjrosato@linux.ibm.com \
    --cc=oberpar@linux.ibm.com \
    --cc=ramesh@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox