Thread (60 messages) 60 messages, 8 authors, 2021-08-10

Re: [RFC v2] /dev/iommu uAPI proposal

From: David Gibson <hidden>
Date: 2021-08-10 10:19:08
Also in: linux-iommu, lkml

On Fri, Aug 06, 2021 at 09:32:11AM -0300, Jason Gunthorpe wrote:
On Fri, Aug 06, 2021 at 02:45:26PM +1000, David Gibson wrote:
quoted
Well, that's kind of what I'm doing.  PCI currently has the notion of
"default" address space for a RID, but there's no guarantee that other
buses (or even future PCI extensions) will.  The idea is that
"endpoint" means exactly the (RID, PASID) or (SID, SSID) or whatever
future variations are on that.
This is already happening in this proposal, it is why I insisted that
the driver facing API has to be very explicit. That API specifies
exactly what the device silicon is doing.

However, that is placed at the IOASID level. There is no reason to
create endpoint objects that are 1:1 with IOASID objects, eg for
PASID.
They're not 1:1 though.  You can have multiple endpoints in the same
IOAS, that's the whole point.
We need to have clear software layers and responsibilities, I think
this is where the VFIO container design has fallen behind.

The device driver is responsible to delcare what TLPs the device it
controls will issue
Right.. and I'm envisaging an endpoint as a abstraction to represent a
single TLP.
The system layer is responsible to determine how those TLPs can be
matched to IO page tables, if at all

The IO page table layer is responsible to map the TLPs to physical
memory.

Each must stay in its box and we should not create objects that smush
together, say, the device and system layers because it will only make
a mess of the software design.
I agree... and endpoints are explicitly an attempt to do that.  I
don't see how you think they're smushing things together.
Since the system layer doesn't have any concrete objects in our
environment (which is based on devices and IO page tables) it has to
exist as metadata attached to the other two objects.
Whereas I'm suggesting clarifying this by *creating* concrete objects
to represent the concept we need.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help