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:
parent
a4997e17d1
commit
35758b0032
|
@ -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
|
||||
|
|
|
@ -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/
|
||||
|
|
|
@ -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.
|
|
@ -0,0 +1,7 @@
|
|||
# SPDX-License-Identifier: GPL-2.0
|
||||
#
|
||||
# DIBS class module
|
||||
#
|
||||
|
||||
dibs-y += dibs_main.o
|
||||
obj-$(CONFIG_DIBS) += dibs.o
|
|
@ -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);
|
|
@ -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 */
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue