[Qemu-devel] [PATCH] spapr_events: drop bogus cell from "interrupt-ranges" property

Greg Kurz posted 1 patch 6 years, 3 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/151254821213.27903.10774600450833875601.stgit@bahia.lan
Test checkpatch passed
Test docker passed
Test ppc passed
Test s390x passed
hw/ppc/spapr_events.c |    3 ---
1 file changed, 3 deletions(-)
[Qemu-devel] [PATCH] spapr_events: drop bogus cell from "interrupt-ranges" property
Posted by Greg Kurz 6 years, 3 months ago
According to LoPAPR 1.1 B.6.12, the "/event-sources" node has an "interrupt-
ranges" property, the format of which is described in B.6.9.1.2 as follows:

“interrupt-ranges”
 Standard property name that defines the interrupt number(s) and range(s)
 handled by this unit.

 prop-encoded-array: List of (int-number, range) specifications.

 Int-number is encoded as with encode-int.
 Range is encoded as with encode-int.

 The first entry in this list shall contain the int-number associated with
 the first “reg” property entry. The int-num-ber is the value representing
 the interrupt source as would appear in the PowerPC External Interrupt
 Architecture XISR. The range shall be the number of sequential interrupt
 numbers which this unit can generate.

There's no such thing as a cell count at the end of the array, like the
one introduced by commit ffbb1705a33d in QEMU 2.8. It doesn't seem it had
any impact on existing guests and I couldn't find any related workaround
in linux. So, let's just drop the bogus lines.

Signed-off-by: Greg Kurz <groug@kaod.org>
---
 hw/ppc/spapr_events.c |    3 ---
 1 file changed, 3 deletions(-)

diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c
index c7a64e6b8dd3..86836f0626dc 100644
--- a/hw/ppc/spapr_events.c
+++ b/hw/ppc/spapr_events.c
@@ -292,9 +292,6 @@ void spapr_dt_events(sPAPRMachineState *spapr, void *fdt)
         irq_ranges[count++] = cpu_to_be32(1);
     }
 
-    irq_ranges[count] = cpu_to_be32(count);
-    count++;
-
     _FDT((fdt_setprop(fdt, event_sources, "interrupt-controller", NULL, 0)));
     _FDT((fdt_setprop_cell(fdt, event_sources, "#interrupt-cells", 2)));
     _FDT((fdt_setprop(fdt, event_sources, "interrupt-ranges",


Re: [Qemu-devel] [PATCH] spapr_events: drop bogus cell from "interrupt-ranges" property
Posted by David Gibson 6 years, 3 months ago
On Wed, Dec 06, 2017 at 09:16:52AM +0100, Greg Kurz wrote:
1;5002;0c> According to LoPAPR 1.1 B.6.12, the "/event-sources" node has an "interrupt-
> ranges" property, the format of which is described in B.6.9.1.2 as follows:
> 
> “interrupt-ranges”
>  Standard property name that defines the interrupt number(s) and range(s)
>  handled by this unit.
> 
>  prop-encoded-array: List of (int-number, range) specifications.
> 
>  Int-number is encoded as with encode-int.
>  Range is encoded as with encode-int.
> 
>  The first entry in this list shall contain the int-number associated with
>  the first “reg” property entry. The int-num-ber is the value representing
>  the interrupt source as would appear in the PowerPC External Interrupt
>  Architecture XISR. The range shall be the number of sequential interrupt
>  numbers which this unit can generate.
> 
> There's no such thing as a cell count at the end of the array, like the
> one introduced by commit ffbb1705a33d in QEMU 2.8. It doesn't seem it had
> any impact on existing guests and I couldn't find any related workaround
> in linux. So, let's just drop the bogus lines.
> 
> Signed-off-by: Greg Kurz <groug@kaod.org>

That does indeed seem bogus.  Applied to ppc-for-2.12.

> ---
>  hw/ppc/spapr_events.c |    3 ---
>  1 file changed, 3 deletions(-)
> 
> diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c
> index c7a64e6b8dd3..86836f0626dc 100644
> --- a/hw/ppc/spapr_events.c
> +++ b/hw/ppc/spapr_events.c
> @@ -292,9 +292,6 @@ void spapr_dt_events(sPAPRMachineState *spapr, void *fdt)
>          irq_ranges[count++] = cpu_to_be32(1);
>      }
>  
> -    irq_ranges[count] = cpu_to_be32(count);
> -    count++;
> -
>      _FDT((fdt_setprop(fdt, event_sources, "interrupt-controller", NULL, 0)));
>      _FDT((fdt_setprop_cell(fdt, event_sources, "#interrupt-cells", 2)));
>      _FDT((fdt_setprop(fdt, event_sources, "interrupt-ranges",
> 

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson