idxd.h (5fc8e85ff12ce0530ac658686902a0ee64600f56) | idxd.h (47c16ac27d4cb664cee53ee0b9b7e2f907923fb3) |
---|---|
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* Copyright(c) 2019 Intel Corporation. All rights rsvd. */ 3#ifndef _IDXD_H_ 4#define _IDXD_H_ 5 6#include <linux/sbitmap.h> 7#include <linux/dmaengine.h> 8#include <linux/percpu-rwsem.h> 9#include <linux/wait.h> 10#include <linux/cdev.h> | 1/* SPDX-License-Identifier: GPL-2.0 */ 2/* Copyright(c) 2019 Intel Corporation. All rights rsvd. */ 3#ifndef _IDXD_H_ 4#define _IDXD_H_ 5 6#include <linux/sbitmap.h> 7#include <linux/dmaengine.h> 8#include <linux/percpu-rwsem.h> 9#include <linux/wait.h> 10#include <linux/cdev.h> |
11#include <linux/idr.h> |
|
11#include "registers.h" 12 13#define IDXD_DRIVER_VERSION "1.00" 14 15extern struct kmem_cache *idxd_desc_pool; 16 17struct idxd_device; 18struct idxd_wq; --- 231 unchanged lines hidden (view full) --- 250 251#define confdev_to_idxd(dev) container_of(dev, struct idxd_device, conf_dev) 252#define confdev_to_wq(dev) container_of(dev, struct idxd_wq, conf_dev) 253 254extern struct bus_type dsa_bus_type; 255extern struct bus_type iax_bus_type; 256 257extern bool support_enqcmd; | 12#include "registers.h" 13 14#define IDXD_DRIVER_VERSION "1.00" 15 16extern struct kmem_cache *idxd_desc_pool; 17 18struct idxd_device; 19struct idxd_wq; --- 231 unchanged lines hidden (view full) --- 251 252#define confdev_to_idxd(dev) container_of(dev, struct idxd_device, conf_dev) 253#define confdev_to_wq(dev) container_of(dev, struct idxd_wq, conf_dev) 254 255extern struct bus_type dsa_bus_type; 256extern struct bus_type iax_bus_type; 257 258extern bool support_enqcmd; |
259extern struct device_type dsa_device_type; 260extern struct device_type iax_device_type; |
|
258 | 261 |
262static inline bool is_dsa_dev(struct device *dev) 263{ 264 return dev->type == &dsa_device_type; 265} 266 267static inline bool is_iax_dev(struct device *dev) 268{ 269 return dev->type == &iax_device_type; 270} 271 272static inline bool is_idxd_dev(struct device *dev) 273{ 274 return is_dsa_dev(dev) || is_iax_dev(dev); 275} 276 |
|
259static inline bool wq_dedicated(struct idxd_wq *wq) 260{ 261 return test_bit(WQ_FLAG_DEDICATED, &wq->flags); 262} 263 264static inline bool wq_shared(struct idxd_wq *wq) 265{ 266 return !test_bit(WQ_FLAG_DEDICATED, &wq->flags); --- 20 unchanged lines hidden (view full) --- 287} 288 289static inline int idxd_get_wq_portal_full_offset(int wq_id, 290 enum idxd_portal_prot prot) 291{ 292 return ((wq_id * 4) << PAGE_SHIFT) + idxd_get_wq_portal_offset(prot); 293} 294 | 277static inline bool wq_dedicated(struct idxd_wq *wq) 278{ 279 return test_bit(WQ_FLAG_DEDICATED, &wq->flags); 280} 281 282static inline bool wq_shared(struct idxd_wq *wq) 283{ 284 return !test_bit(WQ_FLAG_DEDICATED, &wq->flags); --- 20 unchanged lines hidden (view full) --- 305} 306 307static inline int idxd_get_wq_portal_full_offset(int wq_id, 308 enum idxd_portal_prot prot) 309{ 310 return ((wq_id * 4) << PAGE_SHIFT) + idxd_get_wq_portal_offset(prot); 311} 312 |
295static inline void idxd_set_type(struct idxd_device *idxd) 296{ 297 struct pci_dev *pdev = idxd->pdev; 298 299 if (pdev->device == PCI_DEVICE_ID_INTEL_DSA_SPR0) 300 idxd->type = IDXD_TYPE_DSA; 301 else if (pdev->device == PCI_DEVICE_ID_INTEL_IAX_SPR0) 302 idxd->type = IDXD_TYPE_IAX; 303 else 304 idxd->type = IDXD_TYPE_UNKNOWN; 305} 306 | |
307static inline void idxd_wq_get(struct idxd_wq *wq) 308{ 309 wq->client_count++; 310} 311 312static inline void idxd_wq_put(struct idxd_wq *wq) 313{ 314 wq->client_count--; 315} 316 317static inline int idxd_wq_refcount(struct idxd_wq *wq) 318{ 319 return wq->client_count; 320}; 321 | 313static inline void idxd_wq_get(struct idxd_wq *wq) 314{ 315 wq->client_count++; 316} 317 318static inline void idxd_wq_put(struct idxd_wq *wq) 319{ 320 wq->client_count--; 321} 322 323static inline int idxd_wq_refcount(struct idxd_wq *wq) 324{ 325 return wq->client_count; 326}; 327 |
328struct ida *idxd_ida(struct idxd_device *idxd); |
|
322const char *idxd_get_dev_name(struct idxd_device *idxd); 323int idxd_register_bus_type(void); 324void idxd_unregister_bus_type(void); | 329const char *idxd_get_dev_name(struct idxd_device *idxd); 330int idxd_register_bus_type(void); 331void idxd_unregister_bus_type(void); |
325int idxd_setup_sysfs(struct idxd_device *idxd); 326void idxd_cleanup_sysfs(struct idxd_device *idxd); | 332int idxd_register_devices(struct idxd_device *idxd); 333void idxd_unregister_devices(struct idxd_device *idxd); |
327int idxd_register_driver(void); 328void idxd_unregister_driver(void); 329struct bus_type *idxd_get_bus_type(struct idxd_device *idxd); | 334int idxd_register_driver(void); 335void idxd_unregister_driver(void); 336struct bus_type *idxd_get_bus_type(struct idxd_device *idxd); |
337struct device_type *idxd_get_device_type(struct idxd_device *idxd); |
|
330 331/* device interrupt control */ 332void idxd_msix_perm_setup(struct idxd_device *idxd); 333void idxd_msix_perm_clear(struct idxd_device *idxd); 334irqreturn_t idxd_irq_handler(int vec, void *data); 335irqreturn_t idxd_misc_thread(int vec, void *data); 336irqreturn_t idxd_wq_thread(int irq, void *data); 337void idxd_mask_error_interrupts(struct idxd_device *idxd); --- 50 unchanged lines hidden --- | 338 339/* device interrupt control */ 340void idxd_msix_perm_setup(struct idxd_device *idxd); 341void idxd_msix_perm_clear(struct idxd_device *idxd); 342irqreturn_t idxd_irq_handler(int vec, void *data); 343irqreturn_t idxd_misc_thread(int vec, void *data); 344irqreturn_t idxd_wq_thread(int irq, void *data); 345void idxd_mask_error_interrupts(struct idxd_device *idxd); --- 50 unchanged lines hidden --- |