* [PATCH v3 1/5] staging: media: atomisp: remove unused functions from pci/hmm/
2026-08-12 20:51 [PATCH v3 0/5] staging: media: atomisp: cleanup pci/hmm/ code Nikolay Kulikov
@ 2026-08-12 20:51 ` Nikolay Kulikov
2026-08-12 20:51 ` [PATCH v3 2/5] staging: media: atomisp: inline macros for checking the bo/bodev pointer Nikolay Kulikov
` (4 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Nikolay Kulikov @ 2026-08-12 20:51 UTC (permalink / raw)
To: Greg Kroah-Hartman, Hans de Goede, Mauro Carvalho Chehab,
Sakari Ailus, Andy Shevchenko, Andy Shevchenko
Cc: linux-media, linux-staging, linux-kernel, Nikolay Kulikov
These functions are declared and defined but are not called anywhere.
Signed-off-by: Nikolay Kulikov <nikolayof23@gmail.com>
---
.../staging/media/atomisp/include/hmm/hmm.h | 16 ---
.../media/atomisp/include/hmm/hmm_bo.h | 19 ----
drivers/staging/media/atomisp/pci/hmm/hmm.c | 41 --------
.../staging/media/atomisp/pci/hmm/hmm_bo.c | 97 -------------------
4 files changed, 173 deletions(-)
diff --git a/drivers/staging/media/atomisp/include/hmm/hmm.h b/drivers/staging/media/atomisp/include/hmm/hmm.h
index a7aef27f54de..6bda02b9ff85 100644
--- a/drivers/staging/media/atomisp/include/hmm/hmm.h
+++ b/drivers/staging/media/atomisp/include/hmm/hmm.h
@@ -32,12 +32,6 @@ void hmm_free(ia_css_ptr ptr);
int hmm_load(ia_css_ptr virt, void *data, unsigned int bytes);
int hmm_store(ia_css_ptr virt, const void *data, unsigned int bytes);
int hmm_set(ia_css_ptr virt, int c, unsigned int bytes);
-int hmm_flush(ia_css_ptr virt, unsigned int bytes);
-
-/*
- * get kernel memory physical address from ISP virtual address.
- */
-phys_addr_t hmm_virt_to_phys(ia_css_ptr virt);
/*
* map ISP memory starts with virt to kernel virtual address
@@ -55,16 +49,6 @@ void hmm_vunmap(ia_css_ptr virt);
*/
void hmm_flush_vmap(ia_css_ptr virt);
-/*
- * map ISP memory starts with virt to specific vma.
- *
- * used for mmap operation.
- *
- * virt must be the start address of ISP memory (return by hmm_alloc),
- * do not pass any other address.
- */
-int hmm_mmap(struct vm_area_struct *vma, ia_css_ptr virt);
-
extern struct hmm_bo_device bo_device;
#endif
diff --git a/drivers/staging/media/atomisp/include/hmm/hmm_bo.h b/drivers/staging/media/atomisp/include/hmm/hmm_bo.h
index e09ac29ac43d..ba3c582a0f89 100644
--- a/drivers/staging/media/atomisp/include/hmm/hmm_bo.h
+++ b/drivers/staging/media/atomisp/include/hmm/hmm_bo.h
@@ -205,7 +205,6 @@ int hmm_bo_page_allocated(struct hmm_buffer_object *bo);
*/
int hmm_bo_bind(struct hmm_buffer_object *bo);
void hmm_bo_unbind(struct hmm_buffer_object *bo);
-int hmm_bo_binded(struct hmm_buffer_object *bo);
/*
* vmap buffer object's pages to contiguous kernel virtual address.
@@ -224,17 +223,6 @@ void hmm_bo_flush_vmap(struct hmm_buffer_object *bo);
*/
void hmm_bo_vunmap(struct hmm_buffer_object *bo);
-/*
- * mmap the bo's physical pages to specific vma.
- *
- * vma's address space size must be the same as bo's size,
- * otherwise it will return -EINVAL.
- *
- * vma->vm_flags will be set to (VM_RESERVED | VM_IO).
- */
-int hmm_bo_mmap(struct vm_area_struct *vma,
- struct hmm_buffer_object *bo);
-
/*
* find the buffer object by its virtual address vaddr.
* return NULL if no such buffer object found.
@@ -251,11 +239,4 @@ struct hmm_buffer_object *hmm_bo_device_search_start(
struct hmm_buffer_object *hmm_bo_device_search_in_range(
struct hmm_bo_device *bdev, ia_css_ptr vaddr);
-/*
- * find the buffer object with kernel virtual address vaddr.
- * return NULL if no such buffer object found.
- */
-struct hmm_buffer_object *hmm_bo_device_search_vmap_start(
- struct hmm_bo_device *bdev, const void *vaddr);
-
#endif
diff --git a/drivers/staging/media/atomisp/pci/hmm/hmm.c b/drivers/staging/media/atomisp/pci/hmm/hmm.c
index f998b57f90c4..8130be4a30e3 100644
--- a/drivers/staging/media/atomisp/pci/hmm/hmm.c
+++ b/drivers/staging/media/atomisp/pci/hmm/hmm.c
@@ -262,12 +262,6 @@ int hmm_load(ia_css_ptr virt, void *data, unsigned int bytes)
return load_and_flush(virt, data, bytes);
}
-/* Flush hmm data from the data cache */
-int hmm_flush(ia_css_ptr virt, unsigned int bytes)
-{
- return load_and_flush(virt, NULL, bytes);
-}
-
/* Write function in ISP memory management */
int hmm_store(ia_css_ptr virt, const void *data, unsigned int bytes)
{
@@ -411,41 +405,6 @@ int hmm_set(ia_css_ptr virt, int c, unsigned int bytes)
return 0;
}
-/* Virtual address to physical address convert */
-phys_addr_t hmm_virt_to_phys(ia_css_ptr virt)
-{
- unsigned int idx, offset;
- struct hmm_buffer_object *bo;
-
- bo = hmm_bo_device_search_in_range(&bo_device, virt);
- if (!bo) {
- dev_err(atomisp_dev,
- "can not find buffer object contains address 0x%x\n",
- virt);
- return -1;
- }
-
- idx = (virt - bo->start) >> PAGE_SHIFT;
- offset = (virt - bo->start) - (idx << PAGE_SHIFT);
-
- return page_to_phys(bo->pages[idx]) + offset;
-}
-
-int hmm_mmap(struct vm_area_struct *vma, ia_css_ptr virt)
-{
- struct hmm_buffer_object *bo;
-
- bo = hmm_bo_device_search_start(&bo_device, virt);
- if (!bo) {
- dev_err(atomisp_dev,
- "can not find buffer object start with address 0x%x\n",
- virt);
- return -EINVAL;
- }
-
- return hmm_bo_mmap(vma, bo);
-}
-
/* Map ISP virtual address into IA virtual address */
void *hmm_vmap(ia_css_ptr virt, bool cached)
{
diff --git a/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c b/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
index 0a8f401a1ca1..837077f1d229 100644
--- a/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
+++ b/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
@@ -578,31 +578,6 @@ struct hmm_buffer_object *hmm_bo_device_search_in_range(
return bo;
}
-struct hmm_buffer_object *hmm_bo_device_search_vmap_start(
- struct hmm_bo_device *bdev, const void *vaddr)
-{
- struct list_head *pos;
- struct hmm_buffer_object *bo;
- unsigned long flags;
-
- check_bodev_null_return(bdev, NULL);
-
- spin_lock_irqsave(&bdev->list_lock, flags);
- list_for_each(pos, &bdev->entire_bo_list) {
- bo = list_to_hmm_bo(pos);
- /* pass bo which has no vm_node allocated */
- if ((bo->status & HMM_BO_MASK) == HMM_BO_FREE)
- continue;
- if (bo->vmap_addr == vaddr)
- goto found;
- }
- spin_unlock_irqrestore(&bdev->list_lock, flags);
- return NULL;
-found:
- spin_unlock_irqrestore(&bdev->list_lock, flags);
- return bo;
-}
-
static void free_pages_bulk_array(unsigned long nr_pages, struct page **page_array)
{
unsigned long i;
@@ -885,21 +860,6 @@ void hmm_bo_unbind(struct hmm_buffer_object *bo)
"buffer vm or page not allocated or not binded yet.\n");
}
-int hmm_bo_binded(struct hmm_buffer_object *bo)
-{
- int ret;
-
- check_bo_null_return(bo, 0);
-
- mutex_lock(&bo->mutex);
-
- ret = bo->status & HMM_BO_BINDED;
-
- mutex_unlock(&bo->mutex);
-
- return ret;
-}
-
void *hmm_bo_vmap(struct hmm_buffer_object *bo, bool cached)
{
check_bo_null_return(bo, NULL);
@@ -1023,60 +983,3 @@ static const struct vm_operations_struct hmm_bo_vm_ops = {
.open = hmm_bo_vm_open,
.close = hmm_bo_vm_close,
};
-
-/*
- * mmap the bo to user space.
- */
-int hmm_bo_mmap(struct vm_area_struct *vma, struct hmm_buffer_object *bo)
-{
- unsigned int start, end;
- unsigned int virt;
- unsigned int pgnr, i;
- unsigned int pfn;
-
- check_bo_null_return(bo, -EINVAL);
-
- check_bo_status_yes_goto(bo, HMM_BO_PAGE_ALLOCED, status_err);
-
- pgnr = bo->pgnr;
- start = vma->vm_start;
- end = vma->vm_end;
-
- /*
- * check vma's virtual address space size and buffer object's size.
- * must be the same.
- */
- if ((start + pgnr_to_size(pgnr)) != end) {
- dev_warn(atomisp_dev,
- "vma's address space size not equal to buffer object's size");
- return -EINVAL;
- }
-
- virt = vma->vm_start;
- for (i = 0; i < pgnr; i++) {
- pfn = page_to_pfn(bo->pages[i]);
- if (remap_pfn_range(vma, virt, pfn, PAGE_SIZE, PAGE_SHARED)) {
- dev_warn(atomisp_dev,
- "remap_pfn_range failed: virt = 0x%x, pfn = 0x%x, mapped_pgnr = %d\n",
- virt, pfn, 1);
- return -EINVAL;
- }
- virt += PAGE_SIZE;
- }
-
- vma->vm_private_data = bo;
-
- vma->vm_ops = &hmm_bo_vm_ops;
- vm_flags_set(vma, VM_IO | VM_DONTEXPAND | VM_DONTDUMP);
-
- /*
- * call hmm_bo_vm_open explicitly.
- */
- hmm_bo_vm_open(vma);
-
- return 0;
-
-status_err:
- dev_err(atomisp_dev, "buffer page not allocated yet.\n");
- return -EINVAL;
-}
--
2.55.0
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v3 2/5] staging: media: atomisp: inline macros for checking the bo/bodev pointer
2026-08-12 20:51 [PATCH v3 0/5] staging: media: atomisp: cleanup pci/hmm/ code Nikolay Kulikov
2026-08-12 20:51 ` [PATCH v3 1/5] staging: media: atomisp: remove unused functions from pci/hmm/ Nikolay Kulikov
@ 2026-08-12 20:51 ` Nikolay Kulikov
2026-08-12 20:51 ` [PATCH v3 3/5] staging: media: atomisp: inline the check_bo_status_*() macros Nikolay Kulikov
` (3 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Nikolay Kulikov @ 2026-08-12 20:51 UTC (permalink / raw)
To: Greg Kroah-Hartman, Hans de Goede, Mauro Carvalho Chehab,
Sakari Ailus, Andy Shevchenko, Andy Shevchenko
Cc: linux-media, linux-staging, linux-kernel, Nikolay Kulikov
These macros perform a pointer check. Replace it with direct conditional
expressions to simplify the code.
Signed-off-by: Nikolay Kulikov <nikolayof23@gmail.com>
---
.../media/atomisp/include/hmm/hmm_bo.h | 14 ---
.../media/atomisp/include/hmm/hmm_common.h | 6 -
.../staging/media/atomisp/pci/hmm/hmm_bo.c | 112 ++++++++++++++----
3 files changed, 88 insertions(+), 44 deletions(-)
diff --git a/drivers/staging/media/atomisp/include/hmm/hmm_bo.h b/drivers/staging/media/atomisp/include/hmm/hmm_bo.h
index ba3c582a0f89..e974ab5ca2fc 100644
--- a/drivers/staging/media/atomisp/include/hmm/hmm_bo.h
+++ b/drivers/staging/media/atomisp/include/hmm/hmm_bo.h
@@ -19,14 +19,6 @@
#include "hmm/hmm_common.h"
#include "ia_css_types.h"
-#define check_bodev_null_return(bdev, exp) \
- check_null_return(bdev, exp, \
- "NULL hmm_bo_device.\n")
-
-#define check_bodev_null_return_void(bdev) \
- check_null_return_void(bdev, \
- "NULL hmm_bo_device.\n")
-
#define check_bo_status_yes_goto(bo, _status, label) \
var_not_equal_goto((bo->status & (_status)), (_status), \
label, \
@@ -48,12 +40,6 @@
#define kref_to_hmm_bo(kref_ptr) \
list_entry((kref_ptr), struct hmm_buffer_object, kref)
-#define check_bo_null_return(bo, exp) \
- check_null_return(bo, exp, "NULL hmm buffer object.\n")
-
-#define check_bo_null_return_void(bo) \
- check_null_return_void(bo, "NULL hmm buffer object.\n")
-
#define ISP_VM_START 0x0
#define ISP_VM_SIZE (0x7FFFFFFF) /* 2G address space */
#define ISP_PTR_NULL NULL
diff --git a/drivers/staging/media/atomisp/include/hmm/hmm_common.h b/drivers/staging/media/atomisp/include/hmm/hmm_common.h
index b251e96cc19d..f215130e5e17 100644
--- a/drivers/staging/media/atomisp/include/hmm/hmm_common.h
+++ b/drivers/staging/media/atomisp/include/hmm/hmm_common.h
@@ -51,10 +51,4 @@
} \
} while (0)
-#define check_null_return(ptr, exp, fmt, arg ...) \
- var_equal_return(ptr, NULL, exp, fmt, ## arg)
-
-#define check_null_return_void(ptr, fmt, arg ...) \
- var_equal_return_void(ptr, NULL, fmt, ## arg)
-
#endif
diff --git a/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c b/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
index 837077f1d229..ecd920e49488 100644
--- a/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
+++ b/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
@@ -36,7 +36,10 @@
static int __bo_init(struct hmm_bo_device *bdev, struct hmm_buffer_object *bo,
unsigned int pgnr)
{
- check_bodev_null_return(bdev, -EINVAL);
+ if (!bdev) {
+ dev_err(atomisp_dev, "NULL hmm_bo_device.\n");
+ return -EINVAL;
+ }
/* prevent zero size buffer object */
if (pgnr == 0) {
dev_err(atomisp_dev, "0 size buffer is not allowed.\n");
@@ -324,7 +327,10 @@ int hmm_bo_device_init(struct hmm_bo_device *bdev,
unsigned long flags;
int ret;
- check_bodev_null_return(bdev, -EINVAL);
+ if (!bdev) {
+ dev_err(atomisp_dev, "NULL hmm_bo_device.\n");
+ return -EINVAL;
+ }
ret = isp_mmu_init(&bdev->mmu, mmu_driver);
if (ret) {
@@ -382,9 +388,14 @@ struct hmm_buffer_object *hmm_bo_alloc(struct hmm_bo_device *bdev,
unsigned int pgnr)
{
struct hmm_buffer_object *bo, *new_bo;
- struct rb_root *root = &bdev->free_rbtree;
+ struct rb_root *root;
+
+ if (!bdev) {
+ dev_err(atomisp_dev, "NULL hmm_bo_device.\n");
+ return NULL;
+ }
- check_bodev_null_return(bdev, NULL);
+ root = &bdev->free_rbtree;
var_equal_return(hmm_bo_device_inited(bdev), 0, NULL,
"hmm_bo_device not inited yet.\n");
@@ -493,7 +504,10 @@ void hmm_bo_device_exit(struct hmm_bo_device *bdev)
dev_dbg(atomisp_dev, "%s: entering!\n", __func__);
- check_bodev_null_return_void(bdev);
+ if (!bdev) {
+ dev_err(atomisp_dev, "NULL hmm_bo_device.\n");
+ return;
+ }
/*
* release all allocated bos even they a in use
@@ -526,14 +540,20 @@ void hmm_bo_device_exit(struct hmm_bo_device *bdev)
int hmm_bo_device_inited(struct hmm_bo_device *bdev)
{
- check_bodev_null_return(bdev, -EINVAL);
+ if (!bdev) {
+ dev_err(atomisp_dev, "NULL hmm_bo_device.\n");
+ return -EINVAL;
+ }
return bdev->flag == HMM_BO_DEVICE_INITED;
}
int hmm_bo_allocated(struct hmm_buffer_object *bo)
{
- check_bo_null_return(bo, 0);
+ if (!bo) {
+ dev_err(atomisp_dev, "NULL hmm buffer object.\n");
+ return 0;
+ }
return bo->status & HMM_BO_ALLOCED;
}
@@ -543,7 +563,10 @@ struct hmm_buffer_object *hmm_bo_device_search_start(
{
struct hmm_buffer_object *bo;
- check_bodev_null_return(bdev, NULL);
+ if (!bdev) {
+ dev_err(atomisp_dev, "NULL hmm_bo_device.\n");
+ return NULL;
+ }
mutex_lock(&bdev->rbtree_mutex);
bo = __bo_search_by_addr(&bdev->allocated_rbtree, vaddr);
@@ -563,7 +586,10 @@ struct hmm_buffer_object *hmm_bo_device_search_in_range(
{
struct hmm_buffer_object *bo;
- check_bodev_null_return(bdev, NULL);
+ if (!bdev) {
+ dev_err(atomisp_dev, "NULL hmm_bo_device.\n");
+ return NULL;
+ }
mutex_lock(&bdev->rbtree_mutex);
bo = __bo_search_by_addr_in_range(&bdev->allocated_rbtree, vaddr);
@@ -653,9 +679,12 @@ int hmm_bo_alloc_pages(struct hmm_buffer_object *bo,
enum hmm_bo_type type,
void *vmalloc_addr)
{
- int ret = -EINVAL;
+ int ret;
- check_bo_null_return(bo, -EINVAL);
+ if (!bo) {
+ dev_err(atomisp_dev, "NULL hmm buffer object.\n");
+ return -EINVAL;
+ }
mutex_lock(&bo->mutex);
check_bo_status_no_goto(bo, HMM_BO_PAGE_ALLOCED, status_err);
@@ -702,7 +731,10 @@ int hmm_bo_alloc_pages(struct hmm_buffer_object *bo,
*/
void hmm_bo_free_pages(struct hmm_buffer_object *bo)
{
- check_bo_null_return_void(bo);
+ if (!bo) {
+ dev_err(atomisp_dev, "NULL hmm buffer object.\n");
+ return;
+ }
mutex_lock(&bo->mutex);
@@ -731,7 +763,10 @@ void hmm_bo_free_pages(struct hmm_buffer_object *bo)
int hmm_bo_page_allocated(struct hmm_buffer_object *bo)
{
- check_bo_null_return(bo, 0);
+ if (!bo) {
+ dev_err(atomisp_dev, "NULL hmm buffer object.\n");
+ return 0;
+ }
return bo->status & HMM_BO_PAGE_ALLOCED;
}
@@ -746,7 +781,10 @@ int hmm_bo_bind(struct hmm_buffer_object *bo)
struct hmm_bo_device *bdev;
unsigned int i;
- check_bo_null_return(bo, -EINVAL);
+ if (!bo) {
+ dev_err(atomisp_dev, "NULL hmm buffer object.\n");
+ return -EINVAL;
+ }
mutex_lock(&bo->mutex);
@@ -823,7 +861,10 @@ void hmm_bo_unbind(struct hmm_buffer_object *bo)
struct hmm_bo_device *bdev;
unsigned int i;
- check_bo_null_return_void(bo);
+ if (!bo) {
+ dev_err(atomisp_dev, "NULL hmm buffer object.\n");
+ return;
+ }
mutex_lock(&bo->mutex);
@@ -862,7 +903,10 @@ void hmm_bo_unbind(struct hmm_buffer_object *bo)
void *hmm_bo_vmap(struct hmm_buffer_object *bo, bool cached)
{
- check_bo_null_return(bo, NULL);
+ if (!bo) {
+ dev_err(atomisp_dev, "NULL hmm buffer object.\n");
+ return NULL;
+ }
mutex_lock(&bo->mutex);
if (((bo->status & HMM_BO_VMAPED) && !cached) ||
@@ -893,7 +937,10 @@ void *hmm_bo_vmap(struct hmm_buffer_object *bo, bool cached)
void hmm_bo_flush_vmap(struct hmm_buffer_object *bo)
{
- check_bo_null_return_void(bo);
+ if (!bo) {
+ dev_err(atomisp_dev, "NULL hmm buffer object.\n");
+ return;
+ }
mutex_lock(&bo->mutex);
if (!(bo->status & HMM_BO_VMAPED_CACHED) || !bo->vmap_addr) {
@@ -907,7 +954,10 @@ void hmm_bo_flush_vmap(struct hmm_buffer_object *bo)
void hmm_bo_vunmap(struct hmm_buffer_object *bo)
{
- check_bo_null_return_void(bo);
+ if (!bo) {
+ dev_err(atomisp_dev, "NULL hmm buffer object.\n");
+ return;
+ }
mutex_lock(&bo->mutex);
if (bo->status & HMM_BO_VMAPED || bo->status & HMM_BO_VMAPED_CACHED) {
@@ -922,7 +972,10 @@ void hmm_bo_vunmap(struct hmm_buffer_object *bo)
void hmm_bo_ref(struct hmm_buffer_object *bo)
{
- check_bo_null_return_void(bo);
+ if (!bo) {
+ dev_err(atomisp_dev, "NULL hmm buffer object.\n");
+ return;
+ }
kref_get(&bo->kref);
}
@@ -937,16 +990,23 @@ static void kref_hmm_bo_release(struct kref *kref)
void hmm_bo_unref(struct hmm_buffer_object *bo)
{
- check_bo_null_return_void(bo);
+ if (!bo) {
+ dev_err(atomisp_dev, "NULL hmm buffer object.\n");
+ return;
+ }
kref_put(&bo->kref, kref_hmm_bo_release);
}
static void hmm_bo_vm_open(struct vm_area_struct *vma)
{
- struct hmm_buffer_object *bo = vma->vm_private_data;
+ struct hmm_buffer_object *bo;
- check_bo_null_return_void(bo);
+ bo = vma->vm_private_data;
+ if (!bo) {
+ dev_err(atomisp_dev, "NULL hmm buffer object.\n");
+ return;
+ }
hmm_bo_ref(bo);
@@ -961,9 +1021,13 @@ static void hmm_bo_vm_open(struct vm_area_struct *vma)
static void hmm_bo_vm_close(struct vm_area_struct *vma)
{
- struct hmm_buffer_object *bo = vma->vm_private_data;
+ struct hmm_buffer_object *bo;
- check_bo_null_return_void(bo);
+ bo = vma->vm_private_data;
+ if (!bo) {
+ dev_err(atomisp_dev, "NULL hmm buffer object.\n");
+ return;
+ }
hmm_bo_unref(bo);
--
2.55.0
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v3 3/5] staging: media: atomisp: inline the check_bo_status_*() macros
2026-08-12 20:51 [PATCH v3 0/5] staging: media: atomisp: cleanup pci/hmm/ code Nikolay Kulikov
2026-08-12 20:51 ` [PATCH v3 1/5] staging: media: atomisp: remove unused functions from pci/hmm/ Nikolay Kulikov
2026-08-12 20:51 ` [PATCH v3 2/5] staging: media: atomisp: inline macros for checking the bo/bodev pointer Nikolay Kulikov
@ 2026-08-12 20:51 ` Nikolay Kulikov
2026-08-12 20:51 ` [PATCH v3 4/5] staging: media: atomisp: inline the var_equal_return*() macros Nikolay Kulikov
` (2 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Nikolay Kulikov @ 2026-08-12 20:51 UTC (permalink / raw)
To: Greg Kroah-Hartman, Hans de Goede, Mauro Carvalho Chehab,
Sakari Ailus, Andy Shevchenko, Andy Shevchenko
Cc: linux-media, linux-staging, linux-kernel, Nikolay Kulikov
These macros check a bit in the bo->status field. Replace them with
conditional expressions to make the code clearer.
Signed-off-by: Nikolay Kulikov <nikolayof23@gmail.com>
---
.../media/atomisp/include/hmm/hmm_bo.h | 12 --------
.../media/atomisp/include/hmm/hmm_common.h | 18 -----------
.../staging/media/atomisp/pci/hmm/hmm_bo.c | 30 ++++++++++++-------
3 files changed, 20 insertions(+), 40 deletions(-)
diff --git a/drivers/staging/media/atomisp/include/hmm/hmm_bo.h b/drivers/staging/media/atomisp/include/hmm/hmm_bo.h
index e974ab5ca2fc..69cf490bd88c 100644
--- a/drivers/staging/media/atomisp/include/hmm/hmm_bo.h
+++ b/drivers/staging/media/atomisp/include/hmm/hmm_bo.h
@@ -19,18 +19,6 @@
#include "hmm/hmm_common.h"
#include "ia_css_types.h"
-#define check_bo_status_yes_goto(bo, _status, label) \
- var_not_equal_goto((bo->status & (_status)), (_status), \
- label, \
- "HMM buffer status not contain %s.\n", \
- #_status)
-
-#define check_bo_status_no_goto(bo, _status, label) \
- var_equal_goto((bo->status & (_status)), (_status), \
- label, \
- "HMM buffer status contains %s.\n", \
- #_status)
-
#define rbtree_node_to_hmm_bo(root_node) \
container_of((root_node), struct hmm_buffer_object, node)
diff --git a/drivers/staging/media/atomisp/include/hmm/hmm_common.h b/drivers/staging/media/atomisp/include/hmm/hmm_common.h
index f215130e5e17..c406fe8b1345 100644
--- a/drivers/staging/media/atomisp/include/hmm/hmm_common.h
+++ b/drivers/staging/media/atomisp/include/hmm/hmm_common.h
@@ -33,22 +33,4 @@
} \
} while (0)
-#define var_equal_goto(var1, var2, label, fmt, arg ...) \
- do { \
- if ((var1) == (var2)) { \
- dev_err(atomisp_dev, \
- fmt, ## arg); \
- goto label;\
- } \
- } while (0)
-
-#define var_not_equal_goto(var1, var2, label, fmt, arg ...) \
- do { \
- if ((var1) != (var2)) { \
- dev_err(atomisp_dev, \
- fmt, ## arg); \
- goto label;\
- } \
- } while (0)
-
#endif
diff --git a/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c b/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
index ecd920e49488..dbda4394a239 100644
--- a/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
+++ b/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
@@ -687,7 +687,10 @@ int hmm_bo_alloc_pages(struct hmm_buffer_object *bo,
}
mutex_lock(&bo->mutex);
- check_bo_status_no_goto(bo, HMM_BO_PAGE_ALLOCED, status_err);
+ if (bo->status & HMM_BO_PAGE_ALLOCED) {
+ dev_err(atomisp_dev, "HMM buffer status contains HMM_BO_PAGE_ALLOCED.\n");
+ goto status_err;
+ }
bo->pages = kzalloc_objs(struct page *, bo->pgnr);
if (unlikely(!bo->pages)) {
@@ -738,7 +741,10 @@ void hmm_bo_free_pages(struct hmm_buffer_object *bo)
mutex_lock(&bo->mutex);
- check_bo_status_yes_goto(bo, HMM_BO_PAGE_ALLOCED, status_err2);
+ if (!(bo->status & HMM_BO_PAGE_ALLOCED)) {
+ dev_err(atomisp_dev, "HMM buffer status not contain HMM_BO_PAGE_ALLOCED.\n");
+ goto status_err2;
+ }
/* clear the flag anyway. */
bo->status &= (~HMM_BO_PAGE_ALLOCED);
@@ -788,11 +794,15 @@ int hmm_bo_bind(struct hmm_buffer_object *bo)
mutex_lock(&bo->mutex);
- check_bo_status_yes_goto(bo,
- HMM_BO_PAGE_ALLOCED | HMM_BO_ALLOCED,
- status_err1);
+ if (!(bo->status & (HMM_BO_PAGE_ALLOCED | HMM_BO_ALLOCED))) {
+ dev_err(atomisp_dev, "HMM buffer status not contain HMM_BO_PAGE_ALLOCED | HMM_BO_ALLOCED.\n");
+ goto status_err1;
+ }
- check_bo_status_no_goto(bo, HMM_BO_BINDED, status_err2);
+ if (bo->status & HMM_BO_BINDED) {
+ dev_err(atomisp_dev, "HMM buffer status contains HMM_BO_BINDED.\n");
+ goto status_err2;
+ }
bdev = bo->bdev;
@@ -868,10 +878,10 @@ void hmm_bo_unbind(struct hmm_buffer_object *bo)
mutex_lock(&bo->mutex);
- check_bo_status_yes_goto(bo,
- HMM_BO_PAGE_ALLOCED |
- HMM_BO_ALLOCED |
- HMM_BO_BINDED, status_err);
+ if (!(bo->status & (HMM_BO_PAGE_ALLOCED | HMM_BO_ALLOCED | HMM_BO_BINDED))) {
+ dev_err(atomisp_dev, "HMM buffer status not contain HMM_BO_PAGE_ALLOCED | HMM_BO_ALLOCED | HMM_BO_BINDED.\n");
+ goto status_err;
+ }
bdev = bo->bdev;
--
2.55.0
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v3 4/5] staging: media: atomisp: inline the var_equal_return*() macros
2026-08-12 20:51 [PATCH v3 0/5] staging: media: atomisp: cleanup pci/hmm/ code Nikolay Kulikov
` (2 preceding siblings ...)
2026-08-12 20:51 ` [PATCH v3 3/5] staging: media: atomisp: inline the check_bo_status_*() macros Nikolay Kulikov
@ 2026-08-12 20:51 ` Nikolay Kulikov
2026-08-12 20:51 ` [PATCH v3 5/5] staging: media: atomisp: remove hmm/hmm_common.h file Nikolay Kulikov
2026-08-13 9:10 ` [PATCH v3 0/5] staging: media: atomisp: cleanup pci/hmm/ code Andy Shevchenko
5 siblings, 0 replies; 8+ messages in thread
From: Nikolay Kulikov @ 2026-08-12 20:51 UTC (permalink / raw)
To: Greg Kroah-Hartman, Hans de Goede, Mauro Carvalho Chehab,
Sakari Ailus, Andy Shevchenko, Andy Shevchenko
Cc: linux-media, linux-staging, linux-kernel, Nikolay Kulikov
These macros check the passed variables for equality, hiding the 'if'
and 'return' statements; replace them with a standard conditional to
simplify the code.
Signed-off-by: Nikolay Kulikov <nikolayof23@gmail.com>
---
.../media/atomisp/include/hmm/hmm_common.h | 20 -------------------
.../staging/media/atomisp/pci/hmm/hmm_bo.c | 6 ++++--
2 files changed, 4 insertions(+), 22 deletions(-)
diff --git a/drivers/staging/media/atomisp/include/hmm/hmm_common.h b/drivers/staging/media/atomisp/include/hmm/hmm_common.h
index c406fe8b1345..029620347302 100644
--- a/drivers/staging/media/atomisp/include/hmm/hmm_common.h
+++ b/drivers/staging/media/atomisp/include/hmm/hmm_common.h
@@ -12,25 +12,5 @@
#define HMM_BO_NAME "HMM"
-/*
- * some common use micros
- */
-#define var_equal_return(var1, var2, exp, fmt, arg ...) \
- do { \
- if ((var1) == (var2)) { \
- dev_err(atomisp_dev, \
- fmt, ## arg); \
- return exp;\
- } \
- } while (0)
-
-#define var_equal_return_void(var1, var2, fmt, arg ...) \
- do { \
- if ((var1) == (var2)) { \
- dev_err(atomisp_dev, \
- fmt, ## arg); \
- return;\
- } \
- } while (0)
#endif
diff --git a/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c b/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
index dbda4394a239..89e56ce07444 100644
--- a/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
+++ b/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
@@ -396,8 +396,10 @@ struct hmm_buffer_object *hmm_bo_alloc(struct hmm_bo_device *bdev,
}
root = &bdev->free_rbtree;
- var_equal_return(hmm_bo_device_inited(bdev), 0, NULL,
- "hmm_bo_device not inited yet.\n");
+ if (!hmm_bo_device_inited(bdev)) {
+ dev_err(atomisp_dev, "hmm_bo_device not inited yet.\n");
+ return NULL;
+ }
if (pgnr == 0) {
dev_err(atomisp_dev, "0 size buffer is not allowed.\n");
--
2.55.0
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v3 5/5] staging: media: atomisp: remove hmm/hmm_common.h file
2026-08-12 20:51 [PATCH v3 0/5] staging: media: atomisp: cleanup pci/hmm/ code Nikolay Kulikov
` (3 preceding siblings ...)
2026-08-12 20:51 ` [PATCH v3 4/5] staging: media: atomisp: inline the var_equal_return*() macros Nikolay Kulikov
@ 2026-08-12 20:51 ` Nikolay Kulikov
2026-08-13 9:10 ` [PATCH v3 0/5] staging: media: atomisp: cleanup pci/hmm/ code Andy Shevchenko
5 siblings, 0 replies; 8+ messages in thread
From: Nikolay Kulikov @ 2026-08-12 20:51 UTC (permalink / raw)
To: Greg Kroah-Hartman, Hans de Goede, Mauro Carvalho Chehab,
Sakari Ailus, Andy Shevchenko, Andy Shevchenko
Cc: linux-media, linux-staging, linux-kernel, Nikolay Kulikov
Now this file contains nothing, and we can remove it and all the
"#include" directives.
Signed-off-by: Nikolay Kulikov <nikolayof23@gmail.com>
---
drivers/staging/media/atomisp/include/hmm/hmm.h | 1 -
.../staging/media/atomisp/include/hmm/hmm_bo.h | 1 -
.../media/atomisp/include/hmm/hmm_common.h | 16 ----------------
drivers/staging/media/atomisp/pci/hmm/hmm_bo.c | 1 -
4 files changed, 19 deletions(-)
delete mode 100644 drivers/staging/media/atomisp/include/hmm/hmm_common.h
diff --git a/drivers/staging/media/atomisp/include/hmm/hmm.h b/drivers/staging/media/atomisp/include/hmm/hmm.h
index 6bda02b9ff85..be92a9c9046f 100644
--- a/drivers/staging/media/atomisp/include/hmm/hmm.h
+++ b/drivers/staging/media/atomisp/include/hmm/hmm.h
@@ -15,7 +15,6 @@
#include <linux/slab.h>
#include <linux/mm.h>
-#include "hmm_common.h"
#include "hmm/hmm_bo.h"
#include "ia_css_types.h"
diff --git a/drivers/staging/media/atomisp/include/hmm/hmm_bo.h b/drivers/staging/media/atomisp/include/hmm/hmm_bo.h
index 69cf490bd88c..2a19e3b2c1f9 100644
--- a/drivers/staging/media/atomisp/include/hmm/hmm_bo.h
+++ b/drivers/staging/media/atomisp/include/hmm/hmm_bo.h
@@ -16,7 +16,6 @@
#include <linux/spinlock.h>
#include <linux/mutex.h>
#include "mmu/isp_mmu.h"
-#include "hmm/hmm_common.h"
#include "ia_css_types.h"
#define rbtree_node_to_hmm_bo(root_node) \
diff --git a/drivers/staging/media/atomisp/include/hmm/hmm_common.h b/drivers/staging/media/atomisp/include/hmm/hmm_common.h
deleted file mode 100644
index 029620347302..000000000000
--- a/drivers/staging/media/atomisp/include/hmm/hmm_common.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Support for Medifield PNW Camera Imaging ISP subsystem.
- *
- * Copyright (c) 2010 Intel Corporation. All Rights Reserved.
- *
- * Copyright (c) 2010 Silicon Hive www.siliconhive.com.
- */
-
-#ifndef __HMM_BO_COMMON_H__
-#define __HMM_BO_COMMON_H__
-
-#define HMM_BO_NAME "HMM"
-
-
-#endif
diff --git a/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c b/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
index 89e56ce07444..ce0c8b2717a4 100644
--- a/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
+++ b/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
@@ -30,7 +30,6 @@
#include <asm/set_memory.h>
#include "atomisp_internal.h"
-#include "hmm/hmm_common.h"
#include "hmm/hmm_bo.h"
static int __bo_init(struct hmm_bo_device *bdev, struct hmm_buffer_object *bo,
--
2.55.0
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH v3 0/5] staging: media: atomisp: cleanup pci/hmm/ code
2026-08-12 20:51 [PATCH v3 0/5] staging: media: atomisp: cleanup pci/hmm/ code Nikolay Kulikov
` (4 preceding siblings ...)
2026-08-12 20:51 ` [PATCH v3 5/5] staging: media: atomisp: remove hmm/hmm_common.h file Nikolay Kulikov
@ 2026-08-13 9:10 ` Andy Shevchenko
2026-08-13 9:12 ` Andy Shevchenko
5 siblings, 1 reply; 8+ messages in thread
From: Andy Shevchenko @ 2026-08-13 9:10 UTC (permalink / raw)
To: Nikolay Kulikov
Cc: Greg Kroah-Hartman, Hans de Goede, Mauro Carvalho Chehab,
Sakari Ailus, Andy Shevchenko, linux-media, linux-staging,
linux-kernel
On Wed, Aug 12, 2026 at 11:51:33PM +0300, Nikolay Kulikov wrote:
> This series removes unused functions and replaces obscure
> variable-checking macros with clear conditional statements.
I believe I gave tags to some patches in v2. I don't see either.
What's going on?
> Changes in v3:
> - Split the last patch into two (inlining macros and removing
> the file).
> - Replace variable initialization with assignment, followed
> immediately by a check.
> Changes in v2:
> - Squashed the function removals in pci/hmm/hmm.c and
> pci/hmm/hmm_bo.c into a single commit.
> - Add commits to cleanup macros from include/hmm/hmm_common.h,
> as suggested by Andy Shevchenko.
Also two process hints:
- add --base when prepare patches
- add links (URLs to lore.kernel.org) for the previous versions.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH v3 0/5] staging: media: atomisp: cleanup pci/hmm/ code
2026-08-13 9:10 ` [PATCH v3 0/5] staging: media: atomisp: cleanup pci/hmm/ code Andy Shevchenko
@ 2026-08-13 9:12 ` Andy Shevchenko
0 siblings, 0 replies; 8+ messages in thread
From: Andy Shevchenko @ 2026-08-13 9:12 UTC (permalink / raw)
To: Nikolay Kulikov
Cc: Greg Kroah-Hartman, Hans de Goede, Mauro Carvalho Chehab,
Sakari Ailus, Andy Shevchenko, linux-media, linux-staging,
linux-kernel
On Thu, Aug 13, 2026 at 12:11:04PM +0300, Andy Shevchenko wrote:
> On Wed, Aug 12, 2026 at 11:51:33PM +0300, Nikolay Kulikov wrote:
> > This series removes unused functions and replaces obscure
> > variable-checking macros with clear conditional statements.
>
> I believe I gave tags to some patches in v2. I don't see either.
> What's going on?
For _this_ time, please reply yourself to the patches I already tagged with my
Rb tags placed on a dedicated line.
> > Changes in v3:
> > - Split the last patch into two (inlining macros and removing
> > the file).
> > - Replace variable initialization with assignment, followed
> > immediately by a check.
> > Changes in v2:
> > - Squashed the function removals in pci/hmm/hmm.c and
> > pci/hmm/hmm_bo.c into a single commit.
> > - Add commits to cleanup macros from include/hmm/hmm_common.h,
> > as suggested by Andy Shevchenko.
>
> Also two process hints:
> - add --base when prepare patches
> - add links (URLs to lore.kernel.org) for the previous versions.
Same here, just reply to your cover letter with these URLs, and for this time
just refer what the base was in a free form.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 8+ messages in thread