dibs: Create drivers/dibs

Create the file structure for a 'DIBS - Direct Internal Buffer Sharing'
shim layer that will provide generic functionality and declarations for
dibs device drivers and dibs clients.

Following patches will add functionality.

Signed-off-by: Alexandra Winter <wintera@linux.ibm.com>
Link: https://patch.msgid.link/20250918110500.1731261-4-wintera@linux.ibm.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
Alexandra Winter 2025-09-18 13:04:49 +02:00 committed by Paolo Abeni
parent a4997e17d1
commit 35758b0032
7 changed files with 107 additions and 0 deletions

View File

@ -7132,6 +7132,13 @@ L: linux-gpio@vger.kernel.org
S: Maintained
F: drivers/gpio/gpio-gpio-mm.c
DIBS (DIRECT INTERNAL BUFFER SHARING)
M: Alexandra Winter <wintera@linux.ibm.com>
L: netdev@vger.kernel.org
S: Supported
F: drivers/dibs/
F: include/linux/dibs.h
DIGITEQ AUTOMOTIVE MGB4 V4L2 DRIVER
M: Martin Tuma <martin.tuma@digiteqautomotive.com>
L: linux-media@vger.kernel.org

View File

@ -195,4 +195,5 @@ obj-$(CONFIG_DRM_ACCEL) += accel/
obj-$(CONFIG_CDX_BUS) += cdx/
obj-$(CONFIG_DPLL) += dpll/
obj-$(CONFIG_DIBS) += dibs/
obj-$(CONFIG_S390) += s390/

12
drivers/dibs/Kconfig Normal file
View File

@ -0,0 +1,12 @@
# SPDX-License-Identifier: GPL-2.0
config DIBS
tristate "DIBS support"
default n
help
Direct Internal Buffer Sharing (DIBS)
A communication method that uses common physical (internal) memory
for synchronous direct access into a remote buffer.
Select this option to provide the abstraction layer between
dibs devices and dibs clients like the SMC protocol.
The module name is dibs.

7
drivers/dibs/Makefile Normal file
View File

@ -0,0 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
#
# DIBS class module
#
dibs-y += dibs_main.o
obj-$(CONFIG_DIBS) += dibs.o

37
drivers/dibs/dibs_main.c Normal file
View File

@ -0,0 +1,37 @@
// SPDX-License-Identifier: GPL-2.0
/*
* DIBS - Direct Internal Buffer Sharing
*
* Implementation of the DIBS class module
*
* Copyright IBM Corp. 2025
*/
#define KMSG_COMPONENT "dibs"
#define pr_fmt(fmt) KMSG_COMPONENT ": " fmt
#include <linux/module.h>
#include <linux/types.h>
#include <linux/err.h>
#include <linux/dibs.h>
MODULE_DESCRIPTION("Direct Internal Buffer Sharing class");
MODULE_LICENSE("GPL");
/* use an array rather a list for fast mapping: */
static struct dibs_client *clients[MAX_DIBS_CLIENTS];
static u8 max_client;
static int __init dibs_init(void)
{
memset(clients, 0, sizeof(clients));
max_client = 0;
return 0;
}
static void __exit dibs_exit(void)
{
}
module_init(dibs_init);
module_exit(dibs_exit);

42
include/linux/dibs.h Normal file
View File

@ -0,0 +1,42 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Direct Internal Buffer Sharing
*
* Definitions for the DIBS module
*
* Copyright IBM Corp. 2025
*/
#ifndef _DIBS_H
#define _DIBS_H
/* DIBS - Direct Internal Buffer Sharing - concept
* -----------------------------------------------
* In the case of multiple system sharing the same hardware, dibs fabrics can
* provide dibs devices to these systems. The systems use dibs devices of the
* same fabric to communicate via dmbs (Direct Memory Buffers). Each dmb has
* exactly one owning local dibs device and one remote using dibs device, that
* is authorized to write into this dmb. This access control is provided by the
* dibs fabric.
*
* Because the access to the dmb is based on access to physical memory, it is
* lossless and synchronous. The remote devices can directly access any offset
* of the dmb.
*
* Dibs fabrics, dibs devices and dmbs are identified by tokens and ids.
* Dibs fabric id is unique within the same hardware (with the exception of the
* dibs loopback fabric), dmb token is unique within the same fabric, dibs
* device gids are guaranteed to be unique within the same fabric and
* statistically likely to be globally unique. The exchange of these tokens and
* ids between the systems is not part of the dibs concept.
*
* The dibs layer provides an abstraction between dibs device drivers and dibs
* clients.
*/
#define MAX_DIBS_CLIENTS 8
struct dibs_client {
const char *name;
};
#endif /* _DIBS_H */

View File

@ -88,6 +88,7 @@ source "net/tls/Kconfig"
source "net/xfrm/Kconfig"
source "net/iucv/Kconfig"
source "net/smc/Kconfig"
source "drivers/dibs/Kconfig"
source "net/xdp/Kconfig"
config NET_HANDSHAKE