Re: [PATCH v2 5/5] drm/selftests: Add command line parser selftests

2019-04-12 Thread kbuild test robot
Hi Maxime,

I love your patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on v5.1-rc4 next-20190411]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:
https://github.com/0day-ci/linux/commits/Maxime-Ripard/drm-modes-Rewrite-the-command-line-parser/20190412-122837
config: x86_64-rhel (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64 

All errors (new ones prefixed by >>):

   drivers/gpu/drm/selftests/test-drm_cmdline_parser.o: In function 
`test_drm_cmdline_init':
>> test-drm_cmdline_parser.c:(.init.text+0x0): multiple definition of 
>> `init_module'
   
drivers/gpu/drm/selftests/test-drm_modeset_common.o:test-drm_modeset_common.c:(.init.text+0x0):
 first defined here

---
0-DAY kernel test infrastructureOpen Source Technology Center
https://lists.01.org/pipermail/kbuild-all   Intel Corporation


.config.gz
Description: application/gzip
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Re: [PATCH v2 5/5] drm/selftests: Add command line parser selftests

2019-04-12 Thread kbuild test robot
Hi Maxime,

I love your patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[also build test WARNING on v5.1-rc4 next-20190411]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:
https://github.com/0day-ci/linux/commits/Maxime-Ripard/drm-modes-Rewrite-the-command-line-parser/20190412-122837
reproduce:
# apt-get install sparse
make ARCH=x86_64 allmodconfig
make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'


sparse warnings: (new ones prefixed by >>)

>> drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:20:44: sparse: Using 
>> plain integer as NULL pointer
>> drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:21:42: sparse: missing 
>> braces around initializer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:45:44: sparse: Using 
plain integer as NULL pointer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:46:42: sparse: missing 
braces around initializer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:70:44: sparse: Using 
plain integer as NULL pointer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:71:42: sparse: missing 
braces around initializer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:95:44: sparse: Using 
plain integer as NULL pointer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:96:42: sparse: missing 
braces around initializer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:120:44: sparse: Using 
plain integer as NULL pointer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:121:42: sparse: missing 
braces around initializer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:146:44: sparse: Using 
plain integer as NULL pointer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:147:42: sparse: missing 
braces around initializer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:172:44: sparse: Using 
plain integer as NULL pointer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:173:42: sparse: missing 
braces around initializer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:199:44: sparse: Using 
plain integer as NULL pointer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:200:42: sparse: missing 
braces around initializer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:226:44: sparse: Using 
plain integer as NULL pointer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:227:42: sparse: missing 
braces around initializer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:253:44: sparse: Using 
plain integer as NULL pointer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:254:42: sparse: missing 
braces around initializer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:280:44: sparse: Using 
plain integer as NULL pointer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:281:42: sparse: missing 
braces around initializer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:292:44: sparse: Using 
plain integer as NULL pointer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:293:42: sparse: missing 
braces around initializer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:319:44: sparse: Using 
plain integer as NULL pointer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:320:42: sparse: missing 
braces around initializer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:346:44: sparse: Using 
plain integer as NULL pointer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:347:42: sparse: missing 
braces around initializer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:374:44: sparse: Using 
plain integer as NULL pointer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:375:42: sparse: missing 
braces around initializer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:401:44: sparse: Using 
plain integer as NULL pointer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:402:42: sparse: missing 
braces around initializer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:426:44: sparse: Using 
plain integer as NULL pointer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:427:42: sparse: missing 
braces around initializer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:451:44: sparse: Using 
plain integer as NULL pointer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:452:42: sparse: missing 
braces around initializer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:463:44: sparse: Using 
plain integer as NULL pointer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:464:42: sparse: missing 
braces around initializer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:475:44: sparse: Using 
plain integer as NULL pointer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:476:42: sparse: missing 
braces around initializer
   drivers/gpu/drm/selftests/test-drm_cmdline_parser.c:490:44: sparse: Using 
plain integer as NULL pointer
   drivers/gpu/drm/selftests/test-drm_cmdline

[PATCH v2 5/5] drm/selftests: Add command line parser selftests

2019-04-11 Thread Maxime Ripard
The command line parser is pretty tough to get right and very error prone,
so let's add a selftest to try to catch any regression.

Signed-off-by: Maxime Ripard 
---
 drivers/gpu/drm/selftests/Makefile  |   2 +-
 drivers/gpu/drm/selftests/drm_cmdline_selftests.h   |  49 +-
 drivers/gpu/drm/selftests/test-drm_cmdline_parser.c | 843 +-
 3 files changed, 893 insertions(+), 1 deletion(-)
 create mode 100644 drivers/gpu/drm/selftests/drm_cmdline_selftests.h
 create mode 100644 drivers/gpu/drm/selftests/test-drm_cmdline_parser.c

diff --git a/drivers/gpu/drm/selftests/Makefile 
b/drivers/gpu/drm/selftests/Makefile
index 1bb73dc4c88c..971cfe17be68 100644
--- a/drivers/gpu/drm/selftests/Makefile
+++ b/drivers/gpu/drm/selftests/Makefile
@@ -1,5 +1,5 @@
 test-drm_modeset-y := test-drm_modeset_common.o test-drm_plane_helper.o \
   test-drm_format.o test-drm_framebuffer.o \
- test-drm_damage_helper.o
+ test-drm_damage_helper.o test-drm_cmdline_parser.o
 
 obj-$(CONFIG_DRM_DEBUG_SELFTEST) += test-drm_mm.o test-drm_modeset.o
diff --git a/drivers/gpu/drm/selftests/drm_cmdline_selftests.h 
b/drivers/gpu/drm/selftests/drm_cmdline_selftests.h
new file mode 100644
index ..86afe546fd0e
--- /dev/null
+++ b/drivers/gpu/drm/selftests/drm_cmdline_selftests.h
@@ -0,0 +1,49 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* List each unit test as selftest(function)
+ *
+ * The name is used as both an enum and expanded as igt__name to create
+ * a module parameter. It must be unique and legal for a C identifier.
+ *
+ * Tests are executed in order by igt/drm_mm
+ */
+
+#define cmdline_test(test) selftest(test, test)
+
+cmdline_test(drm_cmdline_test_res)
+cmdline_test(drm_cmdline_test_res_vesa)
+cmdline_test(drm_cmdline_test_res_vesa_rblank)
+cmdline_test(drm_cmdline_test_res_rblank)
+cmdline_test(drm_cmdline_test_res_bpp)
+cmdline_test(drm_cmdline_test_res_refresh)
+cmdline_test(drm_cmdline_test_res_bpp_refresh)
+cmdline_test(drm_cmdline_test_res_bpp_refresh_interlaced)
+cmdline_test(drm_cmdline_test_res_bpp_refresh_margins)
+cmdline_test(drm_cmdline_test_res_bpp_refresh_force_off)
+cmdline_test(drm_cmdline_test_res_bpp_refresh_force_on_off)
+cmdline_test(drm_cmdline_test_res_bpp_refresh_force_on)
+cmdline_test(drm_cmdline_test_res_bpp_refresh_force_on_analog)
+cmdline_test(drm_cmdline_test_res_bpp_refresh_force_on_digital)
+cmdline_test(drm_cmdline_test_res_bpp_refresh_interlaced_margins_force_on)
+cmdline_test(drm_cmdline_test_res_margins_force_on)
+cmdline_test(drm_cmdline_test_res_vesa_margins)
+cmdline_test(drm_cmdline_test_res_invalid_mode)
+cmdline_test(drm_cmdline_test_res_bpp_wrong_place_mode)
+cmdline_test(drm_cmdline_test_name)
+cmdline_test(drm_cmdline_test_name_bpp)
+cmdline_test(drm_cmdline_test_name_refresh)
+cmdline_test(drm_cmdline_test_name_bpp_refresh)
+cmdline_test(drm_cmdline_test_name_refresh_wrong_mode)
+cmdline_test(drm_cmdline_test_name_refresh_invalid_mode)
+cmdline_test(drm_cmdline_test_name_option)
+cmdline_test(drm_cmdline_test_name_bpp_option)
+cmdline_test(drm_cmdline_test_rotate_0)
+cmdline_test(drm_cmdline_test_rotate_90)
+cmdline_test(drm_cmdline_test_rotate_180)
+cmdline_test(drm_cmdline_test_rotate_270)
+cmdline_test(drm_cmdline_test_rotate_invalid_val)
+cmdline_test(drm_cmdline_test_rotate_truncated)
+cmdline_test(drm_cmdline_test_hmirror)
+cmdline_test(drm_cmdline_test_vmirror)
+cmdline_test(drm_cmdline_test_overscan_options)
+cmdline_test(drm_cmdline_test_multiple_options)
+cmdline_test(drm_cmdline_test_invalid_option)
diff --git a/drivers/gpu/drm/selftests/test-drm_cmdline_parser.c 
b/drivers/gpu/drm/selftests/test-drm_cmdline_parser.c
new file mode 100644
index ..ae94b076acd4
--- /dev/null
+++ b/drivers/gpu/drm/selftests/test-drm_cmdline_parser.c
@@ -0,0 +1,843 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2019 Bootlin
+ */
+
+#define pr_fmt(fmt) "drm_cmdline: " fmt
+
+#include 
+#include 
+
+#include 
+#include 
+
+#define TESTS "drm_cmdline_selftests.h"
+#include "drm_selftest.h"
+#include "test-drm_modeset_common.h"
+
+static int drm_cmdline_test_res(void *ignored)
+{
+   struct drm_connector connector = { 0 };
+   struct drm_cmdline_mode mode = { 0 };
+
+   FAIL_ON(!drm_mode_parse_command_line_for_connector("720x480",
+ &connector,
+ &mode));
+   FAIL_ON(!mode.specified);
+   FAIL_ON(mode.xres != 720);
+   FAIL_ON(mode.yres != 480);
+
+   FAIL_ON(mode.refresh_specified);
+
+   FAIL_ON(mode.bpp_specified);
+
+   FAIL_ON(mode.rb);
+   FAIL_ON(mode.cvt);
+   FAIL_ON(mode.interlace);
+   FAIL_ON(mode.margins);
+   FAIL_ON(mode.force != DRM_FORCE_UNSPECIFIED);
+
+   return 0;
+}
+
+static int drm_cmdline_test_res_vesa(void *ignored)
+{
+   struct drm_connector connector = { 0 };
+   stru