From: Thomas Huth <thuth@redhat.com>
To: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
Cc: aik@ozlabs.ru, linuxppc-dev@ozlabs.org, david@gibson.dropbear.id.au
Subject: Re: [PATCH v2 4/4] pci: Use QEMU created PCI device nodes
Date: Mon, 27 Apr 2015 10:38:16 +0200 [thread overview]
Message-ID: <20150427103816.4ce59f10@thh440s> (raw)
In-Reply-To: <1430121753-24818-5-git-send-email-nikunj@linux.vnet.ibm.com>
On Mon, 27 Apr 2015 13:32:33 +0530
Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> wrote:
> PCI Enumeration has been part of SLOF. Now with hotplug code addition
> in QEMU, it makes more sense to have this code in one place,
> i.e. QEMU.
>
> Adding routines to walk through the device nodes created by QEMU. SLOF
> will now configure the device/bridges and program the BARs for
> communicating with the devices.
>
> Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
> ---
> board-qemu/slof/pci-phb.fs | 44 +++++++++++++++++++++++++++++++++++++++++++-
> slof/fs/pci-properties.fs | 6 +++++-
> 2 files changed, 48 insertions(+), 2 deletions(-)
>
> diff --git a/board-qemu/slof/pci-phb.fs b/board-qemu/slof/pci-phb.fs
> index 529772f..a8fb7ca 100644
> --- a/board-qemu/slof/pci-phb.fs
> +++ b/board-qemu/slof/pci-phb.fs
> @@ -282,6 +282,41 @@ setup-puid
> THEN
> ;
>
> +: phb-pci-walk-bridge ( -- )
> + phb-debug? IF ." Calling pci-walk-bridge " pwd cr THEN
> +
> + get-node child ?dup 0= IF EXIT THEN \ get and check if we have children
> + 0 to pci-device-slots \ reset slot array to unpoppulated
> + BEGIN
> + dup \ Continue as long as there are children
> + WHILE
> + dup set-node \ Set child node as current node
> + my-space pci-set-slot \ set the slot bit
> + my-space pci-htype@ \ read HEADER-Type
> + 7f and \ Mask bit 7 - multifunction device
> + CASE
> + 0 OF my-space pci-device-setup ENDOF \ | set up the device
> + 1 OF my-space pci-bridge-setup ENDOF \ | set up the bridge
> + dup OF my-space pci-htype@ pci-out ENDOF
> + ENDCASE
> + peer
> + REPEAT drop
> + get-parent set-node
> +;
> +
> +\ Landing routing to probe the popuated device tree
> +: phb-pci-probe-bus ( busnr -- )
> + drop phb-pci-walk-bridge
> +;
> +
> +\ Stub routine, as qemu has enumerated, we already have the device
> +\ properties set.
> +: phb-pci-device-props ( addr -- )
> + dup pci-class-name device-name
> + dup pci-device-assigned-addresses-prop
> + drop
> +;
> +
> \ Scan the child nodes of the pci root node to assign bars, fixup
> \ properties etc.
> : phb-setup-children
> @@ -289,7 +324,14 @@ setup-puid
> my-puid TO puid \ Set current puid
> phb-parse-ranges
> 1 TO pci-hotplug-enabled
> - 1 0 (probe-pci-host-bridge)
> + s" qemu,phb-enumerated" get-node get-property 0<> IF
I think you could simply omit the "0<>" in the above line (get-property
returns TRUE if the property has not been found and FALSE if it has
been found, so the topmost stack item is already suitable for the IF
statement)
> + 1 0 (probe-pci-host-bridge)
> + ELSE
> + 2drop
> + ['] phb-pci-probe-bus TO func-pci-probe-bus
> + ['] phb-pci-device-props TO func-pci-device-props
> + phb-pci-walk-bridge \ PHB device tree is already populated.
> + THEN
> r> TO puid \ Restore previous puid
> ;
> phb-setup-children
> diff --git a/slof/fs/pci-properties.fs b/slof/fs/pci-properties.fs
> index 9efa87e..4f13402 100644
> --- a/slof/fs/pci-properties.fs
> +++ b/slof/fs/pci-properties.fs
> @@ -651,6 +651,8 @@
> r> TO pci-device-slots \ and reset the slot array
> ;
>
> +DEFER func-pci-device-props
> +
> \ used for an gerneric device set up
> \ if a device has no special handling for setup
> \ the device file (pci-device_VENDOR_DEVICE.fs) can call
> @@ -659,6 +661,8 @@
> dup assign-all-device-bars \ calc all BARs
> dup pci-set-irq-line \ set the interrupt pin
> dup pci-set-capabilities \ set up the capabilities
> - dup pci-device-props \ and generate all properties
> + dup func-pci-device-props \ and generate all properties
> drop \ forget the config-addr
> ;
> +
> +' pci-device-props TO func-pci-device-props
Apart from the minor nit, looks fine to me now.
Reviewed-by: Thomas Huth <thuth@redhat.com>
next prev parent reply other threads:[~2015-04-27 8:38 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-27 8:02 [PATCH v2 0/4] PCI: Generic fixes and moving enumeration back to QEMU Nikunj A Dadhania
2015-04-27 8:02 ` [PATCH v2 1/4] pci: program correct bridge limit registers during probe Nikunj A Dadhania
2015-04-27 8:17 ` Thomas Huth
2015-04-27 8:02 ` [PATCH v2 2/4] pci: Support 64-bit address translation Nikunj A Dadhania
2015-04-27 9:32 ` Thomas Huth
2015-04-27 9:57 ` Benjamin Herrenschmidt
2015-04-27 10:12 ` Thomas Huth
2015-04-27 8:02 ` [PATCH v2 3/4] usb: support 64-bit pci bars Nikunj A Dadhania
2015-04-27 8:26 ` Thomas Huth
2015-04-27 8:02 ` [PATCH v2 4/4] pci: Use QEMU created PCI device nodes Nikunj A Dadhania
2015-04-27 8:38 ` Thomas Huth [this message]
2015-04-27 9:56 ` Nikunj A Dadhania
2015-04-27 10:14 ` Thomas Huth
2015-04-29 3:12 ` [PATCH v2 0/4] PCI: Generic fixes and moving enumeration back to QEMU Alexey Kardashevskiy
2015-04-29 5:22 ` Nikunj A Dadhania
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=20150427103816.4ce59f10@thh440s \
--to=thuth@redhat.com \
--cc=aik@ozlabs.ru \
--cc=david@gibson.dropbear.id.au \
--cc=linuxppc-dev@ozlabs.org \
--cc=nikunj@linux.vnet.ibm.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.