diff options
Diffstat (limited to 'include/linux/io-mapping.h')
| -rw-r--r-- | include/linux/io-mapping.h | 20 | 
1 files changed, 16 insertions, 4 deletions
diff --git a/include/linux/io-mapping.h b/include/linux/io-mapping.h index 09d4f17c8d3b..7376c1df9c90 100644 --- a/include/linux/io-mapping.h +++ b/include/linux/io-mapping.h @@ -69,7 +69,10 @@ io_mapping_map_atomic_wc(struct io_mapping *mapping,  	BUG_ON(offset >= mapping->size);  	phys_addr = mapping->base + offset; -	preempt_disable(); +	if (!IS_ENABLED(CONFIG_PREEMPT_RT)) +		preempt_disable(); +	else +		migrate_disable();  	pagefault_disable();  	return __iomap_local_pfn_prot(PHYS_PFN(phys_addr), mapping->prot);  } @@ -79,7 +82,10 @@ io_mapping_unmap_atomic(void __iomem *vaddr)  {  	kunmap_local_indexed((void __force *)vaddr);  	pagefault_enable(); -	preempt_enable(); +	if (!IS_ENABLED(CONFIG_PREEMPT_RT)) +		preempt_enable(); +	else +		migrate_enable();  }  static inline void __iomem * @@ -162,7 +168,10 @@ static inline void __iomem *  io_mapping_map_atomic_wc(struct io_mapping *mapping,  			 unsigned long offset)  { -	preempt_disable(); +	if (!IS_ENABLED(CONFIG_PREEMPT_RT)) +		preempt_disable(); +	else +		migrate_disable();  	pagefault_disable();  	return io_mapping_map_wc(mapping, offset, PAGE_SIZE);  } @@ -172,7 +181,10 @@ io_mapping_unmap_atomic(void __iomem *vaddr)  {  	io_mapping_unmap(vaddr);  	pagefault_enable(); -	preempt_enable(); +	if (!IS_ENABLED(CONFIG_PREEMPT_RT)) +		preempt_enable(); +	else +		migrate_enable();  }  static inline void __iomem *  |