Re: [RFC,PATCH] RCU: clean up a few remaining synchronize_kernel() calls

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Paul,

On Sun, 26 Jun 2005, Paul E. McKenney wrote:

> How does the following look for NMI-RCU documentation?

That looks good, there is just one bit i'm not entirely sure about and i'd 
appreciate it if you could entertain me for a bit;

Answer to Quick Quiz

        Why might the rcu_dereference() be necessary on Alpha, given
        that the code reference by the pointer is read-only?

        Answer: The caller to set_nmi_callback() might well have
                initialized some data that is to be used by the
                new NMI handler.  In this case, the rcu_dereference()
                would be needed, because otherwise a CPU that received
                an NMI just after the new handler was set might see
                the pointer to the new NMI handler, but the old
                pre-initialized version of the handler's data.

Reading that i would think the general programming model for this would 
be;

setup data
write barrier
setup callback

Isn't that still required considering the following scenario;

CPU0			CPU1
setup data		<NMI>
setup callback		...
...			call callback

on i386, interrupts are data synchronising events, however if we happen to 
take an interrupt right when the data is being setup we won't synchronise 
with respect to that data. This could be achieved via the explicit write 
barrier after data setup or rcu_dereference in the NMI handler. Or perhaps 
i'm missing something?

Thanks!
	Zwane

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux