Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp4487483ybx; Mon, 4 Nov 2019 14:14:40 -0800 (PST) X-Google-Smtp-Source: APXvYqyoq3besfUhaL6IKnoMtcBrZHveKGFJUShYvyiOtMus3zBIu4PakxcE/HJiHOUVyJbPOASP X-Received: by 2002:aa7:d0d4:: with SMTP id u20mr10816352edo.112.1572905680279; Mon, 04 Nov 2019 14:14:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1572905680; cv=none; d=google.com; s=arc-20160816; b=Wznn0DTQK76WQJiaNXeaKxT8Ark39I0PJ/OOVxFGS9jUTXjhWuS7KBpqcavLeu5S5B Zebst0ZW6wVdmSDW4Sgjj5iMIjJCIy5eeg8yZBZucIJRYlmr+7O2JIa1AmaZGetjilaS DVqiLRI/FD+9ML3um6mneH2gdiUNb03OjOCR9o2GudWakwiTtRh5kjy+DHxPXnYTBZ2L cUyIkFvD1xfiqOMPSvt7gAfuVhu1VNw5eSc2xbv5wC6qq89arYCM7mMGJlnVo7EEpt9z Q5rPq1qUHlPUiQxJ6Rh6TRZhnrYuQXvhsVorkjlwdgccMeE3awLPWFIO6bnOTiwY1Ssy f/pw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=tcgmlw73NIRcigR12uz3DUyKVr2WIG9EXdoFcuMCgkM=; b=vHMTjiF2NZKDGkYg3oU/TZc0UfHuz1mOCRvMu+Xp4r/N8Mbsu+ZTDcPhiiNFbo4L0S oG9gGn8ITa69+L4emFClrZ5gUI3B48CgmTBd/h9ZFhbOMlJIh3I6J6/Xghf9hF+PTn9q rkdo4C6a1vFZJClZJqaZ8Q358N0eUvZoZXVMZFLANao4m8LDSP12p0MJPBkQwxlVqn4d pkQV2SgmV9V2Cg3qeP1wn4BQOX52wcIj6Rn1xrqY14mk7uIVwfvdDKHfhn4Qr+OI3QIf Tcnc7MEgbaJubRwQrQVYgSaaOjwr/UjKLgH1/s/TtizEUpE5cXc4O15Ld2bnMgkmG0tz oixg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=mymTkfnR; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o22si1646357ejr.397.2019.11.04.14.14.16; Mon, 04 Nov 2019 14:14:40 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=mymTkfnR; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390717AbfKDWLs (ORCPT + 99 others); Mon, 4 Nov 2019 17:11:48 -0500 Received: from mail.kernel.org ([198.145.29.99]:45144 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390419AbfKDWLp (ORCPT ); Mon, 4 Nov 2019 17:11:45 -0500 Received: from localhost (6.204-14-84.ripe.coltfrance.com [84.14.204.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id DAB03205C9; Mon, 4 Nov 2019 22:11:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1572905503; bh=56KTKN1K9qcjQ5ztu0oRebv1++BP4QTyGSHQ943xbmc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mymTkfnRPEstnroLPMws/T2MNK/TPmzly8MvUqbe17fM3jWFYD4TTBHcjF/M96+6y Jl6na4LtAyNIK9Z1/eIzBSjhHy7ZPhdaSdPAPbf2D4XIXb8i2Gwl2es4BQ9KbS0oFv 6zla6DP4JBzEWJa4ZkF0BZZWXC86b9EdgG8xCnpQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, John Donnelly , Lu Baolu , Joerg Roedel Subject: [PATCH 5.3 144/163] iommu/vt-d: Fix panic after kexec -p for kdump Date: Mon, 4 Nov 2019 22:45:34 +0100 Message-Id: <20191104212150.752050215@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191104212140.046021995@linuxfoundation.org> References: <20191104212140.046021995@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: John Donnelly commit 160c63f909ffbc797c0bbe23310ac1eaf2349d2f upstream. This cures a panic on restart after a kexec operation on 5.3 and 5.4 kernels. The underlying state of the iommu registers (iommu->flags & VTD_FLAG_TRANS_PRE_ENABLED) on a restart results in a domain being marked as "DEFER_DEVICE_DOMAIN_INFO" that produces an Oops in identity_mapping(). [ 43.654737] BUG: kernel NULL pointer dereference, address: 0000000000000056 [ 43.655720] #PF: supervisor read access in kernel mode [ 43.655720] #PF: error_code(0x0000) - not-present page [ 43.655720] PGD 0 P4D 0 [ 43.655720] Oops: 0000 [#1] SMP PTI [ 43.655720] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.3.2-1940.el8uek.x86_64 #1 [ 43.655720] Hardware name: Oracle Corporation ORACLE SERVER X5-2/ASM,MOTHERBOARD,1U, BIOS 30140300 09/20/2018 [ 43.655720] RIP: 0010:iommu_need_mapping+0x29/0xd0 [ 43.655720] Code: 00 0f 1f 44 00 00 48 8b 97 70 02 00 00 48 83 fa ff 74 53 48 8d 4a ff b8 01 00 00 00 48 83 f9 fd 76 01 c3 48 8b 35 7f 58 e0 01 <48> 39 72 58 75 f2 55 48 89 e5 41 54 53 48 8b 87 28 02 00 00 4c 8b [ 43.655720] RSP: 0018:ffffc9000001b9b0 EFLAGS: 00010246 [ 43.655720] RAX: 0000000000000001 RBX: 0000000000001000 RCX: fffffffffffffffd [ 43.655720] RDX: fffffffffffffffe RSI: ffff8880719b8000 RDI: ffff8880477460b0 [ 43.655720] RBP: ffffc9000001b9e8 R08: 0000000000000000 R09: ffff888047c01700 [ 43.655720] R10: 00002194036fc692 R11: 0000000000000000 R12: 0000000000000000 [ 43.655720] R13: ffff8880477460b0 R14: 0000000000000cc0 R15: ffff888072d2b558 [ 43.655720] FS: 0000000000000000(0000) GS:ffff888071c00000(0000) knlGS:0000000000000000 [ 43.655720] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 43.655720] CR2: 0000000000000056 CR3: 000000007440a002 CR4: 00000000001606b0 [ 43.655720] Call Trace: [ 43.655720] ? intel_alloc_coherent+0x2a/0x180 [ 43.655720] ? __schedule+0x2c2/0x650 [ 43.655720] dma_alloc_attrs+0x8c/0xd0 [ 43.655720] dma_pool_alloc+0xdf/0x200 [ 43.655720] ehci_qh_alloc+0x58/0x130 [ 43.655720] ehci_setup+0x287/0x7ba [ 43.655720] ? _dev_info+0x6c/0x83 [ 43.655720] ehci_pci_setup+0x91/0x436 [ 43.655720] usb_add_hcd.cold.48+0x1d4/0x754 [ 43.655720] usb_hcd_pci_probe+0x2bc/0x3f0 [ 43.655720] ehci_pci_probe+0x39/0x40 [ 43.655720] local_pci_probe+0x47/0x80 [ 43.655720] pci_device_probe+0xff/0x1b0 [ 43.655720] really_probe+0xf5/0x3a0 [ 43.655720] driver_probe_device+0xbb/0x100 [ 43.655720] device_driver_attach+0x58/0x60 [ 43.655720] __driver_attach+0x8f/0x150 [ 43.655720] ? device_driver_attach+0x60/0x60 [ 43.655720] bus_for_each_dev+0x74/0xb0 [ 43.655720] driver_attach+0x1e/0x20 [ 43.655720] bus_add_driver+0x151/0x1f0 [ 43.655720] ? ehci_hcd_init+0xb2/0xb2 [ 43.655720] ? do_early_param+0x95/0x95 [ 43.655720] driver_register+0x70/0xc0 [ 43.655720] ? ehci_hcd_init+0xb2/0xb2 [ 43.655720] __pci_register_driver+0x57/0x60 [ 43.655720] ehci_pci_init+0x6a/0x6c [ 43.655720] do_one_initcall+0x4a/0x1fa [ 43.655720] ? do_early_param+0x95/0x95 [ 43.655720] kernel_init_freeable+0x1bd/0x262 [ 43.655720] ? rest_init+0xb0/0xb0 [ 43.655720] kernel_init+0xe/0x110 [ 43.655720] ret_from_fork+0x24/0x50 Fixes: 8af46c784ecfe ("iommu/vt-d: Implement is_attach_deferred iommu ops entry") Cc: stable@vger.kernel.org # v5.3+ Signed-off-by: John Donnelly Reviewed-by: Lu Baolu Signed-off-by: Joerg Roedel Signed-off-by: Greg Kroah-Hartman --- drivers/iommu/intel-iommu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/drivers/iommu/intel-iommu.c +++ b/drivers/iommu/intel-iommu.c @@ -2783,7 +2783,7 @@ static int identity_mapping(struct devic struct device_domain_info *info; info = dev->archdata.iommu; - if (info && info != DUMMY_DEVICE_DOMAIN_INFO) + if (info && info != DUMMY_DEVICE_DOMAIN_INFO && info != DEFER_DEVICE_DOMAIN_INFO) return (info->domain == si_domain); return 0;