All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: BALATON Zoltan <balaton@eik.bme.hu>
Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [PATCH 3/6] ppc/pegasos2: Implement get-time-of-day RTAS function with VOF
Date: Fri, 15 Oct 2021 14:17:26 +1100	[thread overview]
Message-ID: <YWjyxvGlkzgi2nl6@yekko> (raw)
In-Reply-To: <6233eb07c680d6c74427e11b9641958f98d53378.1634241019.git.balaton@eik.bme.hu>

[-- Attachment #1: Type: text/plain, Size: 2383 bytes --]

On Thu, Oct 14, 2021 at 09:50:19PM +0200, BALATON Zoltan wrote:
> This is needed for Linux to access RTC time.
> 
> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
> ---
>  hw/ppc/pegasos2.c | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
> 
> diff --git a/hw/ppc/pegasos2.c b/hw/ppc/pegasos2.c
> index a1dd1f6752..a9e3625f56 100644
> --- a/hw/ppc/pegasos2.c
> +++ b/hw/ppc/pegasos2.c
> @@ -31,6 +31,8 @@
>  #include "sysemu/kvm.h"
>  #include "kvm_ppc.h"
>  #include "exec/address-spaces.h"
> +#include "qom/qom-qobject.h"
> +#include "qapi/qmp/qdict.h"
>  #include "trace.h"
>  #include "qemu/datadir.h"
>  #include "sysemu/device_tree.h"
> @@ -369,6 +371,29 @@ static target_ulong pegasos2_rtas(PowerPCCPU *cpu, Pegasos2MachineState *pm,
>          return H_PARAMETER;
>      }
>      switch (token) {
> +    case RTAS_GET_TIME_OF_DAY:
> +    {
> +        QObject *qo = object_property_get_qobject(qdev_get_machine(),
> +                                                  "rtc-time", &error_fatal);
> +        QDict *qd = qobject_to(QDict, qo);
> +
> +        if (nargs != 0 || nrets != 8 || !qd) {
> +            stl_be_phys(as, rets, -1);
> +            qobject_unref(qo);
> +            return H_PARAMETER;
> +        }
> +
> +        stl_be_phys(as, rets, 0);
> +        stl_be_phys(as, rets + 4, qdict_get_int(qd, "tm_year") + 1900);
> +        stl_be_phys(as, rets + 8, qdict_get_int(qd, "tm_mon") + 1);
> +        stl_be_phys(as, rets + 12, qdict_get_int(qd, "tm_mday"));
> +        stl_be_phys(as, rets + 16, qdict_get_int(qd, "tm_hour"));
> +        stl_be_phys(as, rets + 20, qdict_get_int(qd, "tm_min"));
> +        stl_be_phys(as, rets + 24, qdict_get_int(qd, "tm_sec"));

Doing a separate dictionary lookup for every component seems like it
might be pretty expensive.  You might want to look at how spapr does
this.

However, you're maintainer for pegasos, so really it's your call -
applied, thanks.

> +        stl_be_phys(as, rets + 28, 0);
> +        qobject_unref(qo);
> +        return H_SUCCESS;
> +    }
>      case RTAS_READ_PCI_CONFIG:
>      {
>          uint32_t addr, len, val;

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2021-10-15  7:18 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-14 19:50 [PATCH 0/6] Misc pegasos2 patches BALATON Zoltan
2021-10-14 19:50 ` [PATCH 4/6] ppc/pegasos2: Access MV64361 registers via their memory region BALATON Zoltan
2021-10-15  3:18   ` David Gibson
2021-10-14 19:50 ` [PATCH 1/6] ppc/pegasos2: Restrict memory to 2 gigabytes BALATON Zoltan
2021-10-15  3:15   ` David Gibson
2021-10-14 19:50 ` [PATCH 5/6] ppc/pegasos2: Add constants for PCI config addresses BALATON Zoltan
2021-10-15  3:19   ` David Gibson
2021-10-14 19:50 ` [PATCH 3/6] ppc/pegasos2: Implement get-time-of-day RTAS function with VOF BALATON Zoltan
2021-10-15  3:17   ` David Gibson [this message]
2021-10-15  9:26     ` BALATON Zoltan
2021-10-15 21:51       ` BALATON Zoltan
2021-10-14 19:50 ` [PATCH 6/6] ppc/pegasos2: Implement power-off " BALATON Zoltan
2021-10-15  3:19   ` David Gibson
2021-10-14 19:50 ` [PATCH 2/6] ppc/pegasos2: Warn when using VOF but no kernel is specified BALATON Zoltan
2021-10-15  3:15   ` David Gibson
2021-10-15  3:20 ` [PATCH 0/6] Misc pegasos2 patches David Gibson
2021-10-15  9:28   ` BALATON Zoltan

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=YWjyxvGlkzgi2nl6@yekko \
    --to=david@gibson.dropbear.id.au \
    --cc=balaton@eik.bme.hu \
    --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.