Han, Weidong
2010-Mar-25 09:40 UTC
[Xen-devel] [PATCH] VT-d: should not disable VT-d when find unknown DMAR structure type
Now 4 DMAR structure types are supported (type value 0 ~ 3). Type values > 3 are reserved for future use. Current implementation disables VT-d when find unknown DMAR structure type, this may lead to VT-d disabling on future platforms before supporting new types on Xen. For forward compatibility, just skip unknown structures by skipping the appropriate number of bytes indicated by the Length field, and then VT-d still can be used. Signed-off-by: Weidong Han <weidong.han@intel.com> diff -r 298794763a75 xen/drivers/passthrough/vtd/dmar.c --- a/xen/drivers/passthrough/vtd/dmar.c Fri Mar 26 02:04:06 2010 +0800 +++ b/xen/drivers/passthrough/vtd/dmar.c Fri Mar 26 02:08:45 2010 +0800 @@ -730,7 +730,6 @@ static int __init acpi_parse_dmar(struct dprintk(XENLOG_WARNING VTDPREFIX, "Unknown DMAR structure type %x\n", entry_header->type); - ret = -EINVAL; break; } if ( ret ) _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Nadolski, Ed
2010-Mar-25 14:35 UTC
RE: [Xen-devel] [PATCH] VT-d: should not disable VT-d when find unknown DMAR structure type
> -----Original Message----- > From: xen-devel-bounces@lists.xensource.com [mailto:xen-devel- > bounces@lists.xensource.com] On Behalf Of Han, Weidong > Sent: Thursday, March 25, 2010 3:41 AM > To: xen-devel@lists.xensource.com > Cc: Kay, Allen M; Keir Fraser > Subject: [Xen-devel] [PATCH] VT-d: should not disable VT-d when find > unknown DMAR structure type > > Now 4 DMAR structure types are supported (type value 0 ~ 3). Type > values > 3 are reserved for future use. Current implementation disables > VT-d when find unknown DMAR structure type, this may lead to VT-d > disabling on future platforms before supporting new types on Xen. For > forward compatibility, just skip unknown structures by skipping the > appropriate number of bytes indicated by the Length field, and then VT- > d still can be used. > > Signed-off-by: Weidong Han <weidong.han@intel.com> > > diff -r 298794763a75 xen/drivers/passthrough/vtd/dmar.c > --- a/xen/drivers/passthrough/vtd/dmar.c Fri Mar 26 02:04:06 2010 > +0800 > +++ b/xen/drivers/passthrough/vtd/dmar.c Fri Mar 26 02:08:45 2010 > +0800 > @@ -730,7 +730,6 @@ static int __init acpi_parse_dmar(struct > dprintk(XENLOG_WARNING VTDPREFIX, > "Unknown DMAR structure type %x\n", > entry_header->type); > - ret = -EINVAL; > break; > } > if ( ret )Just a suggestion: Since this completely changes the meaning of the dprintk message, the message should state that the unknown DMAR is being ignored. Otherwise an end user might think that it means some kind of serious problem. Ed _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Weidong Han
2010-Mar-26 02:16 UTC
Re: [Xen-devel] [PATCH] VT-d: should not disable VT-d when find unknown DMAR structure type
Nadolski, Ed wrote:>> -----Original Message----- >> From: xen-devel-bounces@lists.xensource.com [mailto:xen-devel- >> bounces@lists.xensource.com] On Behalf Of Han, Weidong >> Sent: Thursday, March 25, 2010 3:41 AM >> To: xen-devel@lists.xensource.com >> Cc: Kay, Allen M; Keir Fraser >> Subject: [Xen-devel] [PATCH] VT-d: should not disable VT-d when find >> unknown DMAR structure type >> >> Now 4 DMAR structure types are supported (type value 0 ~ 3). Type >> values > 3 are reserved for future use. Current implementation disables >> VT-d when find unknown DMAR structure type, this may lead to VT-d >> disabling on future platforms before supporting new types on Xen. For >> forward compatibility, just skip unknown structures by skipping the >> appropriate number of bytes indicated by the Length field, and then VT- >> d still can be used. >> >> Signed-off-by: Weidong Han <weidong.han@intel.com> >> >> diff -r 298794763a75 xen/drivers/passthrough/vtd/dmar.c >> --- a/xen/drivers/passthrough/vtd/dmar.c Fri Mar 26 02:04:06 2010 >> +0800 >> +++ b/xen/drivers/passthrough/vtd/dmar.c Fri Mar 26 02:08:45 2010 >> +0800 >> @@ -730,7 +730,6 @@ static int __init acpi_parse_dmar(struct >> dprintk(XENLOG_WARNING VTDPREFIX, >> "Unknown DMAR structure type %x\n", >> entry_header->type); >> - ret = -EINVAL; >> break; >> } >> if ( ret ) >> > > Just a suggestion: Since this completely changes the meaning of the dprintk message, the message should state that the unknown DMAR is being ignored. Otherwise an end user might think that it means some kind of serious problem. > > Ed >Good suggestion. Changed the warning message as below. Signed-off-by: Weidong Han <weidong.han@intel.com> diff -r 18f4db5f72d7 xen/drivers/passthrough/vtd/dmar.c --- a/xen/drivers/passthrough/vtd/dmar.c Thu Mar 25 10:01:05 2010 +0000 +++ b/xen/drivers/passthrough/vtd/dmar.c Fri Mar 26 10:12:32 2010 +0800 @@ -711,7 +711,7 @@ static int __init acpi_parse_dmar(struct break; default: dprintk(XENLOG_WARNING VTDPREFIX, - "Unknown DMAR structure type %x\n", + "Ignore unknown DMAR structure type (0x%x)\n", entry_header->type); break; } _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel