<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in uverbs_types.h</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>27ed2f00 - RDMA/core: Move ib_uverbs_file struct to uverbs_types.h</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/rdma/uverbs_types.h#27ed2f00</link>
        <description>RDMA/core: Move ib_uverbs_file struct to uverbs_types.hIn light of the previous commit, make the ib_uverbs_file accessible todrivers by moving its definition to uverbs_types.h, to allow drivers tofreely access the struct argument and create a personalized cleanup flow.For the same reason expose uverbs_try_lock_object function to allow driverto safely access the uverbs objects.Signed-off-by: Patrisious Haddad &lt;phaddad@nvidia.com&gt;Link: https://patch.msgid.link/29b718e0dca35daa5f496320a39284fc1f5a1722.1730373303.git.leon@kernel.orgSigned-off-by: Leon Romanovsky &lt;leon@kernel.org&gt;

            List of files:
            /linux-6.15/include/rdma/uverbs_types.h</description>
        <pubDate>Thu, 31 Oct 2024 11:22:52 +0000</pubDate>
        <dc:creator>Patrisious Haddad &lt;phaddad@nvidia.com&gt;</dc:creator>
    </item>
<item>
        <title>6e0954b1 - RDMA/uverbs: Allow drivers to create a new HW object during rereg_mr</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/rdma/uverbs_types.h#6e0954b1</link>
        <description>RDMA/uverbs: Allow drivers to create a new HW object during rereg_mrmlx5 has an ugly flow where it tries to allocate a new MR and replace theexisting MR in the same memory during rereg. This is very complicated andbuggy. Instead of trying to replace in-place inside the driver, providesupport from uverbs to change the entire HW object assigned to a handleduring rereg_mr.Since destroying a MR is allowed to fail (ie if a MW is pointing at it)and can&apos;t be detected in advance, the algorithm creates a completely newuobject to hold the new MR and swaps the IDR entries of the two objects.The old MR in the temporary IDR entry is destroyed, and if it failsrereg_mr succeeds and destruction is deferred to FD release. Thiscomplexity is why this cannot live in a driver safely.Link: https://lore.kernel.org/r/20201130075839.278575-4-leon@kernel.orgSigned-off-by: Leon Romanovsky &lt;leonro@nvidia.com&gt;Signed-off-by: Jason Gunthorpe &lt;jgg@nvidia.com&gt;

            List of files:
            /linux-6.15/include/rdma/uverbs_types.h</description>
        <pubDate>Mon, 30 Nov 2020 07:58:37 +0000</pubDate>
        <dc:creator>Jason Gunthorpe &lt;jgg@nvidia.com&gt;</dc:creator>
    </item>
<item>
        <title>c5633a72 - RDMA/core: Make FD destroy callback void</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/rdma/uverbs_types.h#c5633a72</link>
        <description>RDMA/core: Make FD destroy callback voidAll FD object destroy implementations return 0, so declare this callbackvoid.Link: https://lore.kernel.org/r/20201104144556.3809085-3-leon@kernel.orgReviewed-by: Jason Gunthorpe &lt;jgg@nvidia.com&gt;Signed-off-by: Leon Romanovsky &lt;leonro@nvidia.com&gt;Signed-off-by: Jason Gunthorpe &lt;jgg@nvidia.com&gt;

            List of files:
            /linux-6.15/include/rdma/uverbs_types.h</description>
        <pubDate>Wed, 04 Nov 2020 14:45:56 +0000</pubDate>
        <dc:creator>Leon Romanovsky &lt;leonro@nvidia.com&gt;</dc:creator>
    </item>
<item>
        <title>6bf9d8f6 - RDMA/include: Replace license text with SPDX tags</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/rdma/uverbs_types.h#6bf9d8f6</link>
        <description>RDMA/include: Replace license text with SPDX tagsThe header files in RDMA subsystem are dual licensed and can bedescribed by simple SPDX tag, so replace all of them at oncetogether with making them use the same coding style for headerguard defines.Link: https://lore.kernel.org/r/20200719072521.135260-1-leon@kernel.orgSigned-off-by: Leon Romanovsky &lt;leonro@mellanox.com&gt;Signed-off-by: Jason Gunthorpe &lt;jgg@nvidia.com&gt;

            List of files:
            /linux-6.15/include/rdma/uverbs_types.h</description>
        <pubDate>Sun, 19 Jul 2020 07:25:21 +0000</pubDate>
        <dc:creator>Leon Romanovsky &lt;leonro@mellanox.com&gt;</dc:creator>
    </item>
<item>
        <title>0ac8903c - RDMA/core: Allow the ioctl layer to abort a fully created uobject</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/rdma/uverbs_types.h#0ac8903c</link>
        <description>RDMA/core: Allow the ioctl layer to abort a fully created uobjectWhile creating a uobject every create reaches a point where the uobject isfully initialized. For ioctls that go on to copy_to_user this means theyneed to open code the destruction of a fully created uobject - ie theRDMA_REMOVE_DESTROY sort of flow.Open coding this creates bugs, eg the CQ does not properly flush theevents list when it does its error unwind.Provide a uverbs_finalize_uobj_create() function which indicates that theuobject is fully initialized and that abort should call to destroy_hw todestroy the uobj-&gt;object and related.Methods can call this function if they go on to have error cases aftersetting uobj-&gt;object. Once done those error cases can simply do return,without an error unwind.Link: https://lore.kernel.org/r/20200519072711.257271-2-leon@kernel.orgSigned-off-by: Yishai Hadas &lt;yishaih@mellanox.com&gt;Signed-off-by: Leon Romanovsky &lt;leonro@mellanox.com&gt;Signed-off-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;

            List of files:
            /linux-6.15/include/rdma/uverbs_types.h</description>
        <pubDate>Tue, 19 May 2020 07:27:05 +0000</pubDate>
        <dc:creator>Jason Gunthorpe &lt;jgg@mellanox.com&gt;</dc:creator>
    </item>
<item>
        <title>39e83af8 - RDMA/core: Remove the ufile arg from rdma_alloc_begin_uobject</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/rdma/uverbs_types.h#39e83af8</link>
        <description>RDMA/core: Remove the ufile arg from rdma_alloc_begin_uobjectNow that all callers provide a non-NULL attrs the ufile is redundant.Adjust things so that the context handling is done inside alloc_uobj,and the ib_uverbs_get_ucontext_file() is avoided if we already have thecontext.Link: https://lore.kernel.org/r/1578504126-9400-13-git-send-email-yishaih@mellanox.comSigned-off-by: Yishai Hadas &lt;yishaih@mellanox.com&gt;Signed-off-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;

            List of files:
            /linux-6.15/include/rdma/uverbs_types.h</description>
        <pubDate>Wed, 08 Jan 2020 17:22:04 +0000</pubDate>
        <dc:creator>Jason Gunthorpe &lt;jgg@mellanox.com&gt;</dc:creator>
    </item>
<item>
        <title>849e1490 - RDMA/core: Do not allow alloc_commit to fail</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/rdma/uverbs_types.h#849e1490</link>
        <description>RDMA/core: Do not allow alloc_commit to failThis is a left over from an earlier version that creates a lot ofcomplexity for error unwind, particularly for FD uobjects.The only reason this was done is so that anon_inode_get_file() could becalled with the final fops and a fully setup uobject. Both need to besetup since unwinding anon_inode_get_file() via fput will call thedriver&apos;s release().Now that the driver does not provide release, we no longer need to worryabout this complicated sequence, simply create the struct file at thestart and allow the core code&apos;s release function to deal with the abortcase.This allows all the confusing error paths around commit to be removed.Link: https://lore.kernel.org/r/1578504126-9400-5-git-send-email-yishaih@mellanox.comSigned-off-by: Yishai Hadas &lt;yishaih@mellanox.com&gt;Signed-off-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;

            List of files:
            /linux-6.15/include/rdma/uverbs_types.h</description>
        <pubDate>Wed, 08 Jan 2020 17:21:56 +0000</pubDate>
        <dc:creator>Jason Gunthorpe &lt;jgg@mellanox.com&gt;</dc:creator>
    </item>
<item>
        <title>f7c8416c - RDMA/core: Simplify destruction of FD uobjects</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/rdma/uverbs_types.h#f7c8416c</link>
        <description>RDMA/core: Simplify destruction of FD uobjectsFD uobjects have a weird split between the struct file and uobjectworld. Simplify this to make them pure uobjects and use a generic releasemethod for all struct file operations.This fixes the control flow so that mlx5_cmd_cleanup_async_ctx() is alwayscalled before erasing the linked list contents to make the concurrancysimpler to understand.For this to work the uobject destruction must fence anything that it iscleaning up - the design must not rely on struct file lifetime.Only deliver_event() relies on the struct file to when adding new eventsto the queue, add a is_destroyed check under lock to block it.Link: https://lore.kernel.org/r/1578504126-9400-3-git-send-email-yishaih@mellanox.comSigned-off-by: Yishai Hadas &lt;yishaih@mellanox.com&gt;Signed-off-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;

            List of files:
            /linux-6.15/include/rdma/uverbs_types.h</description>
        <pubDate>Wed, 08 Jan 2020 17:21:54 +0000</pubDate>
        <dc:creator>Jason Gunthorpe &lt;jgg@mellanox.com&gt;</dc:creator>
    </item>
<item>
        <title>6898d1c6 - RDMA/mlx5: Use RCU and direct refcounts to keep memory alive</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/rdma/uverbs_types.h#6898d1c6</link>
        <description>RDMA/mlx5: Use RCU and direct refcounts to keep memory alivedispatch_event_fd() runs from a notifier with minimal locking, and relieson RCU and a file refcount to keep the uobject and eventfd alive.As the next patch wants to remove the file_operations release functionfrom the drivers, re-organize things so that the devx_event_notifier()path uses the existing RCU to manage the lifetime of the uobject andeventfd.Move the refcount puts to a call_rcu so that the objects are guaranteed toexist and remove the indirect file refcount.Link: https://lore.kernel.org/r/1578504126-9400-2-git-send-email-yishaih@mellanox.comSigned-off-by: Yishai Hadas &lt;yishaih@mellanox.com&gt;Signed-off-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;

            List of files:
            /linux-6.15/include/rdma/uverbs_types.h</description>
        <pubDate>Wed, 08 Jan 2020 17:21:53 +0000</pubDate>
        <dc:creator>Jason Gunthorpe &lt;jgg@mellanox.com&gt;</dc:creator>
    </item>
<item>
        <title>8bdf9dd9 - RDMA/uverbs: Remove needs_kfree_rcu from uverbs_obj_type_class</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/rdma/uverbs_types.h#8bdf9dd9</link>
        <description>RDMA/uverbs: Remove needs_kfree_rcu from uverbs_obj_type_classAfter device disassociation the uapi_objects are destroyed and freed,however it is still possible that core code can be holding a kref on theuobject. When it finally goes to uverbs_uobject_free() via the kref_put()it can trigger a use-after-free on the uapi_object.Since needs_kfree_rcu is a micro optimization that only benefits fileuobjects, just get rid of it. There is no harm in using kfree_rcu even ifit isn&apos;t required, and the number of involved objects is small.Link: https://lore.kernel.org/r/20200113143306.GA28717@ziepe.caSigned-off-by: Michael Guralnik &lt;michaelgur@mellanox.com&gt;Signed-off-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;

            List of files:
            /linux-6.15/include/rdma/uverbs_types.h</description>
        <pubDate>Mon, 13 Jan 2020 14:33:10 +0000</pubDate>
        <dc:creator>Jason Gunthorpe &lt;jgg@mellanox.com&gt;</dc:creator>
    </item>
<item>
        <title>a6a3797d - IB: Pass uverbs_attr_bundle down uobject destroy path</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/rdma/uverbs_types.h#a6a3797d</link>
        <description>IB: Pass uverbs_attr_bundle down uobject destroy pathPass uverbs_attr_bundle down the uobject destroy path. The next patch willuse this to eliminate the dependecy of the drivers in ib_x-&gt;uobjectpointers.Signed-off-by: Shamir Rabinovitch &lt;shamir.rabinovitch@oracle.com&gt;Signed-off-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;

            List of files:
            /linux-6.15/include/rdma/uverbs_types.h</description>
        <pubDate>Sun, 31 Mar 2019 16:10:04 +0000</pubDate>
        <dc:creator>Shamir Rabinovitch &lt;shamir.rabinovitch@oracle.com&gt;</dc:creator>
    </item>
<item>
        <title>70f06b26 - IB: ucontext should be set properly for all cmd &amp; ioctl paths</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/rdma/uverbs_types.h#70f06b26</link>
        <description>IB: ucontext should be set properly for all cmd &amp; ioctl pathsthe Attempt to use the below commit to initialize the ucontext for theuobject destroy path has shown that the below commit is incomplete.Parts were reverted and the ucontext set up in the uverbs_attr_bundle wasmoved to rdma_lookup_get_uobject which is called from the uobj_get_XXXmacros and rdma_alloc_begin_uobject which is called when uobject iscreated.Fixes: 3d9dfd060391 (&quot;IB/uverbs: Add ib_ucontext to uverbs_attr_bundle sent from ioctl and cmd flows&quot;)Signed-off-by: Shamir Rabinovitch &lt;shamir.rabinovitch@oracle.com&gt;Signed-off-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;

            List of files:
            /linux-6.15/include/rdma/uverbs_types.h</description>
        <pubDate>Sun, 31 Mar 2019 16:10:03 +0000</pubDate>
        <dc:creator>Shamir Rabinovitch &lt;shamir.rabinovitch@oracle.com&gt;</dc:creator>
    </item>
<item>
        <title>6bf8f22a - IB/mlx5: Introduce MLX5_IB_OBJECT_DEVX_ASYNC_CMD_FD</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/rdma/uverbs_types.h#6bf8f22a</link>
        <description>IB/mlx5: Introduce MLX5_IB_OBJECT_DEVX_ASYNC_CMD_FDIntroduce MLX5_IB_OBJECT_DEVX_ASYNC_CMD_FD and its initial implementation.This object is from type class FD and will be used to read DEVX asynccommands completion.The core layer should allow the driver to set object from type FD in asafe mode, this option was added with a matching comment in place.Signed-off-by: Yishai Hadas &lt;yishaih@mellanox.com&gt;Signed-off-by: Leon Romanovsky &lt;leonro@mellanox.com&gt;Signed-off-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;

            List of files:
            /linux-6.15/include/rdma/uverbs_types.h</description>
        <pubDate>Tue, 22 Jan 2019 06:29:56 +0000</pubDate>
        <dc:creator>Yishai Hadas &lt;yishaih@mellanox.com&gt;</dc:creator>
    </item>
<item>
        <title>6b0d08f4 - IB/uverbs: Use uverbs_api to manage the object type inside the uobject</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/rdma/uverbs_types.h#6b0d08f4</link>
        <description>IB/uverbs: Use uverbs_api to manage the object type inside the uobjectCurrently the struct uverbs_obj_type stored in the ib_uobject is part ofthe .rodata segment of the module that defines the object. This is aproblem if drivers define new uapi objects as we will be left with adangling pointer after device disassociation.Switch the uverbs_obj_type for struct uverbs_api_object, which isallocated memory that is part of the uverbs_api and is guaranteed toalways exist. Further this moves the &apos;type_class&apos; into this memory whichmeans access to the IDR/FD function pointers is also guaranteed. Driverscannot define new types.This makes it safe to continue to use all uobjects, including driverdefined ones, after disassociation.Signed-off-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;

            List of files:
            /linux-6.15/include/rdma/uverbs_types.h</description>
        <pubDate>Fri, 10 Aug 2018 02:14:37 +0000</pubDate>
        <dc:creator>Jason Gunthorpe &lt;jgg@mellanox.com&gt;</dc:creator>
    </item>
<item>
        <title>0f50d88a - IB/uverbs: Allow all DESTROY commands to succeed after disassociate</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/rdma/uverbs_types.h#0f50d88a</link>
        <description>IB/uverbs: Allow all DESTROY commands to succeed after disassociateThe disassociate function was broken by design because it failed allcommands. This prevents userspace from calling destroy on a uobject afterit has detected a device fatal error and thus reclaiming the resources inuserspace is prevented.This fix is now straightforward, when anything destroys a uobject that isnot the user the object remains on the IDR with a NULL context and objectpointer. All lookup locking modes other than DESTROY will fail. When theuser ultimately calls the destroy function it is simply dropped from theIDR while any related information is returned.Signed-off-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;

            List of files:
            /linux-6.15/include/rdma/uverbs_types.h</description>
        <pubDate>Thu, 26 Jul 2018 03:40:20 +0000</pubDate>
        <dc:creator>Jason Gunthorpe &lt;jgg@mellanox.com&gt;</dc:creator>
    </item>
<item>
        <title>7452a3c7 - IB/uverbs: Allow RDMA_REMOVE_DESTROY to work concurrently with disassociate</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/rdma/uverbs_types.h#7452a3c7</link>
        <description>IB/uverbs: Allow RDMA_REMOVE_DESTROY to work concurrently with disassociateAfter all the recent structural changes this is now straightfoward, hoistthe hw_destroy_rwsem up out of rdma_destroy_explicit and wrap it aroundthe uobject write lock as well as the destroy.This is necessary as obtaining a write lock concurrently withuverbs_destroy_ufile_hw() will cause malfunction.After this change none of the destroy callbacks require thedisassociate_srcu lock to be correct.This requires introducing a new lookup mode, UVERBS_LOOKUP_DESTROY as theIOCTL interface needs to hold an unlocked kref until all commandverification is completed.Signed-off-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;

            List of files:
            /linux-6.15/include/rdma/uverbs_types.h</description>
        <pubDate>Thu, 26 Jul 2018 03:40:14 +0000</pubDate>
        <dc:creator>Jason Gunthorpe &lt;jgg@mellanox.com&gt;</dc:creator>
    </item>
<item>
        <title>9867f5c6 - IB/uverbs: Convert &apos;bool exclusive&apos; into an enum</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/rdma/uverbs_types.h#9867f5c6</link>
        <description>IB/uverbs: Convert &apos;bool exclusive&apos; into an enumThis is more readable, and future patches will need a 3rd lookup type.Signed-off-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;

            List of files:
            /linux-6.15/include/rdma/uverbs_types.h</description>
        <pubDate>Thu, 26 Jul 2018 03:40:13 +0000</pubDate>
        <dc:creator>Jason Gunthorpe &lt;jgg@mellanox.com&gt;</dc:creator>
    </item>
<item>
        <title>87ad80ab - IB/uverbs: Consolidate uobject destruction</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/rdma/uverbs_types.h#87ad80ab</link>
        <description>IB/uverbs: Consolidate uobject destructionThere are several flows that can destroy a uobject and each one isminimized and sprinkled throughout the code base, making it difficult tounderstand and very hard to modify the destroy path.Consolidate all of these into uverbs_destroy_uobject() and call it in allcases where a uobject has to be destroyed.This makes one change to the lifecycle, during any abort (eg whenalloc_commit is not called) we always call out to alloc_abort, even ifremove_commit needs to be called to delete a HW object.This also renames RDMA_REMOVE_DURING_CLEANUP to RDMA_REMOVE_ABORT toclarify its actual usage and revises some of the comments to reflect whatthe life cycle is for the type implementation.Signed-off-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;

            List of files:
            /linux-6.15/include/rdma/uverbs_types.h</description>
        <pubDate>Thu, 26 Jul 2018 03:40:12 +0000</pubDate>
        <dc:creator>Jason Gunthorpe &lt;jgg@mellanox.com&gt;</dc:creator>
    </item>
<item>
        <title>32ed5c00 - IB/uverbs: Make the write path destroy methods use the same flow as ioctl</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/rdma/uverbs_types.h#32ed5c00</link>
        <description>IB/uverbs: Make the write path destroy methods use the same flow as ioctlThe ridiculous dance with uobj_remove_commit() is not needed, the writepath can follow the same flow as ioctl - lock and destroy the HW objectthen use the data left over in the uobject to form the response touserspace.Two helpers are introduced to make this flow straightforward for thecaller.Signed-off-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;

            List of files:
            /linux-6.15/include/rdma/uverbs_types.h</description>
        <pubDate>Thu, 26 Jul 2018 03:40:11 +0000</pubDate>
        <dc:creator>Jason Gunthorpe &lt;jgg@mellanox.com&gt;</dc:creator>
    </item>
<item>
        <title>aba94548 - IB/uverbs: Move the FD uobj type struct file allocation to alloc_commit</title>
        <link>http://172.16.0.5:8080/history/linux-6.15/include/rdma/uverbs_types.h#aba94548</link>
        <description>IB/uverbs: Move the FD uobj type struct file allocation to alloc_commitAllocating the struct file during alloc_begin creates this strangeasymmetry with IDR, where the FD has two krefs pointing at it during thepre-commit phase. In particular this makes the abort process for FD verystrange and confusing.For instance abort currently calls the type&apos;s destroy_object twice, andthe fops release once if abort is done. This is very counter intuitive. Nofops should be called until alloc_commit succeeds, and destroy_objectshould only ever be called once.Moving the struct file allocation to the alloc_commit is now simple, as wealready support failure of rdma_alloc_commit_uobject, with all therequired rollback pieces.This creates an understandable symmetry with IDR and simplifies/fixes theabort handling for FD types.Signed-off-by: Jason Gunthorpe &lt;jgg@mellanox.com&gt;

            List of files:
            /linux-6.15/include/rdma/uverbs_types.h</description>
        <pubDate>Wed, 11 Jul 2018 02:55:21 +0000</pubDate>
        <dc:creator>Jason Gunthorpe &lt;jgg@mellanox.com&gt;</dc:creator>
    </item>
</channel>
</rss>
