From nobody Mon Feb 9 09:09:54 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 49F382BEFE8 for ; Thu, 1 Jan 2026 09:05:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767258334; cv=none; b=AP5Bc19N/CWjVtmnCJZ/jN4XbaT+Y7MAoP9woE7qEG4sB+oKkskHFHOsacGA+7lWw973bMw92HUtDKXS4+I1Mw8Fu0IE3wltisxv6UiXT1Eo2bM0sqD6uadYKL5XkoSuHaUI9IPUqpilBBFybk+xTs0FSJrXmJDNoet0k9DqJ54= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767258334; c=relaxed/simple; bh=HIN6QlfVhZ4iSbowtVUzS1M4y8SBEv60XuhX6Cf8bms=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OL2b+FMeyd7bLu9r8jI8HU33hrRvYx0BhvUcQP9WLSOY2fAi9TqjT6rhH/0tXcWBQBF1Fu6+4y6Xw0gGvAyjtwg7IOyXVQ1golk6D+BSnT8Ek4NStk/bSfpWarRXDCN71UCTl1jDdi4bVR0d9HrC9gdRhXOzzQ6hCgjBbp61iJ8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=hkMj415l; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=ZWqwi8vG; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="hkMj415l"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="ZWqwi8vG" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767258331; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QTE9pNuMeO2V67xpWkcGk7SdONFO3mBmobXIG/f1Hmo=; b=hkMj415lIFlyuuHHRbN20BKxR3jc7sBJ3VS+RX4FdBAUrH66xhsUQMYMVkrWW3Cz8nBEGC 4iCwvDlE4y8IAgZUAZhXRPRXBymhSd8bGqIhgiIOTaD4ztfIYJP+bzcoRq5Zp4znu47zDv 89rf8Mwy6a/wyeHLhVrGP7FxNwxUo38= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-79-ihPL1695P9uyvWS622Gksg-1; Thu, 01 Jan 2026 04:05:30 -0500 X-MC-Unique: ihPL1695P9uyvWS622Gksg-1 X-Mimecast-MFC-AGG-ID: ihPL1695P9uyvWS622Gksg_1767258329 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-47d5bd981c8so18170075e9.0 for ; Thu, 01 Jan 2026 01:05:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767258328; x=1767863128; 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; bh=QTE9pNuMeO2V67xpWkcGk7SdONFO3mBmobXIG/f1Hmo=; b=ZWqwi8vGnnusemr4ekiEnYZsTDG0jX4DAFYfojl93J+SauqEpqTqLWUJBdNpFFq4Vf /7r2O6JaFrUSOrZFi3YnbeTtxMW0SIt2VBiNsgoB95LG2uTLPIfoo1efsNnkubCyie1S YPtUiMIpFvjMVB8XmHdoeMHe3LASByE+gG7GjulrW+hTWiNqwFgooIJmWQRSzSoPVRtP IEtR3Jd0jORx7J2JuDoZzTHQEYm6Y/WV7/3mnMJoKX+A/JcoyAMWXawlZf1kYiEGGMPX 54IYH3nFMPMr3H4uim1cPnq99WRgY996T0hEHesTQaJWZmpngO6EeE3us7jdXdGkA3IK 84YA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767258328; x=1767863128; 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; bh=QTE9pNuMeO2V67xpWkcGk7SdONFO3mBmobXIG/f1Hmo=; b=i8dpzjeRuYSCUpbRdGWL1x6BXa6zCacqSJO+Bb3D0kPvvtGFiU4IHyGQqNOjuJyCE3 qIO58JYIuYBSn/od5kVPdMZkqgqromcFWOI7VYZcJWNcL44j1EIwNaLEt2jS7+s8Imc7 FF2ULwITaaznDKLKlLggr2fvSQ9pp8NOyig4ODbftVRbEmAwX7STmenNYEo+3XJbwAqr NsfzQSmwTWkIdj0lk66vfpfHYNafC6yaOiLXDTD6Ptefq4TwJec5yNU7PhHju9xC18uz luvCXELW7OQJLQtyFZPB0QVJWHLDjkuvhsK/QXzr4KIj14MsaXbK31DqRRgw82d+ogVT QqwA== X-Gm-Message-State: AOJu0YzoKztMennicE9ZDyk3Tt2uGP8vuiyxE9QPaJZcN5l/3m2yraG7 6MnkCxqqAPU9e6yirki2dayV9StggYc3HYQUcGz2P8gtrCOSvrnLsdhIIE8x704U63puEF9TT00 Lfc+xOAznUJvHDMFvHOErJha57bZEcXYh3FR81SaJHSAb7ZLq0fVq/GXp70Od4AmusUu5kbFnHn 3FID+qrJXNyedRF/jbDOZVrDR/9bxeTIqzxk3/2aAGIxY3RCxoDA== X-Gm-Gg: AY/fxX6hTJncWoXX7gicDKjyVCGdx4MDc1PTYQds4JkbU0L8H5nD+Fdwyqf6fsfcixt nnMOQNwpepXZ/uWz8PGJuagj6EXt++sKw2BpBatjuKAqMSUPB1a/qp2SbpkfHDYzYROfYOjOz6w ep5iKgq18S7DLnA1pkyIC4YdnrfoX/oHOYvKDLztLK1BgGNYTOlI85NXcuN5/qxx4eTrGbpMCpN iXzUqBKgsaJuMtjsyJjhlZN/mObGso540MWZJ21ZwxL/6uCiMMYHvo51edBkkQ1KOpAwGIms9KB O7jA26BilVPUpqGhCd1KNK5G0UZr7NMaaAmlqaFMl7Br9O/6x7cWc0BBBrx7H1beKaPSuF5774Y a/3+VTZWwyxxhDSrWxg/fi3bxpyCoN4A6/XtKpI3PUZ7ySEBHZq2YHrOkhBIiIozX22JrKcMr9l 2lnd3WHYS8NF3STw== X-Received: by 2002:a05:600c:468f:b0:45c:4470:271c with SMTP id 5b1f17b1804b1-47d269c7019mr429028455e9.18.1767258328336; Thu, 01 Jan 2026 01:05:28 -0800 (PST) X-Google-Smtp-Source: AGHT+IEBmL9IKTWaJ4XtgqdZRB2G/c+eVr1WEScolURdqAQ/qGjBC7KkISj0FN8QL1kAXg0awIdr+g== X-Received: by 2002:a05:600c:468f:b0:45c:4470:271c with SMTP id 5b1f17b1804b1-47d269c7019mr429028105e9.18.1767258327943; Thu, 01 Jan 2026 01:05:27 -0800 (PST) Received: from [192.168.10.48] ([151.61.26.160]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47be27c2260sm719923195e9.15.2026.01.01.01.05.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 Jan 2026 01:05:25 -0800 (PST) From: Paolo Bonzini To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: seanjc@google.com, x86@kernel.org Subject: [PATCH 4/4] selftests: kvm: Verify TILELOADD actually #NM faults when XFD[18]=1 Date: Thu, 1 Jan 2026 10:05:16 +0100 Message-ID: <20260101090516.316883-5-pbonzini@redhat.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260101090516.316883-1-pbonzini@redhat.com> References: <20260101090516.316883-1-pbonzini@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Sean Christopherson Rework the AMX test's #NM handling to use kvm_asm_safe() to verify an #NM actually occurs. As is, a completely missing #NM could go unnoticed. Signed-off-by: Sean Christopherson Signed-off-by: Paolo Bonzini --- tools/testing/selftests/kvm/x86/amx_test.c | 30 +++++++++++++--------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/tools/testing/selftests/kvm/x86/amx_test.c b/tools/testing/sel= ftests/kvm/x86/amx_test.c index 00a42a592a37..371355bde54e 100644 --- a/tools/testing/selftests/kvm/x86/amx_test.c +++ b/tools/testing/selftests/kvm/x86/amx_test.c @@ -69,6 +69,12 @@ static inline void __tileloadd(void *tile) : : "a"(tile), "d"(0)); } =20 +static inline int tileloadd_safe(void *tile) +{ + return kvm_asm_safe(".byte 0xc4,0xe2,0x7b,0x4b,0x04,0x10", + "a"(tile), "d"(0)); +} + static inline void __tilerelease(void) { asm volatile(".byte 0xc4, 0xe2, 0x78, 0x49, 0xc0" ::); @@ -142,6 +148,8 @@ static void __attribute__((__flatten__)) guest_code(str= uct tile_config *amx_cfg, struct tile_data *tiledata, struct xstate *xstate) { + int vector; + GUEST_ASSERT(this_cpu_has(X86_FEATURE_XSAVE) && this_cpu_has(X86_FEATURE_OSXSAVE)); check_xtile_info(); @@ -195,17 +203,13 @@ static void __attribute__((__flatten__)) guest_code(s= truct tile_config *amx_cfg, GUEST_ASSERT(rdmsr(MSR_IA32_XFD) =3D=3D XFEATURE_MASK_XTILE_DATA); set_tilecfg(amx_cfg); __ldtilecfg(amx_cfg); + /* Trigger #NM exception */ - __tileloadd(tiledata); - GUEST_SYNC(TEST_COMPARE_TILEDATA | TEST_SAVE_RESTORE); + vector =3D tileloadd_safe(tiledata); + __GUEST_ASSERT(vector =3D=3D NM_VECTOR, + "Wanted #NM on tileloadd with XFD[18]=3D1, got %s", + ex_str(vector)); =20 - GUEST_DONE(); -} - -void guest_nm_handler(struct ex_regs *regs) -{ - /* Check if #NM is triggered by XFEATURE_MASK_XTILE_DATA */ - GUEST_SYNC(TEST_SAVE_RESTORE); GUEST_ASSERT(!(get_cr0() & X86_CR0_TS)); GUEST_ASSERT(rdmsr(MSR_IA32_XFD_ERR) =3D=3D XFEATURE_MASK_XTILE_DATA); GUEST_ASSERT(rdmsr(MSR_IA32_XFD) =3D=3D XFEATURE_MASK_XTILE_DATA); @@ -217,6 +221,11 @@ void guest_nm_handler(struct ex_regs *regs) /* xfd=3D0, enable amx */ wrmsr(MSR_IA32_XFD, 0); GUEST_SYNC(TEST_SAVE_RESTORE); + + __tileloadd(tiledata); + GUEST_SYNC(TEST_COMPARE_TILEDATA | TEST_SAVE_RESTORE); + + GUEST_DONE(); } =20 int main(int argc, char *argv[]) @@ -253,9 +262,6 @@ int main(int argc, char *argv[]) =20 vcpu_regs_get(vcpu, ®s1); =20 - /* Register #NM handler */ - vm_install_exception_handler(vm, NM_VECTOR, guest_nm_handler); - /* amx cfg for guest_code */ amx_cfg =3D vm_vaddr_alloc_page(vm); memset(addr_gva2hva(vm, amx_cfg), 0x0, getpagesize()); --=20 2.52.0