[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [Xen-devel][PATCH 02/02] VMX: Add HVM RDTSCP support
One other concern with this patch... is it possible for an HVM to migrate from a machine that has rdtscp support to a machine that does not? If so, the migration could result in a nasty crash unless you also have code that emulates rdtscp if it is not present. Some of the code exists for this already but I think you need to intercept illegal instruction traps, filter out the traps caused by rdtscp, and inject the rest. (This is done already for PV domains.) > -----Original Message----- > From: Xu, Dongxiao [mailto:dongxiao.xu@xxxxxxxxx] > Sent: Friday, December 11, 2009 4:33 PM > To: Jan Beulich > Cc: Dan Magenheimer; xen-devel@xxxxxxxxxxxxxxxxxxx; Keir Fraser > Subject: RE: [Xen-devel][PATCH 02/02] VMX: Add HVM RDTSCP support > > > Hi, Jan, > There are two kinds of conditions for adding new MSRs, > let's call it CONDITION 1 > and CONDITION 2. > 1. Developer adding new MSR both in msr_index[] and the enum. > 2. Developer adding new MSR *ONLY* in enum. (Like TSC_AUX MSR) > > My original thought is that, since both msr_index and enum is > seldom modified, so I > add that BUILD_BUG_ON(MSR_INDEX_SIZE != 3) to reminder the > developer that currently > we only save three MSRs for host state. However, as you said, > he need to adjust the > BUILD_BUG_ON Condition each time for "CONDITION 1". But if he > only adds MSR into > enum (CONDITION 2, also like the TSC_AUX MSR), then he is not > needed to modify the > BUILD_BUG_ON Condition. > > I understand what you mean now. This is to reminder developer > that, if he want to add > new MSR both into the enum and msr_index[], it should be > placed in the end of msr_index[], > but BEFORE VMX_INDEX_MSR_TSC_AUX in enum. Then he is not > needed to modify he > following condition check. > "ARRAY_SIZE(msr_index) == VMX_INDEX_MSR_TSC_AUX && > VMX_INDEX_MSR_TSC_AUX == VMX_MSR_COUNT - 1". > But it he ONLY wants to add the MSR in enum (CONDITION 2, > also like the TSC_AUX MSR), > the modifcation to BUILD_BUG_ON condition is needed: > "ARRAY_SIZE(msr_index) == VMX_INDEX_MSR_TSC_AUX && > VMX_INDEX_MSR_TSC_AUX == VMX_MSR_COUNT - 2". > > Both approaches have the effect to reminder that, MSRs in > enum is not the same as MSRs > in msr_index[]. Anyway I attached the patch according to your > suggestion. > > Jan Beulich wrote: > >>>> "Xu, Dongxiao" <dongxiao.xu@xxxxxxxxx> 11.12.09 17:22 >>> > >> Here is the updated one, I add the BUILD_BUG_ON() and > some comments. > > > > I still don't think that's what we want: It's not a bug if > > MSR_INDEX_SIZE is not 3. A BUILD_BUG_ON() should check things that > > ought to be guaranteed, but shouldn't require adjustment each time > > some table > > gets expanded/shrunk. What you want to minimally check is > > ARRAY_SIZE(msr_index) == VMX_INDEX_MSR_TSC_AUX && > > VMX_INDEX_MSR_TSC_AUX == VMX_MSR_COUNT - 1. > > > > Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |