> >> FRED is enabled when CR4.FRED = IA32_EFER.LMA = 1. Any reason to omit the > >> check about long mode? > > > >It won' t allow CR4.FRED to be set if not in long mode, I don't expect it > >at runtime. Or you have one? > > I was thinking about a very contrived case: > > 1. the CPU enters 64-bit long mode and sets CR4.FRED > 2. the CPU switches out of 64-bit long mode > > and SDM vol3 chapter 2.5 CONTROL REGISTERS says: > > A 64-bit capable processor will retain the upper 32 bits of each control > register when transitioning out of IA-32e mode. > > so, to me, it is possible that CR4.FRED is 1 while IA32_EFER.LMA is 0. > and in this case, FRED should be considered disabled. You're correct, this is a solid case. It's not one-way, but I forgot the other way around. > > Anyway, I think we should align with FRED SPEC. If we deliberately omit > the check about long mode, please add a comment to explain why it is ok > to do that. Yeah, I will add it.