All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@nvidia.com>
To: Jamal Hadi Salim <jhs@mojatatu.com>
Cc: Leon Romanovsky <leon@kernel.org>,
	Nikolay Aleksandrov <nikolay@enfabrica.net>,
	Linux Kernel Network Developers <netdev@vger.kernel.org>,
	Shrijeet Mukherjee <shrijeet@enfabrica.net>,
	alex.badea@keysight.com, eric.davis@broadcom.com,
	rip.sohan@amd.com, David Ahern <dsahern@kernel.org>,
	bmt@zurich.ibm.com, roland@enfabrica.net,
	Winston Liu <winston.liu@keysight.com>,
	dan.mihailescu@keysight.com, kheib@redhat.com,
	parth.v.parikh@keysight.com, davem@redhat.com,
	ian.ziemba@hpe.com, andrew.tauferner@cornelisnetworks.com,
	welch@hpe.com, rakhahari.bhunia@keysight.com,
	kingshuk.mandal@keysight.com, linux-rdma@vger.kernel.org,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>
Subject: Re: Netlink vs ioctl WAS(Re: [RFC PATCH 00/13] Ultra Ethernet driver introduction
Date: Tue, 18 Mar 2025 19:49:12 -0300	[thread overview]
Message-ID: <20250318224912.GB9311@nvidia.com> (raw)
In-Reply-To: <CAM0EoMnJW7zJ2_DBm2geTpTnc5ZenNgvcXkLn1eXk4Tu0H0R+A@mail.gmail.com>

On Sat, Mar 15, 2025 at 04:49:20PM -0400, Jamal Hadi Salim wrote:

> On "unreliable": This is typically a result of some request response
> (or a subscribed to event) whose execution has failed to allocate
> memory in the kernel or overrun some buffers towards user space;
> however, any such failures are signalled to user space and can be
> recovered from.

No, they can't be recovered from in all cases. Randomly failing system
calls because of memory pressure is a horrible foundation to build
what something like RDMA needs. It is not acceptable that something
like a destroy system call would just randomly fail because the kernel
is OOMing. There is no recovery from this beyond leaking memory - the
opposite of what you want in an OOM situation.

> ioctl is synchronous which gives it the "reliability" and "speed".
> iirc, if memory failure was to happen on ioctl it will block until it
> is successful? 

It would fail back to userspace and unwind whatever it did.

The unwinding is tricky and RDMA's infrastructure has alot of support
to make it easier for driver writers to get this right in all the
different error cases.

Overall systems calls here should either succeed or fail and be the
same as a NOP. No failure that actually did something and then creates
some resource leak or something because userspace didn't know about
it.

> Extensibility: ioctl take binary structs which make it much harder to
> extend but adds to that "speed". Once you pick your struct, you are
> stuck with it - as opposed to netlink which uses very extensible
> formally defined TLVs that makes it highly extensible. 

RDMA uses TLVs now too. It has one of the largest uAPI surfaces in the
kernel, TLVs were introduced for the same reason netlink uses them.

RDMA also has special infrastructure to split up the TLV space between
core code and HW driver code which is a key feature and necessary part
of how you'd build a user/kernel split driver.

> - And as Nik mentioned: The new (yaml)model-to-generatedcode approach
> that is now common in generic netlink highly reduces developer effort.
> Although in my opinion we really need this stuff integrated into tools
> like iproute2..

RDMA also has a DSL like scheme for defining schema, and centralized
parsing and validation. IMHO it's capability falls someplace between
the old netlink policy stuff and the new YAML stuff.

But just focusing on schema and TLVs really undersells all the
specialized infrastructure that exists for managing objects, security,
HW pass through and other infrastructure things unique to RDMA.

Jason

  parent reply	other threads:[~2025-03-18 22:49 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-06 23:01 [RFC PATCH 00/13] Ultra Ethernet driver introduction Nikolay Aleksandrov
2025-03-06 23:01 ` [RFC PATCH 01/13] drivers: ultraeth: add initial skeleton and kconfig option Nikolay Aleksandrov
2025-03-06 23:01 ` [RFC PATCH 02/13] drivers: ultraeth: add context support Nikolay Aleksandrov
2025-03-06 23:01 ` [RFC PATCH 03/13] drivers: ultraeth: add new genl family Nikolay Aleksandrov
2025-03-06 23:01 ` [RFC PATCH 04/13] drivers: ultraeth: add job support Nikolay Aleksandrov
2025-03-06 23:01 ` [RFC PATCH 05/13] drivers: ultraeth: add tunnel udp device support Nikolay Aleksandrov
2025-03-06 23:01 ` [RFC PATCH 06/13] drivers: ultraeth: add initial PDS infrastructure Nikolay Aleksandrov
2025-03-06 23:01 ` [RFC PATCH 07/13] drivers: ultraeth: add request and ack receive support Nikolay Aleksandrov
2025-03-06 23:01 ` [RFC PATCH 08/13] drivers: ultraeth: add request transmit support Nikolay Aleksandrov
2025-03-06 23:01 ` [RFC PATCH 09/13] drivers: ultraeth: add support for coalescing ack Nikolay Aleksandrov
2025-03-06 23:02 ` [RFC PATCH 10/13] drivers: ultraeth: add sack support Nikolay Aleksandrov
2025-03-06 23:02 ` [RFC PATCH 11/13] drivers: ultraeth: add nack support Nikolay Aleksandrov
2025-03-06 23:02 ` [RFC PATCH 12/13] drivers: ultraeth: add initiator and target idle timeout support Nikolay Aleksandrov
2025-03-06 23:02 ` [RFC PATCH 13/13] HACK: drivers: ultraeth: add char device Nikolay Aleksandrov
2025-03-08 18:46 ` [RFC PATCH 00/13] Ultra Ethernet driver introduction Leon Romanovsky
2025-03-09  3:21   ` Parav Pandit
2025-03-11 14:20     ` Bernard Metzler
2025-03-11 14:55       ` Leon Romanovsky
2025-03-11 17:11       ` Sean Hefty
2025-03-12  9:20         ` Nikolay Aleksandrov
2025-03-12  9:40   ` Nikolay Aleksandrov
2025-03-12 11:29     ` Leon Romanovsky
2025-03-12 14:20       ` Nikolay Aleksandrov
2025-03-12 15:10         ` Leon Romanovsky
2025-03-12 16:00           ` Nikolay Aleksandrov
2025-03-14 14:53           ` Bernard Metzler
2025-03-17 12:52             ` Leon Romanovsky
2025-03-19 13:52             ` Jason Gunthorpe
2025-03-19 14:02               ` Nikolay Aleksandrov
2025-03-14 20:51           ` Stanislav Fomichev
2025-03-17 12:30             ` Leon Romanovsky
2025-03-19 19:12               ` Stanislav Fomichev
2025-03-15 20:49           ` Netlink vs ioctl WAS(Re: " Jamal Hadi Salim
2025-03-17 12:57             ` Leon Romanovsky
2025-03-18 22:49             ` Jason Gunthorpe [this message]
2025-03-19 18:21               ` Jamal Hadi Salim
2025-03-19 19:19                 ` Jason Gunthorpe
2025-03-25 14:12                   ` Jamal Hadi Salim
2025-03-26 15:50                     ` Jason Gunthorpe
2025-04-08 14:16                       ` Jamal Hadi Salim
2025-04-09 16:10                         ` Jason Gunthorpe
2025-03-19 16:48 ` Jason Gunthorpe
2025-03-20 11:13   ` Yunsheng Lin
2025-03-20 14:32     ` Jason Gunthorpe
2025-03-20 20:05       ` Sean Hefty
2025-03-20 20:12         ` Jason Gunthorpe
2025-03-21  2:02           ` Yunsheng Lin
2025-03-21 12:01             ` Jason Gunthorpe
2025-03-24 20:22   ` Roland Dreier
2025-03-24 21:28     ` Sean Hefty
2025-03-25 13:22       ` Bernard Metzler
2025-03-25 17:02         ` Sean Hefty
2025-03-26 14:45           ` Jason Gunthorpe
2025-03-26 15:29             ` Sean Hefty
2025-03-26 15:53               ` Jason Gunthorpe
2025-03-26 17:39                 ` Sean Hefty
2025-03-27 13:26                   ` Jason Gunthorpe
2025-03-28 12:20                     ` Yunsheng Lin
2025-03-31 19:49                       ` Sean Hefty
2025-04-01  9:19                         ` Yunsheng Lin
2025-03-31 19:29                     ` Sean Hefty
2025-04-01 13:04                       ` Jason Gunthorpe
2025-04-01 16:57                         ` Sean Hefty
2025-04-01 19:39                           ` Jason Gunthorpe
2025-04-03  1:30                             ` Sean Hefty
2025-04-04 16:03                             ` Ziemba, Ian
2025-04-05  1:07                               ` Sean Hefty
2025-04-07 19:32                                 ` Ziemba, Ian
2025-04-08  4:40                                   ` Sean Hefty
2025-04-16 23:58                                   ` Sean Hefty
2025-04-17  1:23                                     ` Jason Gunthorpe
2025-04-17  2:59                                       ` Sean Hefty
2025-04-17 13:31                                         ` Jason Gunthorpe
2025-04-18 16:50                                           ` Sean Hefty
2025-04-22 15:44                                             ` Jason Gunthorpe
2025-03-26 15:16     ` Jason Gunthorpe

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=20250318224912.GB9311@nvidia.com \
    --to=jgg@nvidia.com \
    --cc=alex.badea@keysight.com \
    --cc=andrew.tauferner@cornelisnetworks.com \
    --cc=bmt@zurich.ibm.com \
    --cc=dan.mihailescu@keysight.com \
    --cc=davem@redhat.com \
    --cc=dsahern@kernel.org \
    --cc=eric.davis@broadcom.com \
    --cc=ian.ziemba@hpe.com \
    --cc=jhs@mojatatu.com \
    --cc=kheib@redhat.com \
    --cc=kingshuk.mandal@keysight.com \
    --cc=kuba@kernel.org \
    --cc=leon@kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=nikolay@enfabrica.net \
    --cc=pabeni@redhat.com \
    --cc=parth.v.parikh@keysight.com \
    --cc=rakhahari.bhunia@keysight.com \
    --cc=rip.sohan@amd.com \
    --cc=roland@enfabrica.net \
    --cc=shrijeet@enfabrica.net \
    --cc=welch@hpe.com \
    --cc=winston.liu@keysight.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 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.