From: Balamuruhan S <bala24@linux.ibm.com>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: maddy@linux.vnet.ibm.com, anju@linux.vnet.ibm.com,
qemu-devel@nongnu.org, hari@linux.vnet.ibm.com, clg@kaod.org,
pbonzini@redhat.com
Subject: Re: [Qemu-devel] [RFC PATCH 6/6] hw/ppc/pnv_homer: add python interface support for homer/occ common area
Date: Sun, 11 Aug 2019 11:49:17 +0530 [thread overview]
Message-ID: <7e31a1db-cdef-d361-5ead-e01443829513@linux.ibm.com> (raw)
In-Reply-To: <20190809044639.GN5465@umbus.fritz.box>
On 8/9/19 10:16 AM, David Gibson wrote:
> On Wed, Aug 07, 2019 at 12:44:45PM +0530, Balamuruhan S wrote:
>> 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.
> What's the use case for this?
The usecase can be performing multiple boot test of the vm or during runtime
with different values expected/unexpected by firmware/kernel and check
how it is behaving or how it should behave.
It can be used as a framework for CI or regression.
>
>> 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;
next prev parent reply other threads:[~2019-08-11 6:19 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 ` [Qemu-devel] [RFC PATCH 6/6] hw/ppc/pnv_homer: add python interface support for homer/occ common area Balamuruhan S
2019-08-07 10:27 ` Philippe Mathieu-Daudé
2019-08-11 6:05 ` Balamuruhan S
2019-08-09 4:46 ` David Gibson
2019-08-11 6:19 ` Balamuruhan S [this message]
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=7e31a1db-cdef-d361-5ead-e01443829513@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).