All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Ian Campbell <Ian.Campbell@citrix.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>,
	Keir Fraser <keir@xen.org>, Jan Beulich <JBeulich@suse.com>
Subject: Re: Request fairly urgent reversion of c/s 8a3c4acc9907cfec9aae9f1bc251fbf50af6828e
Date: Tue, 27 Aug 2013 15:53:55 +0100	[thread overview]
Message-ID: <521CBD83.2060906@citrix.com> (raw)
In-Reply-To: <1377614690.29147.51.camel@kazak.uk.xensource.com>

On 27/08/13 15:44, Ian Campbell wrote:
> On Tue, 2013-08-27 at 15:06 +0100, Andrew Cooper wrote:
>> On 27/08/13 14:16, Jan Beulich wrote:
>>>>>> On 27.08.13 at 15:02, Andrew Cooper <andrew.cooper3@citrix.com> wrote:
>>>> Changeset 8a3c4acc9907cfec9aae9f1bc251fbf50af6828e is my "Clean stacks
>>>> in debug builds patch"
>>>>
>>>> I applied the upstream version to XenServer, and resulted in some
>>>> spectacular fails to boot.
>>>>
>>>> Curiously, the buggy V1 "$(STACK_SIZE >> 8) " works fine on all
>>>> hardware, but the apparently correct "$(STACK_SIZE / 8)" causes complete
>>>> deadlock on AMD boxes on AP bringup, and causes Intel boxes to only boot
>>>> a single pcpu.
>>> That original version was broken in the assembly version only iirc,
>>> which should not get used in AP bring-up. Hence I'm puzzled.
>> Me too.  Literally changing the "$(STACK_SIZE / 8)" to "$(STACK_SIZE >>
>> 8)" is sufficient to prevent the problem.
> "/ 8" is not the same as ">> 8". ">> 8" is "/ 256". ">> 3" is "/ 8".
>
> (I'm lacking the context to know if this is where you went wrong though)
>
> Ian.
>
>

Indeed.

I was wanting to zero STACK_SIZE bytes using `rep stosq`  In V1, I
accidentally miscalculated ecx for the `rep` as $(STACK_SIZE >> 8),
which cleared too little.  Jan spotted the mistake and corrected it to
$(STACK_SIZE / 8) which cleared the intended number of bytes.

Unfortunately, this leads to some breakage.  I had thoroughly tested by
incorrect-but-safe v1, but only tokenly tested v2 on my Intel 2cpu box,
where I failed to notice the lack of the second CPU.  The lack of APs is
rather more noticeable on larger servers, and the fact it locks up all
AMD boxes completely is another indication of suboptimal behaviour.

I am currently neck deep in the 16bit trampoline code attempting to work
out why it is executing twice for each AP :)

~Andrew

      reply	other threads:[~2013-08-27 14:55 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-27 13:02 Request fairly urgent reversion of c/s 8a3c4acc9907cfec9aae9f1bc251fbf50af6828e Andrew Cooper
2013-08-27 13:16 ` Jan Beulich
2013-08-27 14:06   ` Andrew Cooper
2013-08-27 14:44     ` Ian Campbell
2013-08-27 14:53       ` Andrew Cooper [this message]

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=521CBD83.2060906@citrix.com \
    --to=andrew.cooper3@citrix.com \
    --cc=Ian.Campbell@citrix.com \
    --cc=JBeulich@suse.com \
    --cc=keir@xen.org \
    --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.