* [Qemu-devel] BIOS regression since v2.3.0 (misaligned longword i/o to address 0xffff)
@ 2015-07-26 19:32 Stefan Weil
2015-07-27 5:49 ` Stefan Weil
0 siblings, 1 reply; 7+ messages in thread
From: Stefan Weil @ 2015-07-26 19:32 UTC (permalink / raw)
To: QEMU Developer, Gerd Hoffmann
Hi,
since commit 21f5826a04d38e19488f917e1eef22751490c769
"seabios: update to 1.8.0 release" there is a misaligned i/o access
caused by the PC BIOS.
QEMU's PC emulation (qemu-system-i386, qemu-system-x86_64)
with enabled trace backend reports the misaligned i/o access
when running the BIOS code:
Misaligned i/o to address 0x0000ffff with size 4 for memory region io
("to address 0x0000ffff" was added by my debug code)
This issue was reported by users of QEMU for Windows,
but it is not Windows specific.
Regards
Stefan
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] BIOS regression since v2.3.0 (misaligned longword i/o to address 0xffff)
2015-07-26 19:32 [Qemu-devel] BIOS regression since v2.3.0 (misaligned longword i/o to address 0xffff) Stefan Weil
@ 2015-07-27 5:49 ` Stefan Weil
2015-07-27 6:24 ` Stefan Weil
0 siblings, 1 reply; 7+ messages in thread
From: Stefan Weil @ 2015-07-27 5:49 UTC (permalink / raw)
To: QEMU Developer, Gerd Hoffmann
Am 26.07.2015 um 21:32 schrieb Stefan Weil:
> Hi,
>
> since commit 21f5826a04d38e19488f917e1eef22751490c769
> "seabios: update to 1.8.0 release" there is a misaligned i/o access
> caused by the PC BIOS.
>
> QEMU's PC emulation (qemu-system-i386, qemu-system-x86_64)
> with enabled trace backend reports the misaligned i/o access
> when running the BIOS code:
>
> Misaligned i/o to address 0x0000ffff with size 4 for memory region io
>
> ("to address 0x0000ffff" was added by my debug code)
>
> This issue was reported by users of QEMU for Windows,
> but it is not Windows specific.
>
> Regards
> Stefan
Sorry, I did not notice that the code which reports misaligned access is
not part of the official QEMU code.
Here is the patch for memory.c which adds it:
@@ -1073,6 +1119,9 @@ bool memory_region_access_valid(MemoryRegion *mr,
int access_size, i;
if (!mr->ops->valid.unaligned && (addr & (size - 1))) {
+ fprintf(stderr, "Misaligned i/o to address %08" HWADDR_PRIx
+ " with size %u for memory region %s\n",
+ addr, size, mr->name);
return false;
}
Is the misaligned i/o access done by the BIOS code a feature or a bug?
Regards
Stefan
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] BIOS regression since v2.3.0 (misaligned longword i/o to address 0xffff)
2015-07-27 5:49 ` Stefan Weil
@ 2015-07-27 6:24 ` Stefan Weil
2015-07-27 6:36 ` Stefan Weil
0 siblings, 1 reply; 7+ messages in thread
From: Stefan Weil @ 2015-07-27 6:24 UTC (permalink / raw)
To: QEMU Developer, Gerd Hoffmann, Paolo Bonzini
Am 27.07.2015 um 07:49 schrieb Stefan Weil:
> Am 26.07.2015 um 21:32 schrieb Stefan Weil:
>> Hi,
>>
>> since commit 21f5826a04d38e19488f917e1eef22751490c769
>> "seabios: update to 1.8.0 release" there is a misaligned i/o access
>> caused by the PC BIOS.
>>
>> QEMU's PC emulation (qemu-system-i386, qemu-system-x86_64)
>> with enabled trace backend reports the misaligned i/o access
>> when running the BIOS code:
>>
>> Misaligned i/o to address 0x0000ffff with size 4 for memory region io
>>
>> ("to address 0x0000ffff" was added by my debug code)
>>
>> This issue was reported by users of QEMU for Windows,
>> but it is not Windows specific.
>>
>> Regards
>> Stefan
>
>
> Sorry, I did not notice that the code which reports misaligned access is
> not part of the official QEMU code.
>
> Here is the patch for memory.c which adds it:
>
> @@ -1073,6 +1119,9 @@ bool memory_region_access_valid(MemoryRegion *mr,
> int access_size, i;
>
> if (!mr->ops->valid.unaligned && (addr & (size - 1))) {
> + fprintf(stderr, "Misaligned i/o to address %08" HWADDR_PRIx
> + " with size %u for memory region %s\n",
> + addr, size, mr->name);
> return false;
> }
>
> Is the misaligned i/o access done by the BIOS code a feature or a bug?
>
> Regards
> Stefan
>
The change (regression?) was caused by this commit (which obviously
did not intend to change generated code):
40d03128531e06b35a3836f9346790003692540e is the first bad commit
commit 40d03128531e06b35a3836f9346790003692540e
Author: Paolo Bonzini <pbonzini@redhat.com>
Date: Thu May 15 13:22:26 2014 +0200
piix: add and use dev-piix.h
Move all definitions for PIIX registers to a single header file,
like there is one already for Q35, and make the naming more
consistent.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
:040000 040000 72d3a611f87106916d58e30fa1d615659fa711f6
5bfd5601430bc5263ac0a6f8a15a131f3bc8678e M src
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] BIOS regression since v2.3.0 (misaligned longword i/o to address 0xffff)
2015-07-27 6:24 ` Stefan Weil
@ 2015-07-27 6:36 ` Stefan Weil
2015-07-27 8:46 ` Paolo Bonzini
0 siblings, 1 reply; 7+ messages in thread
From: Stefan Weil @ 2015-07-27 6:36 UTC (permalink / raw)
To: QEMU Developer, Gerd Hoffmann, Paolo Bonzini
Am 27.07.2015 um 08:24 schrieb Stefan Weil:
> Am 27.07.2015 um 07:49 schrieb Stefan Weil:
>> Am 26.07.2015 um 21:32 schrieb Stefan Weil:
>>> Hi,
>>>
>>> since commit 21f5826a04d38e19488f917e1eef22751490c769
>>> "seabios: update to 1.8.0 release" there is a misaligned i/o access
>>> caused by the PC BIOS.
>>>
>>> QEMU's PC emulation (qemu-system-i386, qemu-system-x86_64)
>>> with enabled trace backend reports the misaligned i/o access
>>> when running the BIOS code:
>>>
>>> Misaligned i/o to address 0x0000ffff with size 4 for memory region io
>>>
>>> ("to address 0x0000ffff" was added by my debug code)
>>>
>>> This issue was reported by users of QEMU for Windows,
>>> but it is not Windows specific.
>>>
>>> Regards
>>> Stefan
>>
>>
>> Sorry, I did not notice that the code which reports misaligned access is
>> not part of the official QEMU code.
>>
>> Here is the patch for memory.c which adds it:
>>
>> @@ -1073,6 +1119,9 @@ bool memory_region_access_valid(MemoryRegion *mr,
>> int access_size, i;
>>
>> if (!mr->ops->valid.unaligned && (addr & (size - 1))) {
>> + fprintf(stderr, "Misaligned i/o to address %08" HWADDR_PRIx
>> + " with size %u for memory region %s\n",
>> + addr, size, mr->name);
>> return false;
>> }
>>
>> Is the misaligned i/o access done by the BIOS code a feature or a bug?
>>
>> Regards
>> Stefan
Please ignore my last e-mail. This one is the commit reported
by git bisect for seabios:
457ba42878bd9f704e5a6c1c7bc7fcced686fe4e is the first bad commit
commit 457ba42878bd9f704e5a6c1c7bc7fcced686fe4e
Author: Paolo Bonzini <pbonzini@redhat.com>
Date: Thu May 15 13:22:28 2014 +0200
smm: complete SMM setup
SMI generation requires two bits to be set in PIIX4, one for APMC
interrupts specifically and a general one.
For Q35 it is the same, plus it is a good thing to lock SMIs after
enabling them.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
:040000 040000 5bfd5601430bc5263ac0a6f8a15a131f3bc8678e
5e0901b1c5ae4c79ed4c34c8bd27e7daf9006086 M src
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] BIOS regression since v2.3.0 (misaligned longword i/o to address 0xffff)
2015-07-27 6:36 ` Stefan Weil
@ 2015-07-27 8:46 ` Paolo Bonzini
2015-07-27 9:32 ` Stefan Weil
0 siblings, 1 reply; 7+ messages in thread
From: Paolo Bonzini @ 2015-07-27 8:46 UTC (permalink / raw)
To: Stefan Weil, QEMU Developer, Gerd Hoffmann
On 27/07/2015 08:36, Stefan Weil wrote:
> commit 457ba42878bd9f704e5a6c1c7bc7fcced686fe4e
> Author: Paolo Bonzini <pbonzini@redhat.com>
> Date: Thu May 15 13:22:28 2014 +0200
>
> smm: complete SMM setup
>
> SMI generation requires two bits to be set in PIIX4, one for APMC
> interrupts specifically and a general one.
>
> For Q35 it is the same, plus it is a good thing to lock SMIs after
> enabling them.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>
> :040000 040000 5bfd5601430bc5263ac0a6f8a15a131f3bc8678e
> 5e0901b1c5ae4c79ed4c34c8bd27e7daf9006086 M src
>
Is this enough to fix it?
--- a/src/fw/smm.c
+++ b/src/fw/smm.c
@@ -184,7 +184,7 @@ static void piix4_apmc_smm_setup(int isabdf, int i440_bdf)
/* enable SMI generation */
value = inl(acpi_pm_base + PIIX_PMIO_GLBCTL);
- outl(acpi_pm_base + PIIX_PMIO_GLBCTL, value | PIIX_PMIO_GLBCTL_SMI_EN);
+ outl(value | PIIX_PMIO_GLBCTL_SMI_EN, acpi_pm_base + PIIX_PMIO_GLBCTL);
smm_relocate_and_restore();
Paolo
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] BIOS regression since v2.3.0 (misaligned longword i/o to address 0xffff)
2015-07-27 8:46 ` Paolo Bonzini
@ 2015-07-27 9:32 ` Stefan Weil
2015-07-27 9:45 ` Stefan Weil
0 siblings, 1 reply; 7+ messages in thread
From: Stefan Weil @ 2015-07-27 9:32 UTC (permalink / raw)
To: Paolo Bonzini, QEMU Developer, Gerd Hoffmann
Am 27.07.2015 um 10:46 schrieb Paolo Bonzini:
> On 27/07/2015 08:36, Stefan Weil wrote:
>> commit 457ba42878bd9f704e5a6c1c7bc7fcced686fe4e
>> Author: Paolo Bonzini <pbonzini@redhat.com>
>> Date: Thu May 15 13:22:28 2014 +0200
>>
>> smm: complete SMM setup
>>
>> SMI generation requires two bits to be set in PIIX4, one for APMC
>> interrupts specifically and a general one.
>>
>> For Q35 it is the same, plus it is a good thing to lock SMIs after
>> enabling them.
>>
>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>>
>> :040000 040000 5bfd5601430bc5263ac0a6f8a15a131f3bc8678e
>> 5e0901b1c5ae4c79ed4c34c8bd27e7daf9006086 M src
> Is this enough to fix it?
>
> --- a/src/fw/smm.c
> +++ b/src/fw/smm.c
> @@ -184,7 +184,7 @@ static void piix4_apmc_smm_setup(int isabdf, int i440_bdf)
>
> /* enable SMI generation */
> value = inl(acpi_pm_base + PIIX_PMIO_GLBCTL);
> - outl(acpi_pm_base + PIIX_PMIO_GLBCTL, value | PIIX_PMIO_GLBCTL_SMI_EN);
> + outl(value | PIIX_PMIO_GLBCTL_SMI_EN, acpi_pm_base + PIIX_PMIO_GLBCTL);
>
> smm_relocate_and_restore();
>
>
> Paolo
Yes, and the new code also looks much better for an outl function call. :-)
You may add
Reviewed-by: Stefan Weil <sw@weilnetz.de>
Stefan
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] BIOS regression since v2.3.0 (misaligned longword i/o to address 0xffff)
2015-07-27 9:32 ` Stefan Weil
@ 2015-07-27 9:45 ` Stefan Weil
0 siblings, 0 replies; 7+ messages in thread
From: Stefan Weil @ 2015-07-27 9:45 UTC (permalink / raw)
To: Paolo Bonzini, QEMU Developer, Gerd Hoffmann, Hannes Reinecke
Am 27.07.2015 um 11:32 schrieb Stefan Weil:
> Am 27.07.2015 um 10:46 schrieb Paolo Bonzini:
>> On 27/07/2015 08:36, Stefan Weil wrote:
>>> commit 457ba42878bd9f704e5a6c1c7bc7fcced686fe4e
>>> Author: Paolo Bonzini <pbonzini@redhat.com>
>>> Date: Thu May 15 13:22:28 2014 +0200
>>>
>>> smm: complete SMM setup
>>>
>>> SMI generation requires two bits to be set in PIIX4, one for APMC
>>> interrupts specifically and a general one.
>>>
>>> For Q35 it is the same, plus it is a good thing to lock SMIs after
>>> enabling them.
>>>
>>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>>>
>>> :040000 040000 5bfd5601430bc5263ac0a6f8a15a131f3bc8678e
>>> 5e0901b1c5ae4c79ed4c34c8bd27e7daf9006086 M src
>> Is this enough to fix it?
>>
>> --- a/src/fw/smm.c
>> +++ b/src/fw/smm.c
>> @@ -184,7 +184,7 @@ static void piix4_apmc_smm_setup(int isabdf, int i440_bdf)
>>
>> /* enable SMI generation */
>> value = inl(acpi_pm_base + PIIX_PMIO_GLBCTL);
>> - outl(acpi_pm_base + PIIX_PMIO_GLBCTL, value | PIIX_PMIO_GLBCTL_SMI_EN);
>> + outl(value | PIIX_PMIO_GLBCTL_SMI_EN, acpi_pm_base + PIIX_PMIO_GLBCTL);
>>
>> smm_relocate_and_restore();
>>
>>
>> Paolo
>
>
> Yes, and the new code also looks much better for an outl function call. :-)
> You may add
>
> Reviewed-by: Stefan Weil <sw@weilnetz.de>
>
> Stefan
When I look at src/hw/megasas.c, I see three more outl function calls
with wrong argument order. CC'ing Hannes therefore.
Stefan
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2015-07-27 9:45 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-26 19:32 [Qemu-devel] BIOS regression since v2.3.0 (misaligned longword i/o to address 0xffff) Stefan Weil
2015-07-27 5:49 ` Stefan Weil
2015-07-27 6:24 ` Stefan Weil
2015-07-27 6:36 ` Stefan Weil
2015-07-27 8:46 ` Paolo Bonzini
2015-07-27 9:32 ` Stefan Weil
2015-07-27 9:45 ` Stefan Weil
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.