From: Balamuruhan S <bala24@linux.ibm.com>
To: qemu-devel@nongnu.org
Cc: maddy@linux.vnet.ibm.com, Balamuruhan S <bala24@linux.ibm.com>,
anju@linux.vnet.ibm.com, clg@kaod.org, hari@linux.vnet.ibm.com,
pbonzini@redhat.com, david@gibson.dropbear.id.au
Subject: [Qemu-devel] [RFC PATCH 6/6] hw/ppc/pnv_homer: add python interface support for homer/occ common area
Date: Wed, 7 Aug 2019 12:44:45 +0530 [thread overview]
Message-ID: <20190807071445.4109-7-bala24@linux.ibm.com> (raw)
In-Reply-To: <20190807071445.4109-1-bala24@linux.ibm.com>
use python interface APIs in homer/occ common area emulation to
interact with scripts if provided else fallback to normal flow,
it shows how simple to use the interface to call python methods
with any number of arguments in any script placed in common
-module-path provided in qemu commandline.
Signed-off-by: Balamuruhan S <bala24@linux.ibm.com>
---
hw/ppc/pnv_homer.c | 20 ++++++++++++++++++++
hw/ppc/pnv_xscom.c | 9 +++++----
include/sysemu/sysemu.h | 4 ++++
vl.c | 24 ++++++++++++++++++++++++
4 files changed, 53 insertions(+), 4 deletions(-)
diff --git a/hw/ppc/pnv_homer.c b/hw/ppc/pnv_homer.c
index 73a94856d0..6ae5e74f19 100644
--- a/hw/ppc/pnv_homer.c
+++ b/hw/ppc/pnv_homer.c
@@ -16,7 +16,9 @@
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
+#include "sysemu/python_api.h"
#include "qemu/osdep.h"
+#include "sysemu/sysemu.h"
#include "sysemu/hw_accel.h"
#include "sysemu/cpus.h"
#include "hw/ppc/pnv.h"
@@ -37,6 +39,15 @@ static bool core_max_array(hwaddr addr)
static uint64_t homer_read(void *opaque, hwaddr addr, unsigned width)
{
+ if (homer_module && homer) {
+ uint64_t homer_ret;
+ char **address = g_malloc(sizeof(uint64_t));
+ python_args_init_cast_long(address, addr, 0);
+ homer_ret = python_callback_int(module_path, homer_module, homer, address, 1);
+ python_args_clean(address, 1);
+ g_free(address);
+ return homer_ret;
+ }
switch (addr) {
case 0xe2006: /* max pstate ultra turbo */
case 0xe2018: /* pstate id for 0 */
@@ -106,6 +117,15 @@ const MemoryRegionOps pnv_homer_ops = {
static uint64_t occ_common_area_read(void *opaque, hwaddr addr, unsigned width)
{
+ if (occ_module && occ) {
+ uint64_t occ_ret;
+ char **address = g_malloc(sizeof(uint64_t));
+ python_args_init_cast_long(address, addr, 0);
+ occ_ret = python_callback_int(module_path, occ_module, occ, address, 1);
+ python_args_clean(address, 1);
+ g_free(address);
+ return occ_ret;
+ }
switch (addr) {
/*
* occ-sensor sanity check that asserts the sensor
diff --git a/hw/ppc/pnv_xscom.c b/hw/ppc/pnv_xscom.c
index 18a780bcdf..5e41b7c953 100644
--- a/hw/ppc/pnv_xscom.c
+++ b/hw/ppc/pnv_xscom.c
@@ -179,13 +179,14 @@ static uint64_t xscom_read(void *opaque, hwaddr addr, unsigned width)
MemTxResult result;
if (xscom_module && xscom_readp) {
- char **args = g_malloc(2 * sizeof(uint64_t));
+ char **args = g_malloc(3 * sizeof(uint64_t));
PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip);
python_args_init_cast_long(args, pcba, 0);
- python_args_init_cast_int(args, pcc->chip_type, 1);
+ python_args_init_cast_int(args, chip->chip_num, 1);
+ python_args_init_cast_int(args, pcc->chip_type, 2);
val = python_callback_int(module_path, xscom_module, xscom_readp,
- args, 2);
- python_args_clean(args, 2);
+ args, 3);
+ python_args_clean(args, 3);
g_free(args);
}
else {
diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
index 9b8dc346d6..3c8119e040 100644
--- a/include/sysemu/sysemu.h
+++ b/include/sysemu/sysemu.h
@@ -121,6 +121,10 @@ extern const char *module_path;
extern const char *xscom_module;
extern const char *xscom_readp;
extern const char *xscom_writep;
+extern const char *homer_module;
+extern const char *homer;
+extern const char *occ_module;
+extern const char *occ;
extern int mem_prealloc;
#define MAX_NODES 128
diff --git a/vl.c b/vl.c
index 28f0dc1c1b..c96d35d907 100644
--- a/vl.c
+++ b/vl.c
@@ -144,6 +144,10 @@ const char *module_path = NULL;
const char *xscom_module = NULL;
const char *xscom_readp = NULL;
const char *xscom_writep = NULL;
+const char *homer_module = NULL;
+const char *homer = NULL;
+const char *occ_module = NULL;
+const char *occ = NULL;
int mem_prealloc = 0; /* force preallocation of physical target memory */
bool enable_mlock = false;
bool enable_cpu_pm = false;
@@ -495,6 +499,22 @@ static QemuOptsList qemu_module_opts = {
.name = "xscom_write",
.type = QEMU_OPT_STRING,
},
+ {
+ .name = "homer_module",
+ .type = QEMU_OPT_STRING,
+ },
+ {
+ .name = "homer",
+ .type = QEMU_OPT_STRING,
+ },
+ {
+ .name = "occ_module",
+ .type = QEMU_OPT_STRING,
+ },
+ {
+ .name = "occ",
+ .type = QEMU_OPT_STRING,
+ },
{ /* end of list */ }
},
};
@@ -3231,6 +3251,10 @@ int main(int argc, char **argv, char **envp)
xscom_module = qemu_opt_get(opts, "xscom_module");
xscom_readp = qemu_opt_get(opts, "xscom_read");
xscom_writep = qemu_opt_get(opts, "xscom_write");
+ homer_module = qemu_opt_get(opts, "homer_module");
+ homer = qemu_opt_get(opts, "homer");
+ occ_module = qemu_opt_get(opts, "occ_module");
+ occ = qemu_opt_get(opts, "occ");
break;
case QEMU_OPTION_mem_prealloc:
mem_prealloc = 1;
--
2.14.5
next prev parent reply other threads:[~2019-08-07 7:20 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-07 7:14 [Qemu-devel] [RFC PATCH 0/6] Enhancing Qemu MMIO emulation with scripting interface Balamuruhan S
2019-08-07 7:14 ` [Qemu-devel] [RFC PATCH 1/6] utils/python_api: add scripting interface for Qemu with python lib Balamuruhan S
2019-08-07 10:20 ` Philippe Mathieu-Daudé
2019-08-08 10:10 ` Stefan Hajnoczi
2019-08-08 10:33 ` Philippe Mathieu-Daudé
2019-08-08 10:53 ` Daniel P. Berrangé
2019-08-09 8:46 ` Stefan Hajnoczi
2019-08-12 4:53 ` Balamuruhan S
2019-08-08 10:09 ` Stefan Hajnoczi
2019-08-11 6:39 ` Balamuruhan S
2019-08-08 10:49 ` Daniel P. Berrangé
2019-08-08 12:45 ` Philippe Mathieu-Daudé
2019-08-09 4:39 ` David Gibson
2019-08-12 4:45 ` Balamuruhan S
2019-08-07 7:14 ` [Qemu-devel] [RFC PATCH 2/6] hw/ppc/pnv_xscom: extend xscom to use python interface Balamuruhan S
2019-08-08 9:04 ` Cédric Le Goater
2019-08-07 7:14 ` [Qemu-devel] [RFC PATCH 3/6] hw/ppc/pnv_homer: add homer/occ common area emulation for PowerNV Balamuruhan S
2019-08-07 7:54 ` Cédric Le Goater
2019-08-07 10:07 ` Balamuruhan S
2019-08-08 8:32 ` Cédric Le Goater
2019-08-09 4:44 ` David Gibson
2019-08-11 6:34 ` Balamuruhan S
2019-08-07 7:14 ` [Qemu-devel] [RFC PATCH 4/6] hw/ppc/pnv: initialize and realize homer/occ common area Balamuruhan S
2019-08-07 7:59 ` Cédric Le Goater
2019-08-07 10:12 ` Balamuruhan S
2019-08-08 8:46 ` Cédric Le Goater
2019-08-09 4:45 ` David Gibson
2019-08-07 7:14 ` [Qemu-devel] [RFC PATCH 5/6] hw/ppc/pnv_xscom: retrieve homer/occ base address from PBA BARs Balamuruhan S
2019-08-07 8:01 ` Cédric Le Goater
2019-08-07 10:22 ` Balamuruhan S
2019-08-09 4:45 ` David Gibson
2019-08-07 7:14 ` Balamuruhan S [this message]
2019-08-07 10:27 ` [Qemu-devel] [RFC PATCH 6/6] hw/ppc/pnv_homer: add python interface support for homer/occ common area Philippe Mathieu-Daudé
2019-08-11 6:05 ` Balamuruhan S
2019-08-09 4:46 ` David Gibson
2019-08-11 6:19 ` Balamuruhan S
2019-08-07 7:33 ` [Qemu-devel] [RFC PATCH 0/6] Enhancing Qemu MMIO emulation with scripting interface no-reply
2019-08-07 8:15 ` Cédric Le Goater
2019-08-07 10:16 ` Balamuruhan S
2019-08-09 4:49 ` David Gibson
2019-08-12 5:07 ` Balamuruhan S
2019-08-07 8:51 ` no-reply
2019-08-07 9:18 ` no-reply
2019-08-08 10:25 ` Stefan Hajnoczi
2019-08-12 6:03 ` Balamuruhan S
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=20190807071445.4109-7-bala24@linux.ibm.com \
--to=bala24@linux.ibm.com \
--cc=anju@linux.vnet.ibm.com \
--cc=clg@kaod.org \
--cc=david@gibson.dropbear.id.au \
--cc=hari@linux.vnet.ibm.com \
--cc=maddy@linux.vnet.ibm.com \
--cc=pbonzini@redhat.com \
--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).