From: Mukesh Rathor <mukesh.rathor@oracle.com>
To: Jan Beulich <JBeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>, keir.xen@gmail.com
Subject: Re: [RFC 0 PATCH 3/3] PVH dom0: construct_dom0 changes
Date: Thu, 26 Sep 2013 18:55:08 -0700 [thread overview]
Message-ID: <20130926185508.56a3f7b7@mantra.us.oracle.com> (raw)
In-Reply-To: <5244064102000078000F69AF@nat28.tlf.novell.com>
On Thu, 26 Sep 2013 09:02:41 +0100
"Jan Beulich" <JBeulich@suse.com> wrote:
> >>> On 25.09.13 at 23:03, Mukesh Rathor <mukesh.rathor@oracle.com>
> >>> wrote:
> > @@ -307,6 +308,136 @@ static void __init
.....
>
>
> > + sav_guest_l4 = *l4tab;
> > +
> > + /* Give guest a clean slate to start with */
> > + clear_page(l4start);
> > + *l4tab = sav_guest_l4;
> > + BUG_ON(!l4e_get_pfn(sav_guest_l4));
>
> This assumes that the initial mapping is covered by a single L4
> entry. While true for Linux, this is not generic, and hence needs
> fixing (the problem continues further down).
True. How about I just create the opposite of init_guest_l4_table,
ie, clear_guest_l4_table and just clear out xen entries?
>
> > + {
> > + if ( l3e_get_pfn(*l3tab) == 0 )
>
> Is that really a good check? Shouldn't that rather look at
> _PAGE_PRESENT?
Ok, I will change that.
> Hardly worth the comment considering the variable name.
>
> > @@ -868,6 +1016,9 @@ int __init construct_dom0(
> > L1_PROT : COMPAT_L1_PROT));
> > l1tab++;
> >
> > + if ( is_pvh_domain(d) )
> > + continue;
> > +
> > page = mfn_to_page(mfn);
> > if ( (page->u.inuse.type_info == 0) &&
> > !get_page_and_type(page, d, PGT_writable_page) )
>
> So why is the remaining part of this loop not applicable to PVH?
My bad, looks like it should be. I'll remove it. BTW, looking at it again
I realized we don't really need to set type_info to PGT* for PVH, but it's
harmless I guess. Should I just leave it or condition them for PV only?
> > (void)alloc_vcpu(d, i, cpu);
> > }
> >
> > + /*
> > + * pvh: we temporarily disable paging mode so that we can
> > build cr3 needed
> > + * to run on dom0's page tables.
> > + */
> > + if ( is_pvh_domain(d) )
> > + {
> > + save_pvh_pg_mode = d->arch.paging.mode;
> > + d->arch.paging.mode = 0;
> > + }
>
> Does this really need to be in a conditional?
Not really, wasn't sure what you'd prefer. I'll remove conditions.
> > @@ -1089,11 +1262,18 @@ int __init construct_dom0(
> > regs->eip = parms.virt_entry;
> > regs->esp = vstack_end;
> > regs->esi = vstartinfo_start;
> > - regs->eflags = X86_EFLAGS_IF;
> > + regs->eflags = X86_EFLAGS_IF | 0x2;
>
> Unrelated change?
Nop, we need to make sure the resvd bit is set in eflags otherwise
it won't vmenter (invalid guest state). Should be harmless for PV,
right? Not sure where it does it for PV before actually scheduling it..
thanks
Mukesh
next prev parent reply other threads:[~2013-09-27 1:55 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-25 21:03 [RFC 0 PATCH 0/3]: PVH dom0 construction Mukesh Rathor
2013-09-25 21:03 ` [RFC 0 PATCH 1/3] PVH dom0: create domctl_memory_mapping() function Mukesh Rathor
2013-09-26 7:03 ` Jan Beulich
2013-09-25 21:03 ` [RFC 0 PATCH 2/3] PVH dom0: move some pv specific code to static functions Mukesh Rathor
2013-09-26 7:21 ` Jan Beulich
2013-09-26 23:32 ` Mukesh Rathor
2013-09-25 21:03 ` [RFC 0 PATCH 3/3] PVH dom0: construct_dom0 changes Mukesh Rathor
2013-09-26 8:02 ` Jan Beulich
2013-09-27 0:17 ` Mukesh Rathor
2013-09-27 6:54 ` Jan Beulich
2013-10-03 0:53 ` Mukesh Rathor
2013-10-04 6:53 ` Jan Beulich
2013-10-04 13:35 ` Konrad Rzeszutek Wilk
2013-10-04 14:05 ` Jan Beulich
2013-10-04 16:02 ` Konrad Rzeszutek Wilk
2013-10-04 16:07 ` Jan Beulich
2013-10-04 20:59 ` Konrad Rzeszutek Wilk
2013-10-05 1:06 ` Mukesh Rathor
2013-10-07 7:12 ` Jan Beulich
2013-10-08 0:58 ` Mukesh Rathor
2013-10-08 7:51 ` Jan Beulich
2013-10-08 8:03 ` Jan Beulich
2013-10-08 9:39 ` George Dunlap
2013-10-08 9:57 ` Jan Beulich
2013-10-08 10:01 ` George Dunlap
2013-10-08 10:19 ` Lars Kurth
2013-10-08 12:30 ` Konrad Rzeszutek Wilk
2013-10-09 13:02 ` George Dunlap
2013-10-09 13:13 ` Andrew Cooper
2013-10-09 13:16 ` George Dunlap
2013-10-09 14:37 ` Andrew Cooper
2013-10-09 17:50 ` Tim Deegan
2013-10-09 22:31 ` Mukesh Rathor
2013-09-27 1:55 ` Mukesh Rathor [this message]
2013-09-27 7:01 ` Jan Beulich
2013-09-27 23:03 ` Mukesh Rathor
2013-09-30 6:56 ` Jan Beulich
2013-10-08 0:52 ` Mukesh Rathor
2013-10-08 7:43 ` Jan Beulich
2013-10-09 21:59 ` Mukesh Rathor
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=20130926185508.56a3f7b7@mantra.us.oracle.com \
--to=mukesh.rathor@oracle.com \
--cc=JBeulich@suse.com \
--cc=keir.xen@gmail.com \
--cc=xen-devel@lists.xenproject.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).