search for: spin_lock_recursive

Displaying 4 results from an estimated 4 matches for "spin_lock_recursive".

2005 May 11
4
Should shadow_lock be spin_lock_recursive?
During our testing, we found this code path where xen attempts to grab the shadow_lock, while holding it - leading to a deadlock. >> free_dom_mem-> >> shadow_sync_and_drop_references-> >> shadow_lock -> ..................... first lock >> shadow_remove_all_access-> >> remove_all_access_in_page-> >> put_page-> >>
2012 Dec 05
1
Recursive locking in Xen (in reference to NMI/MCE path audit)
...is valid. If the calls are genuinely not valid, then surely regular spinlocks and recursive spinlocks should be separate types to let the compiler work for us. If mixing calls are valid, then there appear to be problems with nesting recursive and regular calls, as either ordering of spin_lock and spin_lock_recursive will deadlock. As a result, I am wondering which of the above to fix? There are very few users of recursive locks (domain lock, domain page_alloc lock, mm (pod and paging) locks and console lock). The console and page_alloc locks appear to have mixed callers, while the domain and mm locks appear...
2013 Aug 16
7
[PATCH v2] xen/console: buffer and show origin of guest PV writes
...const char *prefix, const char *fmt, va_list args) { static char buf[1024]; static int start_of_line = 1, do_print; - va_list args; char *p, *q; unsigned long flags; @@ -537,9 +579,7 @@ void printk(const char *fmt, ...) local_irq_save(flags); spin_lock_recursive(&console_lock); - va_start(args, fmt); (void)vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); p = buf; @@ -551,7 +591,7 @@ void printk(const char *fmt, ...) if ( do_print ) { if ( start_of_line ) - printk_start_o...
2013 Sep 09
0
[PATCH v3] xen/console: buffer and show origin of guest PV writes
...const char *prefix, const char *fmt, va_list args) { static char buf[1024]; static int start_of_line = 1, do_print; - va_list args; char *p, *q; unsigned long flags; @@ -537,9 +579,7 @@ void printk(const char *fmt, ...) local_irq_save(flags); spin_lock_recursive(&console_lock); - va_start(args, fmt); (void)vsnprintf(buf, sizeof(buf), fmt, args); - va_end(args); p = buf; @@ -551,7 +591,7 @@ void printk(const char *fmt, ...) if ( do_print ) { if ( start_of_line ) - printk_start_o...