From: Laurent Dufour <ldufour@linux.vnet.ibm.com>
To: Alexander Graf <agraf@suse.de>
Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org,
Greg Kurz <gkurz@linux.vnet.ibm.com>
Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH] target-ppc: Introduce hypervisor call H_GET_TCE
Date: Mon, 03 Mar 2014 14:02:11 +0100 [thread overview]
Message-ID: <53147D53.3030405@linux.vnet.ibm.com> (raw)
In-Reply-To: <20140221092906.5990.1984.stgit@nimbus>
On 21/02/2014 10:29, Laurent Dufour wrote:
> This patch introduces the hypervisor call H_GET_TCE which is basically the
> reverse of H_PUT_TCE, as defined in the Power Architecture Platform
> Requirements (PAPR).
>
> The hcall H_GET_TCE is required by the kdump kernel which is calling it to
> retrieve the TCE set up by the panicing kernel.
Hi,
Is there an issue with that patch ?
Regards,
Laurent.
> Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
> ---
> hw/ppc/spapr_iommu.c | 37 +++++++++++++++++++++++++++++++++++++
> trace-events | 1 +
> 2 files changed, 38 insertions(+)
>
> diff --git a/hw/ppc/spapr_iommu.c b/hw/ppc/spapr_iommu.c
> index ef45f4f..d9fe946 100644
> --- a/hw/ppc/spapr_iommu.c
> +++ b/hw/ppc/spapr_iommu.c
> @@ -243,6 +243,42 @@ static target_ulong h_put_tce(PowerPCCPU *cpu, sPAPREnvironment *spapr,
> return ret;
> }
>
> +static target_ulong get_tce_emu(sPAPRTCETable *tcet, target_ulong ioba,
> + target_ulong *tce)
> +{
> + if (ioba >= tcet->window_size) {
> + hcall_dprintf("spapr_iommu_get_tce on out-of-bounds IOBA 0x"
> + TARGET_FMT_lx "\n", ioba);
> + return H_PARAMETER;
> + }
> +
> + *tce = tcet->table[ioba >> SPAPR_TCE_PAGE_SHIFT];
> +
> + return H_SUCCESS;
> +}
> +
> +static target_ulong h_get_tce(PowerPCCPU *cpu, sPAPREnvironment *spapr,
> + target_ulong opcode, target_ulong *args)
> +{
> + target_ulong liobn = args[0];
> + target_ulong ioba = args[1];
> + target_ulong tce = 0;
> + target_ulong ret = H_PARAMETER;
> + sPAPRTCETable *tcet = spapr_tce_find_by_liobn(liobn);
> +
> + ioba &= ~(SPAPR_TCE_PAGE_SIZE - 1);
> +
> + if (tcet) {
> + ret = get_tce_emu(tcet, ioba, &tce);
> + if (!ret) {
> + args[0] = tce;
> + }
> + }
> + trace_spapr_iommu_get(liobn, ioba, ret, tce);
> +
> + return ret;
> +}
> +
> int spapr_dma_dt(void *fdt, int node_off, const char *propname,
> uint32_t liobn, uint64_t window, uint32_t size)
> {
> @@ -295,6 +331,7 @@ static void spapr_tce_table_class_init(ObjectClass *klass, void *data)
>
> /* hcall-tce */
> spapr_register_hypercall(H_PUT_TCE, h_put_tce);
> + spapr_register_hypercall(H_GET_TCE, h_get_tce);
> }
>
> static TypeInfo spapr_tce_table_info = {
> diff --git a/trace-events b/trace-events
> index 0b3c1ac..5b306a0 100644
> --- a/trace-events
> +++ b/trace-events
> @@ -1136,6 +1136,7 @@ xics_ics_eoi(int nr) "ics_eoi: irq %#x"
>
> # hw/ppc/spapr_iommu.c
> spapr_iommu_put(uint64_t liobn, uint64_t ioba, uint64_t tce, uint64_t ret) "liobn=%"PRIx64" ioba=0x%"PRIx64" tce=0x%"PRIx64" ret=%"PRId64
> +spapr_iommu_get(uint64_t liobn, uint64_t ioba, uint64_t ret, uint64_t tce) "liobn=%"PRIx64" ioba=0x%"PRIx64" ret=%"PRId64" tce=0x%"PRIx64
> spapr_iommu_xlate(uint64_t liobn, uint64_t ioba, uint64_t tce, unsigned perm, unsigned pgsize) "liobn=%"PRIx64" 0x%"PRIx64" -> 0x%"PRIx64" perm=%u mask=%x"
> spapr_iommu_new_table(uint64_t liobn, void *tcet, void *table, int fd) "liobn=%"PRIx64" tcet=%p table=%p fd=%d"
>
>
>
next prev parent reply other threads:[~2014-03-03 13:02 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-21 9:29 [Qemu-devel] [PATCH] target-ppc: Introduce hypervisor call H_GET_TCE Laurent Dufour
2014-02-21 11:33 ` [Qemu-devel] [Qemu-ppc] " Greg Kurz
2014-03-03 13:02 ` Laurent Dufour [this message]
2014-03-03 17:26 ` Alexander Graf
2014-03-03 18:37 ` Andreas Färber
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=53147D53.3030405@linux.vnet.ibm.com \
--to=ldufour@linux.vnet.ibm.com \
--cc=agraf@suse.de \
--cc=gkurz@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.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 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.