From: Yinghai Lu <yinghai@kernel.org>
To: "Brandeburg, Jesse" <jesse.brandeburg@intel.com>,
Jesse Barnes <jbarnes@virtuousgeek.org>,
David Woodhouse <David.Woodhouse@intel.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>
Subject: [PATCH] intel-iommu: don't call domain_exit if can not attach with iommu
Date: Sat, 20 Mar 2010 03:21:16 -0700 [thread overview]
Message-ID: <4BA4A19C.1010607@kernel.org> (raw)
In-Reply-To: <4BA42A95.4000301@kernel.org>
found when a lot of ixgbevf are used with intel iommu, will get crash
>
> eth304 ip=192.171.178.102 mac=56:95:16:88:4C:C1 pci=0000:0e:18.3 drv=ixgbevf
> eth305 ip=192.171.179.102 mac=D6:41:8C:4A:87:B3 pci=0000:0e:18.5 drv=ixgbevf
> [ 9534.886519] BUG: unable to handle kernel NULL pointer dereference at
> 0000000000000008
> [ 9534.889775] Call Trace:
> [ 9534.889775] [<ffffffff81406a3d>] domain_remove_dev_info+0x34/0xcf
> [ 9534.889775] [<ffffffff81408a1d>] domain_exit+0x23/0xc4
> [ 9534.889775] [<ffffffff81409c1c>] T.953+0x173/0x342
> [ 9534.889775] [<ffffffff81409fd0>] __intel_map_single+0x63/0x1b3
> [ 9534.889775] [<ffffffff8140a22a>] intel_alloc_coherent+0xc7/0xee
> [ 9534.889775] [<ffffffff816c3e7d>] ? ixgbevf_setup_tx_resources+0x2f/0x12c
> [ 9534.889775] [<ffffffff816c3f36>] ixgbevf_setup_tx_resources+0xe8/0x12c
> [ 9534.889775] [<ffffffff816c42d2>] ixgbevf_open+0x7a/0x160
> [ 9534.889775] [<ffffffff81adf21e>] __dev_open+0x8e/0xbc
> [ 9534.889775] [<ffffffff81adb716>] __dev_change_flags+0xad/0x130
> [ 9534.889775] [<ffffffff81adf15a>] dev_change_flags+0x21/0x57
> [ 9534.889775] [<ffffffff81b211e5>] devinet_ioctl+0x29d/0x541
> [ 9534.889775] [<ffffffff810a4b92>] ? trace_hardirqs_off_caller+0x1f/0xa9
> [ 9534.889775] [<ffffffff81b22801>] inet_ioctl+0x8f/0xa7
> [ 9534.889775] [<ffffffff81acc258>] sock_do_ioctl+0x29/0x48
> [ 9534.889775] [<ffffffff81acca64>] sock_ioctl+0x1fe/0x20d
> [ 9534.889775] [<ffffffff8113b86a>] vfs_ioctl+0x32/0xa6
> [ 9534.889775] [<ffffffff8113bd04>] do_vfs_ioctl+0x2b0/0x2cb
> [ 9534.889775] [<ffffffff81033c4c>] ? sysret_check+0x27/0x62
> [ 9534.889775] [<ffffffff8113bd66>] sys_ioctl+0x47/0x6a
> [ 9534.889775] [<ffffffff81033c1b>] system_call_fastpath+0x16/0x1b
> [ 9534.889775] Code: cd 7f cc ff 41 54 9d 48 83 c4 20 5b 41 5c 41 5d 41
> 5e c9 c3 55 48 89 e5 e8 11 ff ff ff c9 c3 55 48 89 e5 53 48 89 fb 48 83
> ec 08 <48> 8b 47 08 4c 8b 00 49 39 f8 74 1d 48 89 f9 48 c7 c2 7f e9 18
> [ 9534.889775] RIP [<ffffffff813ddf94>] list_del+0xc/0x8b
> [ 9534.889775] RSP <ffff88c070373af8>
> [ 9534.889775] CR2: 0000000000000008
> [ 9534.889775] ---[ end trace 072bd8cdb08a760c ]---
> xifconfig8_2x_vf.sh: line 10: 28555 Killed ifconfig
> $DEV $IP
>
when intel_iommu=off or iommu=pt is used, will work well.
root cause:
domain is initialized after trying attached it,
if it can not be attached, don't call domain_exit yet. it will cause kernel crash in domain_exit()
after patch will will get error instead of crash.
[ 1781.910241] IOMMU: no free domain ids
[ 1781.910244] Allocating domain for 0000:d0:1f.5 failed
SIOCSIFFLAGS: Cannot allocate memory
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Index: linux-2.6/drivers/pci/intel-iommu.c
===================================================================
--- linux-2.6.orig/drivers/pci/intel-iommu.c
+++ linux-2.6/drivers/pci/intel-iommu.c
@@ -1853,7 +1857,7 @@ static struct dmar_domain *get_domain_fo
ret = iommu_attach_domain(domain, iommu);
if (ret) {
- domain_exit(domain);
+ free_domain_mem(domain);
goto error;
}
next prev parent reply other threads:[~2010-03-20 10:22 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-20 1:53 intel iommu ixgbevf Yinghai Lu
2010-03-20 10:21 ` Yinghai Lu [this message]
2010-03-29 17:45 ` [PATCH] intel-iommu: don't call domain_exit if can not attach with iommu Jesse Brandeburg
2010-04-08 16:49 ` Jesse Barnes
2010-04-08 17:58 ` Yinghai
2010-04-08 18:04 ` Chris Wright
2010-04-08 18:06 ` Yinghai
2010-04-08 18:13 ` Chris Wright
2010-04-08 18:16 ` Yinghai
2010-04-08 18:22 ` Chris Wright
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4BA4A19C.1010607@kernel.org \
--to=yinghai@kernel.org \
--cc=David.Woodhouse@intel.com \
--cc=jbarnes@virtuousgeek.org \
--cc=jesse.brandeburg@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.