All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 0/3]
@ 2020-06-24 13:43 Kaaira Gupta
  2020-06-24 13:43 ` [PATCH v5 1/3] media: tpg: change char argument to const char Kaaira Gupta
                   ` (2 more replies)
  0 siblings, 3 replies; 16+ messages in thread
From: Kaaira Gupta @ 2020-06-24 13:43 UTC (permalink / raw)
  To: Helen Koike, Shuah Khan, Mauro Carvalho Chehab, linux-media,
	linux-kernel, Kieran Bingham, hverkuil
  Cc: Kaaira Gupta

Changes since v4:
	- Add another patch which changes char argument to const char
	in function tpg_gen_text()
	- Return const char * from function tpg_g_color_order() in patch
	  2
	In 3rd patch:
	- Check font in probe() instead of s_stream()
	- Use dev_err instead of pr_err
	- Fix errors in commit message.
	- Base VIMC_CID_SHOW_INFO on VIVID_CID_OSD_TEXT_MODE

Changes since v3:
        In 1st patch:
        -Improved formatting of returned string.

        In 2nd patch:
         - Add CID prefix in control name and change it to a more
           generic name.
         - Rename bool variable to a generic name.
         - Disable text rendering instead of stopping stream if no
           font found.
         - Display more info like VIVID in VIMC.

Changes since v2:
        In 1st patch:
        - Create a 'define' to prevent repetition of the common color
          sequence string.
        - Use 'fallthrough' on case statement to prevent repetition of
          code.

Changes since v1:
        - Divided the patch into two patches.
        - Returned NULL for patterns whose color order cannot be
          defined. (Reported-by: kernel test robot <lkp@intel.com>)
        - Made separate switch cases for separate test patterns
         (Reported-by: kernel test robot <lkp@intel.com>)
        - Renamed variables from camelcase to use '_'
        - prefixed 'media' to the patches.

Kaaira Gupta (3):
  media: tpg: change char argument to const char
  media: tpg: Add function to return colors' order of test image
  media: vimc: Add a control to display info on test image

 drivers/media/common/v4l2-tpg/v4l2-tpg-core.c | 39 ++++++++++---
 drivers/media/test-drivers/vimc/Kconfig       |  2 +
 drivers/media/test-drivers/vimc/vimc-common.h |  1 +
 drivers/media/test-drivers/vimc/vimc-core.c   | 10 ++++
 drivers/media/test-drivers/vimc/vimc-sensor.c | 57 +++++++++++++++++++
 include/media/tpg/v4l2-tpg.h                  |  3 +-
 6 files changed, 104 insertions(+), 8 deletions(-)

-- 
2.17.1


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH v5 1/3] media: tpg: change char argument to const char
  2020-06-24 13:43 [PATCH v5 0/3] Kaaira Gupta
@ 2020-06-24 13:43 ` Kaaira Gupta
  2020-06-24 13:43 ` [PATCH v5 2/3] media: tpg: Add function to return colors' order of test image Kaaira Gupta
  2020-06-24 13:43 ` [PATCH v5 3/3] media: vimc: Add a control to display info on " Kaaira Gupta
  2 siblings, 0 replies; 16+ messages in thread
From: Kaaira Gupta @ 2020-06-24 13:43 UTC (permalink / raw)
  To: Helen Koike, Shuah Khan, Mauro Carvalho Chehab, linux-media,
	linux-kernel, Kieran Bingham, hverkuil
  Cc: Kaaira Gupta

Change the argument of type char * to const char * for function
tpg_gen_text().

Signed-off-by: Kaaira Gupta <kgupta@es.iitr.ac.in>
---
 drivers/media/common/v4l2-tpg/v4l2-tpg-core.c | 10 +++++-----
 include/media/tpg/v4l2-tpg.h                  |  2 +-
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c b/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c
index 50f1e0b28b25..dde22a4cbd6c 100644
--- a/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c
+++ b/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c
@@ -1927,34 +1927,34 @@ typedef struct { u16 __; u8 _; } __packed x24;
 
 static noinline void tpg_print_str_2(const struct tpg_data *tpg, u8 *basep[TPG_MAX_PLANES][2],
 			unsigned p, unsigned first, unsigned div, unsigned step,
-			int y, int x, char *text, unsigned len)
+			int y, int x, const char *text, unsigned len)
 {
 	PRINTSTR(u8);
 }
 
 static noinline void tpg_print_str_4(const struct tpg_data *tpg, u8 *basep[TPG_MAX_PLANES][2],
 			unsigned p, unsigned first, unsigned div, unsigned step,
-			int y, int x, char *text, unsigned len)
+			int y, int x, const char *text, unsigned len)
 {
 	PRINTSTR(u16);
 }
 
 static noinline void tpg_print_str_6(const struct tpg_data *tpg, u8 *basep[TPG_MAX_PLANES][2],
 			unsigned p, unsigned first, unsigned div, unsigned step,
-			int y, int x, char *text, unsigned len)
+			int y, int x, const char *text, unsigned len)
 {
 	PRINTSTR(x24);
 }
 
 static noinline void tpg_print_str_8(const struct tpg_data *tpg, u8 *basep[TPG_MAX_PLANES][2],
 			unsigned p, unsigned first, unsigned div, unsigned step,
-			int y, int x, char *text, unsigned len)
+			int y, int x, const char *text, unsigned len)
 {
 	PRINTSTR(u32);
 }
 
 void tpg_gen_text(const struct tpg_data *tpg, u8 *basep[TPG_MAX_PLANES][2],
-		  int y, int x, char *text)
+		  int y, int x, const char *text)
 {
 	unsigned step = V4L2_FIELD_HAS_T_OR_B(tpg->field) ? 2 : 1;
 	unsigned div = step;
diff --git a/include/media/tpg/v4l2-tpg.h b/include/media/tpg/v4l2-tpg.h
index eb191e85d363..9749ed409856 100644
--- a/include/media/tpg/v4l2-tpg.h
+++ b/include/media/tpg/v4l2-tpg.h
@@ -241,7 +241,7 @@ void tpg_log_status(struct tpg_data *tpg);
 
 void tpg_set_font(const u8 *f);
 void tpg_gen_text(const struct tpg_data *tpg,
-		u8 *basep[TPG_MAX_PLANES][2], int y, int x, char *text);
+		u8 *basep[TPG_MAX_PLANES][2], int y, int x, const char *text);
 void tpg_calc_text_basep(struct tpg_data *tpg,
 		u8 *basep[TPG_MAX_PLANES][2], unsigned p, u8 *vbuf);
 unsigned tpg_g_interleaved_plane(const struct tpg_data *tpg, unsigned buf_line);
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH v5 2/3] media: tpg: Add function to return colors' order of test image
  2020-06-24 13:43 [PATCH v5 0/3] Kaaira Gupta
  2020-06-24 13:43 ` [PATCH v5 1/3] media: tpg: change char argument to const char Kaaira Gupta
@ 2020-06-24 13:43 ` Kaaira Gupta
  2020-06-24 13:47   ` Hans Verkuil
  2020-06-24 13:43 ` [PATCH v5 3/3] media: vimc: Add a control to display info on " Kaaira Gupta
  2 siblings, 1 reply; 16+ messages in thread
From: Kaaira Gupta @ 2020-06-24 13:43 UTC (permalink / raw)
  To: Helen Koike, Shuah Khan, Mauro Carvalho Chehab, linux-media,
	linux-kernel, Kieran Bingham, hverkuil
  Cc: Kaaira Gupta

Currently there is no method to know the correct order of the colors for
a test image generated by tpg. Write a function that returns a string of
colors' order given a tpg. It returns a NULL pointer in case of test
patterns which do not have a well defined colors' order. Hence add a
NULL check for text in tpg_gen_text().

Signed-off-by: Kaaira Gupta <kgupta@es.iitr.ac.in>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
---
 drivers/media/common/v4l2-tpg/v4l2-tpg-core.c | 29 +++++++++++++++++--
 include/media/tpg/v4l2-tpg.h                  |  1 +
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c b/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c
index dde22a4cbd6c..a052b656fa6a 100644
--- a/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c
+++ b/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c
@@ -1959,12 +1959,14 @@ void tpg_gen_text(const struct tpg_data *tpg, u8 *basep[TPG_MAX_PLANES][2],
 	unsigned step = V4L2_FIELD_HAS_T_OR_B(tpg->field) ? 2 : 1;
 	unsigned div = step;
 	unsigned first = 0;
-	unsigned len = strlen(text);
+	unsigned len;
 	unsigned p;
 
-	if (font8x16 == NULL || basep == NULL)
+	if (font8x16 == NULL || basep == NULL || text == NULL)
 		return;
 
+	len = strlen(text);
+
 	/* Checks if it is possible to show string */
 	if (y + 16 >= tpg->compose.height || x + 8 >= tpg->compose.width)
 		return;
@@ -2006,6 +2008,29 @@ void tpg_gen_text(const struct tpg_data *tpg, u8 *basep[TPG_MAX_PLANES][2],
 }
 EXPORT_SYMBOL_GPL(tpg_gen_text);
 
+const char *tpg_g_color_order(const struct tpg_data *tpg)
+{
+	switch (tpg->pattern) {
+	case TPG_PAT_75_COLORBAR:
+	case TPG_PAT_100_COLORBAR:
+	case TPG_PAT_CSC_COLORBAR:
+	case TPG_PAT_100_HCOLORBAR:
+		return "white, yellow, cyan, green, magenta, red, blue, black";
+	case TPG_PAT_BLACK:
+		return "Black";
+	case TPG_PAT_WHITE:
+		return "White";
+	case TPG_PAT_RED:
+		return "Red";
+	case TPG_PAT_GREEN:
+		return "Green";
+	case TPG_PAT_BLUE:
+		return "Blue";
+	default:
+		return NULL;
+	}
+}
+
 void tpg_update_mv_step(struct tpg_data *tpg)
 {
 	int factor = tpg->mv_hor_mode > TPG_MOVE_NONE ? -1 : 1;
diff --git a/include/media/tpg/v4l2-tpg.h b/include/media/tpg/v4l2-tpg.h
index 9749ed409856..0b0ddb87380e 100644
--- a/include/media/tpg/v4l2-tpg.h
+++ b/include/media/tpg/v4l2-tpg.h
@@ -252,6 +252,7 @@ void tpg_fillbuffer(struct tpg_data *tpg, v4l2_std_id std,
 bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc);
 void tpg_s_crop_compose(struct tpg_data *tpg, const struct v4l2_rect *crop,
 		const struct v4l2_rect *compose);
+const char *tpg_g_color_order(const struct tpg_data *tpg);
 
 static inline void tpg_s_pattern(struct tpg_data *tpg, enum tpg_pattern pattern)
 {
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [PATCH v5 3/3] media: vimc: Add a control to display info on test image
  2020-06-24 13:43 [PATCH v5 0/3] Kaaira Gupta
  2020-06-24 13:43 ` [PATCH v5 1/3] media: tpg: change char argument to const char Kaaira Gupta
  2020-06-24 13:43 ` [PATCH v5 2/3] media: tpg: Add function to return colors' order of test image Kaaira Gupta
@ 2020-06-24 13:43 ` Kaaira Gupta
  2020-06-24 13:51   ` Hans Verkuil
                     ` (3 more replies)
  2 siblings, 4 replies; 16+ messages in thread
From: Kaaira Gupta @ 2020-06-24 13:43 UTC (permalink / raw)
  To: Helen Koike, Shuah Khan, Mauro Carvalho Chehab, linux-media,
	linux-kernel, Kieran Bingham, hverkuil
  Cc: Kaaira Gupta

Add a control in VIMC to display information such as the correct order of
colors for a given test pattern, brightness, hue, saturation, contrast,
width and height at sensor over test image.

Signed-off-by: Kaaira Gupta <kgupta@es.iitr.ac.in>
---
 drivers/media/test-drivers/vimc/Kconfig       |  2 +
 drivers/media/test-drivers/vimc/vimc-common.h |  1 +
 drivers/media/test-drivers/vimc/vimc-core.c   | 10 ++++
 drivers/media/test-drivers/vimc/vimc-sensor.c | 57 +++++++++++++++++++
 4 files changed, 70 insertions(+)

diff --git a/drivers/media/test-drivers/vimc/Kconfig b/drivers/media/test-drivers/vimc/Kconfig
index 4068a67585f9..da4b2ad6e40c 100644
--- a/drivers/media/test-drivers/vimc/Kconfig
+++ b/drivers/media/test-drivers/vimc/Kconfig
@@ -2,6 +2,8 @@
 config VIDEO_VIMC
 	tristate "Virtual Media Controller Driver (VIMC)"
 	depends on VIDEO_DEV && VIDEO_V4L2
+	select FONT_SUPPORT
+	select FONT_8x16
 	select MEDIA_CONTROLLER
 	select VIDEO_V4L2_SUBDEV_API
 	select VIDEOBUF2_VMALLOC
diff --git a/drivers/media/test-drivers/vimc/vimc-common.h b/drivers/media/test-drivers/vimc/vimc-common.h
index ae163dec2459..afda52253402 100644
--- a/drivers/media/test-drivers/vimc/vimc-common.h
+++ b/drivers/media/test-drivers/vimc/vimc-common.h
@@ -20,6 +20,7 @@
 #define VIMC_CID_VIMC_CLASS		(0x00f00000 | 1)
 #define VIMC_CID_TEST_PATTERN		(VIMC_CID_VIMC_BASE + 0)
 #define VIMC_CID_MEAN_WIN_SIZE		(VIMC_CID_VIMC_BASE + 1)
+#define VIMC_CID_SHOW_INFO		(VIMC_CID_VIMC_BASE + 2)
 
 #define VIMC_FRAME_MAX_WIDTH 4096
 #define VIMC_FRAME_MAX_HEIGHT 2160
diff --git a/drivers/media/test-drivers/vimc/vimc-core.c b/drivers/media/test-drivers/vimc/vimc-core.c
index 11210aaa2551..461320ae965c 100644
--- a/drivers/media/test-drivers/vimc/vimc-core.c
+++ b/drivers/media/test-drivers/vimc/vimc-core.c
@@ -5,10 +5,12 @@
  * Copyright (C) 2015-2017 Helen Koike <helen.fornazier@gmail.com>
  */
 
+#include <linux/font.h>
 #include <linux/init.h>
 #include <linux/module.h>
 #include <linux/platform_device.h>
 #include <media/media-device.h>
+#include <media/tpg/v4l2-tpg.h>
 #include <media/v4l2-device.h>
 
 #include "vimc-common.h"
@@ -263,6 +265,7 @@ static int vimc_register_devices(struct vimc_device *vimc)
 
 static int vimc_probe(struct platform_device *pdev)
 {
+	const struct font_desc *font = find_font("VGA8x16");
 	struct vimc_device *vimc;
 	int ret;
 
@@ -272,6 +275,13 @@ static int vimc_probe(struct platform_device *pdev)
 	if (!vimc)
 		return -ENOMEM;
 
+	if (!font) {
+		dev_err(&pdev->dev, "vimc: could not find font\n");
+		return -ENODEV;
+	}
+
+	tpg_set_font(font->data);
+
 	vimc->pipe_cfg = &pipe_cfg;
 
 	/* Link the media device within the v4l2_device */
diff --git a/drivers/media/test-drivers/vimc/vimc-sensor.c b/drivers/media/test-drivers/vimc/vimc-sensor.c
index a2f09ac9a360..d776fdcdc3bf 100644
--- a/drivers/media/test-drivers/vimc/vimc-sensor.c
+++ b/drivers/media/test-drivers/vimc/vimc-sensor.c
@@ -19,6 +19,8 @@ struct vimc_sen_device {
 	struct v4l2_subdev sd;
 	struct tpg_data tpg;
 	u8 *frame;
+	unsigned show_info;
+	unsigned ns;
 	/* The active format */
 	struct v4l2_mbus_framefmt mbus_format;
 	struct v4l2_ctrl_handler hdl;
@@ -185,10 +187,43 @@ static const struct v4l2_subdev_pad_ops vimc_sen_pad_ops = {
 static void *vimc_sen_process_frame(struct vimc_ent_device *ved,
 				    const void *sink_frame)
 {
+	u8 *basep[TPG_MAX_PLANES][2];
+	char str[100];
+	int line = 1;
 	struct vimc_sen_device *vsen = container_of(ved, struct vimc_sen_device,
 						    ved);
 
 	tpg_fill_plane_buffer(&vsen->tpg, 0, 0, vsen->frame);
+	tpg_calc_text_basep(&vsen->tpg, basep, 0, vsen->frame);
+
+	if (vsen->show_info <= 1) {
+		unsigned ms;
+
+		ms = (ktime_get_ns() - vsen->ns) / 1000000;
+		snprintf(str, sizeof(str), "%02d:%02d:%02d:%03d",
+			 (ms / (60 * 60 * 1000)) % 24,
+			 (ms / (60 * 1000)) % 60,
+			 (ms / 1000) % 60,
+			 ms % 1000);
+		tpg_gen_text(&vsen->tpg, basep, line++ * 16, 16, str);
+	}
+
+	if (vsen->show_info == 0) {
+		const char *order = tpg_g_color_order(&vsen->tpg);
+
+		tpg_gen_text(&vsen->tpg, basep, line++ * 16, 16, order);
+		snprintf(str, sizeof(str),
+			 "brightness %3d, contrast %3d, saturation %3d, hue %d ",
+			 vsen->tpg.brightness,
+			 vsen->tpg.contrast,
+			 vsen->tpg.saturation,
+			 vsen->tpg.hue);
+		tpg_gen_text(&vsen->tpg, basep, line++ * 16, 16, str);
+		snprintf(str, sizeof(str), "sensor size: %dx%d",
+			 vsen->mbus_format.width, vsen->mbus_format.height);
+		tpg_gen_text(&vsen->tpg, basep, line++ * 16, 16, str);
+	}
+
 	return vsen->frame;
 }
 
@@ -201,6 +236,8 @@ static int vimc_sen_s_stream(struct v4l2_subdev *sd, int enable)
 		const struct vimc_pix_map *vpix;
 		unsigned int frame_size;
 
+		vsen->ns = ktime_get_ns();
+
 		/* Calculate the frame size */
 		vpix = vimc_pix_map_by_code(vsen->mbus_format.code);
 		frame_size = vsen->mbus_format.width * vpix->bpp *
@@ -269,6 +306,9 @@ static int vimc_sen_s_ctrl(struct v4l2_ctrl *ctrl)
 	case V4L2_CID_SATURATION:
 		tpg_s_saturation(&vsen->tpg, ctrl->val);
 		break;
+	case VIMC_CID_SHOW_INFO:
+		vsen->show_info = ctrl->val;
+		break;
 	default:
 		return -EINVAL;
 	}
@@ -307,6 +347,22 @@ static const struct v4l2_ctrl_config vimc_sen_ctrl_test_pattern = {
 	.qmenu = tpg_pattern_strings,
 };
 
+static const char * const vimc_ctrl_show_info_strings[] = {
+	"All",
+	"Counters Only",
+	"None",
+	NULL,
+};
+
+static const struct v4l2_ctrl_config vimc_sen_ctrl_show_info = {
+	.ops = &vimc_sen_ctrl_ops,
+	.id = VIMC_CID_SHOW_INFO,
+	.name = "Show Information",
+	.type = V4L2_CTRL_TYPE_MENU,
+	.max = ARRAY_SIZE(vimc_ctrl_show_info_strings) - 2,
+	.qmenu = vimc_ctrl_show_info_strings,
+};
+
 static struct vimc_ent_device *vimc_sen_add(struct vimc_device *vimc,
 					    const char *vcfg_name)
 {
@@ -323,6 +379,7 @@ static struct vimc_ent_device *vimc_sen_add(struct vimc_device *vimc,
 
 	v4l2_ctrl_new_custom(&vsen->hdl, &vimc_sen_ctrl_class, NULL);
 	v4l2_ctrl_new_custom(&vsen->hdl, &vimc_sen_ctrl_test_pattern, NULL);
+	v4l2_ctrl_new_custom(&vsen->hdl, &vimc_sen_ctrl_show_info, NULL);
 	v4l2_ctrl_new_std(&vsen->hdl, &vimc_sen_ctrl_ops,
 			  V4L2_CID_VFLIP, 0, 1, 1, 0);
 	v4l2_ctrl_new_std(&vsen->hdl, &vimc_sen_ctrl_ops,
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [PATCH v5 2/3] media: tpg: Add function to return colors' order of test image
  2020-06-24 13:43 ` [PATCH v5 2/3] media: tpg: Add function to return colors' order of test image Kaaira Gupta
@ 2020-06-24 13:47   ` Hans Verkuil
  0 siblings, 0 replies; 16+ messages in thread
From: Hans Verkuil @ 2020-06-24 13:47 UTC (permalink / raw)
  To: Kaaira Gupta, Helen Koike, Shuah Khan, Mauro Carvalho Chehab,
	linux-media, linux-kernel, Kieran Bingham

On 24/06/2020 15:43, Kaaira Gupta wrote:
> Currently there is no method to know the correct order of the colors for
> a test image generated by tpg. Write a function that returns a string of
> colors' order given a tpg. It returns a NULL pointer in case of test
> patterns which do not have a well defined colors' order. Hence add a
> NULL check for text in tpg_gen_text().
> 
> Signed-off-by: Kaaira Gupta <kgupta@es.iitr.ac.in>
> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
> ---
>  drivers/media/common/v4l2-tpg/v4l2-tpg-core.c | 29 +++++++++++++++++--
>  include/media/tpg/v4l2-tpg.h                  |  1 +
>  2 files changed, 28 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c b/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c
> index dde22a4cbd6c..a052b656fa6a 100644
> --- a/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c
> +++ b/drivers/media/common/v4l2-tpg/v4l2-tpg-core.c
> @@ -1959,12 +1959,14 @@ void tpg_gen_text(const struct tpg_data *tpg, u8 *basep[TPG_MAX_PLANES][2],
>  	unsigned step = V4L2_FIELD_HAS_T_OR_B(tpg->field) ? 2 : 1;
>  	unsigned div = step;
>  	unsigned first = 0;
> -	unsigned len = strlen(text);
> +	unsigned len;
>  	unsigned p;
>  
> -	if (font8x16 == NULL || basep == NULL)
> +	if (font8x16 == NULL || basep == NULL || text == NULL)
>  		return;
>  
> +	len = strlen(text);
> +
>  	/* Checks if it is possible to show string */
>  	if (y + 16 >= tpg->compose.height || x + 8 >= tpg->compose.width)
>  		return;
> @@ -2006,6 +2008,29 @@ void tpg_gen_text(const struct tpg_data *tpg, u8 *basep[TPG_MAX_PLANES][2],
>  }
>  EXPORT_SYMBOL_GPL(tpg_gen_text);
>  
> +const char *tpg_g_color_order(const struct tpg_data *tpg)
> +{
> +	switch (tpg->pattern) {
> +	case TPG_PAT_75_COLORBAR:
> +	case TPG_PAT_100_COLORBAR:
> +	case TPG_PAT_CSC_COLORBAR:
> +	case TPG_PAT_100_HCOLORBAR:
> +		return "white, yellow, cyan, green, magenta, red, blue, black";
> +	case TPG_PAT_BLACK:
> +		return "Black";
> +	case TPG_PAT_WHITE:
> +		return "White";
> +	case TPG_PAT_RED:
> +		return "Red";
> +	case TPG_PAT_GREEN:
> +		return "Green";
> +	case TPG_PAT_BLUE:
> +		return "Blue";
> +	default:
> +		return NULL;
> +	}
> +}

Missing EXPORT_SYMBOL_GPL().

Regards,

	Hans

> +
>  void tpg_update_mv_step(struct tpg_data *tpg)
>  {
>  	int factor = tpg->mv_hor_mode > TPG_MOVE_NONE ? -1 : 1;
> diff --git a/include/media/tpg/v4l2-tpg.h b/include/media/tpg/v4l2-tpg.h
> index 9749ed409856..0b0ddb87380e 100644
> --- a/include/media/tpg/v4l2-tpg.h
> +++ b/include/media/tpg/v4l2-tpg.h
> @@ -252,6 +252,7 @@ void tpg_fillbuffer(struct tpg_data *tpg, v4l2_std_id std,
>  bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc);
>  void tpg_s_crop_compose(struct tpg_data *tpg, const struct v4l2_rect *crop,
>  		const struct v4l2_rect *compose);
> +const char *tpg_g_color_order(const struct tpg_data *tpg);
>  
>  static inline void tpg_s_pattern(struct tpg_data *tpg, enum tpg_pattern pattern)
>  {
> 


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v5 3/3] media: vimc: Add a control to display info on test image
  2020-06-24 13:43 ` [PATCH v5 3/3] media: vimc: Add a control to display info on " Kaaira Gupta
@ 2020-06-24 13:51   ` Hans Verkuil
  2020-06-25 14:54     ` Kieran Bingham
  2020-06-24 20:45     ` kernel test robot
                     ` (2 subsequent siblings)
  3 siblings, 1 reply; 16+ messages in thread
From: Hans Verkuil @ 2020-06-24 13:51 UTC (permalink / raw)
  To: Kaaira Gupta, Helen Koike, Shuah Khan, Mauro Carvalho Chehab,
	linux-media, linux-kernel, Kieran Bingham

On 24/06/2020 15:43, Kaaira Gupta wrote:
> Add a control in VIMC to display information such as the correct order of
> colors for a given test pattern, brightness, hue, saturation, contrast,
> width and height at sensor over test image.
> 
> Signed-off-by: Kaaira Gupta <kgupta@es.iitr.ac.in>
> ---
>  drivers/media/test-drivers/vimc/Kconfig       |  2 +
>  drivers/media/test-drivers/vimc/vimc-common.h |  1 +
>  drivers/media/test-drivers/vimc/vimc-core.c   | 10 ++++
>  drivers/media/test-drivers/vimc/vimc-sensor.c | 57 +++++++++++++++++++
>  4 files changed, 70 insertions(+)
> 
> diff --git a/drivers/media/test-drivers/vimc/Kconfig b/drivers/media/test-drivers/vimc/Kconfig
> index 4068a67585f9..da4b2ad6e40c 100644
> --- a/drivers/media/test-drivers/vimc/Kconfig
> +++ b/drivers/media/test-drivers/vimc/Kconfig
> @@ -2,6 +2,8 @@
>  config VIDEO_VIMC
>  	tristate "Virtual Media Controller Driver (VIMC)"
>  	depends on VIDEO_DEV && VIDEO_V4L2
> +	select FONT_SUPPORT
> +	select FONT_8x16
>  	select MEDIA_CONTROLLER
>  	select VIDEO_V4L2_SUBDEV_API
>  	select VIDEOBUF2_VMALLOC
> diff --git a/drivers/media/test-drivers/vimc/vimc-common.h b/drivers/media/test-drivers/vimc/vimc-common.h
> index ae163dec2459..afda52253402 100644
> --- a/drivers/media/test-drivers/vimc/vimc-common.h
> +++ b/drivers/media/test-drivers/vimc/vimc-common.h
> @@ -20,6 +20,7 @@
>  #define VIMC_CID_VIMC_CLASS		(0x00f00000 | 1)
>  #define VIMC_CID_TEST_PATTERN		(VIMC_CID_VIMC_BASE + 0)
>  #define VIMC_CID_MEAN_WIN_SIZE		(VIMC_CID_VIMC_BASE + 1)
> +#define VIMC_CID_SHOW_INFO		(VIMC_CID_VIMC_BASE + 2)
>  
>  #define VIMC_FRAME_MAX_WIDTH 4096
>  #define VIMC_FRAME_MAX_HEIGHT 2160
> diff --git a/drivers/media/test-drivers/vimc/vimc-core.c b/drivers/media/test-drivers/vimc/vimc-core.c
> index 11210aaa2551..461320ae965c 100644
> --- a/drivers/media/test-drivers/vimc/vimc-core.c
> +++ b/drivers/media/test-drivers/vimc/vimc-core.c
> @@ -5,10 +5,12 @@
>   * Copyright (C) 2015-2017 Helen Koike <helen.fornazier@gmail.com>
>   */
>  
> +#include <linux/font.h>
>  #include <linux/init.h>
>  #include <linux/module.h>
>  #include <linux/platform_device.h>
>  #include <media/media-device.h>
> +#include <media/tpg/v4l2-tpg.h>
>  #include <media/v4l2-device.h>
>  
>  #include "vimc-common.h"
> @@ -263,6 +265,7 @@ static int vimc_register_devices(struct vimc_device *vimc)
>  
>  static int vimc_probe(struct platform_device *pdev)
>  {
> +	const struct font_desc *font = find_font("VGA8x16");
>  	struct vimc_device *vimc;
>  	int ret;
>  
> @@ -272,6 +275,13 @@ static int vimc_probe(struct platform_device *pdev)
>  	if (!vimc)
>  		return -ENOMEM;
>  
> +	if (!font) {
> +		dev_err(&pdev->dev, "vimc: could not find font\n");
> +		return -ENODEV;
> +	}
> +
> +	tpg_set_font(font->data);
> +
>  	vimc->pipe_cfg = &pipe_cfg;
>  
>  	/* Link the media device within the v4l2_device */
> diff --git a/drivers/media/test-drivers/vimc/vimc-sensor.c b/drivers/media/test-drivers/vimc/vimc-sensor.c
> index a2f09ac9a360..d776fdcdc3bf 100644
> --- a/drivers/media/test-drivers/vimc/vimc-sensor.c
> +++ b/drivers/media/test-drivers/vimc/vimc-sensor.c
> @@ -19,6 +19,8 @@ struct vimc_sen_device {
>  	struct v4l2_subdev sd;
>  	struct tpg_data tpg;
>  	u8 *frame;
> +	unsigned show_info;
> +	unsigned ns;

That name is a bit vague. How about 'start_stream_ts' (ts == timestamp)?

Note also that ktime_get_ns() returns a u64, not an unsigned.

Regards,

	Hans

>  	/* The active format */
>  	struct v4l2_mbus_framefmt mbus_format;
>  	struct v4l2_ctrl_handler hdl;
> @@ -185,10 +187,43 @@ static const struct v4l2_subdev_pad_ops vimc_sen_pad_ops = {
>  static void *vimc_sen_process_frame(struct vimc_ent_device *ved,
>  				    const void *sink_frame)
>  {
> +	u8 *basep[TPG_MAX_PLANES][2];
> +	char str[100];
> +	int line = 1;
>  	struct vimc_sen_device *vsen = container_of(ved, struct vimc_sen_device,
>  						    ved);
>  
>  	tpg_fill_plane_buffer(&vsen->tpg, 0, 0, vsen->frame);
> +	tpg_calc_text_basep(&vsen->tpg, basep, 0, vsen->frame);
> +
> +	if (vsen->show_info <= 1) {
> +		unsigned ms;
> +
> +		ms = (ktime_get_ns() - vsen->ns) / 1000000;
> +		snprintf(str, sizeof(str), "%02d:%02d:%02d:%03d",
> +			 (ms / (60 * 60 * 1000)) % 24,
> +			 (ms / (60 * 1000)) % 60,
> +			 (ms / 1000) % 60,
> +			 ms % 1000);
> +		tpg_gen_text(&vsen->tpg, basep, line++ * 16, 16, str);
> +	}
> +
> +	if (vsen->show_info == 0) {
> +		const char *order = tpg_g_color_order(&vsen->tpg);
> +
> +		tpg_gen_text(&vsen->tpg, basep, line++ * 16, 16, order);
> +		snprintf(str, sizeof(str),
> +			 "brightness %3d, contrast %3d, saturation %3d, hue %d ",
> +			 vsen->tpg.brightness,
> +			 vsen->tpg.contrast,
> +			 vsen->tpg.saturation,
> +			 vsen->tpg.hue);
> +		tpg_gen_text(&vsen->tpg, basep, line++ * 16, 16, str);
> +		snprintf(str, sizeof(str), "sensor size: %dx%d",
> +			 vsen->mbus_format.width, vsen->mbus_format.height);
> +		tpg_gen_text(&vsen->tpg, basep, line++ * 16, 16, str);
> +	}
> +
>  	return vsen->frame;
>  }
>  
> @@ -201,6 +236,8 @@ static int vimc_sen_s_stream(struct v4l2_subdev *sd, int enable)
>  		const struct vimc_pix_map *vpix;
>  		unsigned int frame_size;
>  
> +		vsen->ns = ktime_get_ns();
> +
>  		/* Calculate the frame size */
>  		vpix = vimc_pix_map_by_code(vsen->mbus_format.code);
>  		frame_size = vsen->mbus_format.width * vpix->bpp *
> @@ -269,6 +306,9 @@ static int vimc_sen_s_ctrl(struct v4l2_ctrl *ctrl)
>  	case V4L2_CID_SATURATION:
>  		tpg_s_saturation(&vsen->tpg, ctrl->val);
>  		break;
> +	case VIMC_CID_SHOW_INFO:
> +		vsen->show_info = ctrl->val;
> +		break;
>  	default:
>  		return -EINVAL;
>  	}
> @@ -307,6 +347,22 @@ static const struct v4l2_ctrl_config vimc_sen_ctrl_test_pattern = {
>  	.qmenu = tpg_pattern_strings,
>  };
>  
> +static const char * const vimc_ctrl_show_info_strings[] = {
> +	"All",
> +	"Counters Only",
> +	"None",
> +	NULL,
> +};
> +
> +static const struct v4l2_ctrl_config vimc_sen_ctrl_show_info = {
> +	.ops = &vimc_sen_ctrl_ops,
> +	.id = VIMC_CID_SHOW_INFO,
> +	.name = "Show Information",
> +	.type = V4L2_CTRL_TYPE_MENU,
> +	.max = ARRAY_SIZE(vimc_ctrl_show_info_strings) - 2,
> +	.qmenu = vimc_ctrl_show_info_strings,
> +};
> +
>  static struct vimc_ent_device *vimc_sen_add(struct vimc_device *vimc,
>  					    const char *vcfg_name)
>  {
> @@ -323,6 +379,7 @@ static struct vimc_ent_device *vimc_sen_add(struct vimc_device *vimc,
>  
>  	v4l2_ctrl_new_custom(&vsen->hdl, &vimc_sen_ctrl_class, NULL);
>  	v4l2_ctrl_new_custom(&vsen->hdl, &vimc_sen_ctrl_test_pattern, NULL);
> +	v4l2_ctrl_new_custom(&vsen->hdl, &vimc_sen_ctrl_show_info, NULL);
>  	v4l2_ctrl_new_std(&vsen->hdl, &vimc_sen_ctrl_ops,
>  			  V4L2_CID_VFLIP, 0, 1, 1, 0);
>  	v4l2_ctrl_new_std(&vsen->hdl, &vimc_sen_ctrl_ops,
> 


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v5 3/3] media: vimc: Add a control to display info on test image
  2020-06-24 13:43 ` [PATCH v5 3/3] media: vimc: Add a control to display info on " Kaaira Gupta
@ 2020-06-24 20:45     ` kernel test robot
  2020-06-24 20:45     ` kernel test robot
                       ` (2 subsequent siblings)
  3 siblings, 0 replies; 16+ messages in thread
From: kernel test robot @ 2020-06-24 20:45 UTC (permalink / raw)
  To: Kaaira Gupta, Helen Koike, Shuah Khan, Mauro Carvalho Chehab,
	linux-kernel, Kieran Bingham, hverkuil
  Cc: kbuild-all, linux-media, Kaaira Gupta

[-- Attachment #1: Type: text/plain, Size: 1355 bytes --]

Hi Kaaira,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linuxtv-media/master]
[also build test ERROR on v5.8-rc2 next-20200624]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use  as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Kaaira-Gupta/media-tpg-change-char-argument-to-const-char/20200624-224513
base:   git://linuxtv.org/media_tree.git master
config: nds32-randconfig-c022-20200624 (attached as .config)
compiler: nds32le-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   arch/nds32/kernel/ex-exit.o: in function `resume_kernel':
   (.text+0x14a): relocation truncated to fit: R_NDS32_25_PCREL_RELA against symbol `preempt_schedule_irq' defined in .sched.text section in kernel/sched/core.o
   nds32le-linux-ld: drivers/media/test-drivers/vimc/vimc-sensor.o: in function `vimc_sen_process_frame':
   vimc-sensor.c:(.text+0xec): undefined reference to `__udivdi3'
>> nds32le-linux-ld: vimc-sensor.c:(.text+0xf0): undefined reference to `__udivdi3'

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 30481 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v5 3/3] media: vimc: Add a control to display info on test image
@ 2020-06-24 20:45     ` kernel test robot
  0 siblings, 0 replies; 16+ messages in thread
From: kernel test robot @ 2020-06-24 20:45 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 1386 bytes --]

Hi Kaaira,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linuxtv-media/master]
[also build test ERROR on v5.8-rc2 next-20200624]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use  as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Kaaira-Gupta/media-tpg-change-char-argument-to-const-char/20200624-224513
base:   git://linuxtv.org/media_tree.git master
config: nds32-randconfig-c022-20200624 (attached as .config)
compiler: nds32le-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   arch/nds32/kernel/ex-exit.o: in function `resume_kernel':
   (.text+0x14a): relocation truncated to fit: R_NDS32_25_PCREL_RELA against symbol `preempt_schedule_irq' defined in .sched.text section in kernel/sched/core.o
   nds32le-linux-ld: drivers/media/test-drivers/vimc/vimc-sensor.o: in function `vimc_sen_process_frame':
   vimc-sensor.c:(.text+0xec): undefined reference to `__udivdi3'
>> nds32le-linux-ld: vimc-sensor.c:(.text+0xf0): undefined reference to `__udivdi3'

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 30481 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v5 3/3] media: vimc: Add a control to display info on test image
  2020-06-24 13:43 ` [PATCH v5 3/3] media: vimc: Add a control to display info on " Kaaira Gupta
@ 2020-06-24 23:21     ` kernel test robot
  2020-06-24 20:45     ` kernel test robot
                       ` (2 subsequent siblings)
  3 siblings, 0 replies; 16+ messages in thread
From: kernel test robot @ 2020-06-24 23:21 UTC (permalink / raw)
  To: Kaaira Gupta, Helen Koike, Shuah Khan, Mauro Carvalho Chehab,
	linux-kernel, Kieran Bingham, hverkuil
  Cc: kbuild-all, linux-media, Kaaira Gupta

[-- Attachment #1: Type: text/plain, Size: 1140 bytes --]

Hi Kaaira,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linuxtv-media/master]
[also build test ERROR on v5.8-rc2 next-20200624]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use  as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Kaaira-Gupta/media-tpg-change-char-argument-to-const-char/20200624-224513
base:   git://linuxtv.org/media_tree.git master
config: i386-allyesconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce (this is a W=1 build):
        # save the attached .config to linux build tree
        make W=1 ARCH=i386 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   ld: drivers/media/test-drivers/vimc/vimc-sensor.o: in function `vimc_sen_process_frame':
>> vimc-sensor.c:(.text+0x141): undefined reference to `__udivdi3'

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 74067 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v5 3/3] media: vimc: Add a control to display info on test image
@ 2020-06-24 23:21     ` kernel test robot
  0 siblings, 0 replies; 16+ messages in thread
From: kernel test robot @ 2020-06-24 23:21 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 1171 bytes --]

Hi Kaaira,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linuxtv-media/master]
[also build test ERROR on v5.8-rc2 next-20200624]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use  as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Kaaira-Gupta/media-tpg-change-char-argument-to-const-char/20200624-224513
base:   git://linuxtv.org/media_tree.git master
config: i386-allyesconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce (this is a W=1 build):
        # save the attached .config to linux build tree
        make W=1 ARCH=i386 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   ld: drivers/media/test-drivers/vimc/vimc-sensor.o: in function `vimc_sen_process_frame':
>> vimc-sensor.c:(.text+0x141): undefined reference to `__udivdi3'

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 74067 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v5 3/3] media: vimc: Add a control to display info on test image
  2020-06-24 13:51   ` Hans Verkuil
@ 2020-06-25 14:54     ` Kieran Bingham
  0 siblings, 0 replies; 16+ messages in thread
From: Kieran Bingham @ 2020-06-25 14:54 UTC (permalink / raw)
  To: Kaaira Gupta, Helen Koike, Shuah Khan, Mauro Carvalho Chehab,
	linux-media, linux-kernel
  Cc: Hans Verkuil

Hi Kaaira,

On 24/06/2020 14:51, Hans Verkuil wrote:
> On 24/06/2020 15:43, Kaaira Gupta wrote:
>> Add a control in VIMC to display information such as the correct order of
>> colors for a given test pattern, brightness, hue, saturation, contrast,
>> width and height at sensor over test image.
>>
>> Signed-off-by: Kaaira Gupta <kgupta@es.iitr.ac.in>
>> ---
>>  drivers/media/test-drivers/vimc/Kconfig       |  2 +
>>  drivers/media/test-drivers/vimc/vimc-common.h |  1 +
>>  drivers/media/test-drivers/vimc/vimc-core.c   | 10 ++++
>>  drivers/media/test-drivers/vimc/vimc-sensor.c | 57 +++++++++++++++++++
>>  4 files changed, 70 insertions(+)
>>
>> diff --git a/drivers/media/test-drivers/vimc/Kconfig b/drivers/media/test-drivers/vimc/Kconfig
>> index 4068a67585f9..da4b2ad6e40c 100644
>> --- a/drivers/media/test-drivers/vimc/Kconfig
>> +++ b/drivers/media/test-drivers/vimc/Kconfig
>> @@ -2,6 +2,8 @@
>>  config VIDEO_VIMC
>>  	tristate "Virtual Media Controller Driver (VIMC)"
>>  	depends on VIDEO_DEV && VIDEO_V4L2
>> +	select FONT_SUPPORT
>> +	select FONT_8x16
>>  	select MEDIA_CONTROLLER
>>  	select VIDEO_V4L2_SUBDEV_API
>>  	select VIDEOBUF2_VMALLOC
>> diff --git a/drivers/media/test-drivers/vimc/vimc-common.h b/drivers/media/test-drivers/vimc/vimc-common.h
>> index ae163dec2459..afda52253402 100644
>> --- a/drivers/media/test-drivers/vimc/vimc-common.h
>> +++ b/drivers/media/test-drivers/vimc/vimc-common.h
>> @@ -20,6 +20,7 @@
>>  #define VIMC_CID_VIMC_CLASS		(0x00f00000 | 1)
>>  #define VIMC_CID_TEST_PATTERN		(VIMC_CID_VIMC_BASE + 0)
>>  #define VIMC_CID_MEAN_WIN_SIZE		(VIMC_CID_VIMC_BASE + 1)
>> +#define VIMC_CID_SHOW_INFO		(VIMC_CID_VIMC_BASE + 2)
>>  
>>  #define VIMC_FRAME_MAX_WIDTH 4096
>>  #define VIMC_FRAME_MAX_HEIGHT 2160
>> diff --git a/drivers/media/test-drivers/vimc/vimc-core.c b/drivers/media/test-drivers/vimc/vimc-core.c
>> index 11210aaa2551..461320ae965c 100644
>> --- a/drivers/media/test-drivers/vimc/vimc-core.c
>> +++ b/drivers/media/test-drivers/vimc/vimc-core.c
>> @@ -5,10 +5,12 @@
>>   * Copyright (C) 2015-2017 Helen Koike <helen.fornazier@gmail.com>
>>   */
>>  
>> +#include <linux/font.h>
>>  #include <linux/init.h>
>>  #include <linux/module.h>
>>  #include <linux/platform_device.h>
>>  #include <media/media-device.h>
>> +#include <media/tpg/v4l2-tpg.h>
>>  #include <media/v4l2-device.h>
>>  
>>  #include "vimc-common.h"
>> @@ -263,6 +265,7 @@ static int vimc_register_devices(struct vimc_device *vimc)
>>  
>>  static int vimc_probe(struct platform_device *pdev)
>>  {
>> +	const struct font_desc *font = find_font("VGA8x16");
>>  	struct vimc_device *vimc;
>>  	int ret;
>>  
>> @@ -272,6 +275,13 @@ static int vimc_probe(struct platform_device *pdev)
>>  	if (!vimc)
>>  		return -ENOMEM;
>>  
>> +	if (!font) {
>> +		dev_err(&pdev->dev, "vimc: could not find font\n");
>> +		return -ENODEV;
>> +	}
>> +
>> +	tpg_set_font(font->data);
>> +
>>  	vimc->pipe_cfg = &pipe_cfg;
>>  
>>  	/* Link the media device within the v4l2_device */
>> diff --git a/drivers/media/test-drivers/vimc/vimc-sensor.c b/drivers/media/test-drivers/vimc/vimc-sensor.c
>> index a2f09ac9a360..d776fdcdc3bf 100644
>> --- a/drivers/media/test-drivers/vimc/vimc-sensor.c
>> +++ b/drivers/media/test-drivers/vimc/vimc-sensor.c
>> @@ -19,6 +19,8 @@ struct vimc_sen_device {
>>  	struct v4l2_subdev sd;
>>  	struct tpg_data tpg;
>>  	u8 *frame;
>> +	unsigned show_info;

It's better to declare a 'type' rather than just unsigned.
 i.e.
	unsigned int
	unsigned long




>> +	unsigned ns;
> 
> That name is a bit vague. How about 'start_stream_ts' (ts == timestamp)?
> 
> Note also that ktime_get_ns() returns a u64, not an unsigned.
> 
> Regards,
> 
> 	Hans
> 
>>  	/* The active format */
>>  	struct v4l2_mbus_framefmt mbus_format;
>>  	struct v4l2_ctrl_handler hdl;
>> @@ -185,10 +187,43 @@ static const struct v4l2_subdev_pad_ops vimc_sen_pad_ops = {
>>  static void *vimc_sen_process_frame(struct vimc_ent_device *ved,
>>  				    const void *sink_frame)
>>  {
>> +	u8 *basep[TPG_MAX_PLANES][2];
>> +	char str[100];
>> +	int line = 1;
>>  	struct vimc_sen_device *vsen = container_of(ved, struct vimc_sen_device,
>>  						    ved);
>>  
>>  	tpg_fill_plane_buffer(&vsen->tpg, 0, 0, vsen->frame);
>> +	tpg_calc_text_basep(&vsen->tpg, basep, 0, vsen->frame);
>> +
>> +	if (vsen->show_info <= 1) {

I would suggest creating an enum of the possible values so that you can
do a switch statement here, otherwise a reader of the code will be
thinking "What is 1 refering to?"


At least then you could do:

switch(vsen->show_info) {
	VSEN_SHOW_ALL:
		... do all stuff ..
		/* fallthrough */
	VSEN_SHOW_COUNTERS:
		... do just the counters ...
		/* fallthrough */ (or break;)
	VSEN_SHOW_NONE:
	default:
		break;
}


Looking at vivid, I can see that the use of the numbers came from there,
but it would be nice to try to improve readability some how...


>> +		unsigned ms;
>> +
>> +		ms = (ktime_get_ns() - vsen->ns) / 1000000;
>> +		snprintf(str, sizeof(str), "%02d:%02d:%02d:%03d",
>> +			 (ms / (60 * 60 * 1000)) % 24,
>> +			 (ms / (60 * 1000)) % 60,
>> +			 (ms / 1000) % 60,
>> +			 ms % 1000);
>> +		tpg_gen_text(&vsen->tpg, basep, line++ * 16, 16, str);

you've used "line++ * 16" where vivid seems to always use line++ *
line_height.

Perhaps vivid can customise the value there with a control, but even if
not, it would be better to put a
 const unsigned int line_height = 16;

at the top of the function so it's clear what that parameter does.

>> +	}
>> +
>> +	if (vsen->show_info == 0) {
>> +		const char *order = tpg_g_color_order(&vsen->tpg);
>> +
>> +		tpg_gen_text(&vsen->tpg, basep, line++ * 16, 16, order);
>> +		snprintf(str, sizeof(str),
>> +			 "brightness %3d, contrast %3d, saturation %3d, hue %d ",
>> +			 vsen->tpg.brightness,
>> +			 vsen->tpg.contrast,
>> +			 vsen->tpg.saturation,
>> +			 vsen->tpg.hue);
>> +		tpg_gen_text(&vsen->tpg, basep, line++ * 16, 16, str);
>> +		snprintf(str, sizeof(str), "sensor size: %dx%d",
>> +			 vsen->mbus_format.width, vsen->mbus_format.height);
>> +		tpg_gen_text(&vsen->tpg, basep, line++ * 16, 16, str);
>> +	}
>> +
>>  	return vsen->frame;
>>  }
>>  
>> @@ -201,6 +236,8 @@ static int vimc_sen_s_stream(struct v4l2_subdev *sd, int enable)
>>  		const struct vimc_pix_map *vpix;
>>  		unsigned int frame_size;
>>  
>> +		vsen->ns = ktime_get_ns();
>> +
>>  		/* Calculate the frame size */
>>  		vpix = vimc_pix_map_by_code(vsen->mbus_format.code);
>>  		frame_size = vsen->mbus_format.width * vpix->bpp *
>> @@ -269,6 +306,9 @@ static int vimc_sen_s_ctrl(struct v4l2_ctrl *ctrl)
>>  	case V4L2_CID_SATURATION:
>>  		tpg_s_saturation(&vsen->tpg, ctrl->val);
>>  		break;
>> +	case VIMC_CID_SHOW_INFO:
>> +		vsen->show_info = ctrl->val;
>> +		break;
>>  	default:
>>  		return -EINVAL;
>>  	}
>> @@ -307,6 +347,22 @@ static const struct v4l2_ctrl_config vimc_sen_ctrl_test_pattern = {
>>  	.qmenu = tpg_pattern_strings,
>>  };
>>  
>> +static const char * const vimc_ctrl_show_info_strings[] = {
>> +	"All",
>> +	"Counters Only",
>> +	"None",
>> +	NULL,
>> +};
>> +
>> +static const struct v4l2_ctrl_config vimc_sen_ctrl_show_info = {
>> +	.ops = &vimc_sen_ctrl_ops,
>> +	.id = VIMC_CID_SHOW_INFO,
>> +	.name = "Show Information",
>> +	.type = V4L2_CTRL_TYPE_MENU,
>> +	.max = ARRAY_SIZE(vimc_ctrl_show_info_strings) - 2,
>> +	.qmenu = vimc_ctrl_show_info_strings,
>> +};
>> +
>>  static struct vimc_ent_device *vimc_sen_add(struct vimc_device *vimc,
>>  					    const char *vcfg_name)
>>  {
>> @@ -323,6 +379,7 @@ static struct vimc_ent_device *vimc_sen_add(struct vimc_device *vimc,
>>  
>>  	v4l2_ctrl_new_custom(&vsen->hdl, &vimc_sen_ctrl_class, NULL);
>>  	v4l2_ctrl_new_custom(&vsen->hdl, &vimc_sen_ctrl_test_pattern, NULL);
>> +	v4l2_ctrl_new_custom(&vsen->hdl, &vimc_sen_ctrl_show_info, NULL);
>>  	v4l2_ctrl_new_std(&vsen->hdl, &vimc_sen_ctrl_ops,
>>  			  V4L2_CID_VFLIP, 0, 1, 1, 0);
>>  	v4l2_ctrl_new_std(&vsen->hdl, &vimc_sen_ctrl_ops,
>>
> 

-- 
Regards
--
Kieran

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [PATCH v5 3/3] media: vimc: Add a control to display info on test image
  2020-06-24 13:43 ` [PATCH v5 3/3] media: vimc: Add a control to display info on " Kaaira Gupta
                     ` (2 preceding siblings ...)
  2020-06-24 23:21     ` kernel test robot
@ 2020-06-26  1:18   ` Helen Koike
  3 siblings, 0 replies; 16+ messages in thread
From: Helen Koike @ 2020-06-26  1:18 UTC (permalink / raw)
  To: Kaaira Gupta, Helen Koike, Shuah Khan, Mauro Carvalho Chehab,
	linux-media, linux-kernel, Kieran Bingham, hverkuil

Hi Kaaira,

Thanks for your patch, I tested and it works great, just some other comments below.

On 6/24/20 10:43 AM, Kaaira Gupta wrote:
> Add a control in VIMC to display information such as the correct order of
> colors for a given test pattern, brightness, hue, saturation, contrast,
> width and height at sensor over test image.
> 
> Signed-off-by: Kaaira Gupta <kgupta@es.iitr.ac.in>
> ---
>  drivers/media/test-drivers/vimc/Kconfig       |  2 +
>  drivers/media/test-drivers/vimc/vimc-common.h |  1 +
>  drivers/media/test-drivers/vimc/vimc-core.c   | 10 ++++
>  drivers/media/test-drivers/vimc/vimc-sensor.c | 57 +++++++++++++++++++
>  4 files changed, 70 insertions(+)
> 
> diff --git a/drivers/media/test-drivers/vimc/Kconfig b/drivers/media/test-drivers/vimc/Kconfig
> index 4068a67585f9..da4b2ad6e40c 100644
> --- a/drivers/media/test-drivers/vimc/Kconfig
> +++ b/drivers/media/test-drivers/vimc/Kconfig
> @@ -2,6 +2,8 @@
>  config VIDEO_VIMC
>  	tristate "Virtual Media Controller Driver (VIMC)"
>  	depends on VIDEO_DEV && VIDEO_V4L2
> +	select FONT_SUPPORT
> +	select FONT_8x16
>  	select MEDIA_CONTROLLER
>  	select VIDEO_V4L2_SUBDEV_API
>  	select VIDEOBUF2_VMALLOC
> diff --git a/drivers/media/test-drivers/vimc/vimc-common.h b/drivers/media/test-drivers/vimc/vimc-common.h
> index ae163dec2459..afda52253402 100644
> --- a/drivers/media/test-drivers/vimc/vimc-common.h
> +++ b/drivers/media/test-drivers/vimc/vimc-common.h
> @@ -20,6 +20,7 @@
>  #define VIMC_CID_VIMC_CLASS		(0x00f00000 | 1)
>  #define VIMC_CID_TEST_PATTERN		(VIMC_CID_VIMC_BASE + 0)
>  #define VIMC_CID_MEAN_WIN_SIZE		(VIMC_CID_VIMC_BASE + 1)
> +#define VIMC_CID_SHOW_INFO		(VIMC_CID_VIMC_BASE + 2)
>  
>  #define VIMC_FRAME_MAX_WIDTH 4096
>  #define VIMC_FRAME_MAX_HEIGHT 2160
> diff --git a/drivers/media/test-drivers/vimc/vimc-core.c b/drivers/media/test-drivers/vimc/vimc-core.c
> index 11210aaa2551..461320ae965c 100644
> --- a/drivers/media/test-drivers/vimc/vimc-core.c
> +++ b/drivers/media/test-drivers/vimc/vimc-core.c
> @@ -5,10 +5,12 @@
>   * Copyright (C) 2015-2017 Helen Koike <helen.fornazier@gmail.com>
>   */
>  
> +#include <linux/font.h>
>  #include <linux/init.h>
>  #include <linux/module.h>
>  #include <linux/platform_device.h>
>  #include <media/media-device.h>
> +#include <media/tpg/v4l2-tpg.h>
>  #include <media/v4l2-device.h>
>  
>  #include "vimc-common.h"
> @@ -263,6 +265,7 @@ static int vimc_register_devices(struct vimc_device *vimc)
>  
>  static int vimc_probe(struct platform_device *pdev)
>  {
> +	const struct font_desc *font = find_font("VGA8x16");
>  	struct vimc_device *vimc;
>  	int ret;
>  
> @@ -272,6 +275,13 @@ static int vimc_probe(struct platform_device *pdev)
>  	if (!vimc)
>  		return -ENOMEM;
>  
> +	if (!font) {
> +		dev_err(&pdev->dev, "vimc: could not find font\n");
> +		return -ENODEV;

Move this check above the kzalloc(), otherwise there is a memory leak.

> +	}
> +
> +	tpg_set_font(font->data);
> +
>  	vimc->pipe_cfg = &pipe_cfg;
>  
>  	/* Link the media device within the v4l2_device */
> diff --git a/drivers/media/test-drivers/vimc/vimc-sensor.c b/drivers/media/test-drivers/vimc/vimc-sensor.c
> index a2f09ac9a360..d776fdcdc3bf 100644
> --- a/drivers/media/test-drivers/vimc/vimc-sensor.c
> +++ b/drivers/media/test-drivers/vimc/vimc-sensor.c
> @@ -19,6 +19,8 @@ struct vimc_sen_device {
>  	struct v4l2_subdev sd;
>  	struct tpg_data tpg;
>  	u8 *frame;
> +	unsigned show_info;
> +	unsigned ns;
>  	/* The active format */
>  	struct v4l2_mbus_framefmt mbus_format;
>  	struct v4l2_ctrl_handler hdl;
> @@ -185,10 +187,43 @@ static const struct v4l2_subdev_pad_ops vimc_sen_pad_ops = {
>  static void *vimc_sen_process_frame(struct vimc_ent_device *ved,
>  				    const void *sink_frame)
>  {
> +	u8 *basep[TPG_MAX_PLANES][2];
> +	char str[100];
> +	int line = 1;
>  	struct vimc_sen_device *vsen = container_of(ved, struct vimc_sen_device,
>  						    ved);
>  
>  	tpg_fill_plane_buffer(&vsen->tpg, 0, 0, vsen->frame);
> +	tpg_calc_text_basep(&vsen->tpg, basep, 0, vsen->frame);
> +
> +	if (vsen->show_info <= 1) {
> +		unsigned ms;
> +
> +		ms = (ktime_get_ns() - vsen->ns) / 1000000;
> +		snprintf(str, sizeof(str), "%02d:%02d:%02d:%03d",
> +			 (ms / (60 * 60 * 1000)) % 24,
> +			 (ms / (60 * 1000)) % 60,
> +			 (ms / 1000) % 60,
> +			 ms % 1000);
> +		tpg_gen_text(&vsen->tpg, basep, line++ * 16, 16, str);
> +	}
> +
> +	if (vsen->show_info == 0) {
> +		const char *order = tpg_g_color_order(&vsen->tpg);
> +
> +		tpg_gen_text(&vsen->tpg, basep, line++ * 16, 16, order);
> +		snprintf(str, sizeof(str),
> +			 "brightness %3d, contrast %3d, saturation %3d, hue %d ",
> +			 vsen->tpg.brightness,
> +			 vsen->tpg.contrast,
> +			 vsen->tpg.saturation,
> +			 vsen->tpg.hue);
> +		tpg_gen_text(&vsen->tpg, basep, line++ * 16, 16, str);
> +		snprintf(str, sizeof(str), "sensor size: %dx%d",
> +			 vsen->mbus_format.width, vsen->mbus_format.height);
> +		tpg_gen_text(&vsen->tpg, basep, line++ * 16, 16, str);
> +	}
> +
>  	return vsen->frame;
>  }
>  
> @@ -201,6 +236,8 @@ static int vimc_sen_s_stream(struct v4l2_subdev *sd, int enable)
>  		const struct vimc_pix_map *vpix;
>  		unsigned int frame_size;
>  
> +		vsen->ns = ktime_get_ns();
> +
>  		/* Calculate the frame size */
>  		vpix = vimc_pix_map_by_code(vsen->mbus_format.code);
>  		frame_size = vsen->mbus_format.width * vpix->bpp *
> @@ -269,6 +306,9 @@ static int vimc_sen_s_ctrl(struct v4l2_ctrl *ctrl)
>  	case V4L2_CID_SATURATION:
>  		tpg_s_saturation(&vsen->tpg, ctrl->val);
>  		break;
> +	case VIMC_CID_SHOW_INFO:
> +		vsen->show_info = ctrl->val;
> +		break;
>  	default:
>  		return -EINVAL;
>  	}
> @@ -307,6 +347,22 @@ static const struct v4l2_ctrl_config vimc_sen_ctrl_test_pattern = {
>  	.qmenu = tpg_pattern_strings,
>  };
>  
> +static const char * const vimc_ctrl_show_info_strings[] = {
> +	"All",
> +	"Counters Only",
> +	"None",
> +	NULL,
> +};
> +
> +static const struct v4l2_ctrl_config vimc_sen_ctrl_show_info = {
> +	.ops = &vimc_sen_ctrl_ops,
> +	.id = VIMC_CID_SHOW_INFO,
> +	.name = "Show Information",

Vivid calls is "OSD Text Mode", maybe we could do the same.
And rename the id to VIMC_CID_OSD_TEXT_MODE and all the show_info to osd_mode.

Regards,
Helen

> +	.type = V4L2_CTRL_TYPE_MENU,
> +	.max = ARRAY_SIZE(vimc_ctrl_show_info_strings) - 2,
> +	.qmenu = vimc_ctrl_show_info_strings,
> +};
> +
>  static struct vimc_ent_device *vimc_sen_add(struct vimc_device *vimc,
>  					    const char *vcfg_name)
>  {
> @@ -323,6 +379,7 @@ static struct vimc_ent_device *vimc_sen_add(struct vimc_device *vimc,
>  
>  	v4l2_ctrl_new_custom(&vsen->hdl, &vimc_sen_ctrl_class, NULL);
>  	v4l2_ctrl_new_custom(&vsen->hdl, &vimc_sen_ctrl_test_pattern, NULL);
> +	v4l2_ctrl_new_custom(&vsen->hdl, &vimc_sen_ctrl_show_info, NULL);
>  	v4l2_ctrl_new_std(&vsen->hdl, &vimc_sen_ctrl_ops,
>  			  V4L2_CID_VFLIP, 0, 1, 1, 0);
>  	v4l2_ctrl_new_std(&vsen->hdl, &vimc_sen_ctrl_ops,
> 

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH v5 0/3]
@ 2020-03-16 22:52 Vijay Thakkar
  0 siblings, 0 replies; 16+ messages in thread
From: Vijay Thakkar @ 2020-03-16 22:52 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Vijay Thakkar, Peter Zijlstra, Ingo Molnar, Kim Phillips,
	Alexander Shishkin, Jiri Olsa, Namhyung Kim, Martin Liška,
	Jon Grimm, linux-kernel, linux-perf-users

This series of patches brings the PMU events for AMD family 17h series
of processors up to date with the latest versions of the AMD processor
programming reference manuals, all of which can be found at:
https://bugzilla.kernel.org/show_bug.cgi?id=206537

Change summary:
Patch 1: changes the pmu events mapfile to be more selective for
the model number rather than blanket detecting all f17h processors to
have the same events directory. This is required for the later patch
where we add events for zen2 based processors.

Patch 2: adds the PMU events for zen2.

Patch 3: updates the zen1 PMU events to be in accordance
with the latest PPR version and bumps up the events version to v2,
mainly adding some events that were previously missing, and
cleaning up some fpu counters.

Details of what changed between patch revisions is included within the
commits.

Vijay Thakkar (3):
  perf vendor events amd: restrict model detection for zen1 based
    processors
  perf vendor events amd: add Zen2 events
  perf vendor events amd: update Zen1 events to V2

 .../pmu-events/arch/x86/amdfam17h/branch.json |  12 -
 .../pmu-events/arch/x86/amdfam17h/cache.json  | 329 -----------------
 .../pmu-events/arch/x86/amdfam17h/other.json  |  65 ----
 .../pmu-events/arch/x86/amdzen1/branch.json   |  23 ++
 .../pmu-events/arch/x86/amdzen1/cache.json    | 294 +++++++++++++++
 .../arch/x86/{amdfam17h => amdzen1}/core.json |  15 +-
 .../floating-point.json                       |  64 +++-
 .../x86/{amdfam17h => amdzen1}/memory.json    |  82 +++--
 .../pmu-events/arch/x86/amdzen1/other.json    |  56 +++
 .../pmu-events/arch/x86/amdzen2/branch.json   |  52 +++
 .../pmu-events/arch/x86/amdzen2/cache.json    | 338 +++++++++++++++++
 .../pmu-events/arch/x86/amdzen2/core.json     | 130 +++++++
 .../arch/x86/amdzen2/floating-point.json      | 112 ++++++
 .../pmu-events/arch/x86/amdzen2/memory.json   | 341 ++++++++++++++++++
 .../pmu-events/arch/x86/amdzen2/other.json    | 115 ++++++
 tools/perf/pmu-events/arch/x86/mapfile.csv    |   3 +-
 16 files changed, 1578 insertions(+), 453 deletions(-)
 delete mode 100644 tools/perf/pmu-events/arch/x86/amdfam17h/branch.json
 delete mode 100644 tools/perf/pmu-events/arch/x86/amdfam17h/cache.json
 delete mode 100644 tools/perf/pmu-events/arch/x86/amdfam17h/other.json
 create mode 100644 tools/perf/pmu-events/arch/x86/amdzen1/branch.json
 create mode 100644 tools/perf/pmu-events/arch/x86/amdzen1/cache.json
 rename tools/perf/pmu-events/arch/x86/{amdfam17h => amdzen1}/core.json (87%)
 rename tools/perf/pmu-events/arch/x86/{amdfam17h => amdzen1}/floating-point.json (61%)
 rename tools/perf/pmu-events/arch/x86/{amdfam17h => amdzen1}/memory.json (63%)
 create mode 100644 tools/perf/pmu-events/arch/x86/amdzen1/other.json
 create mode 100644 tools/perf/pmu-events/arch/x86/amdzen2/branch.json
 create mode 100644 tools/perf/pmu-events/arch/x86/amdzen2/cache.json
 create mode 100644 tools/perf/pmu-events/arch/x86/amdzen2/core.json
 create mode 100644 tools/perf/pmu-events/arch/x86/amdzen2/floating-point.json
 create mode 100644 tools/perf/pmu-events/arch/x86/amdzen2/memory.json
 create mode 100644 tools/perf/pmu-events/arch/x86/amdzen2/other.json

-- 
2.25.1


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH v5 0/3]
  2018-09-27 15:13 [PATCH] branch: colorize branches checked out in a linked working tree the same way as the current branch is colorized Nickolai Belakovski
@ 2019-01-06  0:26 ` nbelakovski
  0 siblings, 0 replies; 16+ messages in thread
From: nbelakovski @ 2019-01-06  0:26 UTC (permalink / raw)
  To: git; +Cc: peff, rafa.almas, gitster, avarab, Nickolai Belakovski

From: Nickolai Belakovski <nbelakovski@gmail.com>

Replying to my original email to try to clean up the email chain

> Thanks for keeping with this.  I think we're getting quite close

Thanks to you as well for continuing to review the change set and provide feedback!
It does feel rather close, I'm getting exciting about following it through, even if
we just end up merging the worktreepath commit and not the ones to modify the branch
output, since I can always just make a local alias that uses the worktreepath atom.

The last set of changes all made sense, very non-controversial, so I've simply implemented
them. Beyond that, I moved where the structures for the ref<->worktree map are defined now
that they're no longer associated with used_atom. They still feel a little awkwardly
placed to me; I couldn't quite find a way I liked of arranging them together while also
sticking to the style in the rest of the code but I think it's a little better that
all of the relevant structs and the cmpfnc are all in the same place.

Travis-CI results: https://travis-ci.org/nbelakovski/git/builds/475825245

Nickolai Belakovski (3):
  ref-filter: add worktreepath atom
  branch: Mark and color a branch differently if it is checked out in a
    linked worktree
  branch: Add an extra verbose output displaying worktree path for refs
    checked out in a linked worktree

 Documentation/git-branch.txt       | 20 ++++++-----
 Documentation/git-for-each-ref.txt |  5 +++
 builtin/branch.c                   | 16 ++++++---
 ref-filter.c                       | 71 ++++++++++++++++++++++++++++++++++++++
 t/t3200-branch.sh                  |  8 ++---
 t/t3203-branch-output.sh           | 21 +++++++++++
 t/t6302-for-each-ref-filter.sh     | 15 ++++++++
 7 files changed, 140 insertions(+), 16 deletions(-)

-- 
2.14.2


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH v5 0/3]
@ 2018-08-28 16:52 Mark Salyzyn
  0 siblings, 0 replies; 16+ messages in thread
From: Mark Salyzyn @ 2018-08-28 16:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: Mark Salyzyn, Miklos Szeredi, Jonathan Corbet, Vivek Goyal,
	Eric W . Biederman, Amir Goldstein, Randy Dunlap,
	Stephen Smalley, linux-unionfs, linux-doc

overlayfs: check CAP_DAC_READ_SEARCH before issuing exportfs_decode_fh
overlayfs: check CAP_MKNOD before issuing vfs_whiteout

Assumption never checked, should fail if the mounter creds are not
sufficient.

overlayfs: override_creds=off option bypass creator_cred

By default, all access to the upper, lower and work directories is the
recorded mounter's MAC and DAC credentials.  The incoming accesses are
checked against the caller's credentials.

If the principles of least privilege are applied, the mounter's
credentials might not overlap the credentials of the caller's when
accessing the overlayfs filesystem.  For example, a file that a lower
DAC privileged caller can execute, is MAC denied to the generally
higher DAC privileged mounter, to prevent an attack vector.

We add the option to turn off override_creds in the mount options; all
subsequent operations after mount on the filesystem will be only the
caller's credentials.  This option default is set in the CONFIG
OVERLAY_FS_OVERRIDE_CREDS or in the module option override_creds.

The module boolean parameter and mount option override_creds is also
added as a presence check for this "feature" by checking existence of
/sys/module/overlay/parameters/overlay_creds.  This will allow user
space to determine if the option can be supplied successfully to the
mount(2) operation.

Signed-off-by: Mark Salyzyn <salyzyn@android.com>
Cc: Miklos Szeredi <miklos@szeredi.hu>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Vivek Goyal <vgoyal@redhat.com>
Cc: Eric W. Biederman <ebiederm@xmission.com>
Cc: Amir Goldstein <amir73il@gmail.com>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Stephen Smalley <sds@tycho.nsa.gov>
Cc: linux-unionfs@vger.kernel.org
Cc: linux-doc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org

v2:
- Forward port changed attr to stat, resulting in a build error.
- altered commit message.

v3:
- Change name from caller_credentials / creator_credentials to the
  boolean override_creds.
- Changed from creator to mounter credentials.
- Updated and fortified the documentation.
- Added CONFIG_OVERLAY_FS_OVERRIDE_CREDS

v4:
- spelling and grammar errors in text

v5:
- beefed up the caveats in the Documentation
- Is dependent on
  "overlayfs: check CAP_DAC_READ_SEARCH before issuing exportfs_decode_fh"
  "overlayfs: check CAP_MKNOD before issuing vfs_whiteout"
- Added prwarn when override_creds=off

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [PATCH v5 0/3]
  2011-08-19 14:38 [PATCH] libvchan: interdomain communications library Daniel De Graaf
@ 2011-09-19 22:43 ` Daniel De Graaf
  0 siblings, 0 replies; 16+ messages in thread
From: Daniel De Graaf @ 2011-09-19 22:43 UTC (permalink / raw)
  To: xen-devel; +Cc: Ian.Campbell, Stefano.Stabellini, Ian.Jackson, konrad.wilk

Changes since v4:
	- Notify application of failure to setup unmap notification
	- Add shared library -rpath to fix build on clean systems
	- Add linux system headers in the patches that use them
	- Formatting cleanups

[PATCH 1/3] libxc: add xc_gnttab_map_grant_ref_notify
[PATCH 2/3] libxc: add xc_gntshr_* functions
[PATCH 3/3] libvchan: interdomain communications library

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2020-06-26  1:18 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-24 13:43 [PATCH v5 0/3] Kaaira Gupta
2020-06-24 13:43 ` [PATCH v5 1/3] media: tpg: change char argument to const char Kaaira Gupta
2020-06-24 13:43 ` [PATCH v5 2/3] media: tpg: Add function to return colors' order of test image Kaaira Gupta
2020-06-24 13:47   ` Hans Verkuil
2020-06-24 13:43 ` [PATCH v5 3/3] media: vimc: Add a control to display info on " Kaaira Gupta
2020-06-24 13:51   ` Hans Verkuil
2020-06-25 14:54     ` Kieran Bingham
2020-06-24 20:45   ` kernel test robot
2020-06-24 20:45     ` kernel test robot
2020-06-24 23:21   ` kernel test robot
2020-06-24 23:21     ` kernel test robot
2020-06-26  1:18   ` Helen Koike
  -- strict thread matches above, loose matches on Subject: below --
2020-03-16 22:52 [PATCH v5 0/3] Vijay Thakkar
2018-09-27 15:13 [PATCH] branch: colorize branches checked out in a linked working tree the same way as the current branch is colorized Nickolai Belakovski
2019-01-06  0:26 ` [PATCH v5 0/3] nbelakovski
2018-08-28 16:52 Mark Salyzyn
2011-08-19 14:38 [PATCH] libvchan: interdomain communications library Daniel De Graaf
2011-09-19 22:43 ` [PATCH v5 0/3] Daniel De Graaf

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.