| /linux/drivers/fwctl/ |
| H A D | main.c | 58 struct fwctl_device *fwctl = ucmd->uctx->fwctl; in fwctl_cmd_info() local 65 if (!fwctl->ops->info && cmd->device_data_len) { in fwctl_cmd_info() 71 fwctl->ops->info(ucmd->uctx, &driver_info_len); in fwctl_cmd_info() 81 cmd->out_device_type = fwctl->ops->device_type; in fwctl_cmd_info() 88 struct fwctl_device *fwctl = ucmd->uctx->fwctl; in fwctl_cmd_rpc() local 107 &fwctl->dev, in fwctl_cmd_rpc() 124 void *outbuf __free(kvfree) = fwctl->ops->fw_rpc( in fwctl_cmd_rpc() 201 guard(rwsem_read)(&uctx->fwctl->registration_lock); in fwctl_fops_ioctl() 202 if (!uctx->fwctl->ops) in fwctl_fops_ioctl() 209 struct fwctl_device *fwctl = in fwctl_fops_open() local [all …]
|
| H A D | Kconfig | 3 tristate "fwctl device firmware access framework" 5 fwctl provides a userspace API for restricted access to communicate 13 tristate "mlx5 ConnectX control fwctl driver" 25 tristate "AMD/Pensando pds fwctl driver" 28 The pds_fwctl driver provides an fwctl interface for a user process
|
| H A D | Makefile | 2 obj-$(CONFIG_FWCTL) += fwctl.o 6 fwctl-y += main.o
|
| /linux/include/linux/ |
| H A D | fwctl.h | 107 static inline struct fwctl_device *fwctl_get(struct fwctl_device *fwctl) in fwctl_get() argument 109 get_device(&fwctl->dev); in fwctl_get() 110 return fwctl; in fwctl_get() 112 static inline void fwctl_put(struct fwctl_device *fwctl) in fwctl_put() argument 114 put_device(&fwctl->dev); in fwctl_put() 116 DEFINE_FREE(fwctl, struct fwctl_device *, if (_T) fwctl_put(_T)); 118 int fwctl_register(struct fwctl_device *fwctl); 119 void fwctl_unregister(struct fwctl_device *fwctl); 129 struct fwctl_device *fwctl; member
|
| /linux/drivers/fwctl/mlx5/ |
| H A D | main.c | 12 dev_err(&mcdev->fwctl.dev, format, ##__VA_ARGS__) 15 dev_dbg(&mcdev->fwctl.dev, "PID %u: " format, current->pid, \ 25 struct fwctl_device fwctl; member 28 DEFINE_FREE(mlx5ctl, struct mlx5ctl_dev *, if (_T) fwctl_put(&_T->fwctl)); 134 container_of(uctx->fwctl, struct mlx5ctl_dev, fwctl); in mlx5ctl_open_uctx() 157 container_of(uctx->fwctl, struct mlx5ctl_dev, fwctl); in mlx5ctl_close_uctx() 310 container_of(uctx->fwctl, struct mlx5ctl_dev, fwctl); in mlx5ctl_fw_rpc() 377 &mdev->pdev->dev, &mlx5ctl_ops, struct mlx5ctl_dev, fwctl); in mlx5ctl_probe() 385 ret = fwctl_register(&mcdev->fwctl); in mlx5ctl_probe() 396 fwctl_unregister(&mcdev->fwctl); in mlx5ctl_remove() [all …]
|
| /linux/drivers/fwctl/pds/ |
| H A D | main.c | 33 struct fwctl_device fwctl; member 44 struct pdsfc_dev *pdsfc = container_of(uctx->fwctl, struct pdsfc_dev, fwctl); in pdsfc_open_uctx() 72 struct device *dev = &pdsfc->fwctl.dev; in pdsfc_identify() 108 struct device *dev = &pdsfc->fwctl.dev; in pdsfc_free_endpoints() 128 struct device *dev = &pdsfc->fwctl.dev; in pdsfc_free_operations() 148 struct device *dev = &pdsfc->fwctl.dev; in pdsfc_get_endpoints() 215 struct device *dev = &pdsfc->fwctl.dev; in pdsfc_get_operations() 287 struct device *dev = &pdsfc->fwctl.dev; in pdsfc_validate_rpc() 353 struct pdsfc_dev *pdsfc = container_of(uctx->fwctl, struct pdsfc_dev, fwctl); in pdsfc_fw_rpc() 354 struct device *dev = &uctx->fwctl->dev; in pdsfc_fw_rpc() [all …]
|
| /linux/Documentation/userspace-api/fwctl/ |
| H A D | fwctl.rst | 4 fwctl subsystem 42 interfaces. fwctl seeks to allow access to the full device functionality from 46 fwctl is aimed at the common device design pattern where the OS and FW 61 fwctl's purpose is to define a common set of limited rules, described below, 72 fwctl drivers are strictly restricted to being a way to operate the device FW. 76 fwctl instances must operate on a well-defined device function, and the device 132 time, but otherwise must not be coupled to fwctl. 138 fwctl is not a replacement for device direct access subsystems like uacce or 141 Operations exposed through fwctl's non-tainting interfaces should be fully 143 fwctl should never prevent a kernel subsystem from also concurrently using that [all …]
|
| H A D | pds_fwctl.rst | 4 fwctl pds driver 12 The PDS Core device makes a fwctl service available through an 13 auxiliary_device named pds_core.fwctl.N. The pds_fwctl driver binds to 14 this device and registers itself with the fwctl subsystem. The resulting 20 firmware for fwctl requests. The set of fwctl operations available
|
| H A D | fwctl-cxl.rst | 4 fwctl cxl driver 14 issued to the mailbox as well. fwctl provides a path to issue a set of allowed 27 under the fwctl policy of FWCTL_RPC_CONFIGURATION. 31 Set Feature will cause immediate change to the device, the fwctl access policy 36 fwctl access policy must be FWCTL_RPC_DEBUG_WRITE or higher. 38 fwctl cxl User API 41 .. kernel-doc:: include/uapi/fwctl/cxl.h 133 <https://github.com/pmem/ndctl/tree/main/test/fwctl.c> for a detailed user code 137 fwctl cxl Kernel API
|
| H A D | index.rst | 12 fwctl 13 fwctl-cxl
|
| /linux/include/linux/pds/ |
| H A D | pds_adminq.h | 1487 struct pds_fwctl_cmd fwctl; member 1519 struct pds_fwctl_comp fwctl; member
|
| /linux/drivers/ |
| H A D | Makefile | 138 obj-$(CONFIG_FWCTL) += fwctl/
|
| H A D | Kconfig | 30 source "drivers/fwctl/Kconfig"
|
| /linux/Documentation/admin-guide/ |
| H A D | tainted-kernels.rst | 104 19 _/J 524288 userspace used a mutating debug operation in fwctl 189 19) ``J`` if userspace opened /dev/fwctl/* and performed a FWTCL_RPC_DEBUG_WRITE
|
| /linux/drivers/cxl/core/ |
| H A D | features.c | 648 struct fwctl_device *fwctl_dev = uctx->fwctl; in cxlctl_fw_rpc()
|
| /linux/Documentation/userspace-api/ioctl/ |
| H A D | ioctl-number.rst | 338 0x9A 00-0F include/uapi/fwctl/fwctl.h
|
| /linux/Documentation/driver-api/cxl/linux/ |
| H A D | cxl-driver.rst | 459 of vendor-specific commands (see the `fwctl` subsystem for that).
|
| /linux/ |
| H A D | MAINTAINERS | 6436 F: Documentation/userspace-api/fwctl/fwctl-cxl.rst 10542 F: Documentation/userspace-api/fwctl/ 10543 F: drivers/fwctl/ 10544 F: include/linux/fwctl.h 10545 F: include/uapi/fwctl/ 10552 F: drivers/fwctl/mlx5/ 10558 F: drivers/fwctl/pds/
|