From: Alexey Kardashevskiy <aik@ozlabs.ru>
To: qemu-devel@nongnu.org
Cc: Alexey Kardashevskiy <aik@ozlabs.ru>,
qemu-ppc@nongnu.org, Alexander Graf <agraf@suse.de>
Subject: Re: [Qemu-devel] [PATCH] spapr-iommu: extend SPAPR_TCE_TABLE class
Date: Fri, 20 Dec 2013 13:47:45 +1100 [thread overview]
Message-ID: <52B3AFD1.90008@ozlabs.ru> (raw)
In-Reply-To: <52A049E0.3000701@ozlabs.ru>
On 12/05/2013 08:39 PM, Alexey Kardashevskiy wrote:
> On 11/20/2013 04:39 PM, Alexey Kardashevskiy wrote:
>> This adds a put_tce() callback to the SPAPR TCE TABLE device class.
>> The new callback allows to have different IOMMU types such as upcoming
>> VFIO IOMMU and it will be used more by the upcoming Multi-TCE support.
>>
>> This reworks the H_PUT_TCE handler to make use of the new put_tce()
>> callback.
>
>
> Ping?
Ping?
>
>>
>> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
>> ---
>> hw/ppc/spapr_iommu.c | 21 +++++++++++++++++----
>> include/hw/ppc/spapr.h | 13 +++++++++++++
>> 2 files changed, 30 insertions(+), 4 deletions(-)
>>
>> diff --git a/hw/ppc/spapr_iommu.c b/hw/ppc/spapr_iommu.c
>> index ef45f4f..0016c13 100644
>> --- a/hw/ppc/spapr_iommu.c
>> +++ b/hw/ppc/spapr_iommu.c
>> @@ -207,7 +207,7 @@ static target_ulong put_tce_emu(sPAPRTCETable *tcet, target_ulong ioba,
>> IOMMUTLBEntry entry;
>>
>> if (ioba >= tcet->window_size) {
>> - hcall_dprintf("spapr_vio_put_tce on out-of-bounds IOBA 0x"
>> + hcall_dprintf("spapr put_tce_emu on out-of-bounds IOBA 0x"
>> TARGET_FMT_lx "\n", ioba);
>> return H_PARAMETER;
>> }
>> @@ -232,12 +232,21 @@ static target_ulong h_put_tce(PowerPCCPU *cpu, sPAPREnvironment *spapr,
>> target_ulong tce = args[2];
>> target_ulong ret = H_PARAMETER;
>> sPAPRTCETable *tcet = spapr_tce_find_by_liobn(liobn);
>> + sPAPRTCETableClass *info;
>> +
>> + if (!tcet) {
>> + return H_PARAMETER;
>> + }
>> +
>> + info = SPAPR_TCE_TABLE_GET_CLASS(tcet);
>> + if (!info || !info->put_tce) {
>> + return H_PARAMETER;
>> + }
>>
>> ioba &= ~(SPAPR_TCE_PAGE_SIZE - 1);
>>
>> - if (tcet) {
>> - ret = put_tce_emu(tcet, ioba, tce);
>> - }
>> + ret = info->put_tce(tcet, ioba, tce);
>> +
>> trace_spapr_iommu_put(liobn, ioba, tce, ret);
>>
>> return ret;
>> @@ -287,9 +296,12 @@ int spapr_tcet_dma_dt(void *fdt, int node_off, const char *propname,
>> static void spapr_tce_table_class_init(ObjectClass *klass, void *data)
>> {
>> DeviceClass *dc = DEVICE_CLASS(klass);
>> + sPAPRTCETableClass *stc = SPAPR_TCE_TABLE_CLASS(klass);
>> +
>> dc->vmsd = &vmstate_spapr_tce_table;
>> dc->init = spapr_tce_table_realize;
>> dc->reset = spapr_tce_reset;
>> + stc->put_tce = put_tce_emu;
>>
>> QLIST_INIT(&spapr_tce_tables);
>>
>> @@ -302,6 +314,7 @@ static TypeInfo spapr_tce_table_info = {
>> .parent = TYPE_DEVICE,
>> .instance_size = sizeof(sPAPRTCETable),
>> .class_init = spapr_tce_table_class_init,
>> + .class_size = sizeof(sPAPRTCETableClass),
>> .instance_finalize = spapr_tce_table_finalize,
>> };
>>
>> diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
>> index fdaab2d..827cda2 100644
>> --- a/include/hw/ppc/spapr.h
>> +++ b/include/hw/ppc/spapr.h
>> @@ -367,12 +367,25 @@ int spapr_rtas_device_tree_setup(void *fdt, hwaddr rtas_addr,
>>
>> #define RTAS_ERROR_LOG_MAX 2048
>>
>> +typedef struct sPAPRTCETableClass sPAPRTCETableClass;
>> typedef struct sPAPRTCETable sPAPRTCETable;
>>
>> #define TYPE_SPAPR_TCE_TABLE "spapr-tce-table"
>> #define SPAPR_TCE_TABLE(obj) \
>> OBJECT_CHECK(sPAPRTCETable, (obj), TYPE_SPAPR_TCE_TABLE)
>>
>> +#define SPAPR_TCE_TABLE_CLASS(klass) \
>> + OBJECT_CLASS_CHECK(sPAPRTCETableClass, (klass), TYPE_SPAPR_TCE_TABLE)
>> +#define SPAPR_TCE_TABLE_GET_CLASS(obj) \
>> + OBJECT_GET_CLASS(sPAPRTCETableClass, (obj), TYPE_SPAPR_TCE_TABLE)
>> +
>> +struct sPAPRTCETableClass {
>> + DeviceClass parent_class;
>> +
>> + target_ulong (*put_tce)(sPAPRTCETable *tcet, target_ulong ioba,
>> + target_ulong tce);
>> +};
>> +
>> struct sPAPRTCETable {
>> DeviceState parent;
>> uint32_t liobn;
>>
>
>
--
Alexey
next prev parent reply other threads:[~2013-12-20 2:48 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-20 5:39 [Qemu-devel] [PATCH] spapr-iommu: extend SPAPR_TCE_TABLE class Alexey Kardashevskiy
2013-12-05 9:39 ` Alexey Kardashevskiy
2013-12-20 2:47 ` Alexey Kardashevskiy [this message]
2014-03-12 3:54 ` Alexey Kardashevskiy
2014-03-13 18:04 ` [Qemu-devel] " Mike Day
2014-03-13 18:50 ` Andreas Färber
2014-03-13 23:19 ` Alexey Kardashevskiy
2014-03-13 23:59 ` Alexander Graf
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=52B3AFD1.90008@ozlabs.ru \
--to=aik@ozlabs.ru \
--cc=agraf@suse.de \
--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 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).