From nobody Wed Dec 17 06:08:54 2025 Received: from mail-pg1-f171.google.com (mail-pg1-f171.google.com [209.85.215.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0633817FE for ; Tue, 18 Jun 2024 00:36:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670969; cv=none; b=O0VOfRDwPELaBXge4JH+n/Gcs9SkS5itKUU9JijPBpDF2+8+ddGS15Wps6h25M8HMf30x/kkTwl/ctg1iXvggamU5hSiqCfstr+FSQVFdfWoFzNJdhb7WI6Eyq9jB2nFx+9etd3ROUpXF573GOctytya1NVHMZuN+ysSF4Bpeyw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670969; c=relaxed/simple; bh=x5hewR0DqmjMgAAfoswmaLPzRU+O8ZTQi8OsSrWgRvw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iVtoa3coepZD8VpSeGTHemuv9uDMs5Be61azvoaSX5FzD+/GyR+5v8RcyZhY7lratjHFe9IAx2NIKTUoCxsMXTdqCPETfG6ehpzIFYIDwTpyq5aciH/LTnKZsYe2BcD8MCHsMVu61SiBubRDp6N1etjvlSRBsC28N4X5+At7btI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=btXWoUqx; arc=none smtp.client-ip=209.85.215.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="btXWoUqx" Received: by mail-pg1-f171.google.com with SMTP id 41be03b00d2f7-70df2135426so307190a12.2 for ; Mon, 17 Jun 2024 17:36:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1718670967; x=1719275767; darn=vger.kernel.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=omgt9hawKdl/cfJMYFE11rv/XXi1ULnu+83s0osHk00=; b=btXWoUqxgOlDrnG9wwfVkS/AdUZCAlPhJiM74ZqfTVfRY5gJ6LMT1QE9prqW+Q8qT4 xFg0s9O/SfhXY5Cp/cLYdjbeqAe2v5uepmTVxAI5AE1MeGK76wAsYkcVeckImDVonnnU aUfVma3/dFZg/RzZHFowQ0CmuTITRuOW3HaaE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718670967; x=1719275767; 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=omgt9hawKdl/cfJMYFE11rv/XXi1ULnu+83s0osHk00=; b=mu0G7v5kurpA4J8DK6xwTfnyFP9c/qkPt0EjwJ/7Z2mqIvzMIzEpFPal4kljaM3um5 QJcWHHUJbG9K1rSE6CF/moxHF9c/OSCCbNfdCqXA9SWaHrfDiwXOTTYkLSKcYhMbXyJo ZAoW5+8d9TZtHIizJ8+sE3Habo8hyYKDoNftauz3g1DWV9Vpur8mhoiWMDc3WxCOGFnR FT94gKdgMoPpu6C26q6kODoVKhg0YJu5d/ZQpkPSPmiId+5+la99c96FpOG1TWXHHwbX IzslN0ioHipVFl3yGiMQV90xKcsaLeKF3GCSRy/N1TkFd29fvixcz//qutNeUeQTRY7G 0ukw== X-Forwarded-Encrypted: i=1; AJvYcCV+CI3T7sjuhVDW1Os5KlY7pXoFij/ezx2qRINWuwT5J3PQ1+Ydj2kDuDm8POpTAIhlEciAEHi8aj0Vit1RRrg6Dufk43Cx27R7198G X-Gm-Message-State: AOJu0YzR7snPxVlDbLTrUaLH30SP0H7cOBC9MK738pBbc2pvEZjuZibR mSyQVFM3/ja+pMMf2qxNeoABYOpzf2Occh50b8ANiBFpSBMWCFwDlEpt/BdfCw== X-Google-Smtp-Source: AGHT+IHtbC25s0aTUY1ZqOaNeu7VCFF+xc9eyM0e3dUxN0EAX7KLndR1scK8IXp/tiR+XWvQvp1LNw== X-Received: by 2002:a05:6a20:841d:b0:1b5:d00e:98d7 with SMTP id adf61e73a8af0-1bae7ff15bamr12235079637.24.1718670967267; Mon, 17 Jun 2024 17:36:07 -0700 (PDT) Received: from dianders.sjc.corp.google.com ([2620:15c:9d:2:1798:e71b:11ad:8b94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-705ccb99f4dsm7905917b3a.216.2024.06.17.17.36.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Jun 2024 17:36:06 -0700 (PDT) From: Douglas Anderson To: Daniel Thompson Cc: kgdb-bugreport@lists.sourceforge.net, Douglas Anderson , Christophe JAILLET , Jason Wessel , Thorsten Blum , Yuran Pereira , linux-kernel@vger.kernel.org Subject: [PATCH 01/13] kdb: Get rid of "minlen" for the "md" command Date: Mon, 17 Jun 2024 17:34:35 -0700 Message-ID: <20240617173426.1.I0535f656e94cc475de6b04652aef4f9e9fb45f49@changeid> X-Mailer: git-send-email 2.45.2.627.g7a2c4fd464-goog In-Reply-To: <20240618003546.4144638-1-dianders@chromium.org> References: <20240618003546.4144638-1-dianders@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The "minlen" field should allow us to abbreviate the "md" command as just "m". However, the kdb_md() function does a lot of checking of argv[0] and the logic there simply doesn't handle if argv[0] is just "m". While this could be fixed, "m" isn't really unique (it could be the prefix for "mm" also) and it's only saving one letter. Remove the setting of "minlen" to 1 for "md". Signed-off-by: Douglas Anderson --- While digging into this, I found that "minlen" doesn't seem to mean what's documented in the structure (AKA "Minimum legal # cmd chars required"). If it worked as documented then you could abbreviate "summary" with "summ", "summa", and "summar". In fact due to the parameters passed to strncmp() only "summ" works as an abbreviation. Fixing that could happen in a future patch if someone were so inclined, but they'd have to decide whether to change the behavior of kdb or whether to change the comment and keep the behavior. kernel/debug/kdb/kdb_main.c | 1 - 1 file changed, 1 deletion(-) diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c index 664bae55f2c9..cbeb203785b4 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c @@ -2679,7 +2679,6 @@ static kdbtab_t maintab[] =3D { .func =3D kdb_md, .usage =3D "", .help =3D "Display Memory Contents, also mdWcN, e.g. md8c1", - .minlen =3D 1, .flags =3D KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS, }, { .name =3D "mdr", --=20 2.45.2.627.g7a2c4fd464-goog From nobody Wed Dec 17 06:08:54 2025 Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4FC8F6AB9 for ; Tue, 18 Jun 2024 00:36:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670971; cv=none; b=GnTKGo5qS0ZipNMRy2jEGyf8hhIff+/IGqnhOcOuCJB+Fkf+sh1DD9BCzx1tzGCseyEtGZqyJmNaKE63KR+MmeIKazafOjteik/R8t1Cm7NXsFRxt1vvLe7kUjPlFR5ReNyFHAyuKXXFyTfCv+wreBhgFrOFWJsCENiGDJv4juQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670971; c=relaxed/simple; bh=VsJfRsmnErjb5Q3fjviDcT7zOaEtCzxOHdCi+bnBS9o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ru1Tv+jCg+iZT2UDUJMjwfLgJQK5cibRz7FZUsO+B/jwgNb5mq2Jaeh9j1HsNW+QKpqS4XfvsSKuN1oRB9d8F1MjWcFBCJ8XoeE6UeTeDAAxZiDjPC6kNxAAw2o0h85S5NDgEY98zFrHkai1u2vRiaG6Qw6EYVY+IGcLOg0PzvI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=Fo6E7NrV; arc=none smtp.client-ip=209.85.210.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="Fo6E7NrV" Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-70601bcfddcso1283751b3a.3 for ; Mon, 17 Jun 2024 17:36:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1718670969; x=1719275769; darn=vger.kernel.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=L0tcgH7kpPYZmXgjENARI8PNR8N6oeoNW3iiLkQ8n4E=; b=Fo6E7NrVdldqSu1vTjq2pisaZjlgQbJIX6VhV0PvJ5IAlJuBjWEbpzKZtcJEpr7dKz JtCGhb25uwY6Ae8hqWQp7D82rlEoQwwqS1URlX05Ozsk8phzjLJaITNJZCJ9OfsxZtwq 7OTIq3NZtQv721itCUwWcHgh+M7hGaMoFTecg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718670969; x=1719275769; 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=L0tcgH7kpPYZmXgjENARI8PNR8N6oeoNW3iiLkQ8n4E=; b=V0ib++cdCHm1fnDTM1Be5ZpG/Uco6z4/sLzKuXq3ZED92OhXAGlDiiudzp3tgeX777 Fdp2WH9n6atXbPICAzwWMCvlzT4H1wKwozAj2hNvvUYKhhzNAPX9JYKy3/L11HM4lYJH +7mUSZeYIyO+zT4E1wJj/uiBbcfFbsZmoBacuDsBDuJ2AixVcfQFw1rECK2QTFtfPDNY ZYufwC9IX7cGNAQx4xpU05kvD1yeRO8Jolwa1WKu0pfC63yBuw98a+++5gathth6w3r3 WXmhnQT5ZFvNsvFltN9c+im65oZnzK1oMyzZt2FhcHn+NIO1Ur7bRaCd9QZFE5kCnx3A vvQQ== X-Forwarded-Encrypted: i=1; AJvYcCXVHI76oBWHJGLWWF2MMDDDf9fDOwzDe9wwhKQMlloLvuD72umpmvlg6HzSiIP/oKE/SXBrAepviYW0nSJAraZScN+qJMSjKAwkWMRI X-Gm-Message-State: AOJu0YwpLoacybEY9Zekvfu9gfHQ4LsI7HUjfPDLooVwaqXCo6F4xWsB 0C6KIL7ZDXVlDvYMdEsgW5O8vFd6mTH0Z2zP6y5WmbRKzvsKA9D0q/DGPA8RFZ70Nce84KNt9v8 = X-Google-Smtp-Source: AGHT+IGR/2hsrBcVwXjJ7Pu9pelpErIPRe0m0tZzxRGHYhOk7GL1fAIfHh6yZw2WMj3KWaF7++N/yg== X-Received: by 2002:a05:6a20:394a:b0:1b4:5d12:63f1 with SMTP id adf61e73a8af0-1bae7eff86fmr14042814637.26.1718670969545; Mon, 17 Jun 2024 17:36:09 -0700 (PDT) Received: from dianders.sjc.corp.google.com ([2620:15c:9d:2:1798:e71b:11ad:8b94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-705ccb99f4dsm7905917b3a.216.2024.06.17.17.36.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Jun 2024 17:36:08 -0700 (PDT) From: Douglas Anderson To: Daniel Thompson Cc: kgdb-bugreport@lists.sourceforge.net, Douglas Anderson , Christophe JAILLET , Jason Wessel , Thorsten Blum , Yuran Pereira , linux-kernel@vger.kernel.org Subject: [PATCH 02/13] kdb: Document the various "md" commands better Date: Mon, 17 Jun 2024 17:34:36 -0700 Message-ID: <20240617173426.2.I5621f286f5131c84ac71a212508ba1467ac443f2@changeid> X-Mailer: git-send-email 2.45.2.627.g7a2c4fd464-goog In-Reply-To: <20240618003546.4144638-1-dianders@chromium.org> References: <20240618003546.4144638-1-dianders@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The documentation for the variouis "md" commands was inconsistent about documenting the command arguments. It was also hard to figure out what the differences between the "phys", "raw", and "symbolic" versions was. Update the help strings to make things more obvious. As part of this, add "bogus" commands to the table for "mdW" and "mdWcN" so we don't have to obscurely reference them in the normal "md" help. These bogus commands don't really hurt since kdb_md() validates argv[0] enough. Signed-off-by: Douglas Anderson --- kernel/debug/kdb/kdb_main.c | 39 ++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c index cbeb203785b4..47e037c3c002 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c @@ -1516,14 +1516,9 @@ static int kdb_mdr(unsigned long addr, unsigned int = count) } =20 /* - * kdb_md - This function implements the 'md', 'md1', 'md2', 'md4', - * 'md8' 'mdr' and 'mds' commands. + * kdb_md - This function implements the guts of the various 'md' commands. * - * md|mds [ [ []]] - * mdWcN [ [ []]] - * where W =3D is the width (1, 2, 4 or 8) and N is the count. - * for eg., md1c20 reads 20 bytes, 1 at a time. - * mdr , + * See the kdb help for syntax. */ static void kdb_md_line(const char *fmtstr, unsigned long addr, int symbolic, int nosect, int bytesperword, @@ -2677,26 +2672,38 @@ EXPORT_SYMBOL_GPL(kdb_unregister); static kdbtab_t maintab[] =3D { { .name =3D "md", .func =3D kdb_md, - .usage =3D "", - .help =3D "Display Memory Contents, also mdWcN, e.g. md8c1", + .usage =3D " [ []]", + .help =3D "Display RAM using BYTESPERWORD; show MDCOUNT lines", .flags =3D KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS, }, - { .name =3D "mdr", + { .name =3D "mdW", .func =3D kdb_md, - .usage =3D " ", - .help =3D "Display Raw Memory", + .usage =3D " [ []]", + .help =3D "Display RAM using word size (W) of 1, 2, 4, or 8", + .flags =3D KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS, + }, + { .name =3D "mdWcN", + .func =3D kdb_md, + .usage =3D " [ []]", + .help =3D "Display RAM using word size (W); show N words", .flags =3D KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS, }, { .name =3D "mdp", .func =3D kdb_md, - .usage =3D " ", - .help =3D "Display Physical Memory", + .usage =3D " [ []]", + .help =3D "Display RAM given a physical address", + .flags =3D KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS, + }, + { .name =3D "mdr", + .func =3D kdb_md, + .usage =3D " ", + .help =3D "Display RAM as a stream of raw bytes", .flags =3D KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS, }, { .name =3D "mds", .func =3D kdb_md, - .usage =3D "", - .help =3D "Display Memory Symbolically", + .usage =3D " []", + .help =3D "Display RAM 1 native word/line; find words in kallsyms", .flags =3D KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS, }, { .name =3D "mm", --=20 2.45.2.627.g7a2c4fd464-goog From nobody Wed Dec 17 06:08:54 2025 Received: from mail-pf1-f180.google.com (mail-pf1-f180.google.com [209.85.210.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 81C3CFBE8 for ; Tue, 18 Jun 2024 00:36:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670974; cv=none; b=DvUN2kYqtxQKV82jB0SxY/aeaoZeS8TF3xsAINuMDwWi/Q1zx0dr29FKBIh2gwLTx1ltnQXK6T0FfE8tZjlsXc8VwTpdGs/2fCdzP40cuXe3UkKk5iYh8UO71/z60MHosVtZhN0UymhdMitLfCffEmNEeUGgUaxiq95hvbdncac= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670974; c=relaxed/simple; bh=z8PTkL/kHUxYspzF2WwpvHuPdKmUNBbnhlaKNQDhBCE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BNYWok/DRvyZzSuFfcrdTBI9ypsGwySOvSTLn2Q8r8k+5/wyN7SGPL6lzU2e+KtRccqvr2S8KJhlXNlXK1qs5bGRrmtQxasRMafyHLIt+gB4Xs6ZfCEF6wPoFqBH2Xnsd/4u+D/SMEEw37JlOAEYGmA1LGEir1YCUgV1PHSlqGA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=ZZCuaBPc; arc=none smtp.client-ip=209.85.210.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="ZZCuaBPc" Received: by mail-pf1-f180.google.com with SMTP id d2e1a72fcca58-7061365d2f3so746223b3a.3 for ; Mon, 17 Jun 2024 17:36:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1718670972; x=1719275772; darn=vger.kernel.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=YgDlsk7tZBNWPt6L0xmtq7VcgKRlSUrj1CtdhLHj6YQ=; b=ZZCuaBPcJeeXxLYZXUaE/34cGn+9gKHiT1v94Y9BQeYcUp8yBO+iTnAOBSuUd+KHGH de5NxBXFAt882Vt/ntZ/2MRRKUpC+Nfp3anfWmZ7jZcUvHR+uyt0mKnYkIm2YZxcnEzF HA/p/f2WW1HKhJhfZVksEf+Ua511Tq3Zu7fMY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718670972; x=1719275772; 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=YgDlsk7tZBNWPt6L0xmtq7VcgKRlSUrj1CtdhLHj6YQ=; b=rEu8+mGGRVFxxMjVx848fpvOEDapGs4UwcyJ/+NGxZXQNdidnP0GIEnOxApD3IXfJa JZjdR8U9M+mII+2kDXcPzgU6krdea4Y3eQdyO+M1+XV86qU376fAL7IsNA9HLpsi15gW /FnHAO0homHn90DpHClXsfBtgYy8epN+So2uoJeUNYMZVOR5F4sueeGqu8JLdwht1xjh HCH/f8kKgQ9tKR+TeNcrHwMxkcqeFuYWa8bg5Pis7KXuqEWTWPGYmvDIuF3QIP4mzKeD VHqqW7uJNzlPyHizU3rpkuT3qR+393fK84ad9mJLJOCfRz+QzxNncAHTi3OmV28qWpB0 m3EQ== X-Forwarded-Encrypted: i=1; AJvYcCUhBpvtcBX+HzBMPQE4QgVKNBFXUmYutXU0P+Haex5sXeJtr1JkkcvSRYGbv3MdVIV9Fzvji26cdQYq/d5jjPojhY6wGa4J9OYy1iQ9 X-Gm-Message-State: AOJu0YzvW0V/njDxVz5NTlLny/bD0bqKV/b2ig7df4gJmJ9uf7HQiAgI HFDssaVdJvjfrMwLBaZjCaZYQoKn16+L/JGTMejh7m7JXq4Bfe/t/n4GlEJRgA== X-Google-Smtp-Source: AGHT+IHBWxdBBjKCENzeRWXMjIsVcQL3bPswzu6BTKXdBeNDJvIgqbkofEcyTd0R0111Lvl3ltUAiw== X-Received: by 2002:a05:6a20:a123:b0:1b1:f7a1:df91 with SMTP id adf61e73a8af0-1bae8353db0mr11922437637.61.1718670971664; Mon, 17 Jun 2024 17:36:11 -0700 (PDT) Received: from dianders.sjc.corp.google.com ([2620:15c:9d:2:1798:e71b:11ad:8b94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-705ccb99f4dsm7905917b3a.216.2024.06.17.17.36.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Jun 2024 17:36:10 -0700 (PDT) From: Douglas Anderson To: Daniel Thompson Cc: kgdb-bugreport@lists.sourceforge.net, Douglas Anderson , Christophe JAILLET , Jason Wessel , Thorsten Blum , Yuran Pereira , linux-kernel@vger.kernel.org Subject: [PATCH 03/13] kdb: Use "bool" in "md" implementation where appropriate Date: Mon, 17 Jun 2024 17:34:37 -0700 Message-ID: <20240617173426.3.I0ca82391856da1ee8c1c10b7ecf62b4dc0405aa0@changeid> X-Mailer: git-send-email 2.45.2.627.g7a2c4fd464-goog In-Reply-To: <20240618003546.4144638-1-dianders@chromium.org> References: <20240618003546.4144638-1-dianders@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Like much of kdb, the "md" implementation used the "int" type to store boolean values and used 0 for false and 1 for true. While this worked (and used to be the only way to do things back in the day), we've had "bool" for a lot of years now. Move the "md" functions to use "bool". While touching this, we touch a line next to a comment using a style that's nonstandard for the kdb codebase. Update it in passing. Signed-off-by: Douglas Anderson --- kernel/debug/kdb/kdb_main.c | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c index 47e037c3c002..88121334d189 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c @@ -1521,8 +1521,8 @@ static int kdb_mdr(unsigned long addr, unsigned int c= ount) * See the kdb help for syntax. */ static void kdb_md_line(const char *fmtstr, unsigned long addr, - int symbolic, int nosect, int bytesperword, - int num, int repeat, int phys) + bool symbolic, bool nosect, int bytesperword, + int num, int repeat, bool phys) { /* print just one line of data */ kdb_symtab_t symtab; @@ -1590,15 +1590,15 @@ static int kdb_md(int argc, const char **argv) static unsigned long last_addr; static int last_radix, last_bytesperword, last_repeat; int radix =3D 16, mdcount =3D 8, bytesperword =3D KDB_WORD_SIZE, repeat; - int nosect =3D 0; char fmtchar, fmtstr[64]; unsigned long addr; unsigned long word; long offset =3D 0; - int symbolic =3D 0; - int valid =3D 0; - int phys =3D 0; - int raw =3D 0; + bool nosect =3D false; + bool symbolic =3D false; + bool valid =3D false; + bool phys =3D false; + bool raw =3D false; =20 kdbgetintenv("MDCOUNT", &mdcount); kdbgetintenv("RADIX", &radix); @@ -1609,7 +1609,7 @@ static int kdb_md(int argc, const char **argv) =20 if (strcmp(argv[0], "mdr") =3D=3D 0) { if (argc =3D=3D 2 || (argc =3D=3D 0 && last_addr !=3D 0)) - valid =3D raw =3D 1; + valid =3D raw =3D true; else return KDB_ARGCOUNT; } else if (isdigit(argv[0][2])) { @@ -1622,7 +1622,7 @@ static int kdb_md(int argc, const char **argv) last_bytesperword =3D bytesperword; repeat =3D mdcount * 16 / bytesperword; if (!argv[0][3]) - valid =3D 1; + valid =3D true; else if (argv[0][3] =3D=3D 'c' && argv[0][4]) { char *p; repeat =3D simple_strtoul(argv[0] + 4, &p, 10); @@ -1631,11 +1631,11 @@ static int kdb_md(int argc, const char **argv) } last_repeat =3D repeat; } else if (strcmp(argv[0], "md") =3D=3D 0) - valid =3D 1; + valid =3D true; else if (strcmp(argv[0], "mds") =3D=3D 0) - valid =3D 1; + valid =3D true; else if (strcmp(argv[0], "mdp") =3D=3D 0) { - phys =3D valid =3D 1; + phys =3D valid =3D true; } if (!valid) return KDB_NOTFOUND; @@ -1730,13 +1730,19 @@ static int kdb_md(int argc, const char **argv) last_bytesperword =3D bytesperword; =20 if (strcmp(argv[0], "mds") =3D=3D 0) { - symbolic =3D 1; - /* Do not save these changes as last_*, they are temporary mds + int tmp; + + symbolic =3D true; + + /* + * Do not save these changes as last_*, they are temporary mds * overrides. */ bytesperword =3D KDB_WORD_SIZE; repeat =3D mdcount; - kdbgetintenv("NOSECT", &nosect); + + if (!kdbgetintenv("NOSECT", &tmp)) + nosect =3D tmp; } =20 /* Round address down modulo BYTESPERWORD */ --=20 2.45.2.627.g7a2c4fd464-goog From nobody Wed Dec 17 06:08:54 2025 Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9D88817740 for ; Tue, 18 Jun 2024 00:36:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670976; cv=none; b=MBBWREsYMNL4mpZJbM7zyP4OF47lErVQ3LQ9oTk0ZSGiDTzKZMFGkVdxpcmkbSDUyUvha6i2UoB2YJ9+1aciElspQo0n3s29uQ2WE7BPkPCrCl60DgVeTc1MQXq/b/SYxYRhAAgdjNTOscn3s8Ltk5Cm+/7Yd9gV/Xw+/88hA/o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670976; c=relaxed/simple; bh=/SSjdDVqQyNT/TV3r0qmTYxjOdxHSoIZQX5aOSOSlPI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gtMpgIMIW+rt+S/FtRmD2H1iZ9maS+uANOu0TzASmhZu+EiBHw00NEPAyX5c9TI0X0DcT7XsZddOSFgnaNZSIqit6wsc45MXWReE8x9jFeztr+lCNDLTJG5rP9bqrWt5i9mo9cSPQuDLWO26g1PYWgY+m5gJx7VdYV3HJmEPPQg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=SKhJKzOW; arc=none smtp.client-ip=209.85.210.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="SKhJKzOW" Received: by mail-pf1-f173.google.com with SMTP id d2e1a72fcca58-70436048c25so3768592b3a.0 for ; Mon, 17 Jun 2024 17:36:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1718670974; x=1719275774; darn=vger.kernel.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=KQYuSB3bJKGmbINp6Hrk5oG47YXbeJRhUUPAWV3K+Mo=; b=SKhJKzOWx030ch0VS4NeoRJ+zHLJ6SUqRnK3U7Or46zRGfjnPC6DHmHHJq3YM5q21y E1tA+x1ctAl2pwVQA5CeGTyiHEcYBWiIZg0qydN4Lq0IRBgvvpi70vMacz4fnOZMyPtb f99tYZWh1/Zerz/0VKuPHSuz6Byzw5jqBlmPU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718670974; x=1719275774; 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=KQYuSB3bJKGmbINp6Hrk5oG47YXbeJRhUUPAWV3K+Mo=; b=NSzu03+O2glPE+VIn2i6LcAxqLQ7QvfOqWKSylLgIJyvuwjsS/mDxvuj77qmZkjHt/ /r9jGMcovNGrH1ejXlfhvs0DFW1Hcu9cHphWu1Qf/vYRs68pjOk/d2XrfJF6Rt8mXvXV q7FyXTuzGTcMVg/K3p2Z+vc5YPgslu0JMsbrd3xtS1k4x2f/Y+G12GWn33YNQUjl7YQH V2S/c8yERBHK8lwdSe+IMd2U2n04gN+ewprWwU6BVAFaoWqZPlBNMZ34hpATrjwsdOCf Q07dGhTbTfkZgU4w755ukfFz2/2ULOdsVdsbaNrc1f8aJBUO1/bG/daBuCCHojOHBKqs mzSA== X-Forwarded-Encrypted: i=1; AJvYcCXXLGQ2ye//io0R/GW9iJh+MvSsGrm10C3Vgdd676M/xSUxc9jAMEN4qjPtNgeBz2X26qAfV/iFCUj63RFenAE1o8NAmJaQyb8ZnffA X-Gm-Message-State: AOJu0YyTXW8BC8aWEctP2+NlsL3qZn/d/oEay5/9MkoIqGYtqBOhwu0g PpHpbTyq08tPeAs2rnFusYRKF5yEbOAVGBYxLWBL82ndLIo0dwy/VCdm+D2PbQ== X-Google-Smtp-Source: AGHT+IEeFrChFFKl6KwDuaajAmeP4HwLauX0HfkUNOPVlvxpRkkIIlBcTlhqDr0oERw4GC7UM86DHw== X-Received: by 2002:a05:6a21:339f:b0:1b6:3fc5:d08b with SMTP id adf61e73a8af0-1bae823dbb8mr11068909637.40.1718670973958; Mon, 17 Jun 2024 17:36:13 -0700 (PDT) Received: from dianders.sjc.corp.google.com ([2620:15c:9d:2:1798:e71b:11ad:8b94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-705ccb99f4dsm7905917b3a.216.2024.06.17.17.36.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Jun 2024 17:36:12 -0700 (PDT) From: Douglas Anderson To: Daniel Thompson Cc: kgdb-bugreport@lists.sourceforge.net, Douglas Anderson , Christophe JAILLET , Jason Wessel , Thorsten Blum , Yuran Pereira , linux-kernel@vger.kernel.org Subject: [PATCH 04/13] kdb: Drop "offset" and "name" args to kdbgetaddrarg() Date: Mon, 17 Jun 2024 17:34:38 -0700 Message-ID: <20240617173426.4.Ie746acb6e0908f2f3328878e4aba7661d3daad7c@changeid> X-Mailer: git-send-email 2.45.2.627.g7a2c4fd464-goog In-Reply-To: <20240618003546.4144638-1-dianders@chromium.org> References: <20240618003546.4144638-1-dianders@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Every caller to kdbgetaddrarg() didn't care about the "offset" and "name" returned by the function. Some passed NULL and some passed the address of a bogus local variable that was never looked at. Drop the arguments. Signed-off-by: Douglas Anderson --- kernel/debug/kdb/kdb_bp.c | 5 +---- kernel/debug/kdb/kdb_bt.c | 4 +--- kernel/debug/kdb/kdb_main.c | 37 ++++++++-------------------------- kernel/debug/kdb/kdb_private.h | 4 ++-- 4 files changed, 12 insertions(+), 38 deletions(-) diff --git a/kernel/debug/kdb/kdb_bp.c b/kernel/debug/kdb/kdb_bp.c index 372025cf1ca3..98659f7dd744 100644 --- a/kernel/debug/kdb/kdb_bp.c +++ b/kernel/debug/kdb/kdb_bp.c @@ -279,8 +279,6 @@ static int kdb_bp(int argc, const char **argv) int i, bpno; kdb_bp_t *bp, *bp_check; int diag; - char *symname =3D NULL; - long offset =3D 0ul; int nextarg; kdb_bp_t template =3D {0}; =20 @@ -299,8 +297,7 @@ static int kdb_bp(int argc, const char **argv) } =20 nextarg =3D 1; - diag =3D kdbgetaddrarg(argc, argv, &nextarg, &template.bp_addr, - &offset, &symname); + diag =3D kdbgetaddrarg(argc, argv, &nextarg, &template.bp_addr); if (diag) return diag; if (!template.bp_addr) diff --git a/kernel/debug/kdb/kdb_bt.c b/kernel/debug/kdb/kdb_bt.c index 10b454554ab0..af86744c1e2f 100644 --- a/kernel/debug/kdb/kdb_bt.c +++ b/kernel/debug/kdb/kdb_bt.c @@ -130,7 +130,6 @@ kdb_bt(int argc, const char **argv) int btaprompt =3D 1; int nextarg; unsigned long addr; - long offset; =20 /* Prompt after each proc in bta */ kdbgetintenv("BTAPROMPT", &btaprompt); @@ -205,8 +204,7 @@ kdb_bt(int argc, const char **argv) } else { if (argc) { nextarg =3D 1; - diag =3D kdbgetaddrarg(argc, argv, &nextarg, &addr, - &offset, NULL); + diag =3D kdbgetaddrarg(argc, argv, &nextarg, &addr); if (diag) return diag; kdb_show_stack(kdb_current_task, (void *)addr); diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c index 88121334d189..74db5c0cc5ad 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c @@ -532,16 +532,12 @@ static int kdb_check_regs(void) * regs - Register state at time of KDB entry * Outputs: * *value - receives the value of the address-expression - * *offset - receives the offset specified, if any - * *name - receives the symbol name, if any * *nextarg - index to next unparsed argument in argv[] * Returns: * zero is returned on success, a kdb diagnostic code is * returned on error. */ -int kdbgetaddrarg(int argc, const char **argv, int *nextarg, - unsigned long *value, long *offset, - char **name) +int kdbgetaddrarg(int argc, const char **argv, int *nextarg, unsigned long= *value) { unsigned long addr; unsigned long off =3D 0; @@ -615,12 +611,8 @@ int kdbgetaddrarg(int argc, const char **argv, int *ne= xtarg, =20 (*nextarg)++; =20 - if (name) - *name =3D symname; if (value) *value =3D addr; - if (offset && name && *name) - *offset =3D addr - symtab.sym_start; =20 if ((*nextarg > argc) && (symbol =3D=3D '\0')) @@ -664,9 +656,6 @@ int kdbgetaddrarg(int argc, const char **argv, int *nex= targ, if (!positive) off =3D -off; =20 - if (offset) - *offset +=3D off; - if (value) *value +=3D off; =20 @@ -1116,14 +1105,10 @@ int kdb_parse(const char *cmdstr) */ { unsigned long value; - char *name =3D NULL; - long offset; int nextarg =3D 0; =20 - if (kdbgetaddrarg(0, (const char **)argv, &nextarg, - &value, &offset, &name)) { + if (kdbgetaddrarg(0, (const char **)argv, &nextarg, &value)) return KDB_NOTFOUND; - } =20 kdb_printf("%s =3D ", argv[0]); kdb_symbol_print(value, NULL, KDB_SP_DEFAULT); @@ -1593,7 +1578,6 @@ static int kdb_md(int argc, const char **argv) char fmtchar, fmtstr[64]; unsigned long addr; unsigned long word; - long offset =3D 0; bool nosect =3D false; bool symbolic =3D false; bool valid =3D false; @@ -1656,8 +1640,7 @@ static int kdb_md(int argc, const char **argv) if (argc) { unsigned long val; int diag, nextarg =3D 1; - diag =3D kdbgetaddrarg(argc, argv, &nextarg, &addr, - &offset, NULL); + diag =3D kdbgetaddrarg(argc, argv, &nextarg, &addr); if (diag) return diag; if (argc > nextarg+2) @@ -1793,7 +1776,6 @@ static int kdb_mm(int argc, const char **argv) { int diag; unsigned long addr; - long offset =3D 0; unsigned long contents; int nextarg; int width; @@ -1805,13 +1787,13 @@ static int kdb_mm(int argc, const char **argv) return KDB_ARGCOUNT; =20 nextarg =3D 1; - diag =3D kdbgetaddrarg(argc, argv, &nextarg, &addr, &offset, NULL); + diag =3D kdbgetaddrarg(argc, argv, &nextarg, &addr); if (diag) return diag; =20 if (nextarg > argc) return KDB_ARGCOUNT; - diag =3D kdbgetaddrarg(argc, argv, &nextarg, &contents, NULL, NULL); + diag =3D kdbgetaddrarg(argc, argv, &nextarg, &contents); if (diag) return diag; =20 @@ -1837,7 +1819,6 @@ static int kdb_go(int argc, const char **argv) unsigned long addr; int diag; int nextarg; - long offset; =20 if (raw_smp_processor_id() !=3D kdb_initial_cpu) { kdb_printf("go must execute on the entry cpu, " @@ -1847,8 +1828,7 @@ static int kdb_go(int argc, const char **argv) } if (argc =3D=3D 1) { nextarg =3D 1; - diag =3D kdbgetaddrarg(argc, argv, &nextarg, - &addr, &offset, NULL); + diag =3D kdbgetaddrarg(argc, argv, &nextarg, &addr); if (diag) return diag; } else if (argc) { @@ -2043,14 +2023,13 @@ static int kdb_ef(int argc, const char **argv) { int diag; unsigned long addr; - long offset; int nextarg; =20 if (argc !=3D 1) return KDB_ARGCOUNT; =20 nextarg =3D 1; - diag =3D kdbgetaddrarg(argc, argv, &nextarg, &addr, &offset, NULL); + diag =3D kdbgetaddrarg(argc, argv, &nextarg, &addr); if (diag) return diag; show_regs((struct pt_regs *)addr); @@ -2547,7 +2526,7 @@ static int kdb_per_cpu(int argc, const char **argv) if (argc < 1 || argc > 3) return KDB_ARGCOUNT; =20 - diag =3D kdbgetaddrarg(argc, argv, &nextarg, &symaddr, NULL, NULL); + diag =3D kdbgetaddrarg(argc, argv, &nextarg, &symaddr); if (diag) return diag; =20 diff --git a/kernel/debug/kdb/kdb_private.h b/kernel/debug/kdb/kdb_private.h index 548fd4059bf9..1f685d9f16f9 100644 --- a/kernel/debug/kdb/kdb_private.h +++ b/kernel/debug/kdb/kdb_private.h @@ -105,8 +105,8 @@ extern int kdb_putword(unsigned long, unsigned long, si= ze_t); extern int kdbgetularg(const char *, unsigned long *); extern int kdbgetu64arg(const char *, u64 *); extern char *kdbgetenv(const char *); -extern int kdbgetaddrarg(int, const char **, int*, unsigned long *, - long *, char **); +extern int kdbgetaddrarg(int argc, const char **argv, int *nextarg, + unsigned long *value); extern int kdbgetsymval(const char *, kdb_symtab_t *); extern int kdbnearsym(unsigned long, kdb_symtab_t *); extern char *kdb_strdup(const char *str, gfp_t type); --=20 2.45.2.627.g7a2c4fd464-goog From nobody Wed Dec 17 06:08:54 2025 Received: from mail-pf1-f176.google.com (mail-pf1-f176.google.com [209.85.210.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E6F8D1CD2D for ; Tue, 18 Jun 2024 00:36:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670978; cv=none; b=Sm93WGTt0obEjOgP6nfjZ0PRRX96DvnlfaG31is3l+7cmDi2NllEXMUtwOKL0YoO3wYBdYkAK4o0anbLraxb98OHtq46zjnWbXuBX/HuphIo5YK77HBtJrxED+DnNpMTuXu3Hqs2e7yR78gTD3dwcbJHZGXca2rhxb+BsjJ5Gb0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670978; c=relaxed/simple; bh=PvC8MJAkjfyVNSqDlr6ZTCW69VpT5LCALdZyMxYPxZk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mTISA+VkNSwVny7qbnC/CL53VWm2yvajKe65ysOzzCWaxKLNBaKwHemgComk6+PhFEqj1+Xvys7nzpLpQBJJ4PnwlEbCH+dCEfV4nG9ECGxE82IDP6g8BtPkkiXMoiBZ62m27Rk2F4h9G4K9r3Y5f5cWQE7KCdGc2Ju/Rm+h85w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=ZM0MxyIP; arc=none smtp.client-ip=209.85.210.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="ZM0MxyIP" Received: by mail-pf1-f176.google.com with SMTP id d2e1a72fcca58-703ed15b273so3694974b3a.1 for ; Mon, 17 Jun 2024 17:36:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1718670976; x=1719275776; darn=vger.kernel.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=Y9UVS8jw65Qz1/+IKa1gxs23pkU4dvWn+yfPVR/mXAo=; b=ZM0MxyIP5ogiTpz3hrhlLxvGAjJiWcD9qS8R5Hx4JVDVwBsCQkmYTByTJjcrC8gqYY 1X+NUJcAx1BpUsvpgfc20nW0yheaRDgM45uAnXt9dTKNH5Ll1wj4fVmkLHIMr24wEnol BICMYZUC6/n4o39SWFmEgoSBdbumwNuwLfY8o= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718670976; x=1719275776; 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=Y9UVS8jw65Qz1/+IKa1gxs23pkU4dvWn+yfPVR/mXAo=; b=A/+O6W5WEy6lqIkHKQMMmEPZIoo2/HcLAdBlBoNpCaZXZyAyfqUkA2rfoqKzUAP1KT IMHbz/3vRvG5S6prQOxTNQnZi0bo5N8ae7yFL3r8x1LtTGMufotI5kWviyynaTLXELnh 7DEsHTnGTwzAdDnHPraiYflul0x9qOQyJirzi9R9tpndsS2Voa55NyZnD3jscZuVM6CZ SzfOjEx6YeT8UuRbMwC4Sq7MWE8mN+ZLgogkaMoyxnQPP+dzq9eOQpjp1gmqw5OS1sju Wb1Pg6wpap/ZuFUamC7bu9e/JeNBUJqsvfKw/9rHFda1pr0QaZYDBDDTilL4wuohNlEF XctQ== X-Forwarded-Encrypted: i=1; AJvYcCXwCK4qoGc6Q8fRp4vjUHn0+IuhVOSfVv8d894VmJL/41W0cyl5C+HJolvMPQvF8H6aECT/8YToT3+qhzzSmlFRp8JL0XvZ2wbeB9of X-Gm-Message-State: AOJu0YzGeszYM3z3+VY+7P+hnd2ApufZKtkvfqzgBiv00o+huyALXknZ vVQPQy76tMMVpWEg0gNinu7X9NrAfpuoPbFacxyzOVL2YlezZ/72Kcg6bmRib9kSPySkCMDjcSQ = X-Google-Smtp-Source: AGHT+IFNSXKhTjNPopEgrBnDWo98qLA1DR2sonPJKag3KcUKtT0bl/mkZiZsBPqQEuWwT7WklHnpPA== X-Received: by 2002:a05:6a20:3d84:b0:1b6:e885:1bb4 with SMTP id adf61e73a8af0-1bae7f30cd4mr12933946637.37.1718670976149; Mon, 17 Jun 2024 17:36:16 -0700 (PDT) Received: from dianders.sjc.corp.google.com ([2620:15c:9d:2:1798:e71b:11ad:8b94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-705ccb99f4dsm7905917b3a.216.2024.06.17.17.36.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Jun 2024 17:36:14 -0700 (PDT) From: Douglas Anderson To: Daniel Thompson Cc: kgdb-bugreport@lists.sourceforge.net, Douglas Anderson , Christophe JAILLET , Jason Wessel , Thorsten Blum , Yuran Pereira , linux-kernel@vger.kernel.org Subject: [PATCH 05/13] kdb: Separate out "mdr" handling Date: Mon, 17 Jun 2024 17:34:39 -0700 Message-ID: <20240617173426.5.I2d17f61d496641d28c778be587b36d138a211e50@changeid> X-Mailer: git-send-email 2.45.2.627.g7a2c4fd464-goog In-Reply-To: <20240618003546.4144638-1-dianders@chromium.org> References: <20240618003546.4144638-1-dianders@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Though the "mdr" has a similar purpose to the other "md" commands in that they all display memory, the actual code to implement it has almost nothing in common with the rest of the commands. Separate things out. Signed-off-by: Douglas Anderson Reviewed-by: Daniel Thompson --- kernel/debug/kdb/kdb_main.c | 65 ++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 34 deletions(-) diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c index 74db5c0cc5ad..c013b014a7d3 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c @@ -1480,23 +1480,42 @@ int kdb_main_loop(kdb_reason_t reason, kdb_reason_t= reason2, int error, /* * kdb_mdr - This function implements the guts of the 'mdr', memory * read command. - * mdr , - * Inputs: - * addr Start address - * count Number of bytes - * Returns: - * Always 0. Any errors are detected and printed by kdb_getarea. + * mdr */ -static int kdb_mdr(unsigned long addr, unsigned int count) +static int kdb_mdr(int argc, const char **argv) { + static unsigned long addr; + static unsigned long count; unsigned char c; - while (count--) { + unsigned long i; + int diag; + + /* + * Parse args. The only valid options are argc =3D=3D 2 (both address and + * byte_count provided) and argc =3D=3D 0 ("repeat" AKA continue previous + * display). + */ + if (argc =3D=3D 2) { + int nextarg =3D 1; + + diag =3D kdbgetaddrarg(argc, argv, &nextarg, &addr); + if (diag) + return diag; + diag =3D kdbgetularg(argv[nextarg], &count); + if (diag) + return diag; + } else if (argc !=3D 0) { + return KDB_ARGCOUNT; + } + + for (i =3D 0; i < count; i++) { if (kdb_getarea(c, addr)) return 0; kdb_printf("%02x", c); addr++; } kdb_printf("\n"); + return 0; } =20 @@ -1582,7 +1601,6 @@ static int kdb_md(int argc, const char **argv) bool symbolic =3D false; bool valid =3D false; bool phys =3D false; - bool raw =3D false; =20 kdbgetintenv("MDCOUNT", &mdcount); kdbgetintenv("RADIX", &radix); @@ -1591,12 +1609,7 @@ static int kdb_md(int argc, const char **argv) /* Assume 'md ' and start with environment values */ repeat =3D mdcount * 16 / bytesperword; =20 - if (strcmp(argv[0], "mdr") =3D=3D 0) { - if (argc =3D=3D 2 || (argc =3D=3D 0 && last_addr !=3D 0)) - valid =3D raw =3D true; - else - return KDB_ARGCOUNT; - } else if (isdigit(argv[0][2])) { + if (isdigit(argv[0][2])) { bytesperword =3D (int)(argv[0][2] - '0'); if (bytesperword =3D=3D 0) { bytesperword =3D last_bytesperword; @@ -1631,10 +1644,7 @@ static int kdb_md(int argc, const char **argv) radix =3D last_radix; bytesperword =3D last_bytesperword; repeat =3D last_repeat; - if (raw) - mdcount =3D repeat; - else - mdcount =3D ((repeat * bytesperword) + 15) / 16; + mdcount =3D ((repeat * bytesperword) + 15) / 16; } =20 if (argc) { @@ -1650,10 +1660,7 @@ static int kdb_md(int argc, const char **argv) diag =3D kdbgetularg(argv[nextarg], &val); if (!diag) { mdcount =3D (int) val; - if (raw) - repeat =3D mdcount; - else - repeat =3D mdcount * 16 / bytesperword; + repeat =3D mdcount * 16 / bytesperword; } } if (argc >=3D nextarg+1) { @@ -1663,16 +1670,6 @@ static int kdb_md(int argc, const char **argv) } } =20 - if (strcmp(argv[0], "mdr") =3D=3D 0) { - int ret; - last_addr =3D addr; - ret =3D kdb_mdr(addr, mdcount); - last_addr +=3D mdcount; - last_repeat =3D mdcount; - last_bytesperword =3D bytesperword; // to make REPEAT happy - return ret; - } - switch (radix) { case 10: fmtchar =3D 'd'; @@ -2680,7 +2677,7 @@ static kdbtab_t maintab[] =3D { .flags =3D KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS, }, { .name =3D "mdr", - .func =3D kdb_md, + .func =3D kdb_mdr, .usage =3D " ", .help =3D "Display RAM as a stream of raw bytes", .flags =3D KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS, --=20 2.45.2.627.g7a2c4fd464-goog From nobody Wed Dec 17 06:08:54 2025 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1D3AA20310 for ; Tue, 18 Jun 2024 00:36:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670980; cv=none; b=jDXXXDHkIZVIQom9V1su0VrB/bLzRvOHy/0CPFVM41kfxmHeC0CadBPPElv+F9solSCB9cD3CcjsyX7AMYh81ht1hTbzFd6d0FCfbd/cZAqJ+diRUq7SIltkQwgc5l1mJhU/vrQIwFZdceYN1yZWwzBdZ12d+chTx9ZUkdBT3t0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670980; c=relaxed/simple; bh=VqV1fDw2Zlc+m3rdHu2iF9oyLQ5D6wuqsU87JbobZZs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Esc7yLItOOxgzGTkpnJr1cW5hjsH9Fwa0ey/9+Qa1ASG35oylR7XNrZ6vl3AO9JRYrOWspL6caixEDUuBWJLs97v5k7IUqUptk3OHx06OwOkjmfGeofTfQBjXGK82oqmKpdqNmS7T9kUvm6+nPd7dHoEbNUct5z/VoZT0G92ZoE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=NV+xiIy5; arc=none smtp.client-ip=209.85.210.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="NV+xiIy5" Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-7043102dcc1so4412998b3a.2 for ; Mon, 17 Jun 2024 17:36:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1718670978; x=1719275778; darn=vger.kernel.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=jXtDQlH3qupn0qZjK7Kqht//pAWQBswDysjbTh2Fp0I=; b=NV+xiIy5QCL1SIGU9IGhlfDoRXlNIEB2H5EOa/B9BTCKzGON6v53DYfId6ogG3gWKm 3zz6tJb0YRtlMUiec91HhhnAOWOYfZVBjGfnYKXSD7osNvlVR2f/1oiV1LWO4BXbNnr5 L7RCjXBjAp6deYqZ6AhanNesKBIOcECNXrEbY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718670978; x=1719275778; 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=jXtDQlH3qupn0qZjK7Kqht//pAWQBswDysjbTh2Fp0I=; b=OXM4lQC7os/1fYPIxOFlAGtVX4nclE3YEaI1uxNRtZCNLrZeaZtBg+WAvyLX6ld0k9 KuzxyVf5KLL6LmmQv28Kjj7ri8DF5mehMfapiLpfHhTJyUqMHiIkYtpvYF22b5BLJ1Dq nAda9JXfgMwcOjh4O4x1Ma4uo3i4/J1zFLY8S3Km5TQ3C1X6fj2BXoc1QNO8W4ALfgqZ wwdtsoyXOde0vMQWiPPAb2fLxygVO85pwB/RKSPeMeuufZaEU++WbYDszvzRV205dwZ/ xZQ/2XMcSDON2ymKAGMyIur8w6vE7XwK3mbYUUSk/8LrFeQwrTzQ/fhvrRNj/JDeN/D7 beqg== X-Forwarded-Encrypted: i=1; AJvYcCXqqpCUUHC75viExTRped4NvA39PVq9MY2f9hk1lyviVB/Xm1pOIoNPf55hcx/1TklJQmN7nGOr9UXgJhjhkxU5XJiS5XfkYpzzKLdF X-Gm-Message-State: AOJu0YzdwvMbVaqqxhF3jBS+gLEGS9g8KEePPRirjo7EdEuYo7JGgFz8 IIMNz8hWljBYw/ADHEaRWaImrjVRSCqiM+OsjDpF+rl3rtrXse+HZiv67K6PFw== X-Google-Smtp-Source: AGHT+IH/u84DuulPXx+yw5N5bMm6/HzUFv8lvpttz7Qy/cBPuO4uzd7/a1OmwA0vYyZyQV7iEYNYpg== X-Received: by 2002:a05:6a20:7288:b0:1b1:c77f:56c3 with SMTP id adf61e73a8af0-1bae7e0c23dmr13733218637.7.1718670978386; Mon, 17 Jun 2024 17:36:18 -0700 (PDT) Received: from dianders.sjc.corp.google.com ([2620:15c:9d:2:1798:e71b:11ad:8b94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-705ccb99f4dsm7905917b3a.216.2024.06.17.17.36.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Jun 2024 17:36:17 -0700 (PDT) From: Douglas Anderson To: Daniel Thompson Cc: kgdb-bugreport@lists.sourceforge.net, Douglas Anderson , Christophe JAILLET , Jason Wessel , Thorsten Blum , Yuran Pereira , linux-kernel@vger.kernel.org Subject: [PATCH 06/13] kdb: Remove "mdW" and "mdWcN" handling of "W" == 0 Date: Mon, 17 Jun 2024 17:34:40 -0700 Message-ID: <20240617173426.6.Ia1d546061f9430a90df0e7521097040e0e939c58@changeid> X-Mailer: git-send-email 2.45.2.627.g7a2c4fd464-goog In-Reply-To: <20240618003546.4144638-1-dianders@chromium.org> References: <20240618003546.4144638-1-dianders@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The "mdW" and "mdWcN" generally lets the user control more carefully what word size we display memory in and exactly how many words should be displayed. Specifically, "md4" says to display memory w/ 4 bytes-per word and "md4c6" says to display 6 words of memory w/ 4-bytes-per word. The kdb "md" implementation has a special rule for when "W" is 0. In this case: * If you run with "W" =3D=3D 0 and you've never run a kdb "md" command this reboot then it will pick 4 bytes-per-word, ignoring the normal default from the environment. * If you run with "W" =3D=3D 0 and you've run a kdb "md" command this reboot then it will pick up the bytes per word of the last command. As an example: [1]kdb> md2 0xffffff80c8e2b280 1 0xffffff80c8e2b280 0200 0000 0000 0000 e000 8235 0000 0000 ... [1]kdb> md0 0xffffff80c8e2b280 1 0xffffff80c8e2b280 0200 0000 0000 0000 e000 8235 0000 0000 ... [1]kdb> md 0xffffff80c8e2b280 1 0xffffff80c8e2b280 0000000000000200 000000008235e000 ... [1]kdb> md0 0xffffff80c8e2b280 1 0xffffff80c8e2b280 0000000000000200 000000008235e000 ... This doesn't seem like particularly useful behavior and adds a bunch of complexity to the arg parsing. Remove it. Signed-off-by: Douglas Anderson --- kernel/debug/kdb/kdb_main.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c index c013b014a7d3..700b4e355545 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c @@ -1611,11 +1611,6 @@ static int kdb_md(int argc, const char **argv) =20 if (isdigit(argv[0][2])) { bytesperword =3D (int)(argv[0][2] - '0'); - if (bytesperword =3D=3D 0) { - bytesperword =3D last_bytesperword; - if (bytesperword =3D=3D 0) - bytesperword =3D 4; - } last_bytesperword =3D bytesperword; repeat =3D mdcount * 16 / bytesperword; if (!argv[0][3]) --=20 2.45.2.627.g7a2c4fd464-goog From nobody Wed Dec 17 06:08:54 2025 Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 38D762263A for ; Tue, 18 Jun 2024 00:36:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670982; cv=none; b=IjfMpKIangzmLQGAOraix/wKdkii5B8WChAfLTjj3v4VOD//B6UvR4oBDjaQC8knoR/WUzjPemjAfCeEiPsJjrXy+Jl03P42CGzUlRVKPck9y7e0HYmK69jeZnbvHsegUjBBDBJ9WAwVyS7bfUprsViwE8mME6i2s2GXhef/tMs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670982; c=relaxed/simple; bh=vV5BCl2X2CXWKQEh3jzt8EHrQMlfsVVU0MMSYe2XhSs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YZS7l2D0CKwPfWBqOoLxgAaVv5uY2jZbOukYrwhRhBvi95E+FWiFos0yXBtxKzNDMrtqkYqTFOHPuh/x0hdACSaUTgOz512vMaxKBd46YgkiOUqjcwJbTrs7iHLcPiiS+Ywlqnbf/rcrj5DYIodhLLO8vcnD2UmsMxv5EEkkKCE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=iizLPgnV; arc=none smtp.client-ip=209.85.210.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="iizLPgnV" Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-7061365d2f3so746289b3a.3 for ; Mon, 17 Jun 2024 17:36:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1718670980; x=1719275780; darn=vger.kernel.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=k0wDlLxN8nsz23vuD5cVykEn+53xHNnMwK+3wqmFHa8=; b=iizLPgnVvYAH+UHpIw99CICVki0DH42DZO6t4xfhroKT+sv1iQnqvqTwGIWyY7P3PG JUgKabETkBQjhUA1/cMxF1AeheWxhc0+9dTnUgwmVAFzMMoSOPIs8bwSa/8MYdQuZM++ Re7v8skH4OCqlSs6Gx1DmusUl1S6TnOEb+ZIE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718670980; x=1719275780; 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=k0wDlLxN8nsz23vuD5cVykEn+53xHNnMwK+3wqmFHa8=; b=cMbpR3YCXtfa+RXCHlP4im557sse/7yzwcQI4W42SkkIkYFlaXje0uWGYKMBr59o9d jlLEZAz0JfNKyi7tcfdpUneP6W/XjtR6YqcvqtHoA9qQqXDmGN5FNSxMM404lhErdLC5 xgyNw8EajqtRBA2CrA/ULios2UHx7Dd03JpvuZt9eDsgf0HoqTlv3Z8NiZVx2bi16O16 lRKzWvw+ufbbZuIH7aSv/peCqfXmxjg5X9gK3gL4ZkIjfdGagTMDvmCosSZ9+hL7xZ8h 5cNigqN/zb7MGP797bZFea34cns2B6zX4LcW96gJ8XN8Zh+xY/3jBmx7Qiwb3JEVlB0p jhwA== X-Forwarded-Encrypted: i=1; AJvYcCUEZBvZpOzalplAAkNPEBOX8i6TVYRW7EdyVpGT7ie9IpfDvLzU9lS6R4KvD2LnBuMzbZFWeILXFFHsn/53HWY4Hjh0pRJYMg+hJjwf X-Gm-Message-State: AOJu0YxG1+nCELmCXLIs/e8zaM/48FFwrXwQS9Ca4jklJAjQUbvabqca dN9I/NC6XqSRrS0V6VqsBNFycCZzHSp4a9XYPAsPJ4f8JdtRP+H8MRjBnVsUrw== X-Google-Smtp-Source: AGHT+IFy14sjKwgsvXgu8myES4EXDcuaWAWfoXtGNeK0UrAt4zfV1HHSU27q2aFhIP++Yo5ZHVgVLA== X-Received: by 2002:a05:6a20:12c1:b0:1b5:d143:72e7 with SMTP id adf61e73a8af0-1bae7f0f0b5mr10933240637.32.1718670980430; Mon, 17 Jun 2024 17:36:20 -0700 (PDT) Received: from dianders.sjc.corp.google.com ([2620:15c:9d:2:1798:e71b:11ad:8b94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-705ccb99f4dsm7905917b3a.216.2024.06.17.17.36.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Jun 2024 17:36:19 -0700 (PDT) From: Douglas Anderson To: Daniel Thompson Cc: kgdb-bugreport@lists.sourceforge.net, Douglas Anderson , Christophe JAILLET , Jason Wessel , Thorsten Blum , Yuran Pereira , linux-kernel@vger.kernel.org Subject: [PATCH 07/13] kdb: Tweak "repeat" handling code for "mdW" and "mdWcN" Date: Mon, 17 Jun 2024 17:34:41 -0700 Message-ID: <20240617173426.7.Ie8aa2af2df12c2e9dc510f003a301401a1ac97fb@changeid> X-Mailer: git-send-email 2.45.2.627.g7a2c4fd464-goog In-Reply-To: <20240618003546.4144638-1-dianders@chromium.org> References: <20240618003546.4144638-1-dianders@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In general, "md"-style commands are meant to be "repeated". This is a feature of kdb and "md"-style commands get it enabled because they have the flag KDB_REPEAT_NO_ARGS. What this means is that if you type "md4c2 0xffffff808ef05400" and then keep hitting return on the "kdb>" prompt that you'll read more and more memory. For instance: [5]kdb> md4c2 0xffffff808ef05400 0xffffff808ef05400 00000204 00000000 ........ [5]kdb> 0xffffff808ef05408 8235e000 00000000 ..5..... [5]kdb> 0xffffff808ef05410 00000003 00000001 ........ As a side effect of the way kdb works is implemented, you can get the same behavior as the above by typing the command again with no arguments. Though it seems unlikely anyone would do this it shouldn't really hurt: [5]kdb> md4c2 0xffffff808ef05400 0xffffff808ef05400 00000204 00000000 ........ [5]kdb> md4c2 0xffffff808ef05408 8235e000 00000000 ..5..... [5]kdb> md4c2 0xffffff808ef05410 00000003 00000001 ........ In general supporting "repeat" should be easy. If argc is 0 then we just copy the results of the arg parsing from the last time, making sure that the address has been updated. This is all handled nicely in the "if (argc =3D=3D 0)" clause in kdb_md(). Oddly, the "mdW" and "mdWcN" code seems to update "last_bytesperword" and "last_repeat", which doesn't seem like it should be necessary. It appears that this code is needed to make this use case work, though it's a bit unclear if this is truly an important feature to support: [1]kdb> md2c3 0xffffff80c8e2b280 0xffffff80c8e2b280 0200 0000 0000 ... [1]kdb> md2c4 0xffffff80c8e2b286 0000 e000 8235 0000 ... In order to abstract the code better, remove the code updating "last_bytesperword" and "last_repeat" from the "mdW" and "mdWcN" handling. This breaks the above case where the user tweaked "argv[0]" and then tried to somehow leverage the "repeat" code to do something smart, but that feels like it was a misfeature anyway. Signed-off-by: Douglas Anderson --- kernel/debug/kdb/kdb_main.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c index 700b4e355545..3c6fffa8509a 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c @@ -1611,7 +1611,6 @@ static int kdb_md(int argc, const char **argv) =20 if (isdigit(argv[0][2])) { bytesperword =3D (int)(argv[0][2] - '0'); - last_bytesperword =3D bytesperword; repeat =3D mdcount * 16 / bytesperword; if (!argv[0][3]) valid =3D true; @@ -1621,7 +1620,6 @@ static int kdb_md(int argc, const char **argv) mdcount =3D ((repeat * bytesperword) + 15) / 16; valid =3D !*p; } - last_repeat =3D repeat; } else if (strcmp(argv[0], "md") =3D=3D 0) valid =3D true; else if (strcmp(argv[0], "mds") =3D=3D 0) --=20 2.45.2.627.g7a2c4fd464-goog From nobody Wed Dec 17 06:08:54 2025 Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 68ED02AC17 for ; Tue, 18 Jun 2024 00:36:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670984; cv=none; b=gTADbesFlQ7r1XCjLPu3cRIhI008GjFIDsTX4ow1mHx4m0T6MzVjFDChHMDbZv/rCSrNDDnXO6RCZ0TOfq29CW4BtM6IFlImV918wFIHxLZA1zVxFOKxBXXqh1HOLDuRXdRpugV+fpVM2YsHFD4bif6NwPrA77JsT3RvFOa0Mcs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670984; c=relaxed/simple; bh=GzKjrmPoaOGIYKdY1FU4/JkYXj3Io1DSQNGDw3f/H5s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZDW4Afq4kK0v5JPlh+CfyEWrV2kHMzc1NTKI/Bfd9yg84Gz3vSXFNv+arkr6pbbJrMZY+Cafyg5uoFp7pA67eYHSDzgXylOqrjiUZPyTnKOVy3zqTQqhr6BrY+nqDFMVJg2jF+t4YlqPZL7CM3ylo/uzPgy/t6XZ2QDA0Ufr+2M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=j44UerGw; arc=none smtp.client-ip=209.85.210.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="j44UerGw" Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-705c0115192so4199937b3a.1 for ; Mon, 17 Jun 2024 17:36:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1718670983; x=1719275783; darn=vger.kernel.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=sujWDpCzra7eIXbOVVbr0PMepNxb1U/8UIoM+bv67a4=; b=j44UerGwTXzvKgLBTnXOtVMLbBqz8xwJJeRRoNPDk8BoPQu7TVEVebblWSO6nhEA1S D7PU8hTtX/EH9NP3fkSEomFeBqkI2Y7eQb/Z59Ah4yg2guVRHkNd39r3LwS91Aaz7Mqg vlEhymEFfnWLGXKCpPlGWahSmIUyWx8675qmc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718670983; x=1719275783; 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=sujWDpCzra7eIXbOVVbr0PMepNxb1U/8UIoM+bv67a4=; b=BLZqe/icDlA7S6TUjnMBdGDMiVJlsCbMWsmtPTnDcGDHFVNh6I0hD+G2plq5QY618x f+61Z0RobtAce1ddaYZobMhTSsIGVA+BoLC9MgD/Mz+JSOf7CRgB4cSkOAgw7BmglU+D mT3Nuz5DJhiY0sakx0McORSEtTDOiLGMOj+5EMpKr/UrN/7DKq8ysxaxJrCRUDTYbsPE JbWIQqdklTfhHUOes+AfbJJm2LlSzrSc/NMldEchZePs7T0vWiPVyqB1NipjWMddRQff 3IzG23jV98bjxfR/8B6Tz+30pNWqg3vIXZWg6BjEJ3HrP1W8ArxKBXo34E3oawz9sJI7 7EmQ== X-Forwarded-Encrypted: i=1; AJvYcCXdLvZf1kPe9vrL1ECsd8Jrjefc7EiImRgh5yRQFEs09z2AA/N9eOVvmZCw1nMV923z9juVZUl9aM2TQpWk/kIE0pbB973G74TDmhQT X-Gm-Message-State: AOJu0YzAneUzcjzN/jBIBp+BAUOnLGFPw1u0QNGCwNDRHz6lVJ72XzYY pLAosvz9aAj2pxRl3u3Av5TSh6xMV1IyE9YWNANnm/feDAMMLdMnPYIqKNF70Q== X-Google-Smtp-Source: AGHT+IEpLA4qgnpA8ZWxX9YCGcU2lRZ/Y4MNvcbNAa0jXwRiQQf5WO3er5XcyvNMnCp+sB+SFmxdkg== X-Received: by 2002:a62:b50c:0:b0:705:94ac:4ab7 with SMTP id d2e1a72fcca58-705d71bd511mr12541879b3a.23.1718670982803; Mon, 17 Jun 2024 17:36:22 -0700 (PDT) Received: from dianders.sjc.corp.google.com ([2620:15c:9d:2:1798:e71b:11ad:8b94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-705ccb99f4dsm7905917b3a.216.2024.06.17.17.36.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Jun 2024 17:36:21 -0700 (PDT) From: Douglas Anderson To: Daniel Thompson Cc: kgdb-bugreport@lists.sourceforge.net, Douglas Anderson , Christophe JAILLET , Jason Wessel , Thorsten Blum , Yuran Pereira , linux-kernel@vger.kernel.org Subject: [PATCH 08/13] kdb: In kdb_md() make `repeat` and `mdcount` calculations more obvious Date: Mon, 17 Jun 2024 17:34:42 -0700 Message-ID: <20240617173426.8.I542e6a7facc29bb6c13e1c39e002b92b643d6d42@changeid> X-Mailer: git-send-email 2.45.2.627.g7a2c4fd464-goog In-Reply-To: <20240618003546.4144638-1-dianders@chromium.org> References: <20240618003546.4144638-1-dianders@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In kdb_md(), the `mdcount` variable is the number of lines that the "md" command will output. In kdb_md(), the `repeat` variable is the number of "words" that the "md" command will output. The relationship between these two variables and how they are specified is a bit convoluted. You can adjust `mdcount` via the MDCOUNT environment variable. You can then override the MDCOUNT environment variable by passing a number of as an argument to the command. You can adjust `repeat` using the `mdWcN` variant of the command where "N" is the number of words to output. The rules for how these get applied right now: * By default, we'll the MDCOUNT environment variable. * If `mdWcN` is used, the repeat will override. * If is specified, the mdcount will override. * When we're "repeating" a previous command (AKA argc is 0) then we'll load in the last_repeat. If you've specified `repeat` then the `mdcount` can be calculated as: mdcount =3D DIV_ROUND_UP(repeat * bytes_per_word, bytes_per_line) In other words, if you want to display 9 words, each word is 2 bytes, and you want 16 bytes per line then you'll take up 2 lines. This would look like: [1]kdb> md2c9 0xffffff80e000c340 0xffffff80e000c340 0204 0000 0000 0000 e000 8235 0000 0000 0xffffff80e000c350 0003 If you've specified `mdcount` then `repeat` is simply: repeat =3D mdcount * bytes_per_line / bytes_per_word Let's make all this logic more obvious by initializing `repeat` to 0 and then setting it to non-zero when it should override. Then we can do all the math at once. While changing this, use the proper DIV_ROUND_UP() macro and introcue a constant for KDB_MD_BYTES_PER_LINE. We'll also make and "if else" more obvious so we know things always get initialized. Signed-off-by: Douglas Anderson --- kernel/debug/kdb/kdb_main.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c index 3c6fffa8509a..fcd5292351a7 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c @@ -1589,11 +1589,13 @@ static void kdb_md_line(const char *fmtstr, unsigne= d long addr, " ", cbuf); } =20 +#define KDB_MD_BYTES_PER_LINE 16 + static int kdb_md(int argc, const char **argv) { static unsigned long last_addr; static int last_radix, last_bytesperword, last_repeat; - int radix =3D 16, mdcount =3D 8, bytesperword =3D KDB_WORD_SIZE, repeat; + int radix =3D 16, mdcount =3D 8, bytesperword =3D KDB_WORD_SIZE, repeat = =3D 0; char fmtchar, fmtstr[64]; unsigned long addr; unsigned long word; @@ -1606,18 +1608,13 @@ static int kdb_md(int argc, const char **argv) kdbgetintenv("RADIX", &radix); kdbgetintenv("BYTESPERWORD", &bytesperword); =20 - /* Assume 'md ' and start with environment values */ - repeat =3D mdcount * 16 / bytesperword; - if (isdigit(argv[0][2])) { bytesperword =3D (int)(argv[0][2] - '0'); - repeat =3D mdcount * 16 / bytesperword; if (!argv[0][3]) valid =3D true; else if (argv[0][3] =3D=3D 'c' && argv[0][4]) { char *p; repeat =3D simple_strtoul(argv[0] + 4, &p, 10); - mdcount =3D ((repeat * bytesperword) + 15) / 16; valid =3D !*p; } } else if (strcmp(argv[0], "md") =3D=3D 0) @@ -1637,10 +1634,7 @@ static int kdb_md(int argc, const char **argv) radix =3D last_radix; bytesperword =3D last_bytesperword; repeat =3D last_repeat; - mdcount =3D ((repeat * bytesperword) + 15) / 16; - } - - if (argc) { + } else { unsigned long val; int diag, nextarg =3D 1; diag =3D kdbgetaddrarg(argc, argv, &nextarg, &addr); @@ -1652,8 +1646,9 @@ static int kdb_md(int argc, const char **argv) if (argc >=3D nextarg) { diag =3D kdbgetularg(argv[nextarg], &val); if (!diag) { - mdcount =3D (int) val; - repeat =3D mdcount * 16 / bytesperword; + mdcount =3D val; + /* Specifying overrides repeat count. */ + repeat =3D 0; } } if (argc >=3D nextarg+1) { @@ -1699,6 +1694,13 @@ static int kdb_md(int argc, const char **argv) return KDB_BADWIDTH; } =20 + /* If repeat is non-zero then it overrides */ + if (repeat) + mdcount =3D DIV_ROUND_UP(repeat * bytesperword, KDB_MD_BYTES_PER_LINE); + else + repeat =3D mdcount * 16 / bytesperword; + + /* Always just save `repeat` since `mdcount` can be calculated from it */ last_repeat =3D repeat; last_bytesperword =3D bytesperword; =20 --=20 2.45.2.627.g7a2c4fd464-goog From nobody Wed Dec 17 06:08:54 2025 Received: from mail-pg1-f179.google.com (mail-pg1-f179.google.com [209.85.215.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A18362C87C for ; Tue, 18 Jun 2024 00:36:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670987; cv=none; b=G6/siEE+tS92dTxJL6mVB8nPdraPOLW4n96XKsGBWA/5bSi4nLmFGwgKNbs3KdyzGhcI28ukdQiCY79dL8bYVSJgp32yDlsjHnsE/+jdTs9yece/vj4YoxtEjPjU3JyDoGhQ7bLMa3CY5XP9oe98AvcqaSh5UU43x0VlnbMbstI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670987; c=relaxed/simple; bh=ZUjls29bJSFNoK5TjauO3l5FflPuSIYtQbZwf169FWw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Mehdm7nqWaivQ1xZNsg/SrJRoOZXn02VUxgwXfu1cYzeMqaNZbcFolx59Tt+AviEhMUBK9mQX0lnGST+WCLc2UllOHY8J/k5KiIUGL9sEerviLSAKsfqZyj0OTipiZLqYmONYClVZfamNdMryobdlhRE86QgfNJDHjYKTqin7uo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=lKoK54fy; arc=none smtp.client-ip=209.85.215.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="lKoK54fy" Received: by mail-pg1-f179.google.com with SMTP id 41be03b00d2f7-709423bc2e5so1290259a12.0 for ; Mon, 17 Jun 2024 17:36:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1718670985; x=1719275785; darn=vger.kernel.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=fWRveTj7gNOiUWOxLfGonpPzYeI6GUmJM4srwsOzQy8=; b=lKoK54fyQRXJgQDfT33YaKvEMKCUxe5sxsAUuUbMb0DSl/Zvbvzy26L3s/jx0yawnd bh+boouZNSvfg7yLLCgrmYcH89CSCrxxtrWin05ufq8zCEtev2Bp2Gqmo6NdgQVJ0Xz+ g0feLBgAT32fQczW9n4BL+/zZYKLawIDO5Bjo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718670985; x=1719275785; 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=fWRveTj7gNOiUWOxLfGonpPzYeI6GUmJM4srwsOzQy8=; b=wgXUaat301Hr9EZlSEoDc1aM0PWb3lXuDoJM9fQN4mLSVDkCvteOF20Cmllgb/8jt6 rygBGWJYmibltfIHLrI+zAOjqCW8MoHP4JR6SVgHJeWXBETAtJ2K1ai6hvk/jvlRIoXs wbhLAzfwkWcqKZyTeFg7I5pjPtRbRtI7QnhNzkXbL/0Lv/wJelwJ6zbICK68td50QlyB AkjvLFfRamqiHnF94xceA5rjjXjN1WSWvAaYFraAfvPPfyd+bzCt6jj+fG/Xlawuy4Gs tk69bIS0IwNxdM/WKfHmYMwgi4cqHfy59kJHaN45UmxX8NGL6lCBIZEFyuKCTrfmmlQN 0n2A== X-Forwarded-Encrypted: i=1; AJvYcCWxN3dV03gekWiIZY7kVRTDGWVoOJ3+XETFmVe+igGGxRmC7/QrHiIAC57M81K9qICHBItLwKItUaFKCYbBgvQQVhNhLDX71UnkDhLl X-Gm-Message-State: AOJu0Yw5hSLcdip+h41f37Tu6/ntFyChA1mbNdighK/HKto2YJxs85YI 6alJ+g5vS8DKKRXk1s+QWWpvB7VqNAVvGfX0QBUebQauBktW6QkfSzsnJp63iw== X-Google-Smtp-Source: AGHT+IGI3mseEIj5mmCReMXbnQOFETM6xmfqcgkzTut3mANpur+xZ3fiAWl2XLNVez9BwZAzKsdtAw== X-Received: by 2002:a05:6a20:a123:b0:1af:cfca:e515 with SMTP id adf61e73a8af0-1bae7d8538dmr15672555637.12.1718670984976; Mon, 17 Jun 2024 17:36:24 -0700 (PDT) Received: from dianders.sjc.corp.google.com ([2620:15c:9d:2:1798:e71b:11ad:8b94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-705ccb99f4dsm7905917b3a.216.2024.06.17.17.36.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Jun 2024 17:36:23 -0700 (PDT) From: Douglas Anderson To: Daniel Thompson Cc: kgdb-bugreport@lists.sourceforge.net, Douglas Anderson , Christophe JAILLET , Jason Wessel , Thorsten Blum , Yuran Pereira , linux-kernel@vger.kernel.org Subject: [PATCH 09/13] kdb: Use 'unsigned int' in kdb_md() where appropriate Date: Mon, 17 Jun 2024 17:34:43 -0700 Message-ID: <20240617173426.9.I95a99321878631c9ed6a520feba65b949f948529@changeid> X-Mailer: git-send-email 2.45.2.627.g7a2c4fd464-goog In-Reply-To: <20240618003546.4144638-1-dianders@chromium.org> References: <20240618003546.4144638-1-dianders@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Several of the integers in kdb_md() should be marked unsigned. Mark them as such. When doing this, we need to add an explicit cast to the address masking or it ends up getting truncated down to "int" size. Signed-off-by: Douglas Anderson --- kernel/debug/kdb/kdb_main.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c index fcd5292351a7..c064ff093670 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c @@ -1594,8 +1594,8 @@ static void kdb_md_line(const char *fmtstr, unsigned = long addr, static int kdb_md(int argc, const char **argv) { static unsigned long last_addr; - static int last_radix, last_bytesperword, last_repeat; - int radix =3D 16, mdcount =3D 8, bytesperword =3D KDB_WORD_SIZE, repeat = =3D 0; + static unsigned int last_radix, last_bytesperword, last_repeat; + unsigned int radix =3D 16, mdcount =3D 8, bytesperword =3D KDB_WORD_SIZE,= repeat =3D 0; char fmtchar, fmtstr[64]; unsigned long addr; unsigned long word; @@ -1722,11 +1722,11 @@ static int kdb_md(int argc, const char **argv) =20 /* Round address down modulo BYTESPERWORD */ =20 - addr &=3D ~(bytesperword-1); + addr &=3D ~((unsigned long)bytesperword - 1); =20 while (repeat > 0) { unsigned long a; - int n, z, num =3D (symbolic ? 1 : (16 / bytesperword)); + unsigned int n, z, num =3D (symbolic ? 1 : (16 / bytesperword)); =20 if (KDB_FLAG(CMD_INTERRUPT)) return 0; @@ -1745,7 +1745,7 @@ static int kdb_md(int argc, const char **argv) repeat -=3D n; z =3D (z + num - 1) / num; if (z > 2) { - int s =3D num * (z-2); + unsigned int s =3D num * (z-2); kdb_printf(kdb_machreg_fmt0 "-" kdb_machreg_fmt0 " zero suppressed\n", addr, addr + bytesperword * s - 1); --=20 2.45.2.627.g7a2c4fd464-goog From nobody Wed Dec 17 06:08:54 2025 Received: from mail-oa1-f41.google.com (mail-oa1-f41.google.com [209.85.160.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 670C238DC3 for ; Tue, 18 Jun 2024 00:36:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670988; cv=none; b=cNw4OGX8F+QhaskY9NBQ5sc5BDQpUrlIOIqNAgbhy4K88QD5gDh3wGRpgsPKpulGUXh6+5Hysp/gA0N/Hs4vTdBto0s5gieUuRpd86RxwYeNDg8lZe1cOswwkGfBOUhANmILGaEyKZ9bqoD6LJ2GkjpApbPCwl+prFqm1c0Wi+k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670988; c=relaxed/simple; bh=7yYhYFXwxi5LaA7PY+8rYBzxce1baQFOVy6cQN5EAa0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RWH+XC46fwyFIQlzv9rhI78DpvQXIwpzUR5bFIoKtecUGYdtkMMaH38U1P+SJciADJpamhXnYpztkRmIt43SexwkvdsZBirXFSixYoNXR9rRytvUQeDze4QWHF3lV98ey1E+3arupl8URv+f2w0BaP3+lFIe6v30Lz6sgaY1mMQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=irPygqq0; arc=none smtp.client-ip=209.85.160.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="irPygqq0" Received: by mail-oa1-f41.google.com with SMTP id 586e51a60fabf-24c9f628e71so2564183fac.1 for ; Mon, 17 Jun 2024 17:36:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1718670986; x=1719275786; darn=vger.kernel.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=uRVpacVKP8/kEybh72yCSJAMvmAUrPd+O+416uJUqRs=; b=irPygqq0qWMgS5fFpE//n7Qy94OUzIvGmERGwVMl5MzJp7Lesc/4TEbeRZ2Vm/H8wl +Hb3r52lSkrAR2qkGgcCOXHG3l5Doa5yO58SLQ8n9YS5Ns0E6fL/BZYK7WPTpEb6TW2F +PmDt1WInPwEOhdcQVv8gc+yZI4qm+A+sH9F8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718670986; x=1719275786; 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=uRVpacVKP8/kEybh72yCSJAMvmAUrPd+O+416uJUqRs=; b=KRKi0cuaKxv+ZeLBd2HH7Qf6h+bQv4eZRKTcISM5SUyD/S8TKhSGQU2u5sOeNkiBG4 VfSYAR9SzfQNpCh271EwvEauTwjdz9VDT+5RqTGlOY9pLyfovXrNW+UrA1MS8wdA6pQE BWmthjc88PKINDmyp4EqzNLDcK0z6lb1p2YyFCRPAdR4G+gatNxvLjUB7RIivMPIoFEE HGVo5lgbIpxwewqgcG5Yesz5DIH0HzZOxvGvguyBoRJSAk5oQ/omFLKP803m8tBz945e wRyo3cwlX7qTzrAP4WgOSnwXB8O70h/Dv9mF0GfiVw2Y40EzS6oXTiyNChd9O3qDC2M9 DWPw== X-Forwarded-Encrypted: i=1; AJvYcCU9j5PbbpudLUlPBXvToSXri8R9gmUMolJPsfGoIiJqfQohXWrhbQKQ3J8cpGgy62udI/2+b5IDGYzQilNpF13a4hcgPjaTisrgkqH2 X-Gm-Message-State: AOJu0YyKCSJX9N8SpAO2B5fafYtJ9Tkywnjva8/7mvb5MH9gUxj3QDFs n+EtPjz1gwuSmNKzK5aRKlKgwE2b7eiZhFkGyB9+JYzkrZD5SXP66PSSiPc+QQ== X-Google-Smtp-Source: AGHT+IHWXXcRbcfJ1ShLSP+A9Y/8QRIg/zpY9j01+uksHi/wtWTwRM3Xfurp0UfLl17dBlvcoaNdfw== X-Received: by 2002:a05:6870:a714:b0:250:73d9:7739 with SMTP id 586e51a60fabf-25842b1e846mr10966179fac.45.1718670986623; Mon, 17 Jun 2024 17:36:26 -0700 (PDT) Received: from dianders.sjc.corp.google.com ([2620:15c:9d:2:1798:e71b:11ad:8b94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-705ccb99f4dsm7905917b3a.216.2024.06.17.17.36.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Jun 2024 17:36:25 -0700 (PDT) From: Douglas Anderson To: Daniel Thompson Cc: kgdb-bugreport@lists.sourceforge.net, Douglas Anderson , Christophe JAILLET , Jason Wessel , Thorsten Blum , Yuran Pereira , linux-kernel@vger.kernel.org Subject: [PATCH 10/13] kdb: Replease simple_strtoul() with kstrtouint() in kdb_md() Date: Mon, 17 Jun 2024 17:34:44 -0700 Message-ID: <20240617173426.10.I9adfcc6e69e279d7c083b677d9ddfb812a17d665@changeid> X-Mailer: git-send-email 2.45.2.627.g7a2c4fd464-goog In-Reply-To: <20240618003546.4144638-1-dianders@chromium.org> References: <20240618003546.4144638-1-dianders@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The docs say you should use kstrtouint() instead of simple_strtoul(), so do so. This nicely simplfies the code a little. Signed-off-by: Douglas Anderson --- kernel/debug/kdb/kdb_main.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c index c064ff093670..6dcbf4ea4bcd 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c @@ -1612,11 +1612,8 @@ static int kdb_md(int argc, const char **argv) bytesperword =3D (int)(argv[0][2] - '0'); if (!argv[0][3]) valid =3D true; - else if (argv[0][3] =3D=3D 'c' && argv[0][4]) { - char *p; - repeat =3D simple_strtoul(argv[0] + 4, &p, 10); - valid =3D !*p; - } + else if (argv[0][3] =3D=3D 'c' && argv[0][4]) + valid =3D kstrtouint(argv[0] + 4, 10, &repeat) =3D=3D 0; } else if (strcmp(argv[0], "md") =3D=3D 0) valid =3D true; else if (strcmp(argv[0], "mds") =3D=3D 0) --=20 2.45.2.627.g7a2c4fd464-goog From nobody Wed Dec 17 06:08:54 2025 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 329023FB96 for ; Tue, 18 Jun 2024 00:36:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670990; cv=none; b=DtZOfY8Jwxm2Zx6Wwr4rDu/nyea9X2r9hz0A6w7vJLKt2SpRWs7hVsCuhpnIg4vE2RIhTLwDpx2d/sAKDhw6exNHMYBP618WcStQlkWZc7y2oXf4hIoJ6bM3BIJV09hQZm/1yNeI2A0EDE1F2uZrLbyz8jRn4/NOt/9yhr5MH4E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670990; c=relaxed/simple; bh=xeaxzZwcmvj0e9diTUSi85O1pBL58FtSMNoK0X8ywpA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MjweoAa7OKNFsNFi4Cfrlb8ArvgiV+a2oXIERJ7p4hcA81ZKrdp98fo+IeK1GoIa0fvolTQHmcEIHVZTsv8kqKW6Ru/1+QZp8K/Oc0u3R28hX/X3Wrh3Wv8juiYlgCuz4D0WE25bCEi6k2ZD7lMx8YZZYiaJwonZ02yytXTZeLA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=JoiYWpgU; arc=none smtp.client-ip=209.85.210.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="JoiYWpgU" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-7061d37dc9bso237580b3a.2 for ; Mon, 17 Jun 2024 17:36:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1718670988; x=1719275788; darn=vger.kernel.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=VEWmDPoMo12cykcHwih1ojhthH/uwWR5UXgthNb4I/w=; b=JoiYWpgUqYhOpePZI9U0Iz+Sf9qDyZC+NVMTQQNwCDILD12P4xVotSf3zGAz+UNMWa QAlqLmeoHtbH3qzo0GX3Ulw8ej/uh+Oht5lnvNS2MfWxtBXTq+/ts8e7qI7xVUwDuiId vI5QbuKy2K66RK4b/G+8KqWKcKR6NpFHxW6vI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718670988; x=1719275788; 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=VEWmDPoMo12cykcHwih1ojhthH/uwWR5UXgthNb4I/w=; b=qt9jqqYcsKTHlFaWkd3A6N1OLGxvb79yyf8zkPqrBCE4Ac4VXQhMQwSZp46PYvnN5j DcbMhcFr9kIFPoA/+7Vzek49NSPCTIftVUjC6eAnEGpMbQGoRnuOH84xYfTwZQc5sp97 ePoXAx3HIE2Vgkog0VnwEulXzrvvC/eR5eqvB2BHQOj+7XUFdfE2O09JX4f70kOmtbsc dQFGK4emhAPh84u0uE0P8dJzpjp5nNRyjpBo0YAYDNJOn8EKCrtEboxjuep2NjPEHyGw D9B56ym8T+TAWgVoDmKopQB/sxowJFNTEfJUsW0lbhoIvmQvZsTMGLRJfW/yZ/WS5epE cLqQ== X-Forwarded-Encrypted: i=1; AJvYcCWylXkMXewo8rCDUcfr9Souw1a4TmkBF9viVD1Wa7j8h8o7d6WXOoiUdjEwiph0n6j4tMANkhtQBLI8cMvW0pYLtSkk5ELeBAijNgsm X-Gm-Message-State: AOJu0YxQ8ZW9pOivwfRg5DsuZ3VH9BV0jWHpSOdNdGh8FqBFGS0KH93d UvXfau6/aWVdRpf57qan+1lRLjSb+BFGMjchniNz9PN6cdmv0QB4C/pVkmdlPw== X-Google-Smtp-Source: AGHT+IHcS+Hse/fJJg1O9IV26jv3bMpCYWdJyd26Kg1l0YGDItSyEj7040XhsBUs2Hwl7q8TAGgYhg== X-Received: by 2002:a62:e70c:0:b0:704:3aca:7833 with SMTP id d2e1a72fcca58-705d71d26bemr13591059b3a.31.1718670988500; Mon, 17 Jun 2024 17:36:28 -0700 (PDT) Received: from dianders.sjc.corp.google.com ([2620:15c:9d:2:1798:e71b:11ad:8b94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-705ccb99f4dsm7905917b3a.216.2024.06.17.17.36.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Jun 2024 17:36:27 -0700 (PDT) From: Douglas Anderson To: Daniel Thompson Cc: kgdb-bugreport@lists.sourceforge.net, Douglas Anderson , Christophe JAILLET , Jason Wessel , Thorsten Blum , Yuran Pereira , linux-kernel@vger.kernel.org Subject: [PATCH 11/13] kdb: Abstract out parsing for mdWcN Date: Mon, 17 Jun 2024 17:34:45 -0700 Message-ID: <20240617173426.11.I899d035485269f5110a3323fbb1680fbba718e4c@changeid> X-Mailer: git-send-email 2.45.2.627.g7a2c4fd464-goog In-Reply-To: <20240618003546.4144638-1-dianders@chromium.org> References: <20240618003546.4144638-1-dianders@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" We'd like to use the "WcN" parsing for some other "md" variants. Abstract it out. Signed-off-by: Douglas Anderson --- kernel/debug/kdb/kdb_main.c | 55 +++++++++++++++++++++++++++++++------ 1 file changed, 46 insertions(+), 9 deletions(-) diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c index 6dcbf4ea4bcd..1a37c9bb505c 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c @@ -1591,6 +1591,49 @@ static void kdb_md_line(const char *fmtstr, unsigned= long addr, =20 #define KDB_MD_BYTES_PER_LINE 16 =20 +/** + * kdb_md_parse_arg0() - Parse argv[0] for "md" command + * + * @cmd: The name of the command, like "md" + * @arg0: The value of argv[0]. + * @repeat: If argv0 modifies repeat count we'll adjust here. + * @bytesperword Ifargv0 modifies bytesperword we'll adjust here. + * + * Return: true if this was a valid cmd; false otherwise. + */ +static bool kdb_md_parse_arg0(const char *cmd, const char *arg0, + int *repeat, int *bytesperword) +{ + int cmdlen =3D strlen(cmd); + + /* arg0 must _start_ with the command string or it's a no-go. */ + if (strncmp(cmd, arg0, cmdlen) !=3D 0) + return false; + + /* If it's just the base command, we're done and it's good. */ + if (arg0[cmdlen] =3D=3D '\0') + return true; + + /* + * The first byte after the base command must be bytes per word, a + * digit. The actual value of bytesperword will be validated later. + */ + if (!isdigit(arg0[cmdlen])) + return false; + *bytesperword =3D (int)(arg0[cmdlen] - '0'); + cmdlen++; + + /* After the bytes per word must be end of string or a 'c'. */ + if (arg0[cmdlen] =3D=3D '\0') + return true; + if (arg0[cmdlen] !=3D 'c') + return false; + cmdlen++; + + /* After the "c" is the repeat. */ + return kstrtouint(arg0 + cmdlen, 10, repeat) =3D=3D 0; +} + static int kdb_md(int argc, const char **argv) { static unsigned long last_addr; @@ -1608,19 +1651,13 @@ static int kdb_md(int argc, const char **argv) kdbgetintenv("RADIX", &radix); kdbgetintenv("BYTESPERWORD", &bytesperword); =20 - if (isdigit(argv[0][2])) { - bytesperword =3D (int)(argv[0][2] - '0'); - if (!argv[0][3]) - valid =3D true; - else if (argv[0][3] =3D=3D 'c' && argv[0][4]) - valid =3D kstrtouint(argv[0] + 4, 10, &repeat) =3D=3D 0; - } else if (strcmp(argv[0], "md") =3D=3D 0) + if (kdb_md_parse_arg0("md", argv[0], &repeat, &bytesperword)) valid =3D true; else if (strcmp(argv[0], "mds") =3D=3D 0) valid =3D true; - else if (strcmp(argv[0], "mdp") =3D=3D 0) { + else if (strcmp(argv[0], "mdp") =3D=3D 0) phys =3D valid =3D true; - } + if (!valid) return KDB_NOTFOUND; =20 --=20 2.45.2.627.g7a2c4fd464-goog From nobody Wed Dec 17 06:08:54 2025 Received: from mail-pf1-f182.google.com (mail-pf1-f182.google.com [209.85.210.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A106545977 for ; Tue, 18 Jun 2024 00:36:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670993; cv=none; b=fg2qZvsPgVlLWLq0Okk8lGmg0UvWsbvQRhhS1KEviMvGTyDAtkaZs+1mqjjaYztC7PTm/GUPaoRvfEqqiRWpJO1I2i+lWtQIT/FXCKO/ueRaR4dQs1cx+OzoqSVyKfPLAKPptZTY3lmtLjKhFPujo8xv/O95MyL2pCZzOPVdapg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670993; c=relaxed/simple; bh=dZBggxVjqVg/TaB130MCgxdtIA1h1/U5KPd47XJfcvs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bGCspBl6hXgeWHk5sJNbONe6WRU7MQUjZbqLAmWgJ+F4at2ZQbDKd9//qddonuXbcfTh0G1ULM6gQNw7qHjDReCTsxRHIUfbqDAfYIzsORuIQsOnTmyHUCf05Go0OQUWkpbVegjFinma03EZ3bidK3DdUL8W82OeoJ8niySUY0c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=jqQ4iZjf; arc=none smtp.client-ip=209.85.210.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="jqQ4iZjf" Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-705c424ebbbso4626626b3a.1 for ; Mon, 17 Jun 2024 17:36:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1718670990; x=1719275790; darn=vger.kernel.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=7YzKFH+D6NQgHG9zhqd66xW8XxeSc0R9a3mp5TZ3Z+A=; b=jqQ4iZjfRNh2Jo22j2OgrpdRqN5kT89ngzEtxJmg2ufSmSl83L0ypYvS9E8+Sk0jbl MPwG4VPIwO/AUAXm88sZqkOfxApduLO7nxnAzKfE9oU3WfrepjI2LVCrW1sKPkJJrKiV MxFVndkguII/ZZsa0lTZU0uZU84HtUA7p5R5g= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718670990; x=1719275790; 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=7YzKFH+D6NQgHG9zhqd66xW8XxeSc0R9a3mp5TZ3Z+A=; b=aPCc+lisXjgps7kmc6uZ0AmpO7AyBvnK4jqOvX1K9eCy7hLMlNyRnn4s4ZC57SAGZc eQKA9WIsjmfWg/M2Uh4pFwGrA6RfNGPyQZCVjeziLaJkdkgbvhWcZC83BJ5iTRplvtas L6SwizUpr5Z1mRQrnkMW9x9Ap+m5mN74VvZBx2L9hAYN7PInVkxB2UpYYmkD47PTL9fW kkraN+jHIvCEZiLzVw74iXpZPR+/fhhl6FBPrmmKx8zHSpPB27yJOLelVBeOeZZfNazh WuAS6X/WcghZRETfToyboFNMgqHIw/PR0y/mELLNv2COoepOnhxxn2fh881jT+QAoi8B I9Ow== X-Forwarded-Encrypted: i=1; AJvYcCWJl9yaSgmhsK+8niUaVjjOJKr4CAGWKHASvnVpzKDsBnOcYspCb9uqRE+vQ0Ex/KCGWun0Go+VMfNR/twTYbHdnE2qwHCbr+cm+MA1 X-Gm-Message-State: AOJu0YwypkbNSbiW6nJKky0l4v64WpMbue5JLTYuef4c8H7nSeHxu+im hh+XLjv7WAoONlRki+xWS+LX+xWnXL80naRUOrHtgvSzTN5jThOflkSISlxIXA== X-Google-Smtp-Source: AGHT+IFS3RxVs2fnEd1ihyg8w8up89zEOy8fuhL1k7wY0FKmK/CaH0BVgZ641hCtcwhv6j8bgR00+Q== X-Received: by 2002:a05:6a20:258c:b0:1b8:2211:b7e6 with SMTP id adf61e73a8af0-1bae802a38amr14462075637.49.1718670989991; Mon, 17 Jun 2024 17:36:29 -0700 (PDT) Received: from dianders.sjc.corp.google.com ([2620:15c:9d:2:1798:e71b:11ad:8b94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-705ccb99f4dsm7905917b3a.216.2024.06.17.17.36.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Jun 2024 17:36:29 -0700 (PDT) From: Douglas Anderson To: Daniel Thompson Cc: kgdb-bugreport@lists.sourceforge.net, Douglas Anderson , Christophe JAILLET , Jason Wessel , Thorsten Blum , Yuran Pereira , linux-kernel@vger.kernel.org Subject: [PATCH 12/13] kdb: Add mdpW / mdpWcN commands Date: Mon, 17 Jun 2024 17:34:46 -0700 Message-ID: <20240617173426.12.Ibed4a8f87371710c10b62a6621a5ccf054b2b7c9@changeid> X-Mailer: git-send-email 2.45.2.627.g7a2c4fd464-goog In-Reply-To: <20240618003546.4144638-1-dianders@chromium.org> References: <20240618003546.4144638-1-dianders@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When specifying a physical address allow specifying the word side and the number of words. NOTE: we don't do this for the "mds" command since it's pretty much a different beast. Signed-off-by: Douglas Anderson --- kernel/debug/kdb/kdb_main.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c index 1a37c9bb505c..be72657741a5 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c @@ -1653,10 +1653,10 @@ static int kdb_md(int argc, const char **argv) =20 if (kdb_md_parse_arg0("md", argv[0], &repeat, &bytesperword)) valid =3D true; + else if (kdb_md_parse_arg0("mdp", argv[0], &repeat, &bytesperword)) + phys =3D valid =3D true; else if (strcmp(argv[0], "mds") =3D=3D 0) valid =3D true; - else if (strcmp(argv[0], "mdp") =3D=3D 0) - phys =3D valid =3D true; =20 if (!valid) return KDB_NOTFOUND; @@ -2705,6 +2705,18 @@ static kdbtab_t maintab[] =3D { .help =3D "Display RAM given a physical address", .flags =3D KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS, }, + { .name =3D "mdpW", + .func =3D kdb_md, + .usage =3D " [ []]", + .help =3D "Display RAM given a PA using word size (W)", + .flags =3D KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS, + }, + { .name =3D "mdpWcN", + .func =3D kdb_md, + .usage =3D " [ []]", + .help =3D "Display RAM given a PA using word size (W); show N words", + .flags =3D KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS, + }, { .name =3D "mdr", .func =3D kdb_mdr, .usage =3D " ", --=20 2.45.2.627.g7a2c4fd464-goog From nobody Wed Dec 17 06:08:54 2025 Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AEC494654D for ; Tue, 18 Jun 2024 00:36:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670995; cv=none; b=PKIP2ruYE9Mag731PeRF0BsywxI/B/MAv2IOWOYL2oHrbCU5JxFpQ+vG44rU3cDbbVLUT9Y0Sh3eoq2/6Pf7mYqBxFjKHfWmoHWh0JxvlH1QzaRYQ12PJAmpdpHl9jATuz3aXoN5aYtiCCbpKFPfliRXGc5zXtuzxAEu6An1AWo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1718670995; c=relaxed/simple; bh=1o03+tyZEtYM4um+426rzvDE1hsWAW9PnI94x6z1KdE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SOOqN1BkkRhRfOHJgfssDlDseL4/Nq2mWAVvgs+ibOLaY1+XWdp4Ww6C16tzcWMC8/RpWTHH1FTX2xxDmBID+5K29z1MQFuN21RS7qpG+KvuCUj8QU6uNok4Ijnmoi2jjxBsozKxq3fZuBwCDfgy3C2JjhRMmDx0V+dxjRcYaTc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=JFCVOQmX; arc=none smtp.client-ip=209.85.210.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="JFCVOQmX" Received: by mail-pf1-f177.google.com with SMTP id d2e1a72fcca58-70413de08c7so3557883b3a.0 for ; Mon, 17 Jun 2024 17:36:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1718670993; x=1719275793; darn=vger.kernel.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=lAce2BbpEK1CBNaRWM54Pp5Bl8/PNgc1s0HraY4ZUrU=; b=JFCVOQmXDiHti/tkEW444QqUaxNPgQyLywjsssIbSVeuHlFtk8Gz8ZAMrE6PDyMm5z znh43PtaVAUMQ3vFE/uQh3eBqEZtDiYI6fe01nMEtea7l164GDOTR3hHttCWNWcCIBVB 2Mm5Ti7kc6D7Rdb1ww7mLbKkpXKEPLw4EIw8k= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718670993; x=1719275793; 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=lAce2BbpEK1CBNaRWM54Pp5Bl8/PNgc1s0HraY4ZUrU=; b=isuIsCE4AXDXZ/T0Sf+njyVPvOPagS4xNpxuWPKNHiB7PelzFd3gvjZ+fjtk8x2a1+ SBIDiRapTWo4UJSEDsA7tb2VoUHxNrEgWrFHIeO+ZD+ms+WCwfsEVzL2wr//rBTqbvNa yoLA2G8OsO2tKcS8mjKlr3sNARncuwshBd/EDNbc3OAQRnOkumc5iKathQGVoTsGruOc kIUgQs8iEkmY5c0cK/G3ZcD5DT9Oz6lrDKlIKn/rVmpXxRjryIonru1FJrA4GpdEnJys ZUETfjD29oLIsxrAHNnmUBBZC2pLd3Ww5ryMOT1pS7clGw6TR6/sS37tvoh2pG/CAofM 8YjQ== X-Forwarded-Encrypted: i=1; AJvYcCUki91Jzx/W14jB+346KvBbJpCzpWqZwnhb7wTWMeA0oN4QK7wbm2wj757mVPqL8Z1/lf3mtgStPehJPNsEoZqKhcXP9poHYniuDdni X-Gm-Message-State: AOJu0YzfOGRwvpueoCsPnV0VAfrdnzEkERtEEYbsMRd28r/mB6v8u+jH L85Yw/dwKp7qjGDD4YEjvTvEQ1pb9c04meCV9lvz/1oFQ7lPrlvNeJockTqyzNjWY/QQ68XYM90 = X-Google-Smtp-Source: AGHT+IGV9Py1qvucdwShLmpkRill7ZM+6U+g604nrmUu9QEAjDhM7zyjCzMTElgpRp32hmQUjdKn0Q== X-Received: by 2002:a05:6a20:d488:b0:1b5:d10a:1b65 with SMTP id adf61e73a8af0-1bae8224fa0mr12214380637.49.1718670992951; Mon, 17 Jun 2024 17:36:32 -0700 (PDT) Received: from dianders.sjc.corp.google.com ([2620:15c:9d:2:1798:e71b:11ad:8b94]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-705ccb99f4dsm7905917b3a.216.2024.06.17.17.36.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Jun 2024 17:36:31 -0700 (PDT) From: Douglas Anderson To: Daniel Thompson Cc: kgdb-bugreport@lists.sourceforge.net, Douglas Anderson , Christophe JAILLET , Jason Wessel , Thorsten Blum , Yuran Pereira , linux-kernel@vger.kernel.org Subject: [PATCH 13/13] kdb: Add mdi, mdiW / mdiWcN commands to show iomapped memory Date: Mon, 17 Jun 2024 17:34:47 -0700 Message-ID: <20240617173426.13.I572fb3cf62fae1e728dd154081101ae264dc3670@changeid> X-Mailer: git-send-email 2.45.2.627.g7a2c4fd464-goog In-Reply-To: <20240618003546.4144638-1-dianders@chromium.org> References: <20240618003546.4144638-1-dianders@chromium.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add commands that are like the other "md" commands but that allow you to read memory that's in the IO space. Signed-off-by: Douglas Anderson --- kernel/debug/kdb/kdb_main.c | 38 +++++++++++++++++++++++---- kernel/debug/kdb/kdb_private.h | 1 + kernel/debug/kdb/kdb_support.c | 48 ++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+), 5 deletions(-) diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c index be72657741a5..a90d1e1482c2 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c @@ -1526,7 +1526,7 @@ static int kdb_mdr(int argc, const char **argv) */ static void kdb_md_line(const char *fmtstr, unsigned long addr, bool symbolic, bool nosect, int bytesperword, - int num, int repeat, bool phys) + int num, int repeat, bool phys, bool do_iomap) { /* print just one line of data */ kdb_symtab_t symtab; @@ -1543,7 +1543,10 @@ static void kdb_md_line(const char *fmtstr, unsigned= long addr, kdb_printf(kdb_machreg_fmt0 " ", addr); =20 for (i =3D 0; i < num && repeat--; i++) { - if (phys) { + if (do_iomap) { + if (kdb_getioword(&word, addr, bytesperword)) + break; + } else if (phys) { if (kdb_getphysword(&word, addr, bytesperword)) break; } else if (kdb_getword(&word, addr, bytesperword)) @@ -1646,6 +1649,7 @@ static int kdb_md(int argc, const char **argv) bool symbolic =3D false; bool valid =3D false; bool phys =3D false; + bool do_iomap =3D false; =20 kdbgetintenv("MDCOUNT", &mdcount); kdbgetintenv("RADIX", &radix); @@ -1655,6 +1659,8 @@ static int kdb_md(int argc, const char **argv) valid =3D true; else if (kdb_md_parse_arg0("mdp", argv[0], &repeat, &bytesperword)) phys =3D valid =3D true; + else if (kdb_md_parse_arg0("mdi", argv[0], &repeat, &bytesperword)) + do_iomap =3D valid =3D true; else if (strcmp(argv[0], "mds") =3D=3D 0) valid =3D true; =20 @@ -1765,7 +1771,11 @@ static int kdb_md(int argc, const char **argv) if (KDB_FLAG(CMD_INTERRUPT)) return 0; for (a =3D addr, z =3D 0; z < repeat; a +=3D bytesperword, ++z) { - if (phys) { + if (do_iomap) { + if (kdb_getioword(&word, a, bytesperword) + || word) + break; + } else if (phys) { if (kdb_getphysword(&word, a, bytesperword) || word) break; @@ -1774,7 +1784,7 @@ static int kdb_md(int argc, const char **argv) } n =3D min(num, repeat); kdb_md_line(fmtstr, addr, symbolic, nosect, bytesperword, - num, repeat, phys); + num, repeat, phys, do_iomap); addr +=3D bytesperword * n; repeat -=3D n; z =3D (z + num - 1) / num; @@ -2604,7 +2614,7 @@ static int kdb_per_cpu(int argc, const char **argv) kdb_printf("%5d ", cpu); kdb_md_line(fmtstr, addr, bytesperword =3D=3D KDB_WORD_SIZE, - 1, bytesperword, 1, 1, 0); + true, bytesperword, 1, 1, false, false); } #undef KDB_PCU return 0; @@ -2717,6 +2727,24 @@ static kdbtab_t maintab[] =3D { .help =3D "Display RAM given a PA using word size (W); show N words", .flags =3D KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS, }, + { .name =3D "mdi", + .func =3D kdb_md, + .usage =3D " ", + .help =3D "Display IO Memory", + .flags =3D KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS, + }, + { .name =3D "mdiW", + .func =3D kdb_md, + .usage =3D " ", + .help =3D "Display IO Memory using word size (W)", + .flags =3D KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS, + }, + { .name =3D "mdiWcN", + .func =3D kdb_md, + .usage =3D " ", + .help =3D "Display IO Memory using word size (W); show N words", + .flags =3D KDB_ENABLE_MEM_READ | KDB_REPEAT_NO_ARGS, + }, { .name =3D "mdr", .func =3D kdb_mdr, .usage =3D " ", diff --git a/kernel/debug/kdb/kdb_private.h b/kernel/debug/kdb/kdb_private.h index 1f685d9f16f9..caece6240140 100644 --- a/kernel/debug/kdb/kdb_private.h +++ b/kernel/debug/kdb/kdb_private.h @@ -97,6 +97,7 @@ extern int kdb_putarea_size(unsigned long, void *, size_t= ); #define kdb_getarea(x, addr) kdb_getarea_size(&(x), addr, sizeof((x))) #define kdb_putarea(addr, x) kdb_putarea_size(addr, &(x), sizeof((x))) =20 +extern int kdb_getioword(unsigned long *word, unsigned long addr, size_t s= ize); extern int kdb_getphysword(unsigned long *word, unsigned long addr, size_t size); extern int kdb_getword(unsigned long *, unsigned long, size_t); diff --git a/kernel/debug/kdb/kdb_support.c b/kernel/debug/kdb/kdb_support.c index 0a39497140bf..5a4e3a0e96a5 100644 --- a/kernel/debug/kdb/kdb_support.c +++ b/kernel/debug/kdb/kdb_support.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -331,6 +332,53 @@ static int kdb_getphys(void *res, unsigned long addr, = size_t size) return 0; } =20 +/* + * kdb_getioword + * Inputs: + * word Pointer to the word to receive the result. + * addr Address of the area to copy. + * size Size of the area. + * Returns: + * 0 for success, < 0 for error. + */ +int kdb_getioword(unsigned long *word, unsigned long addr, size_t size) +{ + void __iomem *mapped =3D ioremap(addr, size); + int diag =3D 0; + + *word =3D 0; /* Default value if addr or size is invalid */ + + if (!mapped) + return KDB_BADADDR; + + switch (size) { + case 1: + *word =3D readb(mapped); + break; + case 2: + *word =3D readw(mapped); + break; + case 4: + *word =3D readl(mapped); + break; + case 8: +#ifdef CONFIG_64BIT + if (size <=3D sizeof(*word)) { + *word =3D readq(mapped); + break; + } +#endif + fallthrough; + default: + kdb_func_printf("bad width %zu\n", size); + diag =3D KDB_BADWIDTH; + } + + iounmap(mapped); + + return diag; +} + /* * kdb_getphysword * Inputs: --=20 2.45.2.627.g7a2c4fd464-goog