lkml.org 
[lkml]   [2020]   [Sep]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v2 1/4] dt-bindings: reserved-memory: Document "active" property
    On Mon, Sep 14, 2020 at 04:08:29PM -0600, Rob Herring wrote:
    > On Fri, Sep 04, 2020 at 02:59:57PM +0200, Thierry Reding wrote:
    > > From: Thierry Reding <treding@nvidia.com>
    > >
    > > Reserved memory regions can be marked as "active" if hardware is
    > > expected to access the regions during boot and before the operating
    > > system can take control. One example where this is useful is for the
    > > operating system to infer whether the region needs to be identity-
    > > mapped through an IOMMU.
    >
    > I like simple solutions, but this hardly seems adequate to solve the
    > problem of passing IOMMU setup from bootloader/firmware to the OS. Like
    > what is the IOVA that's supposed to be used if identity mapping is not
    > used?

    The assumption here is that if the region is not active there is no need
    for the IOVA to be specified because the kernel will allocate memory and
    assign any IOVA of its choosing.

    Also, note that this is not meant as a way of passing IOMMU setup from
    the bootloader or firmware to the OS. The purpose of this is to specify
    that some region of memory is actively being accessed during boot. The
    particular case that I'm looking at is where the bootloader set up a
    splash screen and keeps it on during boot. The bootloader has not set up
    an IOMMU mapping and the identity mapping serves as a way of keeping the
    accesses by the display hardware working during the transitional period
    after the IOMMU translations have been enabled by the kernel but before
    the kernel display driver has had a chance to set up its own IOMMU
    mappings.

    > If you know enough about the regions to assume identity mapping, then
    > can't you know if active or not?

    We could alternatively add some property that describes the region as
    requiring an identity mapping. But note that we can't make any
    assumptions here about the usage of these regions because the IOMMU
    driver simply has no way of knowing what they are being used for.

    Some additional information is required in device tree for the IOMMU
    driver to be able to make that decision.

    Thierry

    >
    > > Signed-off-by: Thierry Reding <treding@nvidia.com>
    > > ---
    > > .../bindings/reserved-memory/reserved-memory.txt | 7 +++++++
    > > 1 file changed, 7 insertions(+)
    > >
    > > diff --git a/Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt b/Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt
    > > index 4dd20de6977f..163d2927e4fc 100644
    > > --- a/Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt
    > > +++ b/Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt
    > > @@ -63,6 +63,13 @@ reusable (optional) - empty property
    > > able to reclaim it back. Typically that means that the operating
    > > system can use that region to store volatile or cached data that
    > > can be otherwise regenerated or migrated elsewhere.
    > > +active (optional) - empty property
    > > + - If this property is set for a reserved memory region, it indicates
    > > + that some piece of hardware may be actively accessing this region.
    > > + Should the operating system want to enable IOMMU protection for a
    > > + device, all active memory regions must have been identity-mapped
    > > + in order to ensure that non-quiescent hardware during boot can
    > > + continue to access the memory.
    > >
    > > Linux implementation note:
    > > - If a "linux,cma-default" property is present, then Linux will use the
    > > --
    > > 2.28.0
    > >
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2020-09-16 02:48    [W:3.770 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site