From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9CC66C021B3 for ; Wed, 19 Feb 2025 09:32:06 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 683E510E7BC; Wed, 19 Feb 2025 09:32:05 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="UCw35l65"; dkim-atps=neutral Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) by gabe.freedesktop.org (Postfix) with ESMTPS id AF43E10E3F4 for ; Tue, 18 Feb 2025 16:50:30 +0000 (UTC) Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-4394036c0efso35779995e9.2 for ; Tue, 18 Feb 2025 08:50:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739897429; x=1740502229; darn=lists.freedesktop.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GcP9yztSY1Q8DRWzYbCRm1mVzyOd9HK8JJyZ1rXPUtM=; b=UCw35l65hT4V3yJ32SFy5jT/G93I5FUYNx9M9VaEv4h1RHHUUVbZWuF6lDiDgh6cFr 0i9BdTp3b18RS4G3dspX91KnPlqW+vGdE2pgYkQMx50QMwMALfSjduSO6yr7lNauQF3x OjL4c6zrR9scmrn3siJdhNEr1oeYp2sJmnhZi2SWImkbjPdlA7ej1ss/5oUFdZpYUBdt VYnfX5nu0iCMwR05JNKSPXI+XlihMBdWwtVeXAR4hsAIZBZa3B95fI8CJ+s1n9d5hmyS mDTsV2YA9+LTZ3eM3ma0UqRw63hTpBnBEpGgvInT15ZJGf9t7SMSltyhjPrtYsJ/U5Ag 4ZNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739897429; x=1740502229; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GcP9yztSY1Q8DRWzYbCRm1mVzyOd9HK8JJyZ1rXPUtM=; b=SmEpf+3+z35s2JQGp4rT1nhxn8cGCxMmIkxt/wj1a1nt12JK0mGNFfuy6gaNhC0vJs scb3XX5hWWUFqtio/EvtRH2E5XiI8Ln/0Z8VzasLRRz5RifhlhSOJd4TczbZ1IxcQwSN 176xZqtAAHiwmaHJGfpIREyayiDq1IFlt9poswhIQbhk2ejkxl6FG+BxQ6aHjKvkMpcT 12ctRDnqsK4JqF44cGibeSL2dw2RS1NT99ztFg7HuvohHPCKV8o+3q51YlTT1b0lwMm4 viPBVE7t7xloYrYJ/u2lIc0bnRKheZFzJOFVwj+0THpkWRAVVB8potAQp0crDHVwhtND K7iQ== X-Gm-Message-State: AOJu0Yw0OQiDqeMxNrwEXbAqVzY+jsllRtnqtWymJDhii/AhKiLSMVwT tmL4BQfsmQY3tdeEXG85LM0Lq/LBbuse42cOsGLl86xMSceWMX7We3twmykS X-Gm-Gg: ASbGncu6wmL4/cNUaoUfIF0E3xI3StMVxjrBtnjHDnVU6IfPzF5Aqe0epwQpDMeEzOl N2Od2Q2J/z5TiH3cmTq/o/Jh/B5hvHXwzmb8uZDippUi2/rhJdJDgQFTfNyFxDHEUrvwc2BBunm PY9aEQiMvDZ6RiPD4b6yvzGRFfWUSTQa/ZGKQe56kcFkDNjYlUWDUpD/MFrVr+A/nLJGlnjziAq h03ddE0lllhwyFkvQpBjgGvXMaVN5w9ihpQx12b0Gm8R5h3PN3erRPfn61Idmm3eowpDi5k6V5A WFAoktzZFPQsPElTUw== X-Google-Smtp-Source: AGHT+IGTXFEy/GMu+qlM8s788uKw0xnwZ90Ghm6QqCKnjHeGN4XsvAxPNlwT6pOj4V7xs9+46HZGKQ== X-Received: by 2002:a05:600c:190c:b0:439:8a62:db42 with SMTP id 5b1f17b1804b1-43999d92370mr3453965e9.8.1739897428821; Tue, 18 Feb 2025 08:50:28 -0800 (PST) Received: from fedora.. ([213.94.27.232]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38f258ddbbdsm15582024f8f.37.2025.02.18.08.50.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Feb 2025 08:50:28 -0800 (PST) From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= To: igt-dev@lists.freedesktop.org Cc: louis.chauvet@bootlin.com, =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= Subject: [PATCH i-g-t 16/39] lib/vkms: Test plane connector invalid values Date: Tue, 18 Feb 2025 17:49:48 +0100 Message-ID: <20250218165011.9123-17-jose.exposito89@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250218165011.9123-1-jose.exposito89@gmail.com> References: <20250218165011.9123-1-jose.exposito89@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Mailman-Approved-At: Wed, 19 Feb 2025 09:31:45 +0000 X-BeenThere: igt-dev@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development mailing list for IGT GPU Tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" For a VKMS connector, it is only possible to set invalid values in the connector status. Test that setting wrong values fails and that the connector is not accidentally changed. Signed-off-by: José Expósito --- lib/igt_vkms.c | 26 +++++++++++++++++++ lib/igt_vkms.h | 2 ++ tests/vkms/vkms_configfs.c | 52 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 80 insertions(+) diff --git a/lib/igt_vkms.c b/lib/igt_vkms.c index 6780d36da..f5e193a1c 100644 --- a/lib/igt_vkms.c +++ b/lib/igt_vkms.c @@ -459,3 +459,29 @@ int igt_vkms_connector_get_status(igt_vkms_t *dev, const char *name) return read_int(path); } + +/** + * igt_vkms_connector_set_status: + * @dev: Device the connector belongs to + * @name: Connector name + * @type: DRM_MODE_CONNECTED, DRM_MODE_DISCONNECTED or + * DRM_MODE_UNKNOWNCONNECTION + * + * Set a new status for the connector + */ +void igt_vkms_connector_set_status(igt_vkms_t *dev, const char *name, + int status) +{ + char path[PATH_MAX]; + + if (status != DRM_MODE_CONNECTED && + status != DRM_MODE_DISCONNECTED && + status != DRM_MODE_UNKNOWNCONNECTION) + igt_assert(!"Cannot be reached: Unknown connector status"); + + snprintf(path, sizeof(path), "%s/%s/%s/%s", dev->path, + get_pipeline_item_dir_name(VKMS_PIPELINE_ITEM_CONNECTOR), name, + VKMS_FILE_CONNECTOR_STATUS); + + write_int(path, status); +} diff --git a/lib/igt_vkms.h b/lib/igt_vkms.h index d0a148242..50f42aa4b 100644 --- a/lib/igt_vkms.h +++ b/lib/igt_vkms.h @@ -42,5 +42,7 @@ void igt_vkms_device_add_encoder(igt_vkms_t *dev, const char *name); void igt_vkms_device_add_connector(igt_vkms_t *dev, const char *name); int igt_vkms_connector_get_status(igt_vkms_t *dev, const char *name); +void igt_vkms_connector_set_status(igt_vkms_t *dev, const char *name, + int status); #endif /* __IGT_VKMS_H__ */ diff --git a/tests/vkms/vkms_configfs.c b/tests/vkms/vkms_configfs.c index b8c97e20d..ea84d9f82 100644 --- a/tests/vkms/vkms_configfs.c +++ b/tests/vkms/vkms_configfs.c @@ -425,6 +425,57 @@ static void test_connector_default_values(void) igt_vkms_device_destroy(dev); } +/** + * SUBTEST: connector-wrong-values + * Description: Check that setting unexpected values doesn't work. + */ + +static void test_connector_wrong_values(void) +{ + struct invalid_value invalid_status_values[] = { + { "", 0 }, + { "\0", 1 }, + { "-1", 2 }, + { "0", 1 }, + { "4", 1 }, + { "connected", 10 }, + }; + igt_vkms_t *dev; + char path[PATH_MAX]; + int fd; + int ret; + + /* Create a device with a disconnected connector */ + dev = igt_vkms_device_create(__func__); + igt_assert(dev); + + igt_vkms_device_add_connector(dev, "connector0"); + igt_vkms_connector_set_status(dev, "connector0", DRM_MODE_DISCONNECTED); + igt_assert_eq(igt_vkms_connector_get_status(dev, "connector0"), + DRM_MODE_DISCONNECTED); + + snprintf(path, sizeof(path), "%s/connectors/connector0/status", + dev->path); + + /* Test invalid values for "status" */ + for (int i = 0; i < ARRAY_SIZE(invalid_status_values); i++) { + struct invalid_value v = invalid_status_values[i]; + + fd = open(path, O_WRONLY); + igt_assert_f(fd >= 0, "Error opening '%s'\n", path); + + ret = write(fd, v.value, v.size); + igt_assert(ret <= 0); + + close(fd); + } + + igt_assert_eq(igt_vkms_connector_get_status(dev, "connector0"), + DRM_MODE_DISCONNECTED); + + igt_vkms_device_destroy(dev); +} + igt_main { struct { @@ -443,6 +494,7 @@ igt_main { "encoder-default-files", test_encoder_default_files }, { "connector-default-files", test_connector_default_files }, { "connector-default-values", test_connector_default_values }, + { "connector-wrong-values", test_connector_wrong_values }, }; igt_fixture { -- 2.48.1