qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-ppc] [PATCH 56/72] PPC: e500: Use new MPIC dt format


From: Alexander Graf
Subject: Re: [Qemu-ppc] [PATCH 56/72] PPC: e500: Use new MPIC dt format
Date: Wed, 8 Aug 2012 23:16:36 +0200

On 24.06.2012, at 01:07, Alexander Graf wrote:

> Due to popular demand, we're updating the way we generate the MPIC
> node and interrupt lines based on what the current state of art is.
> 
> Requested-by: Scott Wood <address@hidden>
> Signed-off-by: Alexander Graf <address@hidden>

Hey Scott,

This patch breaks SMP for me. The reason for the breakage is that Linux does 
some things differently when it finds an fsl,mpic instead of a generic openpic. 
I have assembled logs between a working version (compatible openpic) and a 
broken version (compatible fsl,mpic) with guest and host debug turned on.

Maybe you have an idea what's going wrong.


Alex


--- log.fails   2012-08-08 23:06:59.000000000 +0200
+++ log.works   2012-08-08 23:07:13.000000000 +0200
@@ -51,34 +51,34 @@
 mpic: Initializing for 256 sources
 openpic_cpu_write_internal: cpu 0 addr 0000000000000080 <= 0000000f
 mpic_timer_write: addr 0000000000000040 <= 00000001
-mpic_timer_write: addr 0000000000000030 <= 800907f3
-Set IDE 76 to 0x800007f3
+mpic_timer_write: addr 0000000000000030 <= 800900f3
+Set IDE 76 to 0x800000f3
 mpic_timer_write: addr 0000000000000080 <= 00000001
-mpic_timer_write: addr 0000000000000070 <= 800907f4
-Set IDE 77 to 0x800007f4
+mpic_timer_write: addr 0000000000000070 <= 800900f4
+Set IDE 77 to 0x800000f4
 mpic_timer_write: addr 00000000000000c0 <= 00000001
-mpic_timer_write: addr 00000000000000b0 <= 800907f5
-Set IDE 78 to 0x800007f5
+mpic_timer_write: addr 00000000000000b0 <= 800900f5
+Set IDE 78 to 0x800000f5
 mpic_timer_write: addr 0000000000000100 <= 00000001
-mpic_timer_write: addr 00000000000000f0 <= 800907f6
+mpic_timer_write: addr 00000000000000f0 <= 800900f6
 openpic_gbl_write: addr 00000000000010a0 <= 80000000
 openpic_update_irq: IRQ 92 is not pending
 Set IPVP 92 to 0x80000000 -> 0x80000000
 openpic_gbl_read: addr 00000000000010a0
 openpic_gbl_read: => 80000000
-openpic_gbl_write: addr 00000000000010a0 <= 800a07fb
+openpic_gbl_write: addr 00000000000010a0 <= 800a00fb
 openpic_update_irq: IRQ 92 is not pending
-Set IPVP 92 to 0x800a07fb -> 0x800a00fb
-openpic_gbl_write: addr 00000000000010b0 <= 800a07fc
+Set IPVP 92 to 0x800a00fb -> 0x800a00fb
+openpic_gbl_write: addr 00000000000010b0 <= 800a00fc
 openpic_update_irq: IRQ 93 is not pending
-Set IPVP 93 to 0x800a07fc -> 0x800a00fc
-openpic_gbl_write: addr 00000000000010c0 <= 800a07fd
+Set IPVP 93 to 0x800a00fc -> 0x800a00fc
+openpic_gbl_write: addr 00000000000010c0 <= 800a00fd
 openpic_update_irq: IRQ 94 is not pending
-Set IPVP 94 to 0x800a07fd -> 0x800a00fd
-openpic_gbl_write: addr 00000000000010d0 <= 800a07fe
+Set IPVP 94 to 0x800a00fd -> 0x800a00fd
+openpic_gbl_write: addr 00000000000010d0 <= 800a00fe
 openpic_update_irq: IRQ 95 is not pending
-Set IPVP 95 to 0x800a07fe -> 0x800a00fe
-MPIC flags: 9102
+Set IPVP 95 to 0x800a00fe -> 0x800a00fe
+MPIC flags: 1002
 mpic_src_ext_write: addr 0000000000000000 <= 80080000
 openpic_update_irq: IRQ 0 is not pending
 Set IPVP 0 to 0x80080000 -> 0x80080000
@@ -542,7 +542,7 @@
 mpic_src_msi_write: addr 00000000000000f0 <= 00000001
 Set IDE 91 to 0x00000001
 mpic_src_msi_write: addr 0000000000000100 <= 800800e8
-openpic_gbl_write: addr 00000000000010e0 <= 000007ff
+openpic_gbl_write: addr 00000000000010e0 <= 000000ff
 openpic_gbl_read: addr 0000000000001020
 openpic_gbl_read: => 00000000
 openpic_gbl_write: addr 0000000000001020 <= 20000000
@@ -554,31 +554,31 @@
 smp_mpic_probe()...
 nr_cpus: 2
 mpic: requesting IPIs...
-mpic: map virq 507, hwirq 0x7fb
+mpic: map virq 251, hwirq 0xfb
 mpic: mapping as IPI
- OpenPIC  : enable_ipi: 507 (ipi 0)
+ OpenPIC  : enable_ipi: 251 (ipi 0)
 openpic_gbl_read: addr 00000000000010a0
 openpic_gbl_read: => 800a00fb
 openpic_gbl_write: addr 00000000000010a0 <= 000a00fb
 openpic_update_irq: IRQ 92 is not pending
 Set IPVP 92 to 0x000a00fb -> 0x000a00fb
-mpic: map virq 508, hwirq 0x7fc
+mpic: map virq 252, hwirq 0xfc
 mpic: mapping as IPI
- OpenPIC  : enable_ipi: 508 (ipi 1)
+ OpenPIC  : enable_ipi: 252 (ipi 1)
 openpic_gbl_read: addr 00000000000010b0
 openpic_gbl_read: => 800a00fc
 openpic_gbl_write: addr 00000000000010b0 <= 000a00fc
 openpic_update_irq: IRQ 93 is not pending
 Set IPVP 93 to 0x000a00fc -> 0x000a00fc
-mpic: map virq 509, hwirq 0x7fd
+mpic: map virq 253, hwirq 0xfd
 mpic: mapping as IPI
- OpenPIC  : enable_ipi: 509 (ipi 2)
+ OpenPIC  : enable_ipi: 253 (ipi 2)
 openpic_gbl_read: addr 00000000000010c0
 openpic_gbl_read: => 800a00fd
 openpic_gbl_write: addr 00000000000010c0 <= 000a00fd
 openpic_update_irq: IRQ 94 is not pending
 Set IPVP 94 to 0x000a00fd -> 0x000a00fd
-mpic: map virq 510, hwirq 0x7fe
+mpic: map virq 254, hwirq 0xfe
 mpic: mapping as IPI
  OpenPIC  : setup_this_cpu(1)
 openpic_cpu_write_internal: cpu 1 addr 0000000000001080 <= 00000000
@@ -595,6 +595,11 @@
 PIAC: irq=93
 openpic_cpu_read_internal: => 000000fc
  OpenPIC  : get_one_irq(reg 0xa0): 252
+openpic_cpu_write_internal: cpu 1 addr 00000000000010b0 <= 00000000
+PEOI
+IRQ_check: irq 93 set ipvp_pr=10 pr=-1
+openpic_cpu_read_internal: cpu 1 addr 0000000000001090
+openpic_cpu_read_internal: => 00000001
  OpenPIC  : send_ipi(ipi_no: 1)
 openpic_cpu_write_internal: cpu 1 addr 0000000000001050 <= 00000001
 Set IDE 93 to 0x00000001




reply via email to

[Prev in Thread] Current Thread [Next in Thread]