From patchwork Fri Mar 8 12:28:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Heimes X-Patchwork-Id: 1909675 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.ubuntu.com (client-ip=185.125.189.65; helo=lists.ubuntu.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=patchwork.ozlabs.org) Received: from lists.ubuntu.com (lists.ubuntu.com [185.125.189.65]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Trlp53DCHz23qc for ; Fri, 8 Mar 2024 23:28:44 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=lists.ubuntu.com) by lists.ubuntu.com with esmtp (Exim 4.86_2) (envelope-from ) id 1riZKs-0003Nj-SV; Fri, 08 Mar 2024 12:28:26 +0000 Received: from smtp-relay-canonical-1.internal ([10.131.114.174] helo=smtp-relay-canonical-1.canonical.com) by lists.ubuntu.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1riZKq-0003N1-8z for kernel-team@lists.ubuntu.com; Fri, 08 Mar 2024 12:28:24 +0000 Received: from T570.fritz.box (dslb-084-057-174-001.084.057.pools.vodafone-ip.de [84.57.174.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-canonical-1.canonical.com (Postfix) with ESMTPSA id DF72B3F5E4 for ; Fri, 8 Mar 2024 12:28:23 +0000 (UTC) From: frank.heimes@canonical.com To: kernel-team@lists.ubuntu.com Subject: [SRU][J][F][PATCH 0/8] Problems with HVCS and hotplugging (LP: 2056373) Date: Fri, 8 Mar 2024 13:28:12 +0100 Message-Id: <20240308122820.316586-1-frank.heimes@canonical.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" BugLink: https://bugs.launchpad.net/bugs/2056373 SRU Justification: [Impact] * HVCS (Hypervisor Virtual Console Server) is broken because the virtual terminal mkvterm fails, caused by pvmutil failing. * When mkvterm is ran, it ultimately fails because it calls pvmutil which fails. pvmutil calls drmgr, and drmgr is adding a slot correctly. However, when drmgr writes the slot information to ?/add_slot, the return is -ENODEV. * This leads to HVCS never having probe() called. * In addition, HVCS is missing patches/fixes, and is broken without them. [Fix] * Fix one and two is required for focal only, all other for focal and jammy: * 57409d4fb12c 57409d4fb12c185b2c0689e0496878c8f6bb5b58 "powerpc/pseries: Fix bad drc_index_start value parsing of drc-info entry" * c5e76fa05b2d c5e76fa05b2df519b9f08571cc57e623c1569faa "powerpc/pseries: Fix of_read_drc_info_cell() to point at next record" * 6a9a733edd46 6a9a733edd46732e906d976dc21a42dd361e53cc "hvcs: Fix hvcs port reference counting" * 760aa5e81f33 760aa5e81f33e0da82512c4288489739a6d1c556 "hvcs: Use dev_groups to manage hvcs device attributes" * 503a90dd619d 503a90dd619d52dcac2cc68bd742aa914c7cd47a "hvcs: Use driver groups to manage driver attributes" * 3a8d3b366ce4 3a8d3b366ce47024bf274eac783f8af5df2780f5 "hvcs: Get reference to tty in remove" * d432228bc7b1 d432228bc7b1b3f0ed06510278ff5a77b3749fe6 "hvcs: Use vhangup in hotplug remove" * 28d49f8cbe9c 28d49f8cbe9c7966f91ee1b5ec2f997f6e55bf9f "hvcs: Synchronize hotplug remove with port free" [Test Plan] * The high level test plan is to run mkvterm with an id. * mkvterm will fail because /dev/hvcs* device nodes are missing. * Details see https://bugs.launchpad.net/bugs/2023243 for more information. Especially the script provided by IBM (see original bug description: `---Steps to Reproduce---`). * IBM will (stress) test the updated kernel(s) provided in -proposed. [Where problems could occur] * The first two commits affect arch/powerpc/platforms/pseries/of_helpers.c and are needed to fix the hotplugging issue seen when drmgr goes to write the slot information to /sys/bus/pci/slots/control/add_slot. In case of issues here hotplugging with drmgr might break. * The issue lies in rpadlpar_io and rpaphp calling an of helper function of_read_drc_info_cell(). Without these commits, the value stored drc_index_start is incorrect. This ultimately results in the entire SLOT string being incorrect, and rpaphp never finding the newly added slot by drmgr. rpadlpar then returns -ENODEV. Therefore, HVCS is never probed, and the device nodes are never created. * HVCS, rpadlpar_io, and rpaphp should ideally not even need to be loaded prior to drmgr adding a vio slot. If rpadlpar_io and rpaphp are not loaded, drmgr will load them. In addition, if rpadlpar_io and rpaphp register the new slot correctly, rpadlpar_io will call dlpar_add_vio_slot(), which calls vio_register_device_node() with the device node. This is what tells the driver core to init and probe HVCS (which is needed to create the device nodes). * The remaning 6 commits are needed for HVCS, that is essentially broken without them. Overall, issues they fix are race conditions, hotplug remove issues, as well as memory leaks. * Please notice that this is entirely ppc64el architecture-specifc. [Other Info] * All the commits listed above are included in mantic and noble. Hence these are set to Invalid. * Meanwhile these requested commits have been added to other kernels and distros. Brian King (6): hvcs: Fix hvcs port reference counting hvcs: Use dev_groups to manage hvcs device attributes hvcs: Use driver groups to manage driver attributes hvcs: Get reference to tty in remove hvcs: Use vhangup in hotplug remove hvcs: Synchronize hotplug remove with port free Tyrel Datwyler (2): powerpc/pseries: Fix bad drc_index_start value parsing of drc-info entry powerpc/pseries: Fix of_read_drc_info_cell() to point at next record arch/powerpc/platforms/pseries/of_helpers.c | 10 +-- drivers/tty/hvc/hvcs.c | 91 ++++++++------------- 2 files changed, 38 insertions(+), 63 deletions(-) Acked-by: Stefan Bader Acked-by: Cengiz Can