[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [Bochs-developers] [PATCH 2/6] Add S3 state to DSDT. Ha
From: |
Gleb Natapov |
Subject: |
[Qemu-devel] Re: [Bochs-developers] [PATCH 2/6] Add S3 state to DSDT. Handleresumeevent in the BIOS. |
Date: |
Sun, 2 Nov 2008 20:39:14 +0200 |
On Sun, Nov 02, 2008 at 07:13:37PM +0100, Sebastian Herbszt wrote:
>>>> +
>>>> + if (*shutdown_flag == 0xfe) {
>>>> + *s3_resume_vector = find_resume_vector();
>>>> + if (!*s3_resume_vector) {
>>>> + BX_INFO("This is S3 resume but wakeup vector is NULL\n");
>>>> + } else {
>>>> + BX_INFO("S3 resume vector %p\n", *s3_resume_vector);
>>>> + /* redirect bios read access to RAM */
>>>> + pci_for_each_device(find_440fx);
>>>> + bios_lock_shadow_ram(); /* bios is already copied */
>>>
>>> bios_shadow_init() is called in pci_bios_init(). Why do we need to lock it
>>> here?
>>>
>> Because we don't call pci_bios_init() if it is S3 resume.
>
> If pci_bios_init() is not called on S3 resume, pci_bios_init_bridges()
> is not called either. This way bios_shadow_init() is never called and the
> bios is never shadowed. Since it's not shadowed there is no need to lock it.
> What do i miss here?
>
The BIOS is already shadowed during a regular boot. No need to copy it, just
lock.
>>>> + return;
>>>> + }
>>>> + }
>>>> +
>>>> + uuid_probe();
>>>> +
>>>> pci_bios_init();
>>>>
>>>> if (bios_table_cur_addr != 0) {
>>>>
>>>
>>> rombios32.c r1.32 got:
>>>
>>> smp_probe();
>>>
>>> pci_bios_init();
>>>
>>> if (bios_table_cur_addr != 0) {
>>>
>>> mptable_init();
>>>
>>> uuid_probe();
>>>
>>> The patch should remove uuid_probe() from the if-case.
>>>
>> Why? uuid_probe() is needed only if SMBIOS tables are built. And
>> smbios_init() call is in the same if.
>
> Your patch does also add a uuid_probe() before the if-case. Since it does
> not remove the one in the if-case, uuid_probe() will be called twice.
>
Ah. Now I see. I added this by mistake. I'll fix this.
--
Gleb.