Am 09.11.2011 02:41, schrieb David Gibson:
> On Tue, Nov 08, 2011 at 11:40:20AM +0100, Andreas Färber wrote:
>> Hello,
>>
>> On openSUSE 12.1 RC2 x86_64 host
>>
>> $ ppc64-softmmu/qemu-system-ppc64 -M pseries -L .../pc-bios
>>
>> segfaults. Backtrace:
>>
>> Program received signal SIGSEGV, Segmentation fault.
>> 0x0000000000578a7e in spapr_create_phb (spapr=0x1247f80, busname=
>>     0x77f1b2 "pci", buid=<optimized out>, mem_win_addr=<optimized out>,
>>     mem_win_size=536870912, io_win_addr=1101659111424)
>>     at /home/andreas/QEMU/qemu/hw/spapr_pci.c:306
>> 306      QLIST_INSERT_HEAD(&spapr->phbs, phb, list);
>> (gdb) bt
>> #0  0x0000000000578a7e in spapr_create_phb (spapr=0x1247f80, busname=
>>     0x77f1b2 "pci", buid=<optimized out>, mem_win_addr=<optimized out>,
>>     mem_win_size=536870912, io_win_addr=1101659111424)
>>     at /home/andreas/QEMU/qemu/hw/spapr_pci.c:306
>> #1  0x00000000005760f8 in ppc_spapr_init (ram_size=134217728, boot_device=
>>     0x7fffffffdd50 "cad", kernel_filename=0x0, kernel_cmdline=0x69d000 "",
>>     initrd_filename=0x0, cpu_model=0x7ab640 "POWER7")
>>     at /home/andreas/QEMU/qemu/hw/spapr.c:507
>> #2  0x000000000040a4a9 in main (argc=<optimized out>, argv=<optimized out>,
>>     envp=<optimized out>) at /home/andreas/QEMU/qemu/vl.c:3340
>>
>> I'd expect seeing SLOF boot.
> 
> That'll be due to the missing initialization of the sPAPREnvironment
> structure, and the phbs_list in particular.  I sent a fix for it, but
> I'm wondering if something went wrong with the mail, because no-one
> replied and now I can't seem to find it in the qemu-devel archives.

Thanks. No, I remember reading it now. Just expected all such bug fixes
for 1.0 to be in rc1 already. Unfortunate timing for the big Test Day.

Andreas

> 
> From cbcfb3b04ec8306697509a48dada8fed07dcdc28 Mon Sep 17 00:00:00 2001
> From: David Gibson <da...@gibson.dropbear.id.au>
> Date: Wed, 2 Nov 2011 12:20:25 +1100
> Subject: [PATCH] pseries: Fix initialization of sPAPREnvironment structure
> 
> Since we added PCI support to the pseries machine, we include a qlist of
> PCI host bridges in the sPAPREnvironment structure.  However this list
> was never properly initialized it.  Somehow we got away with this until
> some other recent change broke it, and we now segfault immediately on
> startup.
> 
> This patch adds the required QLIST_INIT(), and while we're at it makes sure
> we initialize the rest of the sPAPREnvironment structure to 0, to avoid
> future nasty surprises.
> 
> Signed-off-by: David Gibson <da...@gibson.dropbear.id.au>
> ---
>  hw/spapr.c |    4 +++-
>  1 files changed, 3 insertions(+), 1 deletions(-)
> 
> diff --git a/hw/spapr.c b/hw/spapr.c
> index bdaa938..40cfc9b 100644
> --- a/hw/spapr.c
> +++ b/hw/spapr.c
> @@ -407,7 +407,9 @@ static void ppc_spapr_init(ram_addr_t ram_size,
>      long pteg_shift = 17;
>      char *filename;
>  
> -    spapr = g_malloc(sizeof(*spapr));
> +    spapr = g_malloc0(sizeof(*spapr));
> +    QLIST_INIT(&spapr->phbs);
> +
>      cpu_ppc_hypercall = emulate_spapr_hypercall;
>  
>      /* Allocate RMA if necessary */

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg

Reply via email to