From: Alexander Graf <agraf@suse.de>
To: "J. German Rivera" <German.Rivera@freescale.com>,
gregkh@linuxfoundation.org, arnd@arndb.de,
linux-kernel@vger.kernel.org
Cc: stuart.yoder@freescale.com, Kim.Phillips@freescale.com,
scottwood@freescale.com, bhamciu1@freescale.com,
R89243@freescale.com, Geoff.Thorpe@freescale.com,
bhupesh.sharma@freescale.com, nir.erez@freescale.com,
richard.schmitt@freescale.com
Subject: Re: [PATCH 1/3 v4] drivers/bus: Added Freescale Management Complex APIs
Date: Thu, 27 Nov 2014 17:14:01 +0100 [thread overview]
Message-ID: <54774DC9.4040103@suse.de> (raw)
In-Reply-To: <1415901246-24131-2-git-send-email-German.Rivera@freescale.com>
On 13.11.14 18:54, J. German Rivera wrote:
> APIs to access the Management Complex (MC) hardware
> module of Freescale LS2 SoCs. This patch includes
> APIs to check the MC firmware version and to manipulate
> DPRC objects in the MC.
>
> Signed-off-by: J. German Rivera <German.Rivera@freescale.com>
> Signed-off-by: Stuart Yoder <stuart.yoder@freescale.com>
[...]
> +/**
> + * Creates an MC I/O object
> + *
> + * @dev: device to be associated with the MC I/O object
> + * @mc_portal_phys_addr: physical address of the MC portal to use
> + * @mc_portal_size: size in bytes of the MC portal
> + * @flags: flags for the new MC I/O object
> + * @new_mc_io: Area to return pointer to newly created MC I/O object
> + *
> + * Returns '0' on Success; Error code otherwise.
> + */
> +int __must_check fsl_create_mc_io(struct device *dev,
> + phys_addr_t mc_portal_phys_addr,
> + uint32_t mc_portal_size,
> + uint32_t flags, struct fsl_mc_io **new_mc_io)
> +{
> + struct fsl_mc_io *mc_io;
> + void __iomem *mc_portal_virt_addr;
> + struct resource *res;
> +
> + mc_io = devm_kzalloc(dev, sizeof(*mc_io), GFP_KERNEL);
> + if (mc_io == NULL)
> + return -ENOMEM;
> +
> + mc_io->dev = dev;
> + mc_io->flags = flags;
> + mc_io->portal_phys_addr = mc_portal_phys_addr;
> + mc_io->portal_size = mc_portal_size;
> + res = devm_request_mem_region(dev,
> + mc_portal_phys_addr,
> + mc_portal_size,
> + "mc_portal");
> + if (res == NULL) {
> + dev_err(dev,
> + "devm_request_mem_region failed for MC portal %#llx\n",
> + mc_portal_phys_addr);
> + return -EBUSY;
> + }
> +
> + mc_portal_virt_addr = devm_ioremap_nocache(dev,
> + mc_portal_phys_addr,
> + mc_portal_size);
While I can't complain about the device itself, I will note that I think
it's a pretty bad design decision to expose actual host physical
addresses in the protocol.
Basically this means that you won't be able to pass a full MC complex
into a guest, even if you could virtualize IRQ and DMA access unless you
map it at the exact same location as the host's MC complex.
Could we at least add a "ranges" property to the MC device description
and check whether the physical addresses we get are within that range -
if nothing else, at least as sanity check? Then maybe add some calls in
the next version that act on that range rather than actual host physical
addresses?
Alex
next prev parent reply other threads:[~2014-11-27 16:14 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-13 17:54 [PATCH 0/3 v4] drivers/bus: Freescale Management Complex bus driver patch series J. German Rivera
2014-11-13 17:54 ` [PATCH 1/3 v4] drivers/bus: Added Freescale Management Complex APIs J. German Rivera
2014-11-25 14:06 ` Alexander Graf
2014-11-25 18:15 ` German Rivera
2014-11-26 10:15 ` Alexander Graf
2014-11-26 18:35 ` German Rivera
2014-11-26 22:33 ` Stuart Yoder
2014-11-27 0:24 ` Alexander Graf
2014-11-27 1:15 ` Stuart Yoder
2014-11-27 14:29 ` Alexander Graf
2014-12-01 22:28 ` Stuart Yoder
2014-12-01 23:35 ` Alexander Graf
2014-11-27 16:14 ` Alexander Graf [this message]
2014-12-01 22:53 ` Stuart Yoder
2014-12-01 23:40 ` Alexander Graf
2014-11-13 17:54 ` [PATCH 2/3 v4] drivers/bus: Freescale Management Complex (fsl-mc) bus driver J. German Rivera
2014-11-13 17:54 ` [PATCH 3/3 v4] drivers/bus: Device driver for FSL-MC DPRC devices J. German Rivera
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=54774DC9.4040103@suse.de \
--to=agraf@suse.de \
--cc=Geoff.Thorpe@freescale.com \
--cc=German.Rivera@freescale.com \
--cc=Kim.Phillips@freescale.com \
--cc=R89243@freescale.com \
--cc=arnd@arndb.de \
--cc=bhamciu1@freescale.com \
--cc=bhupesh.sharma@freescale.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nir.erez@freescale.com \
--cc=richard.schmitt@freescale.com \
--cc=scottwood@freescale.com \
--cc=stuart.yoder@freescale.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 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).