mirror of https://github.com/torvalds/linux.git
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
|
S: Maintained
|
||||||
F: drivers/gpio/gpio-gpio-mm.c
|
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
|
DIGITEQ AUTOMOTIVE MGB4 V4L2 DRIVER
|
||||||
M: Martin Tuma <martin.tuma@digiteqautomotive.com>
|
M: Martin Tuma <martin.tuma@digiteqautomotive.com>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
|
|
|
||||||
|
|
@ -195,4 +195,5 @@ obj-$(CONFIG_DRM_ACCEL) += accel/
|
||||||
obj-$(CONFIG_CDX_BUS) += cdx/
|
obj-$(CONFIG_CDX_BUS) += cdx/
|
||||||
obj-$(CONFIG_DPLL) += dpll/
|
obj-$(CONFIG_DPLL) += dpll/
|
||||||
|
|
||||||
|
obj-$(CONFIG_DIBS) += dibs/
|
||||||
obj-$(CONFIG_S390) += s390/
|
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/xfrm/Kconfig"
|
||||||
source "net/iucv/Kconfig"
|
source "net/iucv/Kconfig"
|
||||||
source "net/smc/Kconfig"
|
source "net/smc/Kconfig"
|
||||||
|
source "drivers/dibs/Kconfig"
|
||||||
source "net/xdp/Kconfig"
|
source "net/xdp/Kconfig"
|
||||||
|
|
||||||
config NET_HANDSHAKE
|
config NET_HANDSHAKE
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue