Patchwork powerpc pci: fixed packing of ranges[]

login
register
mail settings
Submitter Alexey Kardashevskiy
Date July 18, 2012, 8:22 a.m.
Message ID <1342599771-13844-1-git-send-email-aik@ozlabs.ru>
Download mbox | patch
Permalink /patch/171611/
State New
Headers show

Comments

Alexey Kardashevskiy - July 18, 2012, 8:22 a.m.
By default mingw-gcc is trying to pack structures the way to
preserve binary compatibility with MS Visual C what leads to
incorrect and unexpected padding in the PCI bus ranges property of
the sPAPR PHB.

The patch replaces __attribute__((packed)) with more strict QEMU_PACKED
which actually is __attribute__((gcc_struct, packed)) on Windows.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
---
 hw/spapr_pci.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Stefan Weil - July 18, 2012, 3:40 p.m.
Am 18.07.2012 10:22, schrieb Alexey Kardashevskiy:
> By default mingw-gcc is trying to pack structures the way to
> preserve binary compatibility with MS Visual C what leads to
> incorrect and unexpected padding in the PCI bus ranges property of
> the sPAPR PHB.
>
> The patch replaces __attribute__((packed)) with more strict QEMU_PACKED
> which actually is __attribute__((gcc_struct, packed)) on Windows.
>
> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> ---
>   hw/spapr_pci.c |    2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/hw/spapr_pci.c b/hw/spapr_pci.c
> index b3032d2..0261d2e 100644
> --- a/hw/spapr_pci.c
> +++ b/hw/spapr_pci.c
> @@ -418,7 +418,7 @@ int spapr_populate_pci_dt(sPAPRPHBState *phb,
>           uint64_t child;
>           uint64_t parent;
>           uint64_t size;
> -    } __attribute__((packed)) ranges[] = {
> +    } QEMU_PACKED ranges[] = {
>           {
>               cpu_to_be32(b_ss(1)), cpu_to_be64(0),
>               cpu_to_be64(phb->io_win_addr),


The patch changes sizeof(ranges[0]) from 32 to 28 bytes
and can be applied as a trivial patch.

Tested-by: Stefan Weil <sw@weilnetz.de>
Reviewed-by: Stefan Weil <sw@weilnetz.de>
Alexander Graf - July 18, 2012, 3:41 p.m.
On 07/18/2012 05:40 PM, Stefan Weil wrote:
> Am 18.07.2012 10:22, schrieb Alexey Kardashevskiy:
>> By default mingw-gcc is trying to pack structures the way to
>> preserve binary compatibility with MS Visual C what leads to
>> incorrect and unexpected padding in the PCI bus ranges property of
>> the sPAPR PHB.
>>
>> The patch replaces __attribute__((packed)) with more strict QEMU_PACKED
>> which actually is __attribute__((gcc_struct, packed)) on Windows.
>>
>> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
>> ---
>>   hw/spapr_pci.c |    2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/hw/spapr_pci.c b/hw/spapr_pci.c
>> index b3032d2..0261d2e 100644
>> --- a/hw/spapr_pci.c
>> +++ b/hw/spapr_pci.c
>> @@ -418,7 +418,7 @@ int spapr_populate_pci_dt(sPAPRPHBState *phb,
>>           uint64_t child;
>>           uint64_t parent;
>>           uint64_t size;
>> -    } __attribute__((packed)) ranges[] = {
>> +    } QEMU_PACKED ranges[] = {
>>           {
>>               cpu_to_be32(b_ss(1)), cpu_to_be64(0),
>>               cpu_to_be64(phb->io_win_addr),
>
>
> The patch changes sizeof(ranges[0]) from 32 to 28 bytes
> and can be applied as a trivial patch.
>
> Tested-by: Stefan Weil <sw@weilnetz.de>
> Reviewed-by: Stefan Weil <sw@weilnetz.de>
>

So do you want to take it through the trivial queue? I'm fine either way.

Acked-by: Alexander Graf <agraf@suse.de>


Alex
Stefan Hajnoczi - July 21, 2012, 9:41 a.m.
On Wed, Jul 18, 2012 at 05:41:36PM +0200, Alexander Graf wrote:
> On 07/18/2012 05:40 PM, Stefan Weil wrote:
> >Am 18.07.2012 10:22, schrieb Alexey Kardashevskiy:
> >>By default mingw-gcc is trying to pack structures the way to
> >>preserve binary compatibility with MS Visual C what leads to
> >>incorrect and unexpected padding in the PCI bus ranges property of
> >>the sPAPR PHB.
> >>
> >>The patch replaces __attribute__((packed)) with more strict QEMU_PACKED
> >>which actually is __attribute__((gcc_struct, packed)) on Windows.
> >>
> >>Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> >>---
> >>  hw/spapr_pci.c |    2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >>diff --git a/hw/spapr_pci.c b/hw/spapr_pci.c
> >>index b3032d2..0261d2e 100644
> >>--- a/hw/spapr_pci.c
> >>+++ b/hw/spapr_pci.c
> >>@@ -418,7 +418,7 @@ int spapr_populate_pci_dt(sPAPRPHBState *phb,
> >>          uint64_t child;
> >>          uint64_t parent;
> >>          uint64_t size;
> >>-    } __attribute__((packed)) ranges[] = {
> >>+    } QEMU_PACKED ranges[] = {
> >>          {
> >>              cpu_to_be32(b_ss(1)), cpu_to_be64(0),
> >>              cpu_to_be64(phb->io_win_addr),
> >
> >
> >The patch changes sizeof(ranges[0]) from 32 to 28 bytes
> >and can be applied as a trivial patch.
> >
> >Tested-by: Stefan Weil <sw@weilnetz.de>
> >Reviewed-by: Stefan Weil <sw@weilnetz.de>
> >
> 
> So do you want to take it through the trivial queue? I'm fine either way.
> 
> Acked-by: Alexander Graf <agraf@suse.de>

Merged into the trivial patches tree with your Acked-by:.

Stefan

Patch

diff --git a/hw/spapr_pci.c b/hw/spapr_pci.c
index b3032d2..0261d2e 100644
--- a/hw/spapr_pci.c
+++ b/hw/spapr_pci.c
@@ -418,7 +418,7 @@  int spapr_populate_pci_dt(sPAPRPHBState *phb,
         uint64_t child;
         uint64_t parent;
         uint64_t size;
-    } __attribute__((packed)) ranges[] = {
+    } QEMU_PACKED ranges[] = {
         {
             cpu_to_be32(b_ss(1)), cpu_to_be64(0),
             cpu_to_be64(phb->io_win_addr),