Re: [3.9-rc1] Bug in bootup code or debug code?

From: H. Peter Anvin
Date: Wed Mar 13 2013 - 13:44:58 EST


On 03/13/2013 08:22 AM, Yu, Fenghua wrote:
>>
>> I found the location of "hardware reset" trigger.
>>
>> It is __pa_symbol(&boot_params) call, for I don't encounter "hardware
>> reset" if
>> I remove the "//" from below debug patch.
>>
>> This bug is not yet fixed as of 3.9.0-rc2-00188-g6c23cbb .
>>
>> --- a/arch/x86/kernel/microcode_intel_early.c
>> +++ b/arch/x86/kernel/microcode_intel_early.c
>> @@ -741,7 +741,9 @@ load_ucode_intel_bsp(void)
>> #ifdef CONFIG_X86_32
>> struct boot_params *boot_params_p;
>>
>> + //while (1);
>> boot_params_p = (struct boot_params *)__pa_symbol(&boot_params);
>> + while (1);
>> ramdisk_image = boot_params_p->hdr.ramdisk_image;
>> ramdisk_size = boot_params_p->hdr.ramdisk_size;
>> initrd_start_early = ramdisk_image;
>
> Tetsuo and Dave,
>
> That's the place where we suspected to cause the problem.
>
> My question is: how to access global variable in linear mode in virtualization? __pa_symbol() is not a problem for native.
>

What kind of virtualization are we talking about here? We should not be
running this code under any paravirtualized code path -- this is the
hypervisor's job to take care of this. For HVM, this should just work
the same way.

-hpa


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/