From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id AC227C87FCB for ; Sat, 2 Aug 2025 02:43:01 +0000 (UTC) Received: from boromir.ozlabs.org (localhost [127.0.0.1]) by lists.ozlabs.org (Postfix) with ESMTP id 4bv6Xp53Zvz3bV6; Sat, 2 Aug 2025 12:42:02 +1000 (AEST) Authentication-Results: lists.ozlabs.org; arc=none smtp.remote-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1754102522; cv=none; b=gMDYsdM79B4rQnPBszQ2ZZL9hoPHC+M2wy7RApo5Pv1xcoOfA1Ss6gbEdl2CnZo1jYahZgj7a7pCZyVC0VkSaWqnWo7A1U77sB8FjfczBMNNmEHCsWZHa1R7UVaXbqp9PMYaprj9HTn7wugWO/L4kgUnEIiDfqeUIdvuS3ErUaPSsHcexc/Jh07wvrEQP0i1hgqDbJEJi0ar37pIwe/EY6Zh+7y8wfV3AxAkOtAwMgcpqs6V7MgvhjfTnj5iTEeS+jJUIfVFWKNSFk0J94CqeT/ia3OYi+1LRlrGvwWe0K5Tv/fmz21RiSDwpprONaoodj5sXSI/9D29mZq0exNE3A== ARC-Message-Signature: i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1754102522; c=relaxed/relaxed; bh=7ZAV0oYv+CJEzEmeaxGe11QXqwhKw54T01egb80sNVY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=d9syyBqsrUqXTKuUVBeBHoOyUNHGnfBLYJaA24gATkCxeNF5SWtdsSccTpY2haWXYqoDh5rw1da5eCa4vze1SqmhQJarwnAP8PvnzmF+gCAYFgthYnHrAyBo7n0RTWSMm9rZpEVhw4hVB8MoNbMqRHEjE5w53AqhV17dVGo74n6Ow/Zn9i39xTQBV0WLW94pbCOpbufIPEXtz8YjmcHEf1xSucrPGRNo7eEa3BK9mPdmGMiSJ7qJKSYGrpH63zjx36Z3tu8UCYI2tOW0OS/oQaFvUJrsVrsC7TW1wfHDHFPcsBpHMe3/4rg94rfOoiajm1xE6ua722hwGSQrfwcAyg== ARC-Authentication-Results: i=1; lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com; dkim=pass (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=qfLvn0ex; dkim-atps=neutral; spf=pass (client-ip=148.163.156.1; helo=mx0a-001b2d01.pphosted.com; envelope-from=haren@linux.ibm.com; receiver=lists.ozlabs.org) smtp.mailfrom=linux.ibm.com Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=linux.ibm.com Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=qfLvn0ex; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=linux.ibm.com (client-ip=148.163.156.1; helo=mx0a-001b2d01.pphosted.com; envelope-from=haren@linux.ibm.com; receiver=lists.ozlabs.org) Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4bv6Xp12gLz2xHY for ; Sat, 2 Aug 2025 12:42:01 +1000 (AEST) Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5721vs20022049; Sat, 2 Aug 2025 02:41:55 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pp1; bh=7ZAV0o Yv+CJEzEmeaxGe11QXqwhKw54T01egb80sNVY=; b=qfLvn0ex97oQYvvk/qISxE Pq4eM9QqkplETP9elRfJMZK0erV0RdEFmb0bX84SZ/FgQF6h1AnzLHNIx6P0n3mO jLxjs4ANSzR2jyAQwUKYza1kw5Ck4Jk7M5Ti5YqY029hKvQ5b468qYvFB8t+vu1f h2+fQyaiRJ5EZSnINW0FlKH3t1xT8W79od6GSvY26NXXoObe+gDqXg2BujWB//mO KY4BDfGF3vIhY2XcxV+nBC/lkZCnIikrmbLA0ASim96NVXK8CXkhy16Zrje/alAJ sFYvdMCPAwFbM0j569m+kSHoV+T0fA22fEXifGYo8Apji58aWOjSYJibO0f8w4Hg == Received: from ppma12.dal12v.mail.ibm.com (dc.9e.1632.ip4.static.sl-reverse.com [50.22.158.220]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 486c6ja1qm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 02 Aug 2025 02:41:54 +0000 (GMT) Received: from pps.filterd (ppma12.dal12v.mail.ibm.com [127.0.0.1]) by ppma12.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 571LlJUB017959; Sat, 2 Aug 2025 02:41:53 GMT Received: from smtprelay06.wdc07v.mail.ibm.com ([172.16.1.73]) by ppma12.dal12v.mail.ibm.com (PPS) with ESMTPS id 4859bu47mv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 02 Aug 2025 02:41:53 +0000 Received: from smtpav01.wdc07v.mail.ibm.com (smtpav01.wdc07v.mail.ibm.com [10.39.53.228]) by smtprelay06.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 5722foub29033026 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Sat, 2 Aug 2025 02:41:50 GMT Received: from smtpav01.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id ABCB058055; Sat, 2 Aug 2025 02:41:50 +0000 (GMT) Received: from smtpav01.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C2BC75804B; Sat, 2 Aug 2025 02:41:49 +0000 (GMT) Received: from li-4910aacc-2eed-11b2-a85c-d93b702d4d28.ibm.com.com (unknown [9.61.171.135]) by smtpav01.wdc07v.mail.ibm.com (Postfix) with ESMTP; Sat, 2 Aug 2025 02:41:49 +0000 (GMT) From: Haren Myneni To: linuxppc-dev@lists.ozlabs.org Cc: maddy@linux.ibm.com, mpe@ellerman.id.au, msuchanek@suse.de, mahesh@linux.ibm.com, tyreld@linux.ibm.com, hbabu@us.ibm.com, haren@linux.ibm.com Subject: [PATCH 9/9] powerpc/pseries: HVPIPE changes to support migration Date: Fri, 1 Aug 2025 19:41:19 -0700 Message-ID: <20250802024121.955274-10-haren@linux.ibm.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20250802024121.955274-1-haren@linux.ibm.com> References: <20250802024121.955274-1-haren@linux.ibm.com> X-Mailing-List: linuxppc-dev@lists.ozlabs.org List-Id: List-Help: List-Owner: List-Post: List-Archive: , List-Subscribe: , , List-Unsubscribe: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-GUID: FCnGREmx1GhLU7UtKAwhQdVj2HjylSMq X-Authority-Analysis: v=2.4 cv=Mbtsu4/f c=1 sm=1 tr=0 ts=688d7af2 cx=c_pps a=bLidbwmWQ0KltjZqbj+ezA==:117 a=bLidbwmWQ0KltjZqbj+ezA==:17 a=IkcTkHD0fZMA:10 a=2OwXVqhp2XgA:10 a=VnNF1IyMAAAA:8 a=S7z50IwEaLHSfgsXjVMA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 X-Proofpoint-ORIG-GUID: FCnGREmx1GhLU7UtKAwhQdVj2HjylSMq X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODAyMDAxOCBTYWx0ZWRfXwPF9D3IPtoqu i13Z8eAU0yMY4t8HersNzqodGX7VGR/I5xMJddL8PA4nKAVAF7nhK4lZj0CluOQtCUDXZLr+fBU 6itYlphYgt6AlbQDAUVPMYa+Yh+YS46zGZ7txl5Z70/U8wIq35idrPIBe+gdeyiobO0hfBrKTke tTc42NLvSd78Cg2c7G8eR9rXV54Fir12ZNFL/K2rnH2FlihUyu/QvI1mp2tWYQGyeWpkCD5F+k0 OLG3GW3GBAjNKBQ8C0bny8ybvmAu7YLtfHnNLmOC15VgbKCuGK9VwahOF6CJV/AAY9hkrvQdoWL F8khEMRZRyhEbPCZ8VOzmxtfvPy9v4Jh6sDxUobUE77b5yrgECpHw0+7VsDxBMXdN+sN9v/d97C HAVNw0IKVoGZ43Xau3/NW0QBCs8Ctm9IgzqKs8fAH+GB7VCe5t3Hw/McG69c6EqVNKG5RApp X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-01_08,2025-08-01_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 adultscore=0 bulkscore=0 suspectscore=0 priorityscore=1501 spamscore=0 mlxscore=0 impostorscore=0 phishscore=0 mlxlogscore=959 lowpriorityscore=0 malwarescore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2508020018 The hypervisor assigns one pipe per partition for all sources and assigns new pipe after migration. Also the partition ID that is used by source as its target ID may be changed after the migration. So disable hvpipe during SUSPEND event with ‘hvpipe enable’ system parameter value = 0 and enable it after migration during RESUME event with hvpipe enable’ system parameter value = 1. The user space calls such as ioctl()/ read() / write() / poll() returns -ENXIO between SUSPEND and RESUME events. The user space process can close FD and reestablish connection with new FD after migration if needed (Example: source IDs are changed). Signed-off-by: Haren Myneni --- arch/powerpc/platforms/pseries/mobility.c | 3 ++ arch/powerpc/platforms/pseries/papr-hvpipe.c | 53 ++++++++++++++++++++ arch/powerpc/platforms/pseries/papr-hvpipe.h | 6 +++ 3 files changed, 62 insertions(+) diff --git a/arch/powerpc/platforms/pseries/mobility.c b/arch/powerpc/platforms/pseries/mobility.c index 62bd8e2d5d4c..95fe802ccdfd 100644 --- a/arch/powerpc/platforms/pseries/mobility.c +++ b/arch/powerpc/platforms/pseries/mobility.c @@ -28,6 +28,7 @@ #include #include "pseries.h" #include "vas.h" /* vas_migration_handler() */ +#include "papr-hvpipe.h" /* hvpipe_migration_handler() */ #include "../../kernel/cacheinfo.h" static struct kobject *mobility_kobj; @@ -744,6 +745,7 @@ static int pseries_migrate_partition(u64 handle) * by closing VAS windows at the beginning of this function. */ vas_migration_handler(VAS_SUSPEND); + hvpipe_migration_handler(HVPIPE_SUSPEND); ret = wait_for_vasi_session_suspending(handle); if (ret) @@ -770,6 +772,7 @@ static int pseries_migrate_partition(u64 handle) out: vas_migration_handler(VAS_RESUME); + hvpipe_migration_handler(HVPIPE_RESUME); return ret; } diff --git a/arch/powerpc/platforms/pseries/papr-hvpipe.c b/arch/powerpc/platforms/pseries/papr-hvpipe.c index 8d0b1e78d223..cd387d41168c 100644 --- a/arch/powerpc/platforms/pseries/papr-hvpipe.c +++ b/arch/powerpc/platforms/pseries/papr-hvpipe.c @@ -27,6 +27,7 @@ static unsigned char hvpipe_ras_buf[RTAS_ERROR_LOG_MAX]; static struct workqueue_struct *papr_hvpipe_wq; static struct work_struct *papr_hvpipe_work; static int hvpipe_check_exception_token; +static bool hvpipe_feature; /* * New PowerPC FW provides support for partitions and various @@ -233,6 +234,12 @@ static ssize_t papr_hvpipe_handle_write(struct file *file, unsigned long ret, len; char *area_buf; + /* + * Return -ENXIO during migration + */ + if (!hvpipe_feature) + return -ENXIO; + if (!src_info) return -EIO; @@ -325,6 +332,12 @@ static ssize_t papr_hvpipe_handle_read(struct file *file, struct papr_hvpipe_hdr hdr; long ret; + /* + * Return -ENXIO during migration + */ + if (!hvpipe_feature) + return -ENXIO; + if (!src_info) return -EIO; @@ -401,6 +414,12 @@ static unsigned int papr_hvpipe_handle_poll(struct file *filp, { struct hvpipe_source_info *src_info = filp->private_data; + /* + * Return -ENXIO during migration + */ + if (!hvpipe_feature) + return -ENXIO; + if (!src_info) return -EIO; @@ -530,6 +549,12 @@ static long papr_hvpipe_dev_ioctl(struct file *filp, unsigned int ioctl, u32 srcID; long ret; + /* + * Return -ENXIO during migration + */ + if (!hvpipe_feature) + return -ENXIO; + if (get_user(srcID, argp)) return -EFAULT; @@ -688,6 +713,33 @@ static int __init enable_hvpipe_IRQ(void) return 0; } +void hvpipe_migration_handler(int action) +{ + pr_info("hvpipe migration event %d\n", action); + + switch (action) { + case HVPIPE_SUSPEND: + if (hvpipe_feature) { + hvpipe_feature = false; + /* + * set system parameter hvpipe 'disable' + */ + set_hvpipe_sys_param(0); + } + break; + case HVPIPE_RESUME: + /* + * set system parameter hvpipe 'enable' + */ + if (!set_hvpipe_sys_param(1)) + hvpipe_feature = true; + else + pr_err("hvpipe is not enabled after migration\n"); + + break; + } +} + static const struct file_operations papr_hvpipe_ops = { .unlocked_ioctl = papr_hvpipe_dev_ioctl, }; @@ -726,6 +778,7 @@ static int __init papr_hvpipe_init(void) ret = misc_register(&papr_hvpipe_dev); if (!ret) { pr_info("hvpipe feature is enabled\n"); + hvpipe_feature = true; return 0; } else pr_err("misc-dev registration failed %d\n", ret); diff --git a/arch/powerpc/platforms/pseries/papr-hvpipe.h b/arch/powerpc/platforms/pseries/papr-hvpipe.h index aab7f77e087d..c343f4230865 100644 --- a/arch/powerpc/platforms/pseries/papr-hvpipe.h +++ b/arch/powerpc/platforms/pseries/papr-hvpipe.h @@ -11,6 +11,11 @@ #define HVPIPE_HDR_LEN sizeof(struct papr_hvpipe_hdr) +enum hvpipe_migrate_action { + HVPIPE_SUSPEND, + HVPIPE_RESUME, +}; + struct hvpipe_source_info { struct list_head list; /* list of sources */ u32 srcID; @@ -33,4 +38,5 @@ struct hvpipe_event_buf { /* with specified src ID */ }; +void hvpipe_migration_handler(int action); #endif /* _PAPR_HVPIPE_H */ -- 2.43.5