[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: spinlock requests (was RE: [Xen-devel] [Patch] don't spin with irq disabled)
> Well the race is still impossible afaics. Unless your > _raw_rw_is_write_locked() was checking for ==0 rather than > <=0. Finally got a chance to go back and reproduce and figure this one out. The crash is still occurring. My code definitely checks for <=0. BUT the declaration of raw_rwlock_t declares the lock as "volatile UNSIGNED int", so the compiler blithely generates a check for == 0. Can I assume the fix is to change the declaration to int instead of unsigned int, or will that cause problems elsewhere? Thanks, Dan > -----Original Message----- > From: Keir Fraser [mailto:keir.fraser@xxxxxxxxxxxxx] > Sent: Friday, March 27, 2009 12:12 PM > To: Dan Magenheimer; Jan Beulich; Juergen Gross > Cc: xen-devel@xxxxxxxxxxxxxxxxxxx > Subject: Re: spinlock requests (was RE: [Xen-devel] [Patch] don't spin > with irq disabled) > > > On 27/03/2009 18:00, "Dan Magenheimer" > <dan.magenheimer@xxxxxxxxxx> wrote: > > >> What try_readlock would that be? There is no such function. > > > > Oops, my memory was faulty. It is read_lock() itself > > that decrements the lock and then re-increments it. > > This appeared to be causing the race. When I added > > debug code, the problem went away (which was what led > > me to the "hack" working version). > > Well the race is still impossible afaics. Unless your > _raw_rw_is_write_locked() was checking for ==0 rather than > <=0. I think > something fishy was going on in your actual original implementation if > is_write_locked(). :-) > > -- Keir > > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |