ne_pci_dev
struct pci_dev *pdev = ne_devs.ne_pci_dev->pdev;
struct ne_pci_dev *ne_pci_dev)
&ne_pci_dev->enclaves_list, enclave_list_entry) {
struct ne_pci_dev *ne_pci_dev = ne_devs.ne_pci_dev;
struct pci_dev *pdev = ne_pci_dev->pdev;
mutex_lock(&ne_pci_dev->enclaves_list_mutex);
struct ne_pci_dev *ne_pci_dev = ne_devs.ne_pci_dev;
ne_pci_dev_remove_enclave_entry(ne_enclave, ne_pci_dev);
if (!ne_pci_dev)
mutex_unlock(&ne_pci_dev->enclaves_list_mutex);
mutex_unlock(&ne_pci_dev->enclaves_list_mutex);
mutex_lock(&ne_pci_dev->enclaves_list_mutex);
if (!list_empty(&ne_pci_dev->enclaves_list))
static int ne_create_vm_ioctl(struct ne_pci_dev *ne_pci_dev, u64 __user *slot_uid)
struct pci_dev *pdev = ne_pci_dev->pdev;
mutex_unlock(&ne_pci_dev->enclaves_list_mutex);
list_add(&ne_enclave->enclave_list_entry, &ne_pci_dev->enclaves_list);
struct ne_pci_dev *ne_pci_dev = ne_devs.ne_pci_dev;
mutex_lock(&ne_pci_dev->enclaves_list_mutex);
enclave_fd = ne_create_vm_ioctl(ne_pci_dev, slot_uid);
mutex_unlock(&ne_pci_dev->enclaves_list_mutex);
struct pci_dev *pdev = ne_devs.ne_pci_dev->pdev;
struct pci_dev *pdev = ne_devs.ne_pci_dev->pdev;
struct ne_pci_dev *ne_pci_dev;
struct ne_pci_dev *ne_pci_dev = pci_get_drvdata(pdev);
mutex_lock(&ne_pci_dev->pci_dev_mutex);
atomic_set(&ne_pci_dev->cmd_reply_avail, 0);
atomic_set(&ne_pci_dev->cmd_reply_avail, 0);
mutex_unlock(&ne_pci_dev->pci_dev_mutex);
struct ne_pci_dev *ne_pci_dev = (struct ne_pci_dev *)args;
atomic_set(&ne_pci_dev->cmd_reply_avail, 1);
wake_up(&ne_pci_dev->cmd_reply_wait_q);
struct ne_pci_dev *ne_pci_dev =
container_of(work, struct ne_pci_dev, notify_work);
struct pci_dev *pdev = ne_pci_dev->pdev;
mutex_lock(&ne_pci_dev->enclaves_list_mutex);
list_for_each_entry(ne_enclave, &ne_pci_dev->enclaves_list, enclave_list_entry) {
mutex_unlock(&ne_pci_dev->enclaves_list_mutex);
struct ne_pci_dev *ne_pci_dev = (struct ne_pci_dev *)args;
queue_work(ne_pci_dev->event_wq, &ne_pci_dev->notify_work);
struct ne_pci_dev *ne_pci_dev = pci_get_drvdata(pdev);
0, "enclave_cmd", ne_pci_dev);
ne_pci_dev->event_wq = create_singlethread_workqueue("ne_pci_dev_wq");
if (!ne_pci_dev->event_wq) {
INIT_WORK(&ne_pci_dev->notify_work, ne_event_work_handler);
0, "enclave_evt", ne_pci_dev);
destroy_workqueue(ne_pci_dev->event_wq);
free_irq(pci_irq_vector(pdev, NE_VEC_REPLY), ne_pci_dev);
struct ne_pci_dev *ne_pci_dev = pci_get_drvdata(pdev);
free_irq(pci_irq_vector(pdev, NE_VEC_EVENT), ne_pci_dev);
flush_work(&ne_pci_dev->notify_work);
destroy_workqueue(ne_pci_dev->event_wq);
free_irq(pci_irq_vector(pdev, NE_VEC_REPLY), ne_pci_dev);
struct ne_pci_dev *ne_pci_dev = pci_get_drvdata(pdev);
iowrite16(NE_VERSION_MAX, ne_pci_dev->iomem_base + NE_VERSION);
dev_version_reply = ioread16(ne_pci_dev->iomem_base + NE_VERSION);
iowrite8(NE_ENABLE_ON, ne_pci_dev->iomem_base + NE_ENABLE);
dev_enable_reply = ioread8(ne_pci_dev->iomem_base + NE_ENABLE);
struct ne_pci_dev *ne_pci_dev = pci_get_drvdata(pdev);
iowrite8(NE_ENABLE_OFF, ne_pci_dev->iomem_base + NE_ENABLE);
dev_disable_reply = ioread8(ne_pci_dev->iomem_base + NE_ENABLE);
dev_disable_reply = ioread8(ne_pci_dev->iomem_base + NE_ENABLE);
struct ne_pci_dev *ne_pci_dev = NULL;
ne_pci_dev = kzalloc_obj(*ne_pci_dev);
if (!ne_pci_dev)
struct ne_pci_dev *ne_pci_dev = pci_get_drvdata(pdev);
ne_pci_dev->iomem_base = pci_iomap(pdev, PCI_BAR_NE, 0);
if (!ne_pci_dev->iomem_base) {
pci_set_drvdata(pdev, ne_pci_dev);
memcpy_toio(ne_pci_dev->iomem_base + NE_SEND_DATA, cmd_request, cmd_request_size);
atomic_set(&ne_pci_dev->cmd_reply_avail, 0);
init_waitqueue_head(&ne_pci_dev->cmd_reply_wait_q);
INIT_LIST_HEAD(&ne_pci_dev->enclaves_list);
mutex_init(&ne_pci_dev->enclaves_list_mutex);
mutex_init(&ne_pci_dev->pci_dev_mutex);
ne_pci_dev->pdev = pdev;
ne_devs.ne_pci_dev = ne_pci_dev;
iowrite32(cmd_type, ne_pci_dev->iomem_base + NE_COMMAND);
ne_devs.ne_pci_dev = NULL;
pci_iounmap(pdev, ne_pci_dev->iomem_base);
kfree(ne_pci_dev);
struct ne_pci_dev *ne_pci_dev = pci_get_drvdata(pdev);
ne_devs.ne_pci_dev = NULL;
pci_iounmap(pdev, ne_pci_dev->iomem_base);
kfree(ne_pci_dev);
struct ne_pci_dev *ne_pci_dev = pci_get_drvdata(pdev);
if (!ne_pci_dev)
ne_devs.ne_pci_dev = NULL;
pci_iounmap(pdev, ne_pci_dev->iomem_base);
kfree(ne_pci_dev);
struct ne_pci_dev *ne_pci_dev = pci_get_drvdata(pdev);
memcpy_fromio(cmd_reply, ne_pci_dev->iomem_base + NE_RECV_DATA, cmd_reply_size);
struct ne_pci_dev *ne_pci_dev = pci_get_drvdata(pdev);
rc = wait_event_timeout(ne_pci_dev->cmd_reply_wait_q,
atomic_read(&ne_pci_dev->cmd_reply_avail) != 0,