From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kay, Allen M" Subject: RE: [PATCH 3 of 3] kexec: disable iommu jumping into the kdump kernel Date: Thu, 19 May 2011 17:33:16 -0700 Message-ID: <987664A83D2D224EAE907B061CE93D5301D5832C9D@orsmsx505.amr.corp.intel.com> References: <20110518184946.GB14013@dumpdata.com> <4DD430A4.5000305@citrix.com> <20110518205719.GA5979@dumpdata.com> <4DD43910.6060709@citrix.com> <20110519143206.GB9854@dumpdata.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: <20110519143206.GB9854@dumpdata.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Konrad Rzeszutek Wilk , Andrew Cooper Cc: "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org The functions iommu_enable_x2apic_IR()/iommu_disable_x2apic_IR() should rea= lly be architectural specific. They should not be called from common code = without going through iommu API. The reason it worked on AMD box is because= it returns if the list acpi_drhd_units is empty. On AMD box, this list is= empty since it is only populated only on Intel VT-d enabled systems. We w= ill clean this up. I don't know why is disable_intremap() called separately. It seems to me w= e should be able to call disable_qinval() and disable_intremap() in vtd_sus= pend(). I will give it a try tomorrow and see if I can find a clue the code is writ= ten this way. Allen -----Original Message----- From: Konrad Rzeszutek Wilk [mailto:konrad.wilk@oracle.com]=20 Sent: Thursday, May 19, 2011 7:32 AM To: Andrew Cooper; Kay, Allen M Cc: xen-devel@lists.xensource.com Subject: Re: [Xen-devel] [PATCH 3 of 3] kexec: disable iommu jumping into t= he kdump kernel > >>>What about AMD VI IOMMUs? Does it work when that IOMMU is used? > >>> > >>It worked on the AMD box I tested the code on. Like the comment > >>says - as far as I can tell, it is architecture independent code. > >>>>+ */ > >>>>+ iommu_disable_x2apic_IR(); > >>>Can't that function be done in the suspend code of the IOMMU? > >>There is a comment in iommu suspend stating that it cant and isn't > >>done, but rather is left for the local/ioapic_suspend functions > >>which dont properly work in the kexec path. > >OK, how about just moving it out of driver/passthrought/vtd then? > Because that code is fragile enough without me poking about in it. > I would prefer someone with more knowledge about IOMMU to make that > call. OK. Lets CC him here then.