lkml.org 
[lkml]   [2015]   [Apr]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [Xen-devel] [PATCH v15 12/15] pvqspinlock, x86: Enable PV qspinlock for Xen
On 04/08/2015 08:01 AM, David Vrabel wrote:
> On 07/04/15 03:55, Waiman Long wrote:
>> This patch adds the necessary Xen specific code to allow Xen to
>> support the CPU halting and kicking operations needed by the queue
>> spinlock PV code.
> This basically looks the same as the version I wrote, except I think you
> broke it.
>
>> +static void xen_qlock_wait(u8 *byte, u8 val)
>> +{
>> + int irq = __this_cpu_read(lock_kicker_irq);
>> +
>> + /* If kicker interrupts not initialized yet, just spin */
>> + if (irq == -1)
>> + return;
>> +
>> + /* clear pending */
>> + xen_clear_irq_pending(irq);
>> +
>> + /*
>> + * We check the byte value after clearing pending IRQ to make sure
>> + * that we won't miss a wakeup event because of the clearing.
> My version had a barrier() here to ensure this. The documentation of
> READ_ONCE() suggests that it is not sufficient to meet this requirement
> (and a READ_ONCE() here is not required anyway).

I have the misconception that a READ_ONCE/WRITE_ONCE() implies a
compiler barrier. You are right that it may not be the case. I will add
back the missing barrier when I update the patch and add you as the
author of this patch if you don't mind.

Cheers,
Longman


\
 
 \ /
  Last update: 2015-04-08 20:21    [W:0.078 / U:0.076 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site