From: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
To: Paul Durrant <Paul.Durrant@citrix.com>,
"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>,
"jbeulich@suse.com" <jbeulich@suse.com>,
keir@xen.org
Cc: George Dunlap <George.Dunlap@citrix.com>
Subject: Re: [PATCH V2 2/2] svm: iommu: Only call guest_iommu_init() after initialized HVM domain
Date: Thu, 19 May 2016 00:22:06 -0500 [thread overview]
Message-ID: <573D4D7E.3080208@amd.com> (raw)
In-Reply-To: <867d4c600369470f833fc41a3c35112d@AMSPEX02CL03.citrite.net>
+ Keir (since he added this code originally).
On 05/16/2016 03:19 AM, Paul Durrant wrote:
>> -----Original Message-----
>> >From:suravee.suthikulpanit@amd.com
>> >[mailto:suravee.suthikulpanit@amd.com]
>> >Sent: 13 May 2016 20:37
>> >To:xen-devel@lists.xen.org; George Dunlap;jbeulich@suse.com
>> >Cc: Paul Durrant; Suravee Suthikulpanit; Suravee Suthikulpanit
>> >Subject: [PATCH V2 2/2] svm: iommu: Only call guest_iommu_init() after
>> >initialized HVM domain
>> >
>> >From: Suravee Suthikulpanit<Suravee.Suthikulpanit@amd.com>
>> >
>> >The guest_iommu_init() is currently called by the following code path:
>> >
>> > arch/x86/domain.c: arch_domain_create()
>> > ]- drivers/passthrough/iommu.c: iommu_domain_init()
>> > |- drivers/passthrough/amd/pci_amd_iommu.c:
>> >amd_iommu_domain_init();
>> > |- drivers/passthrough/amd/iommu_guest.c: guest_iommu_init()
>> >
>> >At this point, the hvm_domain_initialised() has not been
>> >called. So register_mmio_handler(), in guest_iommu_init(), silently fails.
>> >This patch moves the call to guest_iommu_init/destroy() into
>> >the svm_domain_intialise/_destroy() instead.
>> >
> That seems wrong. You're taking a call that currently comes via a jump table, i.e. an abstraction layer, and calling it directly. Is it possible, instead, to move the call to iommu_domain_init() later in arch_domain_create()? It seems odd, to me at least, that it's done before hvm_domain_initialise() anyway.
>
> Paul
>
Good point. I think I should be able to move iommu_domain_init() call to
go after hvm_domain_initialise() as the following.
diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 9d43f7b..ac289b6 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -625,24 +625,21 @@ int arch_domain_create(struct domain *d, unsigned
int domcr_flags,
if ( (rc = init_domain_irq_mapping(d)) != 0 )
goto fail;
-
- if ( (rc = iommu_domain_init(d)) != 0 )
- goto fail;
}
spin_lock_init(&d->arch.e820_lock);
if ( has_hvm_container_domain(d) )
{
if ( (rc = hvm_domain_initialise(d)) != 0 )
- {
- iommu_domain_destroy(d);
goto fail;
- }
}
else
/* 64-bit PV guest by default. */
d->arch.is_32bit_pv = d->arch.has_32bit_shinfo = 0;
+ if ( !is_idle_domain(d) && (rc = iommu_domain_init(d)) != 0 )
+ goto fail;
+
if ( (rc = psr_domain_init(d)) != 0 )
goto fail;
-----
This was added in the commit 66a882392272346ce1d0bc5a26568894f450a7c0,
and only says initialization cleanup and bugfix. I am not sure what bug
was reported at the time. Anyone has an idea?
Suravee
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2016-05-19 5:22 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-13 19:36 [PATCH V2 0/2] Fix xen crash when starting HVM guest due to missing io handler suravee.suthikulpanit
2016-05-13 19:36 ` [PATCH V2 1/2] x86/hvm: Add check when register " suravee.suthikulpanit
2016-05-16 8:01 ` Paul Durrant
2016-05-16 16:03 ` Suravee Suthikulpanit
2016-05-16 16:07 ` Paul Durrant
2016-05-13 19:36 ` [PATCH V2 2/2] svm: iommu: Only call guest_iommu_init() after initialized HVM domain suravee.suthikulpanit
2016-05-16 8:19 ` Paul Durrant
2016-05-19 5:22 ` Suravee Suthikulpanit [this message]
2016-05-19 6:03 ` Jan Beulich
2016-05-19 7:52 ` Paul Durrant
2016-05-19 8:59 ` Jan Beulich
2016-05-19 9:06 ` Paul Durrant
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=573D4D7E.3080208@amd.com \
--to=suravee.suthikulpanit@amd.com \
--cc=George.Dunlap@citrix.com \
--cc=Paul.Durrant@citrix.com \
--cc=jbeulich@suse.com \
--cc=keir@xen.org \
--cc=xen-devel@lists.xen.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.