From mboxrd@z Thu Jan 1 00:00:00 1970 From: lroluk@gmail.com (Luca Ellero) Date: Fri, 15 Nov 2013 09:53:07 +0100 Subject: Best practice to lock a read/write to a HW register In-Reply-To: References: <5284A6AE.90901@gmail.com> <1384431269.1520.16.camel@thorin> Message-ID: <5285E0F3.3040801@gmail.com> To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org Il 15/11/2013 02:30, manty kuma ha wrote: > Ideally, it depends on the platform you are working. You need to > discuss with them for the correct approach. For Qualcomm they have > some hardware caled as RPU(Register protection unit). They have > systems calls exposed for using them. You can associtate it to the > register you want protection. I dont know if there is any way you > could do it in Linux itself? > > Regards, > Sandeep > > > On Thu, Nov 14, 2013 at 9:14 PM, Bernd Petrovitsch > > wrote: > > Hi! > > On Don, 2013-11-14 at 11:32 +0100, Luca Ellero wrote: > [...] > > can someone please show me which is the best practice to lock a > > read/write to a hardware register. > > In other words if, in a driver, I want to modify a bit in a HW > register, > > I have to read the register, set/reset the relevant bit and > write back > > the reg. > > But what can I do to be sure that no other code modifies the > register > > between my read and write? > > Is spin_lock() suitable for this purpose? > > If the read-modify-write (read: the critical section) run-time is > short, > a spin-lock is the usual means. If it is needed from IRQ-context - see > also other mails - you must use the *_irq() variant. > > Bernd > -- > Bernd Petrovitsch Email : > bernd at petrovitsch.priv.at > LUGA : http://www.luga.at > > > _______________________________________________ > Kernelnewbies mailing list > Kernelnewbies at kernelnewbies.org > > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > > Thanks to all, your suggestions are very appreciated Best regards Luca