From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qk1-f180.google.com (mail-qk1-f180.google.com [209.85.222.180]) (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 B23602BD582 for ; Thu, 27 Nov 2025 18:32:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.180 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764268339; cv=none; b=PZy3KcYhjPQlz+WyeyH984BqBwg6EDiDSeCCn1u9xO+z1vf/hsaasQ5XbrQTB+eSwJtkukfcXzyTLCUGj2B95Sd1Zm7DybYbp8bEJteNi1zknLXpcEwUJPtNJi3IFbOokKQhk6SiGY6XgKpYhcpHUrz7WnSbIbQ/Z4HEUfy+imQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764268339; c=relaxed/simple; bh=WHk1uo17dVjWacWV7hwPy8vRoDSse51wzHHLUZidgw0=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=QXggnH3l7abnBo1W8MVW2bsaEkRn8sY8Sy8+E2FDSBSzGaS6L0GPHMKW8L90tc9PWfCCZxAdYX0MTvEX1QWyd7c8/zEYYwhkAQvlUGkyBKOiDPk4TrljDrvfbS/3HFUphvwaUPKSQlCsB8RfGlfsnGeNsnbBSPHesyPZzkV0sdQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ziepe.ca; spf=pass smtp.mailfrom=ziepe.ca; dkim=pass (2048-bit key) header.d=ziepe.ca header.i=@ziepe.ca header.b=Xs5ucjnG; arc=none smtp.client-ip=209.85.222.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ziepe.ca Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ziepe.ca Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ziepe.ca header.i=@ziepe.ca header.b="Xs5ucjnG" Received: by mail-qk1-f180.google.com with SMTP id af79cd13be357-8b2dcdde65bso158500685a.0 for ; Thu, 27 Nov 2025 10:32:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ziepe.ca; s=google; t=1764268336; x=1764873136; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=HCiMjql0Ln9mtMkZZ6N5PUzOpoCpzuDx3Hfi9xQODmk=; b=Xs5ucjnGFsde/vgawXNaZym5B/3tZYql3V05Gt1VMrjzrwEGZkKQAbDyubc4nX7rO/ NLiPDkCv7whn9vvinmdz1RYtBtvTZ2iE85sJNDWXz80lCRw7RUL0KjeMjbqdQaaqG4VF rVpRU8vZZjfYw6dontqQeRXeuf5Mz+/2NXRli+Ki47VNvd3Na72JRbcyWpnnOPu++4fK 4OErdkUY8IQFH08wwntTp/Kp/9vMztZhVMp45uxq0aBDVuUTJRlLjhnMTFGfIYJRqc/r Es42lCSFExHVQKpO/ZL/Q1rOFEaIQdIGzovznAnQMqLqQGfXvXx1B0NZDqR1on7k1Ml5 lyLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764268336; x=1764873136; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HCiMjql0Ln9mtMkZZ6N5PUzOpoCpzuDx3Hfi9xQODmk=; b=HCVl3cjtqtTf5+PwYEoEwNk6MOR4MbHBDmaxuPo58B8uA0/wVOn8nnIt8x+ao2Bf1T 37xlquwroDrLm8rNI4i4e2Dfn3vcz/SYpWEvdYRtTdgxPWWz7rUKIqPQRnYCKj+yacC/ sPMGP3De6ddFr7Q2ZswYmk/OrU2h+0PqniE2I7SLQ0akd1pS2aXcjdtW0m6a/SMcSpkJ +Y2XmEbirfN4vE3OWuPXlr3r1kNK6KVLxWum++NVVt0/YQ7hVqQ1jl2bs3ZCjPKhy3HA qI4lb0mAhEUpPrEBi+YScFQbG9QnB8EcSCjxlgVzP0h7V/w9W4jCB+5ztGRDMoEXRUGn A5oA== X-Gm-Message-State: AOJu0Yxekri+L4R02JNc8mdjZ84k5Pizch51Y5X6+nIVgtdmVh96gvjS Eun3vsTX5xl8IVY/wwg405KrF1yYaXqGuCHQ0STNK+UJM1oanGxLP8EOGW5Bp8pYEVDYZnrd4eb o1CeZ X-Gm-Gg: ASbGncvFvHhDGJmZEPu9VUJY4qWEEN7C5UOxQ8S1PZ8Y0+bzqebadIVrMU9uGH9XpZs Eh3YTOX99y1EGt8Zjn43CiVQgIaz6Yd1nfEqmt70eFkExxMLqIwOTJQQ6EAbTC61U1KJGjIwhLU MGKX/R2NBIDJZELB8ZBsm5T0XT2K+SX3hlkwBalf1aNIqGR4bNJLKsU6kxqt0uWaceiMvNjNhv0 H08fW+oaIIXYwKo7razsH/AGrMPV44Sivj0Hh3YK0iFpiIDESlcvm1wNtnOj+AixUKSAKzUOUcZ xqd8lXrC0Fy6PL1shFqJbWIGQgpGLc1HwB+QTK289b5X4NnFHBmVFyw1tGwU46qUeCWU5A9bB5n ktm3Io57YHEwSUHND3/nAF88kRKEgu3QpgadMbHoy7GOzi1M05dSBocAdIeBESsuLXIoYB+MCKO 3Z41tQFKtzykAjrKnI8SV+MOtdbTdJtslCX+PQfRL+DyIA9Nca8uU+OnZV X-Google-Smtp-Source: AGHT+IHGJGM6eOtBtWFxNi17xfgkx9F8mVzn1S+VAFr6nzN3No9wjuTWWyomn7f/Lvh3KZ37YjI31A== X-Received: by 2002:a05:620a:17a1:b0:8a4:e7f6:bf57 with SMTP id af79cd13be357-8b4ebd51368mr1670540185a.5.1764268336563; Thu, 27 Nov 2025 10:32:16 -0800 (PST) Received: from ziepe.ca (hlfxns017vw-47-55-120-4.dhcp-dynamic.fibreop.ns.bellaliant.net. [47.55.120.4]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8b52a1b8123sm152040685a.27.2025.11.27.10.32.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Nov 2025 10:32:13 -0800 (PST) Received: from jgg by wakko with local (Exim 4.97) (envelope-from ) id 1vOgmo-00000003GyI-3BgM; Thu, 27 Nov 2025 14:32:10 -0400 Date: Thu, 27 Nov 2025 14:32:10 -0400 From: Jason Gunthorpe To: Calvin Owens Cc: linux-kernel@vger.kernel.org, iommu@lists.linux.dev, Lu Baolu , Nicolin Chen , Joerg Roedel , Will Deacon , David Woodhouse , Robin Murphy Subject: Re: [PATCH next] iommu/vt-d: Use shallowest supported table depth in sagaw Message-ID: <20251127183210.GC738503@ziepe.ca> References: <8f257d2651eb8a4358fcbd47b0145002e5f1d638.1764237717.git.calvin@wbinvd.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <8f257d2651eb8a4358fcbd47b0145002e5f1d638.1764237717.git.calvin@wbinvd.org> On Thu, Nov 27, 2025 at 09:06:35AM -0800, Calvin Owens wrote: > The failing condition in paging_domain_compatible_second_stage() is: > > /* Page table level is supported. */ > if (!(cap_sagaw(iommu->cap) & BIT(pt_info.aw))) > return -EINVAL; > > This happens because, for many domains on this machine, MGAW=39 but > SAGAW=0x04: that claims a 39-bit maximum address width, but also claims > to only support 48-bit/4-level paging, which seems odd. This logic was intended to deal with this: static int compute_vasz_lg2_ss(struct intel_iommu *iommu) { unsigned int sagaw = cap_sagaw(iommu->cap); unsigned int mgaw = cap_mgaw(iommu->cap); /* * Find the largest table size that both the mgaw and sagaw support. * This sets both the number of table levels and the valid range of * IOVA. */ if (mgaw >= 48 && (sagaw & BIT(3))) return min(57, mgaw); else if (mgaw >= 39 && (sagaw & BIT(2))) return min(48, mgaw); else if (mgaw >= 30 && (sagaw & BIT(1))) return min(39, mgaw); Though it is not right.. I didn't consider that this would come up, the only way to solve it is to pass in more information so the tree can be higher than the vasz requires.. Can you try these two commits? https://github.com/jgunthorpe/linux/commits/iommu_pt_vtd/ Thanks, Jason