All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wei Liu <wl@xen.org>
To: Jan Beulich <jbeulich@suse.com>
Cc: "Wei Liu" <liuwe@microsoft.com>, "Wei Liu" <wl@xen.org>,
	"Paul Durrant" <paul@xen.org>,
	"Andrew Cooper" <andrew.cooper3@citrix.com>,
	"Michael Kelley" <mikelley@microsoft.com>,
	"Xen Development List" <xen-devel@lists.xenproject.org>,
	"Roger Pau Monné" <roger.pau@citrix.com>
Subject: Re: [Xen-devel] [PATCH v3 3/5] x86/hyperv: provide percpu hypercall input page
Date: Tue, 7 Jan 2020 17:27:20 +0000	[thread overview]
Message-ID: <20200107172720.onwjgb7x2hsrrivz@debian> (raw)
In-Reply-To: <af2dd5b5-f5a4-6fe3-5654-6d84739e6d92@suse.com>

On Tue, Jan 07, 2020 at 06:08:19PM +0100, Jan Beulich wrote:
> On 07.01.2020 17:33, Wei Liu wrote:
> > On Mon, Jan 06, 2020 at 11:27:18AM +0100, Jan Beulich wrote:
> >> On 05.01.2020 17:47, Wei Liu wrote:
> >>> Hyper-V's input / output argument must be 8 bytes aligned an not cross
> >>> page boundary. The easiest way to satisfy those requirements is to use
> >>> percpu page.
> >>
> >> I'm not sure "easiest" is really true here. Others could consider adding
> >> __aligned() attributes as easy or even easier (by being even more
> >> transparent to use sites). Could we settle on "One way ..."?
> > 
> > Do you mean something like
> > 
> >    struct foo __aligned(8);
> 
> If this is in a header and ...
> 
> >    hv_do_hypercall(OP, virt_to_maddr(&foo), ...);
> 
> ... this in actual code, then yes.
> 
> > ?
> > 
> > I don't think this is transparent to user sites. Plus, foo is on stack
> > which is 1) difficult to get its maddr,
> 
> It being on the stack may indeed complicate getting its machine address
> (if not now, then down the road) - valid point.
> 
> > 2) may cross page boundary.
> 
> The __aligned() of course needs to be large enough to avoid this
> happening.

For this alignment to be large enough, it will need to be of PAGE_SIZE,
right? Wouldn't that blow up Xen's stack easily?  Given we only have two
pages for that.

In light of these restrictions, the approach I take in the original
patch should be okay.

I'm fine with changing the wording to "One way ..." -- if that's the
only objection you have after this mail.

> 
> >> Also, while looking at this I notice that - despite my earlier
> >> comment when giving the respective, sort-of-conditional ack -
> >> there are (still) many apparently pointless __packed attributes
> >> in hyperv-tlfs.h. Care to comment on this?
> > 
> > Again, that's a straight import from Linux. I tried not to deviate too
> > much. A commit in Linux (ec084491727b0) claims "compiler can add
> > alignment padding to structures or reorder struct members for
> > randomization and optimization".
> 
> Would a compiler doing so (without explicitly being told to) even
> be in line with the C spec? I'd buy such a claim only if I see an
> example proving it.
> 
> > I just checked all the packed structures. They seem to have all the
> > required manual paddings already. I can only assume they tried to erred
> > on the safe side.
> 
> And you surely recall we had to remove quite a few instances of
> __packed for gcc 9 compatibility?

Fair enough. I will write a patch to drop those __packed attributes.

Wei.

> 
> Jan

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

  reply	other threads:[~2020-01-07 17:27 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-05 16:47 [Xen-devel] [PATCH v3 0/5] More Hyper-V infrastructure Wei Liu
2020-01-05 16:47 ` [Xen-devel] [PATCH v3 1/5] x86/hyperv: setup hypercall page Wei Liu
2020-01-05 17:37   ` Andrew Cooper
2020-01-05 21:45     ` Wei Liu
2020-01-05 21:57       ` Andrew Cooper
2020-01-07 15:42         ` Wei Liu
2020-01-08 17:43           ` Wei Liu
2020-01-08 17:53             ` Andrew Cooper
2020-01-09 13:48               ` Wei Liu
2020-01-05 16:47 ` [Xen-devel] [PATCH v3 2/5] x86/hyperv: provide Hyper-V hypercall functions Wei Liu
2020-01-05 19:08   ` Andrew Cooper
2020-01-05 21:22     ` Wei Liu
2020-01-05 22:06       ` Andrew Cooper
2020-01-07 16:17         ` Wei Liu
2020-01-16 19:14           ` Andrew Cooper
2020-01-16 14:54     ` Wei Liu
2020-01-06  9:38   ` Jan Beulich
2020-01-07 16:21     ` Wei Liu
2020-01-05 16:47 ` [Xen-devel] [PATCH v3 3/5] x86/hyperv: provide percpu hypercall input page Wei Liu
2020-01-06 10:27   ` Jan Beulich
2020-01-07 16:33     ` Wei Liu
2020-01-07 16:45       ` Michael Kelley
2020-01-08 10:57         ` Jan Beulich
2020-01-07 17:08       ` Jan Beulich
2020-01-07 17:27         ` Wei Liu [this message]
2020-01-08 10:55           ` Jan Beulich
2020-01-08 15:54             ` Wei Liu
2020-01-05 16:48 ` [Xen-devel] [PATCH v3 4/5] x86/hyperv: retrieve vp_index from Hyper-V Wei Liu
2020-01-06  9:59   ` Paul Durrant
2020-01-06 10:31   ` Jan Beulich
2020-01-07 16:34     ` Wei Liu
2020-01-05 16:48 ` [Xen-devel] [PATCH v3 5/5] x86/hyperv: setup VP assist page Wei Liu

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=20200107172720.onwjgb7x2hsrrivz@debian \
    --to=wl@xen.org \
    --cc=andrew.cooper3@citrix.com \
    --cc=jbeulich@suse.com \
    --cc=liuwe@microsoft.com \
    --cc=mikelley@microsoft.com \
    --cc=paul@xen.org \
    --cc=roger.pau@citrix.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 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.