From: Vincent Whitchurch <vincent.whitchurch@axis.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Lee Jones <lee@kernel.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
kernel <kernel@axis.com>, "robh@kernel.org" <robh@kernel.org>
Subject: Re: [PATCH] mfd: Add Simple PCI MFD driver
Date: Wed, 25 Jan 2023 14:06:26 +0100 [thread overview]
Message-ID: <Y9EpUnRDmWPobcrL@axis.com> (raw)
In-Reply-To: <Y9EgrKT3hDyx+ULy@kroah.com>
On Wed, Jan 25, 2023 at 01:29:32PM +0100, Greg Kroah-Hartman wrote:
> On Wed, Jan 25, 2023 at 11:15:38AM +0100, Vincent Whitchurch wrote:
> > I hope it's clear from my other replies in this thread that the entire
> > purpose of this driver is to allow arbitrary platform devices to be used
> > via a PCI device in virtual environments like User Mode Linux in order
> > to test existing platform drivers using mocked hardware.
>
> That still feels wrong, why is PCI involved here at all?
>
> Don't abuse platform devices like this please, mock up a platform device
> framework instead if you want to test them that way, don't think that
> adding a platform device "below" a PCI device is somehow allowed at all.
As you know, PCI allows exposing an MMIO region to the host, so the host
can use ioremap() and readl()/writel() on it. This allows reusing
platform drivers even though the device is on the other side of a PCI
bus.
There is hardware already supported by the kernel since a long time ago
which is handled by putting platform devices below PCI devices. See
add_bus_probe() in arch/x86/kernel/devicetree.c.
And this hardware also wants to do the same thing:
https://lore.kernel.org/lkml/1674183732-5157-1-git-send-email-lizhi.hou@amd.com/
Also, UML already supports out-of-process PCI, and there is ongoing work
in QEMU to add support for out-of-process PCI emulation. So using PCI
will allow this to work on different kinds of virtual environments
without having to invent a new method specifically for platform devices.
> > Given this "hardware", it's not clear what a "real driver" would do
> > differently.
>
> Again, you can not have a platform device below a PCI device, that's not
> what a platform device is for at all.
See above.
> > The auxiliary bus cannot be used since it naturally does
> > not support platform devices.
>
> The aux bus can support any type of bus (it's there to be used as you
> want, it's just that people are currently using it for PCI devices right
> now).
I assume we're talking about drivers/base/auxiliary.c? The kernel doc
says:
* A key requirement for utilizing the auxiliary bus is that there is no
* dependency on a physical bus, device, register accesses or regmap support.
* These individual devices split from the core cannot live on the platform bus
* as they are not physical devices that are controlled by DT/ACPI.
But this case the sub-devices do need standard register access with
readl()/writel() and _are_ controlled by devicetree.
> > A hard coded list of sub-devices cannot be used since arbitrary
> > platform devices with arbitrary devicetree properties need to be
> > supported.
>
> Then make a new bus type and again, do not abuse platform devices.
How can existing platform drivers be re-used if you invent a new bus
type and don't create platform devices?
> > I could move this driver to drivers/bus/ and pitch it as a
> > "PCI<->platform bridge for testing in virtual environments", if that
> > makes more sense.
>
> Again, nope, a platform device is NOT ever a child of a PCI device.
> That's just not how PCI works at all.
>
> Would you do the attempt to do this for USB? (hint, no.) So why is PCI
> somehow special here?
PCI is special because it allows exposing an MMIO region to the host and
allowing the host to access it like any other I/O memory. USB doesn't
allow that.
next prev parent reply other threads:[~2023-01-25 13:06 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-23 14:32 [PATCH] mfd: Add Simple PCI MFD driver Vincent Whitchurch
2023-01-23 15:32 ` Lee Jones
2023-01-23 16:02 ` Vincent Whitchurch
2023-01-23 16:36 ` Rob Herring
2023-01-24 2:30 ` Lizhi Hou
2023-01-24 13:15 ` Vincent Whitchurch
2023-01-23 16:31 ` Greg Kroah-Hartman
2023-01-25 10:15 ` Vincent Whitchurch
2023-01-25 12:29 ` Greg Kroah-Hartman
2023-01-25 13:06 ` Vincent Whitchurch [this message]
2023-01-25 13:34 ` Greg Kroah-Hartman
2023-01-25 14:54 ` Rob Herring
2023-01-25 15:00 ` Greg Kroah-Hartman
2023-01-25 15:34 ` Rob Herring
2023-01-31 15:07 ` Greg Kroah-Hartman
2023-01-23 16:13 ` Rob Herring
2023-01-24 12:54 ` Vincent Whitchurch
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=Y9EpUnRDmWPobcrL@axis.com \
--to=vincent.whitchurch@axis.com \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=kernel@axis.com \
--cc=lee@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=robh@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.