[vbox-dev] Virtualbox don't restore FPU segments with 32-bit guests while using xsave/xrstor

Frank Mehnert frank.mehnert at oracle.com
Fri May 13 07:14:44 GMT 2016


Hi Quentin,

what is the expected behaviour of this sample? Should it run forever?
Running this sample in a 32-bit guests stops with "segs unset" after
a short time. After applying your patch and running the example in the
guest, it runs forever.

But: If I run this sample on the host (Linux 4.5.4), it will always
stop with "segs unset 1" after the first turn.

Kind regards,

Frank

On Thursday 12 May 2016 14:47:01 quentin buathier wrote:
> This is a sample in C++ which reproduce the problem randomly (1 ~ 2
> seconds).
> On the same host / guest / cpu that my previous mail.
> 
> 2016-05-12 12:20 GMT+02:00 quentin buathier <qbuathier at tetrane.com>:
> > Hi Michal,
> > 
> > I can't now give a way to reproduce the bug but I'll send an executable if
> > I manage to reproduce the problem on something minimalist.
> > 
> > But I can give you the context of the problem:
> >  Host OS: Debian jessie 64-bits
> >  Guest OS: Debian jessie 32-bits
> >  Processor: i7-2600 (and all i7 tested)
> > 
> > PS: Sorry for the previous mail that was accidently sent
> > 
> > Regards,
> > 
> > 2016-05-12 12:18 GMT+02:00 quentin buathier <qbuathier at tetrane.com>:
> >> Hi Michal,
> >> 
> >> I can't now give a way to reproduce the bug. I'll send an executable if I
> >> manage to reproduce the problem on something minimalist.
> >> 
> >> But I can give you the context of the problem:
> >>  Host OS: Debian jessie 64-bits
> >> 
> >> 2016-05-12 11:52 GMT+02:00 Michal Necasek <michal.necasek at oracle.com>:
> >>>    Hi Quentin,
> >>>  
> >>>  Thank you for the patch!
> >>>  
> >>>  Unfortunately (?) I can't reproduce the problem that was originally
> >>> 
> >>> fixed. Could you please provide a bit more information? What's the host
> >>> OS,
> >>> guest OS, host CPU type? How to reproduce the problem?
> >>> 
> >>>     Regards,
> >>>     
> >>>       Michal
> >>> 
> >>> On 5/12/2016 11:26 AM, quentin buathier wrote:
> >>>> Hi,
> >>>> 
> >>>> As I understand it, there used to be a problem with restoring the FPU
> >>>> segments in case of a 64-bit hosts with a 32-bit guest. This issue has
> >>>> been fixed by using the macros "SAVE_32_OR_64_FPU" and
> >>>> "RESTORE_32_OR_64_FPU" in "src/VBox/VMM/VMMR0/CPUMR0A.asm" (when
> >>>> Virtualbox was using fxsave and fxrstor to save and restore the FPU
> >>>> context).
> >>>> 
> >>>> But along with the recent support of xsave / xrstor, the bug was
> >>>> reintroduced: if the CPU supports xsave/xrstor, Virtualbox uses these
> >>>> instructions and the guest's FPU segments are not restored properly.
> >>>> 
> >>>> Please find attached a possible patch to fix this issue (MIT licence).
> >>>> 
> >>>> Regards,
> >>>> 
> >>>> 
> >>>> _______________________________________________
> >>>> vbox-dev mailing list
> >>>> vbox-dev at virtualbox.org
> >>>> https://www.virtualbox.org/mailman/listinfo/vbox-dev
> >>> 
> >>> _______________________________________________
> >>> vbox-dev mailing list
> >>> vbox-dev at virtualbox.org
> >>> https://www.virtualbox.org/mailman/listinfo/vbox-dev

-- 
Dr.-Ing. Frank Mehnert | Software Development Director, VirtualBox
ORACLE Deutschland B.V. & Co. KG | Werkstr. 24 | 71384 Weinstadt, Germany

ORACLE Deutschland B.V. & Co. KG
Hauptverwaltung: Riesstraße 25, D-80992 München
Registergericht: Amtsgericht München, HRA 95603

Komplementärin: ORACLE Deutschland Verwaltung B.V.
Hertogswetering 163/167, 3543 AS Utrecht, Niederlande
Handelsregister der Handelskammer Midden-Niederlande, Nr. 30143697
Geschäftsführer: Alexander van der Ven, Jan Schultheiss, Val Maher



More information about the vbox-dev mailing list