Received: by 2002:a05:7412:a9a3:b0:f9:327e:43ab with SMTP id o35csp40262rdh; Mon, 18 Dec 2023 03:55:45 -0800 (PST) X-Google-Smtp-Source: AGHT+IFWqRHKIqHrYJTEG8dnuB7SF4OPS2cZZsiQzwXa/uA3g7HNoIl+FutMBn7J7iZh3yP+Skih X-Received: by 2002:a05:6a20:a11:b0:18f:9c4:d34e with SMTP id c17-20020a056a200a1100b0018f09c4d34emr14614695pzb.62.1702900545117; Mon, 18 Dec 2023 03:55:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702900545; cv=none; d=google.com; s=arc-20160816; b=EYSwAlmwM5bKzrA7PnlDgdHxPBVU+8G7NgoWRAvWAbrxdPBq/ToRUN6Ifx9fvq/jFC tBy5op8NqQsETlp1PGRVJsQ57qOGtpJbt1ZJ/HlePTx3JikfbDP6e3dXW79jJXqeReoC jDJcIEgy7Q7z9w3oXyEMAIhiHFRHRK4KAZwlbsP1Vjze6IZKBPKfuvoG5hUuRc5zt6mR Keq567uk0LtKtCc6Gp3yx8IH7S3Uh21MpGmscu8g4G6A3P/3lkKZZZcqtJG9xCvBODAn 0euXbrvyWUhPeejL28vtLdjIfclk84Kso+C2i8Z2aNcoQCo88ZtKAMiOTvjLycgBYze8 K7wA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:cc:to :from; bh=X96lzlMDcwIn/jS+vbPxuBHKzEyqPaU7uLbKg8OQk7o=; fh=ncsX9Y6bceH3m2cv4bClrwXv7K/Mz5sjfQAOCIEMsEM=; b=IeAS8cRKjlDzBokmN/UEkP3BkQ6llc2iElIUoZPp1BnBJmkbIbvjR+AO1n3DVD9t65 b77N3WFYSYtX0xbUSR+LfHaqZc+VfQPbnyXH8ISuQ4ealVLinUrKApXUNbV7lWcg5K+1 8bA9SRkQlE5Ix7599MeeRnvWHFhsCzP7cJmZIED2rXJfYFIJ1o6L2EmfXFR/FJJlo6W7 JKTG1HPe9TsONjyYI2ifFMtimYbnIWj68CRvCPnFCF01JPtPnyXwa95eL2OAE0mSE6zv gjX7W/WVY5NWp9J8NkA7FegqmDNqOIKkh9MVlqC347Plc21E5cQFBiXasV6Ln3XOBHvY lJfw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-3494-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3494-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id k36-20020a634b64000000b005ccf10e73c0si7344075pgl.456.2023.12.18.03.55.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Dec 2023 03:55:45 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-3494-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel+bounces-3494-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-3494-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id BF1002838F3 for ; Mon, 18 Dec 2023 11:55:44 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0D3591B26E; Mon, 18 Dec 2023 11:42:50 +0000 (UTC) X-Original-To: linux-kernel@vger.kernel.org Received: from harvie.cz (harvie.cz [77.87.242.242]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 58C9A208B5; Mon, 18 Dec 2023 11:42:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=gmail.com Received: from anemophobia.amit.cz (unknown [31.30.84.130]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by harvie.cz (Postfix) with ESMTPSA id 18BC01801AE; Mon, 18 Dec 2023 12:42:40 +0100 (CET) From: Tomas Mudrunka To: Jonathan Corbet , Greg Kroah-Hartman , Jiri Slaby Cc: Tomas Mudrunka , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org Subject: [PATCH] /proc/sysrq-trigger can now pause processing for one second Date: Mon, 18 Dec 2023 12:42:20 +0100 Message-ID: <20231218114222.283705-1-tomas.mudrunka@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Writing ',' to /proc/sysrq-trigger now causes processing to pause for one second. This is useful, because recently accepted patch allows to write multiple keys at once to /proc/sysrq-trigger. But it might be desirable to add slight delay between actions. Eg. between (e)TERM and (i)KILL it makes sense to put slight delay, so processes have chance to run TERM handlers before being KILLed. Now we can send TERM, wait for two seconds and KILL like this: echo _e,,i > /proc/sysrq-trigger Originaly i've tested doing this as handler registered in sysrq_key_table[], but that would cause delay to occur while holding sysrq rcu lock in __handle_sysrq(), therefore i've decided to implement this in write_sysrq_trigger() instead to allow proper use of msleep() instead of mdelay() in locked context. This means it will only be possible to invoke the delay using /proc/sysrq-trigger, but there is little point in doing that interactively using keyboard anyway. Depends-on: /proc/sysrq-trigger: accept multiple keys at once Signed-off-by: Tomas Mudrunka --- Documentation/admin-guide/sysrq.rst | 2 ++ drivers/tty/sysrq.c | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Documentation/admin-guide/sysrq.rst b/Documentation/admin-guide/sysrq.rst index 2f2e5bd44..b798a2695 100644 --- a/Documentation/admin-guide/sysrq.rst +++ b/Documentation/admin-guide/sysrq.rst @@ -161,6 +161,8 @@ Command Function will be printed to your console. (``0``, for example would make it so that only emergency messages like PANICs or OOPSes would make it to your console.) + +``,`` Wait for one second (only for use with /proc/sysrq-trigger batch) =========== =================================================================== Okay, so what can I use them for? diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c index 02217e3c9..a19ce0865 100644 --- a/drivers/tty/sysrq.c +++ b/drivers/tty/sysrq.c @@ -51,6 +51,7 @@ #include #include #include +#include #include #include @@ -1166,10 +1167,21 @@ static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf, if (get_user(c, buf + i)) return -EFAULT; - if (c == '_') + switch (c) { + + case '_': bulk = true; - else + break; + + case ',': + msleep(1000); + break; + + default: __handle_sysrq(c, false); + break; + + } if (!bulk) break; -- 2.43.0