From: Anthony Liguori <anthony@codemonkey.ws>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: paulus@samba.org, agraf@suse.de, anton@samba.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 16/26] Implement hcall based RTAS for pSeries machines
Date: Wed, 16 Mar 2011 17:08:15 -0500 [thread overview]
Message-ID: <4D8134CF.6060104@codemonkey.ws> (raw)
In-Reply-To: <1300251423-6715-17-git-send-email-david@gibson.dropbear.id.au>
On 03/15/2011 11:56 PM, David Gibson wrote:
> diff --git a/hw/spapr_rtas.c b/hw/spapr_rtas.c
> new file mode 100644
> index 0000000..c606018
> --- /dev/null
> +++ b/hw/spapr_rtas.c
> @@ -0,0 +1,104 @@
Needs copyright
Regards,
Anthony Liguori
> +#include "cpu.h"
> +#include "sysemu.h"
> +#include "qemu-char.h"
> +#include "hw/qdev.h"
> +#include "device_tree.h"
> +
> +#include "hw/spapr.h"
> +#include "hw/spapr_vio.h"
> +
> +#include<libfdt.h>
> +
> +#define TOKEN_BASE 0x2000
> +#define TOKEN_MAX 0x100
> +
> +static struct rtas_call {
> + const char *name;
> + spapr_rtas_fn fn;
> +} rtas_table[TOKEN_MAX];
> +
> +struct rtas_call *rtas_next = rtas_table;
> +
> +target_ulong spapr_rtas_call(sPAPREnvironment *spapr,
> + uint32_t token, uint32_t nargs, target_ulong args,
> + uint32_t nret, target_ulong rets)
> +{
> + if ((token>= TOKEN_BASE)
> +&& ((token - TOKEN_BASE)< TOKEN_MAX)) {
> + struct rtas_call *call = rtas_table + (token - TOKEN_BASE);
> +
> + if (call->fn) {
> + call->fn(spapr, token, nargs, args, nret, rets);
> + return H_SUCCESS;
> + }
> + }
> +
> + fprintf(stderr, "Unknown RTAS token 0x%x\n", token);
> + rtas_st(rets, 0, -3);
> + return H_PARAMETER;
> +}
> +
> +void spapr_rtas_register(const char *name, spapr_rtas_fn fn)
> +{
> + assert(rtas_next< (rtas_table + TOKEN_MAX));
> +
> + rtas_next->name = name;
> + rtas_next->fn = fn;
> +
> + rtas_next++;
> +}
> +
> +int spapr_rtas_device_tree_setup(void *fdt, target_phys_addr_t rtas_addr,
> + target_phys_addr_t rtas_size)
> +{
> + int ret;
> + int i;
> +
> + ret = fdt_add_mem_rsv(fdt, rtas_addr, rtas_size);
> + if (ret< 0) {
> + fprintf(stderr, "Couldn't add RTAS reserve entry: %s\n",
> + fdt_strerror(ret));
> + return ret;
> + }
> +
> + ret = qemu_devtree_setprop_cell(fdt, "/rtas", "linux,rtas-base",
> + rtas_addr);
> + if (ret< 0) {
> + fprintf(stderr, "Couldn't add linux,rtas-base property: %s\n",
> + fdt_strerror(ret));
> + return ret;
> + }
> +
> + ret = qemu_devtree_setprop_cell(fdt, "/rtas", "linux,rtas-entry",
> + rtas_addr);
> + if (ret< 0) {
> + fprintf(stderr, "Couldn't add linux,rtas-entry property: %s\n",
> + fdt_strerror(ret));
> + return ret;
> + }
> +
> + ret = qemu_devtree_setprop_cell(fdt, "/rtas", "rtas-size",
> + rtas_size);
> + if (ret< 0) {
> + fprintf(stderr, "Couldn't add rtas-size property: %s\n",
> + fdt_strerror(ret));
> + return ret;
> + }
> +
> + for (i = 0; i< TOKEN_MAX; i++) {
> + struct rtas_call *call =&rtas_table[i];
> +
> + if (!call->fn) {
> + continue;
> + }
> +
> + ret = qemu_devtree_setprop_cell(fdt, "/rtas", call->name, i + TOKEN_BASE);
> + if (ret< 0) {
> + fprintf(stderr, "Couldn't add rtas token for %s: %s\n",
> + call->name, fdt_strerror(ret));
> + return ret;
> + }
> +
> + }
> + return 0;
> +}
> diff --git a/pc-bios/spapr-rtas.bin b/pc-bios/spapr-rtas.bin
> new file mode 100644
> index 0000000000000000000000000000000000000000..eade9c0e8ff0fd3071e3a6638a11c1a2e9a47152
> GIT binary patch
> literal 20
> bcmb<Pk*=^wC@M)vPAqm|U{LaFU{C-6M#cr<
>
> literal 0
> HcmV?d00001
>
next prev parent reply other threads:[~2011-03-16 22:08 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-16 4:56 [Qemu-devel] Implement emulation of pSeries logical partitions (v3) David Gibson
2011-03-16 4:56 ` [Qemu-devel] [PATCH 01/26] Clean up PowerPC SLB handling code David Gibson
2011-03-16 4:56 ` [Qemu-devel] [PATCH 02/26] Allow qemu_devtree_setprop() to take arbitrary values David Gibson
2011-03-16 4:56 ` [Qemu-devel] [PATCH 03/26] Add a hook to allow hypercalls to be emulated on PowerPC David Gibson
2011-03-16 13:46 ` [Qemu-devel] " Alexander Graf
2011-03-16 16:58 ` Stefan Hajnoczi
2011-03-17 2:26 ` David Gibson
2011-03-16 20:44 ` [Qemu-devel] " Anthony Liguori
2011-03-17 4:55 ` David Gibson
2011-03-17 13:20 ` Anthony Liguori
2011-03-18 4:03 ` David Gibson
2011-03-18 6:57 ` Alexander Graf
2011-03-16 4:56 ` [Qemu-devel] [PATCH 04/26] Implement PowerPC slbmfee and slbmfev instructions David Gibson
2011-03-16 4:56 ` [Qemu-devel] [PATCH 05/26] Implement missing parts of the logic for the POWER PURR David Gibson
2011-03-16 4:56 ` [Qemu-devel] [PATCH 06/26] Correct ppc popcntb logic, implement popcntw and popcntd David Gibson
2011-03-16 4:56 ` [Qemu-devel] [PATCH 07/26] Clean up slb_lookup() function David Gibson
2011-03-16 4:56 ` [Qemu-devel] [PATCH 08/26] Parse SDR1 on mtspr instead of at translate time David Gibson
2011-03-16 4:56 ` [Qemu-devel] [PATCH 09/26] Use "hash" more consistently in ppc mmu code David Gibson
2011-03-16 4:56 ` [Qemu-devel] [PATCH 10/26] Better factor the ppc hash translation path David Gibson
2011-03-16 4:56 ` [Qemu-devel] [PATCH 11/26] Support 1T segments on ppc David Gibson
2011-03-16 4:56 ` [Qemu-devel] [PATCH 12/26] Add POWER7 support for ppc David Gibson
2011-03-16 4:56 ` [Qemu-devel] [PATCH 13/26] Start implementing pSeries logical partition machine David Gibson
2011-03-16 14:30 ` [Qemu-devel] " Alexander Graf
2011-03-16 21:59 ` [Qemu-devel] " Anthony Liguori
2011-03-16 23:46 ` Alexander Graf
2011-03-17 3:08 ` David Gibson
2011-03-16 4:56 ` [Qemu-devel] [PATCH 14/26] Implement the bus structure for PAPR virtual IO David Gibson
2011-03-16 14:43 ` [Qemu-devel] " Alexander Graf
2011-03-16 22:04 ` [Qemu-devel] " Anthony Liguori
2011-03-17 3:19 ` David Gibson
2011-03-16 4:56 ` [Qemu-devel] [PATCH 15/26] Virtual hash page table handling on pSeries machine David Gibson
2011-03-16 15:03 ` [Qemu-devel] " Alexander Graf
2011-03-17 1:03 ` [Qemu-devel] Re: [PATCH 15/26] Virtual hash page table handling on pSeries machine' David Gibson
2011-03-17 7:35 ` Alexander Graf
2011-03-16 4:56 ` [Qemu-devel] [PATCH 16/26] Implement hcall based RTAS for pSeries machines David Gibson
2011-03-16 15:08 ` [Qemu-devel] " Alexander Graf
2011-03-17 1:22 ` David Gibson
2011-03-17 7:36 ` Alexander Graf
2011-03-16 22:08 ` Anthony Liguori [this message]
2011-03-16 4:56 ` [Qemu-devel] [PATCH 17/26] Implement assorted pSeries hcalls and RTAS methods David Gibson
2011-03-16 4:56 ` [Qemu-devel] [PATCH 18/26] Implement the PAPR (pSeries) virtualized interrupt controller (xics) David Gibson
2011-03-16 15:47 ` [Qemu-devel] " Alexander Graf
2011-03-17 1:29 ` David Gibson
2011-03-17 7:37 ` Alexander Graf
2011-03-16 22:16 ` [Qemu-devel] " Anthony Liguori
2011-03-17 1:34 ` David Gibson
2011-03-17 13:13 ` Anthony Liguori
2011-03-23 3:48 ` David Gibson
2011-03-16 4:56 ` [Qemu-devel] [PATCH 19/26] Add PAPR H_VIO_SIGNAL hypercall and infrastructure for VIO interrupts David Gibson
2011-03-16 15:49 ` [Qemu-devel] " Alexander Graf
2011-03-17 1:38 ` David Gibson
2011-03-17 7:38 ` Alexander Graf
2011-03-16 4:56 ` [Qemu-devel] [PATCH 20/26] Add (virtual) interrupt to PAPR virtual tty device David Gibson
2011-03-16 4:56 ` [Qemu-devel] [PATCH 21/26] Implement TCE translation for sPAPR VIO David Gibson
2011-03-16 16:03 ` [Qemu-devel] " Alexander Graf
2011-03-16 20:05 ` Benjamin Herrenschmidt
2011-03-16 20:21 ` Anthony Liguori
2011-03-16 20:22 ` Anthony Liguori
2011-03-16 20:36 ` Benjamin Herrenschmidt
2011-03-17 1:43 ` David Gibson
2011-03-16 22:20 ` [Qemu-devel] " Anthony Liguori
2011-03-18 1:58 ` David Gibson
2011-03-16 4:56 ` [Qemu-devel] [PATCH 22/26] Implement sPAPR Virtual LAN (ibmveth) David Gibson
2011-03-16 16:12 ` [Qemu-devel] " Alexander Graf
2011-03-17 2:04 ` David Gibson
2011-03-16 22:29 ` [Qemu-devel] " Anthony Liguori
2011-03-17 2:09 ` David Gibson
2011-03-16 4:57 ` [Qemu-devel] [PATCH 23/26] Implement PAPR CRQ hypercalls David Gibson
2011-03-16 16:15 ` [Qemu-devel] " Alexander Graf
2011-03-16 4:57 ` [Qemu-devel] [PATCH 24/26] Implement PAPR virtual SCSI interface (ibmvscsi) David Gibson
2011-03-16 16:41 ` [Qemu-devel] " Alexander Graf
2011-03-16 16:51 ` Anthony Liguori
2011-03-16 20:08 ` Benjamin Herrenschmidt
2011-03-16 20:19 ` Anthony Liguori
2011-03-16 4:57 ` [Qemu-devel] [PATCH 25/26] Add a PAPR TCE-bypass mechanism for the pSeries machine David Gibson
2011-03-16 16:43 ` [Qemu-devel] " Alexander Graf
2011-03-17 2:21 ` David Gibson
2011-03-17 3:25 ` Benjamin Herrenschmidt
2011-03-17 7:44 ` Alexander Graf
2011-03-17 8:44 ` Benjamin Herrenschmidt
2011-03-17 9:37 ` Alexander Graf
2011-03-16 4:57 ` [Qemu-devel] [PATCH 26/26] Implement PAPR VPA functions for pSeries shared processor partitions David Gibson
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=4D8134CF.6060104@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=agraf@suse.de \
--cc=anton@samba.org \
--cc=david@gibson.dropbear.id.au \
--cc=paulus@samba.org \
--cc=qemu-devel@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 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).