From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57836) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YGdI4-0004jx-G7 for qemu-devel@nongnu.org; Wed, 28 Jan 2015 19:49:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YGdHz-0005Dt-1Z for qemu-devel@nongnu.org; Wed, 28 Jan 2015 19:49:00 -0500 Received: from mail-pa0-f43.google.com ([209.85.220.43]:40517) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YGdHy-0005Da-SQ for qemu-devel@nongnu.org; Wed, 28 Jan 2015 19:48:54 -0500 Received: by mail-pa0-f43.google.com with SMTP id eu11so31806694pac.2 for ; Wed, 28 Jan 2015 16:48:53 -0800 (PST) Message-ID: <54C9836E.1060407@ozlabs.ru> Date: Thu, 29 Jan 2015 11:48:46 +1100 From: Alexey Kardashevskiy MIME-Version: 1.0 References: <1422339213-23426-1-git-send-email-aik@ozlabs.ru> <54C8015E.6070801@ozlabs.ru> <54C8A2AC.9020203@ozlabs.ru> <20150129003109.GI14681@voom> In-Reply-To: <20150129003109.GI14681@voom> Content-Type: text/plain; charset=koi8-r Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2] spapr_vio/spapr_iommu: Move VIO bypass where it belongs List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: David Gibson Cc: Paolo Bonzini , qemu-ppc@nongnu.org, qemu-devel@nongnu.org, Alexander Graf -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 01/29/2015 11:31 AM, David Gibson wrote: > On Wed, Jan 28, 2015 at 07:49:48PM +1100, Alexey Kardashevskiy wrote: >> On 01/28/2015 08:21 AM, Alexey Kardashevskiy wrote: >>> On 01/27/2015 05:13 PM, Alexey Kardashevskiy wrote: > [snip] >>>> diff --git a/include/hw/ppc/spapr_vio.h >>>> b/include/hw/ppc/spapr_vio.h index 46edc2a..6ad55d1 100644 --- >>>> a/include/hw/ppc/spapr_vio.h +++ b/include/hw/ppc/spapr_vio.h @@ >>>> -64,6 +64,8 @@ struct VIOsPAPRDevice { target_ulong >>>> signal_state; VIOsPAPR_CRQ crq; AddressSpace as; + >>>> MemoryRegion mrroot; + MemoryRegion mrbypass; sPAPRTCETable >>>> *tcet; }; >>>> >>>> >>> >>> >> >> >> I believe doing something like this is way too disguising because >> of tobj->parent? > > It's kinda ugly, but it's the best way I can think of. Better than having VIOsPAPRDevice pointer in sPAPRTCETable? I would expect a object_get_parent() helper to exist but it is not there and I believe this is for a reason (may be it will be get rid of some time later)... > So, I think this is a reasonable approach, but it does need a comment > saying why the hack is necessary. > >> >> >> >> --- a/hw/ppc/spapr_iommu.c +++ b/hw/ppc/spapr_iommu.c @@ -25,6 +25,7 >> @@ #include "trace.h" >> >> #include "hw/ppc/spapr.h" +#include "hw/ppc/spapr_vio.h" >> >> #include >> >> @@ -88,10 +89,26 @@ static IOMMUTLBEntry >> spapr_tce_translate_iommu(MemoryRegion *iommu, hwaddr addr, return >> ret; } >> >> +static int spapr_tce_table_post_load(void *opaque, int version_id) >> +{ + sPAPRTCETable *tcet = SPAPR_TCE_TABLE(opaque); + Object >> *tobj = OBJECT(tcet); + Object *vobj = >> object_dynamic_cast(tobj->parent, TYPE_VIO_SPAPR_DEVICE); + + if >> (!vobj) { + return 0; + } + + >> spapr_vio_set_bypass((VIOsPAPRDevice *) vobj, tcet->bypass); + + >> return 0; +} + static const VMStateDescription >> vmstate_spapr_tce_table = { .name = "spapr_iommu", .version_id = 2, >> .minimum_version_id = 2, + .post_load = >> spapr_tce_table_post_load, .fields = (VMStateField []) { /* >> Sanity check */ VMSTATE_UINT32_EQUAL(liobn, sPAPRTCETable), >> >> >> > - -- Alexey -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAEBAgAGBQJUyYNtAAoJEIYTPdgrwSC54t0P/0SGpr+UX7qlwKKs89bwVc// dzUS4wPXeH7zYkLughLprEh3uINY9x7z8euqSJg1wPoh54F6QX9PDb8ipKavie+a NlxDeqVNh+eWLR/rI1OxMbg/PcQSnqCN13EHJLiz69xkdEZsNReLKUFueMrk4Grl H4l3+GDVx6HbBSTWawOmcpN4Bcz0/nRgsYf6RytIk9ZP60zplbNkrCt3jwPV87O3 /+g73eBvpusiY+8NIEPbzAEssMcTj+JDYB5Dy5JlsOYewQFyXiiXaVSdRnNIPB4o tSaD93LYvkNEYXACJ7awsfWWx45tvWjt0GtO0YUU2vGD/cAWjsW8Q76f1DjNZdvD wZwhJF0cieaRnlrNMlCE199DyxcKDqDsENEnRUsySE8qq1uHGXo1dlyn+rA3Spc7 jEfwxkmtpHf4l9JAB01hGmq37eYPPKS9uyjXwqtKZuDea0ObVEtsmXiSZnOho82D +jJzr1KUDUMFcWw7ZWxXJ4I1wCt0u3krRWtO4vD0RXnjWgKUM8MbuNGFBFUt1qtF 8M1KTrm06jW4w0h19nBSP2ed7j2ObE2KJebE7I/tl//gxgQo4PmR/cwZv8EXpHCC KNz6SDvUSboJ9i02Gxkk7GWKYPbGthQkrICxTfVwKGyms4O58/KiH8T/Koey/BLJ 92imwmKo3VtddbQfe5Ay =dlFh -----END PGP SIGNATURE-----