From: David Gibson <david@gibson.dropbear.id.au>
To: "Cédric Le Goater" <clg@kaod.org>
Cc: linuxppc-dev@lists.ozlabs.org,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Michael Ellerman <mpe@ellerman.id.au>,
Paul Mackerras <paulus@samba.org>
Subject: Re: [PATCH 08/10] powerpc/xive: take into account '/ibm,plat-res-int-priorities'
Date: Wed, 9 Aug 2017 14:02:27 +1000 [thread overview]
Message-ID: <20170809040227.GE13670@umbus.fritz.box> (raw)
In-Reply-To: <1502182579-990-9-git-send-email-clg@kaod.org>
[-- Attachment #1: Type: text/plain, Size: 3286 bytes --]
On Tue, Aug 08, 2017 at 10:56:18AM +0200, Cédric Le Goater wrote:
> '/ibm,plat-res-int-priorities' contains a list of priorities that the
> hypervisor has reserved for its own use. Scan these ranges to choose
> the lowest unused priority for the xive spapr backend.
>
> Signed-off-by: Cédric Le Goater <clg@kaod.org>
> ---
> arch/powerpc/sysdev/xive/spapr.c | 62 +++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 61 insertions(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/sysdev/xive/spapr.c b/arch/powerpc/sysdev/xive/spapr.c
> index 7fc40047c23d..220331986bd8 100644
> --- a/arch/powerpc/sysdev/xive/spapr.c
> +++ b/arch/powerpc/sysdev/xive/spapr.c
> @@ -532,13 +532,70 @@ static const struct xive_ops xive_spapr_ops = {
> .name = "spapr",
> };
>
> +/*
> + * get max priority from "/ibm,plat-res-int-priorities"
> + */
> +static bool xive_get_max_prio(u8 *max_prio)
> +{
> + struct device_node *rootdn;
> + const __be32 *reg;
> + u32 len;
> + int prio, found;
> +
> + rootdn = of_find_node_by_path("/");
> + if (!rootdn) {
> + pr_err("not root node found !\n");
> + return false;
> + }
> +
> + reg = of_get_property(rootdn, "ibm,plat-res-int-priorities", &len);
> + if (!reg) {
> + pr_err("Failed to read 'ibm,plat-res-int-priorities' property\n");
> + return false;
> + }
> +
> + if (len % (2 * sizeof(u32)) != 0) {
> + pr_err("invalid 'ibm,plat-res-int-priorities' property\n");
> + return false;
> + }
> +
> + /* HW supports priorities in the range [0-7] and 0xFF is a
> + * wildcard priority used to mask. We scan the ranges reserved
> + * by the hypervisor to find the lowest priority we can use.
> + */
> + found = 0xFF;
> + for (prio = 0; prio < 8; prio++) {
> + int reserved = 0;
> + int i;
> +
> + for (i = 0; i < len / (2 * sizeof(u32)); i++) {
> + int base = be32_to_cpu(reg[2 * i]);
> + int range = be32_to_cpu(reg[2 * i + 1]);
> +
> + if (prio >= base && prio < base + range)
> + reserved++;
> + }
> +
> + if (!reserved)
> + found = prio;
So you continue the loop here, rather than using break. Which means
found will be the highest valued priority that's not reserved. Is
that what you intended? The commit message says you find the lowest
unused, but do lower numbers mean higher priorities or the other way around?
> + }
> +
> + if (found == 0xFF) {
> + pr_err("no valid priority found in 'ibm,plat-res-int-priorities'\n");
> + return false;
> + }
> +
> + *max_prio = found;
> + return true;
> +}
> +
> bool xive_spapr_init(void)
> {
> struct device_node *np;
> struct resource r;
> void __iomem *tima;
> struct property *prop;
> - u8 max_prio = 7;
> + u8 max_prio;
> u32 val;
> u32 len;
> const __be32 *reg;
> @@ -566,6 +623,9 @@ bool xive_spapr_init(void)
> return false;
> }
>
> + if (!xive_get_max_prio(&max_prio))
> + return false;
> +
> /* Feed the IRQ number allocator with the ranges given in the DT */
> reg = of_get_property(np, "ibm,xive-lisn-ranges", &len);
> if (!reg) {
--
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
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2017-08-09 4:03 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-08 8:56 [PATCH 00/10] guest exploitation of the XIVE interrupt controller Cédric Le Goater
2017-08-08 8:56 ` [PATCH 01/10] powerpc/xive: fix OV5_XIVE_EXPLOIT bits Cédric Le Goater
2017-08-08 8:56 ` [PATCH 02/10] powerpc/xive: guest exploitation of the XIVE interrupt controller Cédric Le Goater
2017-08-09 3:53 ` David Gibson
2017-08-09 8:48 ` Cédric Le Goater
2017-08-10 4:28 ` David Gibson
2017-08-10 4:46 ` Benjamin Herrenschmidt
2017-08-10 5:54 ` David Gibson
2017-08-10 7:04 ` Cédric Le Goater
2017-08-10 6:45 ` Cédric Le Goater
2017-08-10 11:33 ` Benjamin Herrenschmidt
2017-08-10 7:19 ` Cédric Le Goater
2017-08-10 11:36 ` Benjamin Herrenschmidt
2017-08-11 3:55 ` David Gibson
2017-08-08 8:56 ` [PATCH 03/10] powerpc/xive: rename xive_poke_esb in xive_esb_read Cédric Le Goater
2017-08-09 3:55 ` David Gibson
2017-08-09 7:12 ` Cédric Le Goater
2017-08-09 7:31 ` David Gibson
2017-08-08 8:56 ` [PATCH 04/10] powerpc/xive: introduce xive_esb_write Cédric Le Goater
2017-08-08 8:56 ` [PATCH 05/10] powerpc/xive: add the HW IRQ number under xive_irq_data Cédric Le Goater
2017-08-08 8:56 ` [PATCH 06/10] powerpc/xive: introduce H_INT_ESB hcall Cédric Le Goater
2017-08-08 8:56 ` [PATCH 07/10] powerpc/xive: add XIVE exploitation mode to CAS Cédric Le Goater
2017-08-10 10:20 ` Cédric Le Goater
2017-08-08 8:56 ` [PATCH 08/10] powerpc/xive: take into account '/ibm, plat-res-int-priorities' Cédric Le Goater
2017-08-09 4:02 ` David Gibson [this message]
2017-08-09 7:14 ` [PATCH 08/10] powerpc/xive: take into account '/ibm,plat-res-int-priorities' Cédric Le Goater
2017-08-10 0:54 ` David Gibson
2017-08-08 8:56 ` [PATCH 09/10] powerpc/xive: improve debugging macros Cédric Le Goater
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170809040227.GE13670@umbus.fritz.box \
--to=david@gibson.dropbear.id.au \
--cc=benh@kernel.crashing.org \
--cc=clg@kaod.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).