From: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
To: Alexey Kardashevskiy <aik@ozlabs.ru>, linuxppc-dev@lists.ozlabs.org
Cc: Alexey Kardashevskiy <aik@ozlabs.ru>
Subject: Re: [PATCH] pci: fix interrupt-map for bridges
Date: Fri, 13 Sep 2013 10:49:23 +0530 [thread overview]
Message-ID: <87ioy5i9ic.fsf@linux.vnet.ibm.com> (raw)
In-Reply-To: <1378988717-15112-1-git-send-email-aik@ozlabs.ru>
Alexey Kardashevskiy <aik@ozlabs.ru> writes:
> The previous scheme always put 0 as a parent slot#. However it is
> not always the case and QEMU's PCI bridge does not support putting
> device at slot#0 as it claims SHPC support for hotplug.
>
> This modifies the interrups map to let the linux guest resolve XICS
> global interrupt number correctly.
>
> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> ---
>
> This is the example of working system:
>
> [root@erif_root pci@1]# lspci
> 0001:00:01.0 PCI bridge: Red Hat, Inc. Device 0001
> 0001:01:02.0 PCI bridge: Red Hat, Inc. Device 0001
> 0001:01:03.0 PCI bridge: Red Hat, Inc. Device 0001
> 0001:02:01.0 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (Copper) (rev 06)
> 0001:02:02.0 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (Copper) (rev 06)
> 0001:03:01.0 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (Copper) (rev 06)
> 0001:03:02.0 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (Copper) (rev 06)
> [root@erif_root pci@1]# pwd
> /proc/device-tree/pci@80000002000000f/pci@1
> [root@erif_root pci@1]# hexdump -e '9/4 "%08x "' -e '"\n"' i*map
> 00001000 00000000 00000000 00000001 3e57f7e0 00000800 00000000 00000000 00000003
> 00001000 00000000 00000000 00000002 3e57f7e0 00000800 00000000 00000000 00000000
> 00001000 00000000 00000000 00000003 3e57f7e0 00000800 00000000 00000000 00000001
> 00001000 00000000 00000000 00000004 3e57f7e0 00000800 00000000 00000000 00000002
> 00001800 00000000 00000000 00000001 3e57f7e0 00000800 00000000 00000000 00000000
> 00001800 00000000 00000000 00000002 3e57f7e0 00000800 00000000 00000000 00000001
> 00001800 00000000 00000000 00000003 3e57f7e0 00000800 00000000 00000000 00000002
> 00001800 00000000 00000000 00000004 3e57f7e0 00000800 00000000 00000000 00000003
> [root@erif_root pci@1]# cd pci@2/
> [root@erif_root pci@2]# hexdump -e '9/4 "%08x "' -e '"\n"' i*map
> 00000800 00000000 00000000 00000001 3e5a86f0 00001000 00000000 00000000 00000002
> 00000800 00000000 00000000 00000002 3e5a86f0 00001000 00000000 00000000 00000003
> 00000800 00000000 00000000 00000003 3e5a86f0 00001000 00000000 00000000 00000000
> 00000800 00000000 00000000 00000004 3e5a86f0 00001000 00000000 00000000 00000001
> 00001000 00000000 00000000 00000001 3e5a86f0 00001000 00000000 00000000 00000003
> 00001000 00000000 00000000 00000002 3e5a86f0 00001000 00000000 00000000 00000000
> 00001000 00000000 00000000 00000003 3e5a86f0 00001000 00000000 00000000 00000001
> 00001000 00000000 00000000 00000004 3e5a86f0 00001000 00000000 00000000 00000002
> [root@erif_root pci@2]# cd ethernet@
> ethernet@1/ ethernet@2/
> [root@erif_root pci@2]# cd ethernet@1/
> [root@erif_root ethernet@1]# lsprop reg
> reg 00020800 00000000 00000000 00000000 00000000
> 02020810 00000000 00000000 00000000 00020000
> 02020814 00000000 00000000 00000000 00020000
> 01020818 00000000 00000000 00000000 00000020
> 02020830 00000000 00000000 00000000 00020000
> [root@erif_root ethernet@1]# lsprop interrupts
> interrupts 00000002
> ---
> board-qemu/slof/pci-interrupts.fs | 31 ++++++++++++++++++++-----------
> 1 file changed, 20 insertions(+), 11 deletions(-)
>
> diff --git a/board-qemu/slof/pci-interrupts.fs b/board-qemu/slof/pci-interrupts.fs
> index a12d7bb..62785a7 100644
> --- a/board-qemu/slof/pci-interrupts.fs
> +++ b/board-qemu/slof/pci-interrupts.fs
> @@ -1,17 +1,26 @@
>
> : pci-gen-irq-map-one ( prop-addr prop-len slot pin -- prop-addr prop-len )
> - 2dup + 4 mod ( prop-addr prop-len slot pin parentpin )
> + 2dup + 4 mod ( prop-addr prop-len slot pin parentpin )
> + >r >r >r ( prop-addr prop-len R: swizzledpin pin slot )
> +
> + \ Child slot#
> + r> B lshift encode-int+ ( prop-addr prop-len R: swizzledpin pin )
Redundant push to the R-Stack, can just be
>r >r ( prop-addr prop-len slot R: swizzledpin pin )
\ Child slot#
B lshift encode-int+ ( prop-addr prop-len R: swizzledpin pin )
> + \ Child 64bit BAR (not really used)
> + 0 encode-64+
> + \ Chile pin#
> + r> encode-int+ ( prop-addr prop-len R: swizzledpin )
> +
> + \ Parent phandle
> + get-parent encode-int+
> +
> + \ Parent slot#
> get-node >space
> - pci-addr2dev + 1- 4 mod 1+ \ do swizzling ( prop-addr prop-len slot pin swizzledpin )
> - >r >r >r ( prop-addr prop-len R: swizzledpin pin slot )
> -
> - r> B lshift encode-int+
> - 0 encode-64+ \ device slot ( prop-addr prop-len R: swizzledpin pin )
> - r> encode-int+ \ device pin ( prop-addr prop-len R: swizzledpin )
> -
> - get-parent encode-int+ \ parent phandle
> - 0 encode-int+ 0 encode-64+ \ parent slot
> - r> encode-int+ \ parent swizzled pin ( prop-addr prop-len R: )
> + pci-addr2dev B lshift ( prop-addr prop-len parent-slot R: swizzledpin )
> + encode-int+
> + \ Parent 64bit BAR (not really used)
> + 0 encode-64+
> + \ Parent pin
> + r> encode-int+ ( prop-addr prop-len R: )
> ;
>
> : pci-gen-irq-entry ( prop-addr prop-len config-addr -- prop-addr prop-len )
Regards,
Nikunj
prev parent reply other threads:[~2013-09-13 5:19 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-12 12:25 [PATCH] pci: fix interrupt-map for bridges Alexey Kardashevskiy
2013-09-13 5:19 ` Nikunj A Dadhania [this message]
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=87ioy5i9ic.fsf@linux.vnet.ibm.com \
--to=nikunj@linux.vnet.ibm.com \
--cc=aik@ozlabs.ru \
--cc=linuxppc-dev@lists.ozlabs.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).