From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (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 30A2D3E9C3A for ; Wed, 19 Aug 2026 22:43:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787179387; cv=none; b=K3dEVcGKiaBxm68I9qzVf8/tGr5zw1YjEbS+SU7CXmfs8Ob8lySQyn2cXT+GK+n93XQpN7Pxv7eel2+OsytfUvtQU+3cm7e4VSsjVR2ZxmgEAI23Ph5Ic2qT/M/FbqjZl9A0molvh7d+RA6+or9qUwC9Lz8AXPRF6+aXqVOSODQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787179387; c=relaxed/simple; bh=2UF/dpEtNwUpXIy2/lsLjKtKkOc89V1LHpzMmRW/PXY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=D11vtEeNP3IXioFfNhg7EsHOvJdSY881m3h67ziLI6yx9KIHQ7pIYkoxHEvyihOYqTKBKzfewu95dkgLjS7dfBrmWxDXbBF1mcEK/vxBtW46mqS5BDpnGng0S6tyHf9S1fQXMJSdb2Qm2LwQ7mzkPSy+o7BdHRwrET06qjIfeyY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=IiRnFXjl; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IiRnFXjl" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-4954a9e8490so2326295e9.1 for ; Wed, 19 Aug 2026 15:43:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787179383; x=1787784183; 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:content-type; bh=3M8fODVTfcIR6x1BvOAoZIGong7qKVQ1WDu7Gk51RQs=; b=IiRnFXjlT192IJiaPsi5tX4fJIV/6L+/EPA9rxNKGssq2Fn90xYVETYiSjlnejToBX 1Jt0I06KbYthVi2fyC9cDrqHz0Df/XXRU9+3kEhqRnykbwLsZxAgsvpK6Tp/ojR+63gL yWVvJPVmos3AFpQAPOX23NNUjMfh9SEUDuG/XHHj5wc5AH8C26k/sP56kY7PxsZmruhe MeF2aZ7QT11Sk0Mq9K49V+RxVX6dlLfFxo5lB+RqUdHu2pEGoTS6frCFA27pZHipDNvu E3JAs3n5tsL02KrKwvNBxLJDIvhXwzXd0U1mfU9AyhptLAkcFncozyXFo17/BqsvMQZd t+7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787179383; x=1787784183; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=3M8fODVTfcIR6x1BvOAoZIGong7qKVQ1WDu7Gk51RQs=; b=S63FkJ0wSwC7QnilFxCRZTHMIbCT8dcobDM1T0IMvZO1V+yzuFILjHPP0T2zP8laY5 C9UujhlkA2/icrbSACA/xZCzLWtrPTeYkGhwzYCBRVUICQ9Oeyx3g1rv18NAIYewueYk KC0vNsPxrEUN4L3PbQfo7ivYE5gUIxSGTKTrcw566xTVLXj6ji362vCk0eRkeUtH2eV8 5XjhzNvhi92EykT/p3WFccVH64stIpVG6ll3QC/oMbkO0WOMcum2+Wugu96RwedKIrV6 9L5WTR9zLLii3gX6JA8YYUO0M/pSx7ai3ATXLpl/I6rggi7LBqkwQEfd/BBQJdICeMuD L5SQ== X-Forwarded-Encrypted: i=1; AHgh+Rpo2MU5Ol0LhJe8TDQN01n5sE5Ufm903UoEcGdd5jKXCUt21tSmHDi635HznZA7leoPxDYRMw7o/XzoxjvtKJ4=@vger.kernel.org X-Gm-Message-State: AOJu0YwrE0IhB+t1QV3yeEaIj6OvKGnOzPgiDKhf2uuDHpcmCwrtDX07 SonJyfvTfyPXP04tYYVv4Egnyz+z2iKoryxvaoVVIP/N5uak1z8fenCV X-Gm-Gg: AR+sD120jG/SSyk4anIfSi3GkL8l6gJaegG3LMbg24ppO00fesXl7+WeTiDRWz34SkU PSmGJOgMgGlsIQi8tPQgKhgXtBeGjFbN9kbBRDlOu8vu8rpXneckCzxJz0M6awZ5hBYfBwDfxwm 7AqKgNFtJxXV0I50hMrxLcH9O5rpPxPEaKsLgFbXvtSmh6t9aBYAaIl3X2TLMFKExqTow62CiIS GVEgYVhaz233WgVjJ3a8tweS+CskOJjMA3yn9p7bxFwXo7/VEiex6ko93/IY0dsOlnmrWPEBOn2 /niNtHCCKNqiB/4c01hY0WF3FNLOs+0Bo+b6c5bP1gS0P4Pkn5hO7ijCa1wsCD60HkAe6jMD3Hj xybIr/i6/zabxfukRPeJvdOLvAR9e6LJePOutw8lLfodL2qrJxFdks9HtB2839E7GvPntm0xek6 lI13PW+FDNaADLsNaguLYLh396UAuay9w4d4yLgUAfoN3aN7SmpSrNLJJS22aV0pqBDKZPMi20z mEFIer86IJqZb9dZmIcXOAKaBBSgez3Hh9NRjkihPJ8Wxs3SCiNeA6vu7IBrmxRn93R30B+9od6 7CyubI+ph1LtjXPykyiB0NGRH6SCbMbIZAy+UrxBWuTQY4SN9si+9FUP1buNE0Ke42Y= X-Received: by 2002:a05:600c:4309:b0:499:60e5:248a with SMTP id 5b1f17b1804b1-499b06ea247mr24837485e9.4.1787179383250; Wed, 19 Aug 2026 15:43:03 -0700 (PDT) Received: from localhost.localdomain (dynamic-2a02-3100-ae9e-1d01-58d3-443d-4fa6-01cd.310.pool.telefonica.de. [2a02:3100:ae9e:1d01:58d3:443d:4fa6:1cd]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-482b1450e61sm8553317f8f.13.2026.08.19.15.43.01 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 19 Aug 2026 15:43:02 -0700 (PDT) From: Karl Mehltretter To: Marc Zyngier , Oliver Upton , kvmarm@lists.linux.dev Cc: Karl Mehltretter , Fuad Tabba , Joey Gouly , Steffen Eiden , Suzuki K Poulose , Zenghui Yu , Catalin Marinas , Will Deacon , Paolo Bonzini , Shuah Khan , Eric Auger , Christoffer Dall , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, linux-kselftest@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH v2 2/5] KVM: arm64: vgic-v3: Reset assignments after failed region setup Date: Thu, 20 Aug 2026 00:42:26 +0200 Message-Id: <20260819224229.82948-3-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20260819224229.82948-1-kmehltretter@gmail.com> References: <20260819224229.82948-1-kmehltretter@gmail.com> Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit A REDIST_REGION write can fail after redistributors from earlier regions have been registered. The rollback removes their iodevs from the MMIO bus but leaves rdreg and base_addr set. It also leaves free_index unchanged. A retry sees base_addr set and skips registration, leaving the redistributors absent from the MMIO bus. Make redistributor unregistration clear the cached assignment and return the region slot. The failing vCPU already unassigns itself, so the existing rollback resets the vCPUs processed before the failure. A retry can then assign and register all redistributors again. Fixes: c011f4ea106b ("KVM: arm/arm64: Check vcpu redist base before registering an iodev") Suggested-by: Marc Zyngier Cc: stable@vger.kernel.org Assisted-by: Codex:gpt-5.6-sol Signed-off-by: Karl Mehltretter --- arch/arm64/kvm/vgic/vgic-mmio-v3.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kvm/vgic/vgic-mmio-v3.c b/arch/arm64/kvm/vgic/vgic-mmio-v3.c index c75caadbd1d3..331d203acb43 100644 --- a/arch/arm64/kvm/vgic/vgic-mmio-v3.c +++ b/arch/arm64/kvm/vgic/vgic-mmio-v3.c @@ -852,6 +852,7 @@ void vgic_unregister_redist_iodev(struct kvm_vcpu *vcpu) struct vgic_io_device *rd_dev = &vcpu->arch.vgic_cpu.rd_iodev; kvm_io_bus_unregister_dev(vcpu->kvm, KVM_MMIO_BUS, &rd_dev->dev); + vgic_unassign_redist_iodev(vcpu); } static int vgic_register_all_redist_iodevs(struct kvm *kvm) @@ -869,7 +870,7 @@ static int vgic_register_all_redist_iodevs(struct kvm *kvm) } if (ret) { - /* The current c failed, so iterate over the previous ones. */ + /* The failing vCPU has no assignment to undo. */ int i; for (i = 0; i < c; i++) { -- 2.39.5 (Apple Git-154)