From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 96F092E54DE for ; Mon, 1 Dec 2025 09:33:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.15 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764581612; cv=none; b=eVnfUsAXlmFzstDkriHPu8oul7JatYJU+zsyeqQbcp3Hz1v9YOpYMmrQn8druSELO6sizXif4inMHGT5LsbWjs8h0d+2Q5iDIvAZlSRKkrhQ4PRAOCey5bSXhrYw9DW1WbIaSbcbAC2Eo5yJDzGAziNPRyi4pyJkYF9DTa6uE8g= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764581612; c=relaxed/simple; bh=zNBD+A+iXVqpv+gNiOEjl6zITJ0wPMuYG4MuQZeW2ZU=; h=From:Subject:Date:Message-Id:MIME-Version:Content-Type:To:Cc; b=pwKyAwqA0CBVugYW8ybpXMYTk/3GYI45be47lGXANVYV2V1b167xxeuGzxF5OJobzSEy943nmI+fLVNPprNRet62UQD4ug+7vihsISoIr3avgfz4tqpmEOFM+x+VDL0eOukRJPLDYz1W6Bvt2td11xPXHjo3mzYQiiX41BO3uz0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=F2Gq8qr5; arc=none smtp.client-ip=192.198.163.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="F2Gq8qr5" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1764581610; x=1796117610; h=from:subject:date:message-id:mime-version: content-transfer-encoding:to:cc; bh=zNBD+A+iXVqpv+gNiOEjl6zITJ0wPMuYG4MuQZeW2ZU=; b=F2Gq8qr5S0sVD5sen5z4roDpCL3Yu8PqL+/iPUOJUv7UJ3sXUONSziR0 a2JgoY8z4lt2v2nZXYeVzVtngyCqIs0ahnbKvvGSYz5s67ppjbRMSU9mC +hHIAFgskw3DPUqdnhIsQ3BFh/pWwYdMZDvuQT71hKLW2DJrV2Rfeub9u SW0Qj9njpo1ZwCgTMXMyF4rBWZyOzgVLk3IcDDEzyZ9hAg8d69Ga73zJB EeAZzC0p8O4WThquhoWj3Dhjqcq8cJyaitUIDsLlkoAIH1Z9gloCo23Fg 8+ih7tv+KHN4rWdOuwbBjgeSnuQErCzz2f22Vd3mHZudmY3LUsaDr/rQV Q==; X-CSE-ConnectionGUID: FS+eZXMLQX21khP3ja0f2A== X-CSE-MsgGUID: plcFH98XQ2yjtJbaZXoN6g== X-IronPort-AV: E=McAfee;i="6800,10657,11629"; a="66586415" X-IronPort-AV: E=Sophos;i="6.20,240,1758610800"; d="scan'208";a="66586415" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa109.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Dec 2025 01:33:04 -0800 X-CSE-ConnectionGUID: XXnqchyFSIGVc5XD7e1QeA== X-CSE-MsgGUID: 8rqGomoiRGSgdqGFa+4odw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.20,240,1758610800"; d="scan'208";a="194014675" Received: from lab-ah.igk.intel.com (HELO [127.0.1.1]) ([10.211.135.228]) by orviesa007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Dec 2025 01:32:56 -0800 From: Andrzej Hajda Subject: [PATCH v2 0/5] printk: add macros to simplify handling struct va_format Date: Mon, 01 Dec 2025 10:31:21 +0100 Message-Id: <20251201-va_format_call-v2-0-2906f3093b60@intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-B4-Tracking: v=1; b=H4sIAGlgLWkC/3WNywqDMBBFf6Vk3ZQ8fJSu+h9FZIyTOqCJJCG0i P/e6L7LA+eeu7GIgTCyx2VjATNF8q6Aul6YmcC9kdNYmCmhailVwzP01ocFUm9gnnklRa3RNsK OLSujNaClzxl8dYUHiMiHAM5MR2YMC0+0HuZEMfnwPZ+zPPy/J1lywe/QiAq0lq0WT3IJ55vxC +v2ff8B69jM8sYAAAA= X-Change-ID: 20251126-va_format_call-41053ef60fd7 To: Petr Mladek , Steven Rostedt , John Ogness , Sergey Senozhatsky , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Andrew Morton , Vlastimil Babka , Suren Baghdasaryan , Michal Hocko , Brendan Jackman , Johannes Weiner , Zi Yan , Christoph Lameter , David Rientjes , Roman Gushchin , Harry Yoo Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, Andrzej Hajda X-Mailer: b4 0.15-dev-47773 X-Developer-Signature: v=1; a=openpgp-sha256; l=2162; i=andrzej.hajda@intel.com; h=from:subject:message-id; bh=zNBD+A+iXVqpv+gNiOEjl6zITJ0wPMuYG4MuQZeW2ZU=; b=owEB7QES/pANAwAKASNispPeEP3XAcsmYgBpLWCBXIZJkfYMBnvqix36gH82kiCgWg87tR4GA m/FApbYFYKJAbMEAAEKAB0WIQT8qEQxNN2/XeF/A00jYrKT3hD91wUCaS1ggQAKCRAjYrKT3hD9 10sEC/9OvWrRfv88d3Yta2uEulsEB3wcsna1k94mG+FpUUYzExeAsNB0HqziL79tR4ZbV8IIawC 1eUtK0dJcdtZV3pvBJAbYGHF7PCmj401+n1XKY/9G7Fn9Y8zsC3p6Aa3eNtMnx49hcEqeP3kSzo fdbPAwukgWMThMWyNlCq9s3M3XhdAUsyC02+vad2MU4CzFgY+lQdCPqrPRAW1goLXr173Zo0gB+ wNk1qbxS8CrnwHnQHytq1SlzgwHYKg3JyZKZBm7nJPYhlgY0uVqV5OeA0wPMMoVip1bQK/SZKfs bKTF5cFn+xGI8+XdnkaeejrqDGsRnTi+4Par4FpWR9AIroJag7NCU/Ypa60zSzxkXm19+CeUHyQ pKXQLYsD3thphGcXEljFl4VZRWkxe+Sy+Wu6lP77fkfSjGDJ7+qDiVGbryeDnsxrp7Uye9UqoaR tpPhk35822jNhXNFyJv+uKCD+10lIIbULecLiv9dVRe9XT6No0xY9vRSUn6G5iV36JZ8s= X-Developer-Key: i=andrzej.hajda@intel.com; a=openpgp; fpr=FCA8443134DDBF5DE17F034D2362B293DE10FDD7 This patchset contains patch abstracting out most common bits of va_format uses into small macro. The macro works as a forwarder of variadic args to va_format call. Rough estimates based on dirty cocci script suggests about 180-230 users could be converted, allowing to remove about 1100-1300 lines of code. Of course, I do not plan to do it in mass. I just provide few patches to show the usage and the potential. Provided helper deals with variadic args to va_format conversion/forwarding. Similar solution could be proposed also for variadic args to va_list conversion. Common code: va_list args; va_start(args, fmt); ret = func(..., fmt, args); va_end(args); return ret; Could be replaced with: ret = va_list_call(fmt, func, ..., fmt); This is less rewarding (less lines to remove) but still looks promising. Also separate helper should be created for functions without return value, unless somebody knows trick how to do it in one macro: va_list_void_call(fmt, func, ..., fmt); Any comments? Signed-off-by: Andrzej Hajda --- Changes in v2: - added two patches simplifying handling of variadic args in drivers/core and mm in slightly less obvious cases, this way both mm and drivers/core do not use anymore hand rolled variadic -> va_format conversions. - Link to v1: https://lore.kernel.org/r/20251126-va_format_call-v1-0-8a604a331730@intel.com --- Andrzej Hajda (5): printk: add macros to simplify handling struct va_format drivers/core: use va_format_call helper drivers/core: simplify variadic args handling mm: use va_format_call helper mm: simplify variadic args handling drivers/base/core.c | 82 ++++++++------------------------------------------ include/linux/printk.h | 30 ++++++++++++++++++ mm/page_alloc.c | 14 +++------ mm/slub.c | 33 +++----------------- 4 files changed, 52 insertions(+), 107 deletions(-) --- base-commit: 37a098cc87aafdf4de147851cbf350bb66c51b45 change-id: 20251126-va_format_call-41053ef60fd7 Best regards, -- Andrzej Hajda