All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kurz <gkurz@linux.vnet.ibm.com>
To: Laurent Dufour <ldufour@linux.vnet.ibm.com>
Cc: qemu-ppc@nongnu.org, Alexander Graf <agraf@suse.de>,
	qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH] target-ppc: Introduce hypervisor call H_GET_TCE
Date: Fri, 21 Feb 2014 12:33:37 +0100	[thread overview]
Message-ID: <20140221123337.1aff2b67@bahia.local> (raw)
In-Reply-To: <20140221092906.5990.1984.stgit@nimbus>

On Fri, 21 Feb 2014 10:29:06 +0100
Laurent Dufour <ldufour@linux.vnet.ibm.com> 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.
> 
> Signed-off-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
> ---

FWIW, you can add this :)

Reviewed-by: Greg Kurz <gkurz@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"
> 
> 
> 



-- 
Gregory Kurz                                     kurzgreg@fr.ibm.com
                                                 gkurz@linux.vnet.ibm.com
Software Engineer @ IBM/Meiosys                  http://www.ibm.com
Tel +33 (0)562 165 496

"Anarchy is about taking complete responsibility for yourself."
        Alan Moore.

  reply	other threads:[~2014-02-21 11:34 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 ` Greg Kurz [this message]
2014-03-03 13:02 ` [Qemu-devel] [Qemu-ppc] " Laurent Dufour
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=20140221123337.1aff2b67@bahia.local \
    --to=gkurz@linux.vnet.ibm.com \
    --cc=agraf@suse.de \
    --cc=ldufour@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.