From: Dongwon Kim <dongwon.kim@intel.com> To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, xen-devel@lists.xenproject.org, mateuszx.potrola@intel.com, dongwon.kim@intel.com, "Michał Janiszewski" <michal1x.janiszewski@intel.com> Subject: [RFC PATCH 21/60] hyper_dmabuf: exposing drv information using sysfs Date: Tue, 19 Dec 2017 11:29:37 -0800 [thread overview] Message-ID: <1513711816-2618-21-git-send-email-dongwon.kim@intel.com> (raw) In-Reply-To: <1513711816-2618-1-git-send-email-dongwon.kim@intel.com> From: Michał Janiszewski <michal1x.janiszewski@intel.com> This adds two entries in SYSFS with information about imported and exported entries. The information exposed contains details about number of pages, whether a buffer is valid or not, and importer/exporter count. Sysfs for hyper_dmabuf can be enabled by setting a new config option, "CONFIG_HYPER_DMABUF_SYSFS" to 'yes'. Signed-off-by: Dongwon Kim <dongwon.kim@intel.com> --- drivers/xen/hyper_dmabuf/Kconfig | 7 +++ drivers/xen/hyper_dmabuf/hyper_dmabuf_drv.c | 12 ++++- drivers/xen/hyper_dmabuf/hyper_dmabuf_imp.c | 2 +- drivers/xen/hyper_dmabuf/hyper_dmabuf_list.c | 74 ++++++++++++++++++++++++++++ drivers/xen/hyper_dmabuf/hyper_dmabuf_list.h | 3 ++ 5 files changed, 96 insertions(+), 2 deletions(-) diff --git a/drivers/xen/hyper_dmabuf/Kconfig b/drivers/xen/hyper_dmabuf/Kconfig index 75e1f96..56633a2 100644 --- a/drivers/xen/hyper_dmabuf/Kconfig +++ b/drivers/xen/hyper_dmabuf/Kconfig @@ -11,4 +11,11 @@ config HYPER_DMABUF_XEN help Configuring hyper_dmabuf driver for XEN hypervisor +config HYPER_DMABUF_SYSFS + bool "Enable sysfs information about hyper DMA buffers" + default y + help + Expose information about imported and exported buffers using + hyper_dmabuf driver + endmenu diff --git a/drivers/xen/hyper_dmabuf/hyper_dmabuf_drv.c b/drivers/xen/hyper_dmabuf/hyper_dmabuf_drv.c index 9d99769..3fc30e6 100644 --- a/drivers/xen/hyper_dmabuf/hyper_dmabuf_drv.c +++ b/drivers/xen/hyper_dmabuf/hyper_dmabuf_drv.c @@ -22,7 +22,7 @@ int unregister_device(void); struct hyper_dmabuf_private hyper_dmabuf_private; /*===============================================================================================*/ -static int hyper_dmabuf_drv_init(void) +static int __init hyper_dmabuf_drv_init(void) { int ret = 0; @@ -51,10 +51,16 @@ static int hyper_dmabuf_drv_init(void) } ret = hyper_dmabuf_private.backend_ops->init_comm_env(); + if (ret < 0) { + return -EINVAL; + } +#ifdef CONFIG_HYPER_DMABUF_SYSFS + ret = hyper_dmabuf_register_sysfs(hyper_dmabuf_private.device); if (ret < 0) { return -EINVAL; } +#endif /* interrupt for comm should be registered here: */ return ret; @@ -63,6 +69,10 @@ static int hyper_dmabuf_drv_init(void) /*-----------------------------------------------------------------------------------------------*/ static void hyper_dmabuf_drv_exit(void) { +#ifdef CONFIG_HYPER_DMABUF_SYSFS + hyper_dmabuf_unregister_sysfs(hyper_dmabuf_private.device); +#endif + /* hash tables for export/import entries and ring_infos */ hyper_dmabuf_table_destroy(); diff --git a/drivers/xen/hyper_dmabuf/hyper_dmabuf_imp.c b/drivers/xen/hyper_dmabuf/hyper_dmabuf_imp.c index 9b05063..924710f 100644 --- a/drivers/xen/hyper_dmabuf/hyper_dmabuf_imp.c +++ b/drivers/xen/hyper_dmabuf/hyper_dmabuf_imp.c @@ -24,7 +24,7 @@ int dmabuf_refcount(struct dma_buf *dma_buf) return -1; } -/* return total number of pages referecned by a sgt +/* return total number of pages referenced by a sgt * for pre-calculation of # of pages behind a given sgt */ static int hyper_dmabuf_get_num_pgs(struct sg_table *sgt) diff --git a/drivers/xen/hyper_dmabuf/hyper_dmabuf_list.c b/drivers/xen/hyper_dmabuf/hyper_dmabuf_list.c index 18731de..1d224c4 100644 --- a/drivers/xen/hyper_dmabuf/hyper_dmabuf_list.c +++ b/drivers/xen/hyper_dmabuf/hyper_dmabuf_list.c @@ -11,6 +11,80 @@ DECLARE_HASHTABLE(hyper_dmabuf_hash_imported, MAX_ENTRY_IMPORTED); DECLARE_HASHTABLE(hyper_dmabuf_hash_exported, MAX_ENTRY_EXPORTED); +#ifdef CONFIG_HYPER_DMABUF_SYSFS +static ssize_t hyper_dmabuf_imported_show(struct device *drv, struct device_attribute *attr, char *buf) +{ + struct hyper_dmabuf_info_entry_imported *info_entry; + int bkt; + ssize_t count = 0; + size_t total = 0; + + hash_for_each(hyper_dmabuf_hash_imported, bkt, info_entry, node) { + int id = info_entry->info->hyper_dmabuf_id; + int nents = info_entry->info->nents; + bool valid = info_entry->info->valid; + int num_importers = info_entry->info->num_importers; + total += nents; + count += scnprintf(buf + count, PAGE_SIZE - count, "id:%d, nents:%d, v:%c, numi:%d\n", + id, nents, (valid ? 't' : 'f'), num_importers); + } + count += scnprintf(buf + count, PAGE_SIZE - count, "total nents: %lu\n", + total); + + return count; +} + +static ssize_t hyper_dmabuf_exported_show(struct device *drv, struct device_attribute *attr, char *buf) +{ + struct hyper_dmabuf_info_entry_exported *info_entry; + int bkt; + ssize_t count = 0; + size_t total = 0; + + hash_for_each(hyper_dmabuf_hash_exported, bkt, info_entry, node) { + int id = info_entry->info->hyper_dmabuf_id; + int nents = info_entry->info->nents; + bool valid = info_entry->info->valid; + int importer_exported = info_entry->info->importer_exported; + total += nents; + count += scnprintf(buf + count, PAGE_SIZE - count, "id:%d, nents:%d, v:%c, ie:%d\n", + id, nents, (valid ? 't' : 'f'), importer_exported); + } + count += scnprintf(buf + count, PAGE_SIZE - count, "total nents: %lu\n", + total); + + return count; +} + +static DEVICE_ATTR(imported, S_IRUSR, hyper_dmabuf_imported_show, NULL); +static DEVICE_ATTR(exported, S_IRUSR, hyper_dmabuf_exported_show, NULL); + +int hyper_dmabuf_register_sysfs(struct device *dev) +{ + int err; + + err = device_create_file(dev, &dev_attr_imported); + if (err < 0) + goto err1; + err = device_create_file(dev, &dev_attr_exported); + if (err < 0) + goto err2; + + return 0; +err2: + device_remove_file(dev, &dev_attr_imported); +err1: + return -1; +} + +int hyper_dmabuf_unregister_sysfs(struct device *dev) +{ + device_remove_file(dev, &dev_attr_imported); + device_remove_file(dev, &dev_attr_exported); + return 0; +} +#endif + int hyper_dmabuf_table_init() { hash_init(hyper_dmabuf_hash_imported); diff --git a/drivers/xen/hyper_dmabuf/hyper_dmabuf_list.h b/drivers/xen/hyper_dmabuf/hyper_dmabuf_list.h index f55d06e..a46f884 100644 --- a/drivers/xen/hyper_dmabuf/hyper_dmabuf_list.h +++ b/drivers/xen/hyper_dmabuf/hyper_dmabuf_list.h @@ -37,4 +37,7 @@ int hyper_dmabuf_remove_exported(int id); int hyper_dmabuf_remove_imported(int id); +int hyper_dmabuf_register_sysfs(struct device *dev); +int hyper_dmabuf_unregister_sysfs(struct device *dev); + #endif // __HYPER_DMABUF_LIST_H__ -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: Dongwon Kim <dongwon.kim@intel.com> To: linux-kernel@vger.kernel.org Cc: "Michał Janiszewski" <michal1x.janiszewski@intel.com>, xen-devel@lists.xenproject.org, mateuszx.potrola@intel.com, dri-devel@lists.freedesktop.org, dongwon.kim@intel.com Subject: [RFC PATCH 21/60] hyper_dmabuf: exposing drv information using sysfs Date: Tue, 19 Dec 2017 11:29:37 -0800 [thread overview] Message-ID: <1513711816-2618-21-git-send-email-dongwon.kim@intel.com> (raw) In-Reply-To: <1513711816-2618-1-git-send-email-dongwon.kim@intel.com> From: Michał Janiszewski <michal1x.janiszewski@intel.com> This adds two entries in SYSFS with information about imported and exported entries. The information exposed contains details about number of pages, whether a buffer is valid or not, and importer/exporter count. Sysfs for hyper_dmabuf can be enabled by setting a new config option, "CONFIG_HYPER_DMABUF_SYSFS" to 'yes'. Signed-off-by: Dongwon Kim <dongwon.kim@intel.com> --- drivers/xen/hyper_dmabuf/Kconfig | 7 +++ drivers/xen/hyper_dmabuf/hyper_dmabuf_drv.c | 12 ++++- drivers/xen/hyper_dmabuf/hyper_dmabuf_imp.c | 2 +- drivers/xen/hyper_dmabuf/hyper_dmabuf_list.c | 74 ++++++++++++++++++++++++++++ drivers/xen/hyper_dmabuf/hyper_dmabuf_list.h | 3 ++ 5 files changed, 96 insertions(+), 2 deletions(-) diff --git a/drivers/xen/hyper_dmabuf/Kconfig b/drivers/xen/hyper_dmabuf/Kconfig index 75e1f96..56633a2 100644 --- a/drivers/xen/hyper_dmabuf/Kconfig +++ b/drivers/xen/hyper_dmabuf/Kconfig @@ -11,4 +11,11 @@ config HYPER_DMABUF_XEN help Configuring hyper_dmabuf driver for XEN hypervisor +config HYPER_DMABUF_SYSFS + bool "Enable sysfs information about hyper DMA buffers" + default y + help + Expose information about imported and exported buffers using + hyper_dmabuf driver + endmenu diff --git a/drivers/xen/hyper_dmabuf/hyper_dmabuf_drv.c b/drivers/xen/hyper_dmabuf/hyper_dmabuf_drv.c index 9d99769..3fc30e6 100644 --- a/drivers/xen/hyper_dmabuf/hyper_dmabuf_drv.c +++ b/drivers/xen/hyper_dmabuf/hyper_dmabuf_drv.c @@ -22,7 +22,7 @@ int unregister_device(void); struct hyper_dmabuf_private hyper_dmabuf_private; /*===============================================================================================*/ -static int hyper_dmabuf_drv_init(void) +static int __init hyper_dmabuf_drv_init(void) { int ret = 0; @@ -51,10 +51,16 @@ static int hyper_dmabuf_drv_init(void) } ret = hyper_dmabuf_private.backend_ops->init_comm_env(); + if (ret < 0) { + return -EINVAL; + } +#ifdef CONFIG_HYPER_DMABUF_SYSFS + ret = hyper_dmabuf_register_sysfs(hyper_dmabuf_private.device); if (ret < 0) { return -EINVAL; } +#endif /* interrupt for comm should be registered here: */ return ret; @@ -63,6 +69,10 @@ static int hyper_dmabuf_drv_init(void) /*-----------------------------------------------------------------------------------------------*/ static void hyper_dmabuf_drv_exit(void) { +#ifdef CONFIG_HYPER_DMABUF_SYSFS + hyper_dmabuf_unregister_sysfs(hyper_dmabuf_private.device); +#endif + /* hash tables for export/import entries and ring_infos */ hyper_dmabuf_table_destroy(); diff --git a/drivers/xen/hyper_dmabuf/hyper_dmabuf_imp.c b/drivers/xen/hyper_dmabuf/hyper_dmabuf_imp.c index 9b05063..924710f 100644 --- a/drivers/xen/hyper_dmabuf/hyper_dmabuf_imp.c +++ b/drivers/xen/hyper_dmabuf/hyper_dmabuf_imp.c @@ -24,7 +24,7 @@ int dmabuf_refcount(struct dma_buf *dma_buf) return -1; } -/* return total number of pages referecned by a sgt +/* return total number of pages referenced by a sgt * for pre-calculation of # of pages behind a given sgt */ static int hyper_dmabuf_get_num_pgs(struct sg_table *sgt) diff --git a/drivers/xen/hyper_dmabuf/hyper_dmabuf_list.c b/drivers/xen/hyper_dmabuf/hyper_dmabuf_list.c index 18731de..1d224c4 100644 --- a/drivers/xen/hyper_dmabuf/hyper_dmabuf_list.c +++ b/drivers/xen/hyper_dmabuf/hyper_dmabuf_list.c @@ -11,6 +11,80 @@ DECLARE_HASHTABLE(hyper_dmabuf_hash_imported, MAX_ENTRY_IMPORTED); DECLARE_HASHTABLE(hyper_dmabuf_hash_exported, MAX_ENTRY_EXPORTED); +#ifdef CONFIG_HYPER_DMABUF_SYSFS +static ssize_t hyper_dmabuf_imported_show(struct device *drv, struct device_attribute *attr, char *buf) +{ + struct hyper_dmabuf_info_entry_imported *info_entry; + int bkt; + ssize_t count = 0; + size_t total = 0; + + hash_for_each(hyper_dmabuf_hash_imported, bkt, info_entry, node) { + int id = info_entry->info->hyper_dmabuf_id; + int nents = info_entry->info->nents; + bool valid = info_entry->info->valid; + int num_importers = info_entry->info->num_importers; + total += nents; + count += scnprintf(buf + count, PAGE_SIZE - count, "id:%d, nents:%d, v:%c, numi:%d\n", + id, nents, (valid ? 't' : 'f'), num_importers); + } + count += scnprintf(buf + count, PAGE_SIZE - count, "total nents: %lu\n", + total); + + return count; +} + +static ssize_t hyper_dmabuf_exported_show(struct device *drv, struct device_attribute *attr, char *buf) +{ + struct hyper_dmabuf_info_entry_exported *info_entry; + int bkt; + ssize_t count = 0; + size_t total = 0; + + hash_for_each(hyper_dmabuf_hash_exported, bkt, info_entry, node) { + int id = info_entry->info->hyper_dmabuf_id; + int nents = info_entry->info->nents; + bool valid = info_entry->info->valid; + int importer_exported = info_entry->info->importer_exported; + total += nents; + count += scnprintf(buf + count, PAGE_SIZE - count, "id:%d, nents:%d, v:%c, ie:%d\n", + id, nents, (valid ? 't' : 'f'), importer_exported); + } + count += scnprintf(buf + count, PAGE_SIZE - count, "total nents: %lu\n", + total); + + return count; +} + +static DEVICE_ATTR(imported, S_IRUSR, hyper_dmabuf_imported_show, NULL); +static DEVICE_ATTR(exported, S_IRUSR, hyper_dmabuf_exported_show, NULL); + +int hyper_dmabuf_register_sysfs(struct device *dev) +{ + int err; + + err = device_create_file(dev, &dev_attr_imported); + if (err < 0) + goto err1; + err = device_create_file(dev, &dev_attr_exported); + if (err < 0) + goto err2; + + return 0; +err2: + device_remove_file(dev, &dev_attr_imported); +err1: + return -1; +} + +int hyper_dmabuf_unregister_sysfs(struct device *dev) +{ + device_remove_file(dev, &dev_attr_imported); + device_remove_file(dev, &dev_attr_exported); + return 0; +} +#endif + int hyper_dmabuf_table_init() { hash_init(hyper_dmabuf_hash_imported); diff --git a/drivers/xen/hyper_dmabuf/hyper_dmabuf_list.h b/drivers/xen/hyper_dmabuf/hyper_dmabuf_list.h index f55d06e..a46f884 100644 --- a/drivers/xen/hyper_dmabuf/hyper_dmabuf_list.h +++ b/drivers/xen/hyper_dmabuf/hyper_dmabuf_list.h @@ -37,4 +37,7 @@ int hyper_dmabuf_remove_exported(int id); int hyper_dmabuf_remove_imported(int id); +int hyper_dmabuf_register_sysfs(struct device *dev); +int hyper_dmabuf_unregister_sysfs(struct device *dev); + #endif // __HYPER_DMABUF_LIST_H__ -- 2.7.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel
next prev parent reply other threads:[~2017-12-19 19:47 UTC|newest] Thread overview: 159+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-12-19 19:29 [RFC PATCH 01/60] hyper_dmabuf: initial working version of hyper_dmabuf drv Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 02/60] hyper_dmabuf: added a doc for hyper_dmabuf sharing Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 03/60] hyper_dmabuf: re-use dma_buf previously exported if exist Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 04/60] hyper_dmabuf: new index, k for pointing a right n-th page Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 05/60] hyper_dmabuf: skip creating a comm ch if exist for the VM Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 06/60] hyper_dmabuf: map shared pages only once when importing Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 07/60] hyper_dmabuf: message parsing done via workqueue Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 08/60] hyper_dmabuf: automatic comm channel initialization using xenstore Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 09/60] hyper_dmabuf: indirect DMA_BUF synchronization via shadowing Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 10/60] hyper_dmabuf: make sure to free memory to prevent leak Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 11/60] hyper_dmabuf: check stack before unmapping/detaching shadow DMA_BUF Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 12/60] hyper_dmabuf: two different unexporting mechanisms Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 13/60] hyper_dmabuf: postponing cleanup of hyper_DMABUF Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 14/60] hyper_dmabuf: clean-up process based on file->f_count Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 15/60] hyper_dmabuf: reusing previously released hyper_dmabuf_id Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 16/60] hyper_dmabuf: define hypervisor specific backend API Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 17/60] hyper_dmabuf: use dynamic debug macros for logging Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 18/60] hyper_dmabuf: reset comm channel when one end has disconnected Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 19/60] hyper_dmabuf: fix the case with sharing a buffer with 2 pages Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 20/60] hyper_dmabuf: optimized loop with less condition check Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim [this message] 2017-12-19 19:29 ` [RFC PATCH 21/60] hyper_dmabuf: exposing drv information using sysfs Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 22/60] hyper_dmabuf: configure license Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 23/60] hyper_dmabuf: use CONFIG_HYPER_DMABUF_XEN instead of CONFIG_XEN Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 24/60] hyper_dmabuf: waits for resp only if WAIT_AFTER_SYNC_REQ == 1 Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 25/60] hyper_dmabuf: introduced delayed unexport Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 26/60] hyper_dmabuf: add mutexes to prevent several race conditions Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 27/60] hyper_dmabuf: use proper error codes Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 28/60] hyper_dmabuf: address several synchronization issues Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 29/60] hyper_dmabuf: make sure to release allocated buffers when exiting Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 30/60] hyper_dmabuf: free already mapped pages when error happens Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 31/60] hyper_dmabuf: built-in compilation option Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 32/60] hyper_dmabuf: make all shared pages read-only Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 33/60] hyper_dmabuf: error checking on the result of dma_buf_map_attachment Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 34/60] hyper_dmabuf: extend DMA bitmask to 64-bits Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 35/60] hyper_dmabuf: 128bit hyper_dmabuf_id with random keys Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 36/60] hyper_dmabuf: error handling when share_pages fails Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 37/60] hyper_dmabuf: implementation of query ioctl Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 38/60] hyper_dmabuf: preventing self exporting of dma_buf Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 39/60] hyper_dmabuf: correcting DMA-BUF clean-up order Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 40/60] hyper_dmabuf: do not use 'private' as field name Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 41/60] hyper_dmabuf: re-organize driver source Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 42/60] hyper_dmabuf: always generate a new random keys Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:29 ` [RFC PATCH 43/60] hyper_dmabuf: fixes on memory leaks in various places Dongwon Kim 2017-12-19 19:29 ` Dongwon Kim 2017-12-19 19:30 ` [RFC PATCH 44/60] hyper_dmabuf: proper handling of sgt_info->priv Dongwon Kim 2017-12-19 19:30 ` Dongwon Kim 2017-12-19 19:30 ` [RFC PATCH 45/60] hyper_dmabuf: adding poll/read for event generation Dongwon Kim 2017-12-19 19:30 ` Dongwon Kim 2017-12-19 19:30 ` [RFC PATCH 46/60] hyper_dmabuf: delay auto initialization of comm_env Dongwon Kim 2017-12-19 19:30 ` Dongwon Kim 2017-12-19 19:30 ` [RFC PATCH 47/60] hyper_dmabuf: fix issues with event-polling Dongwon Kim 2017-12-19 19:30 ` Dongwon Kim 2017-12-19 19:30 ` [RFC PATCH 48/60] hyper_dmabuf: add query items for buffer private info Dongwon Kim 2017-12-19 19:30 ` Dongwon Kim 2017-12-19 19:30 ` [RFC PATCH 49/60] hyper_dmabuf: general clean-up and fixes Dongwon Kim 2017-12-19 19:30 ` Dongwon Kim 2017-12-19 19:30 ` [RFC PATCH 50/60] hyper_dmabuf: fix styling err and warns caught by checkpatch.pl Dongwon Kim 2017-12-19 19:30 ` Dongwon Kim 2017-12-19 19:30 ` [RFC PATCH 51/60] hyper_dmabuf: missing mutex_unlock and move spinlock Dongwon Kim 2017-12-19 19:30 ` Dongwon Kim 2017-12-19 19:30 ` [RFC PATCH 52/60] hyper_dmabuf: remove prefix 'hyper_dmabuf' from static func and backend APIs Dongwon Kim 2017-12-19 19:30 ` Dongwon Kim 2017-12-19 19:30 ` [RFC PATCH 53/60] hyper_dmabuf: define fastpath_export for exporting existing buffer Dongwon Kim 2017-12-19 19:30 ` Dongwon Kim 2017-12-19 19:30 ` [RFC PATCH 54/60] hyper_dmabuf: 'backend_ops' reduced to 'bknd_ops' and 'ops' to 'bknd_ops' Dongwon Kim 2017-12-19 19:30 ` Dongwon Kim 2017-12-19 19:30 ` [RFC PATCH 55/60] hyper_dmabuf: fixed wrong send_req call Dongwon Kim 2017-12-19 19:30 ` Dongwon Kim 2017-12-19 19:30 ` [RFC PATCH 56/60] hyper_dmabuf: add initialization and cleanup to bknd_ops Dongwon Kim 2017-12-19 19:30 ` Dongwon Kim 2017-12-19 19:30 ` [RFC PATCH 57/60] hyper_dmabuf: change type of ref to shared pages to unsigned long Dongwon Kim 2017-12-19 19:30 ` Dongwon Kim 2017-12-19 19:30 ` [RFC PATCH 58/60] hyper_dmabuf: move device node out of /dev/xen/ Dongwon Kim 2017-12-19 19:30 ` Dongwon Kim 2017-12-19 19:30 ` [RFC PATCH 59/60] hyper_dmabuf: freeing hy_drv_priv when drv init fails (v2) Dongwon Kim 2017-12-19 19:30 ` Dongwon Kim 2017-12-19 19:30 ` [RFC PATCH 60/60] hyper_dmabuf: move hyper_dmabuf to under drivers/dma-buf/ Dongwon Kim 2017-12-19 19:30 ` Dongwon Kim 2017-12-19 23:27 ` [RFC PATCH 01/60] hyper_dmabuf: initial working version of hyper_dmabuf drv Dongwon Kim 2017-12-19 23:27 ` Dongwon Kim 2017-12-19 23:27 ` Dongwon Kim 2017-12-20 8:17 ` Juergen Gross 2017-12-20 8:17 ` [Xen-devel] " Juergen Gross 2018-01-10 23:21 ` Dongwon Kim 2018-01-10 23:21 ` [Xen-devel] " Dongwon Kim 2018-01-10 23:21 ` Dongwon Kim 2017-12-20 8:38 ` Oleksandr Andrushchenko 2017-12-20 8:38 ` [Xen-devel] " Oleksandr Andrushchenko 2018-01-10 23:14 ` Dongwon Kim 2018-01-10 23:14 ` [Xen-devel] " Dongwon Kim 2017-12-20 9:59 ` Daniel Vetter 2017-12-20 9:59 ` Daniel Vetter 2017-12-26 18:19 ` Matt Roper 2017-12-26 18:19 ` Matt Roper 2017-12-29 13:03 ` Tomeu Vizoso 2017-12-29 13:03 ` Tomeu Vizoso 2017-12-29 13:03 ` Tomeu Vizoso 2017-12-26 18:19 ` Matt Roper 2018-01-10 23:13 ` Dongwon Kim 2018-01-10 23:13 ` Dongwon Kim 2017-12-20 9:59 ` Daniel Vetter 2018-02-15 1:34 ` Dongwon Kim 2018-02-15 1:34 ` Dongwon Kim 2018-02-15 1:34 ` Dongwon Kim
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1513711816-2618-21-git-send-email-dongwon.kim@intel.com \ --to=dongwon.kim@intel.com \ --cc=dri-devel@lists.freedesktop.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mateuszx.potrola@intel.com \ --cc=michal1x.janiszewski@intel.com \ --cc=xen-devel@lists.xenproject.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.