Received: by 2002:ab2:3350:0:b0:1f4:6588:b3a7 with SMTP id o16csp204539lqe; Fri, 5 Apr 2024 19:28:00 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXlj1bOvR1TzoyjdGfTkRq+ZGs3aCh6DqNfcDXQnF6Uw7dlWWX+VOnQ96e10wnklUV23vE5e+zSD7YDEcvI10NESwOZicacgPtxt7qJRg== X-Google-Smtp-Source: AGHT+IH5zAbvHPjRS2Dg8NR1B0VuwgSj5TPfuDlCLc/95bcNilgfDhLUsYdR/yqpV0KGb2eVjBPi X-Received: by 2002:ac8:574f:0:b0:432:f709:b4f1 with SMTP id 15-20020ac8574f000000b00432f709b4f1mr3083529qtx.63.1712370479743; Fri, 05 Apr 2024 19:27:59 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712370479; cv=pass; d=google.com; s=arc-20160816; b=z5COP+n3S/g8TRyEwMz/z05yZTcrhR15fYYSXp1wDvoBcFThxrp6HECOvuZX6w+l/D jQh596GnEUCvZZWyW8nP+9SSu5zYbHhn2ktcRZ/UdGV3Z48k6UcwmPYLQgTIq9lYZPfF 2ut1+GTyhV/19OxP7gamyN1QJCwSfnrGab8nJxG4fkryiMAp8ELDz/N2pO8RO8gmm/kA op1gbNsdNJjxqPloqgOSUrjw59Sy+OkyHdkBZ3XrB5v98jY1zcgpopwZcM8UZmZppuwp AJfxEM7qd3668T87DVeOj7bs8zMiqO2q9/gwdAv+AR8XHzynoznaqy0xf+naB3blWpRa xssA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:cc:to :from; bh=4tGVO8zh1oRZV2Dl1vzrqKkSHYfTtn+RAnTwf8Uos5s=; fh=/CxZzgH+RySx1FPdtJVnrq6p+EJK1ryL44ugVO7UwxA=; b=yCUZM98ei/SwssnlnUjgoQJY6oDQNEPVB1F4ruQ7mYwi4+Um0Xe88vwZsJ6zZp49dd TLDXkbaQsamKOr3x1nB41w4vy1He8YMlC4nqfEn7aFOKSt/8gkBTTwy/DnlCxNqLsRjO Wo+ga1lIajo9ERVNtTasiRlCysyRsvRVPQD1BrYDmF/SZ/cah7J4nCS8lXnWzN4sRbk6 4EGDSrJZtvFxrIbrKaKmScn34vGuLsBOubEkNdzF2GXWtQ5y+nMd0MPET1gc+E8lApp1 3sF28nsEnzDHLp1AeGs5vARn35gUXWeR3xQDMD6PfqlJ7Al6dUXWTCW8UOVmVYjh9RD5 hcXg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=huawei.com dmarc=pass fromdomain=huawei.com); spf=pass (google.com: domain of linux-kernel+bounces-133774-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-133774-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id f22-20020a05622a1a1600b0043162b4be3dsi3312771qtb.694.2024.04.05.19.27.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Apr 2024 19:27:59 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-133774-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=huawei.com dmarc=pass fromdomain=huawei.com); spf=pass (google.com: domain of linux-kernel+bounces-133774-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-133774-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 783811C211C7 for ; Sat, 6 Apr 2024 02:27:59 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 170A012B75; Sat, 6 Apr 2024 02:27:55 +0000 (UTC) Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190]) (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 2474A15EA2 for ; Sat, 6 Apr 2024 02:27:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.190 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712370474; cv=none; b=tq6pzWFIabwgLyNWchYGgkB5JY5ykDz0QG60kRdJ2J8k5PY6tU6aiHaRU+pUEJnqxMqajGjmDskLqIVfeKN5ef8kgYCqlEpGTcAnnuQWZHFd5Ize/njRwi26VUB3FSHGpnE9y0wIx0v5U6+6TcD+lOcxe6EdDbnn9WNZTT60Ni4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712370474; c=relaxed/simple; bh=BewQ/T2U4RIeO4jNKmTe2LINmgotCVRugv5rarHB5jQ=; h=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type; b=uHuenQfnseoPWfC/gS3z2NprnqWw0Wr/FJPVTH1g7rGIKIKXeOY+0yAj7YwwpburJ1JXjWX/7UrNUJfOWUheSMiq6v5Qj2n0lguBe9IZVDtHr0vxkjNvTS93RuH4LVGDi+bPth2JHQ+JmUxigACyQsnQ2RDahrMMOEEx4crr2Mo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com; spf=pass smtp.mailfrom=huawei.com; arc=none smtp.client-ip=45.249.212.190 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huawei.com Received: from mail.maildlp.com (unknown [172.19.163.17]) by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4VBK2556Jxz29dNV; Sat, 6 Apr 2024 10:25:01 +0800 (CST) Received: from kwepemd500014.china.huawei.com (unknown [7.221.188.63]) by mail.maildlp.com (Postfix) with ESMTPS id C16281A0172; Sat, 6 Apr 2024 10:27:49 +0800 (CST) Received: from 228-1616.huawei.com (10.67.246.68) by kwepemd500014.china.huawei.com (7.221.188.63) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.28; Sat, 6 Apr 2024 10:27:49 +0800 From: Nianyao Tang To: , , , , CC: , , Subject: [RESPIN PATCH] irqchip/gic-v4.1:Fix VSYNC referencing an unmapped VPE Date: Sat, 6 Apr 2024 02:27:37 +0000 Message-ID: <20240406022737.3898763-1-tangnianyao@huawei.com> X-Mailer: git-send-email 2.30.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To kwepemd500014.china.huawei.com (7.221.188.63) As per the GICv4.1 spec (Arm IHI 0069H, 5.3.19): "A VMAPP with {V, Alloc}=={0, x} is self-synchronizing, This means the ITS command queue does not show the command as consumed until all of its effects are completed." Furthermore, VSYNC is allowed to deliver an SError when referencing a non existent VPE. By these definitions, a VMAPP followed by a VSYNC is a bug, as the later references a VPE that has been unmapped by the former. Fix it by eliding the VSYNC in this scenario. Fixes: 64edfaa9a234 ("irqchip/gic-v4.1: Implement the v4.1 flavour of VMAPP") Signed-off-by: Nianyao Tang Reviewed-by: Marc Zyngier --- drivers/irqchip/irq-gic-v3-its.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c index fca888b36680..2a537cbfcb07 100644 --- a/drivers/irqchip/irq-gic-v3-its.c +++ b/drivers/irqchip/irq-gic-v3-its.c @@ -786,6 +786,7 @@ static struct its_vpe *its_build_vmapp_cmd(struct its_node *its, struct its_cmd_block *cmd, struct its_cmd_desc *desc) { + struct its_vpe *vpe = valid_vpe(its, desc->its_vmapp_cmd.vpe); unsigned long vpt_addr, vconf_addr; u64 target; bool alloc; @@ -798,6 +799,11 @@ static struct its_vpe *its_build_vmapp_cmd(struct its_node *its, if (is_v4_1(its)) { alloc = !atomic_dec_return(&desc->its_vmapp_cmd.vpe->vmapp_count); its_encode_alloc(cmd, alloc); + /* + * Unmapping a VPE is self-synchronizing on GICv4.1, + * no need to issue a VSYNC. + */ + vpe = NULL; } goto out; @@ -832,7 +838,7 @@ static struct its_vpe *its_build_vmapp_cmd(struct its_node *its, out: its_fixup_cmd(cmd); - return valid_vpe(its, desc->its_vmapp_cmd.vpe); + return vpe; } static struct its_vpe *its_build_vmapti_cmd(struct its_node *its, -- 2.30.0