mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 08:44:41 +00:00 
			
		
		
		
	block/ps3: fix slow VRAM IO
The current PS3 VRAM driver uses msleep() to wait for completion of RSX DMA transfers between system memory and VRAM. Depending on the system timing, the processing delay and overhead of this msleep() call can significantly impact VRAM driver IO. To avoid the condition, add a short duration (200 usec max) udelay() polling loop before entering the msleep() polling loop. Signed-off-by: Hideyuki Sasaki <xhide@rd.scei.sony.co.jp> Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com> Acked-by: Jim Paris <jim@jtan.com> Cc: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
		
							parent
							
								
									e00ef79971
								
							
						
					
					
						commit
						f21121cde6
					
				
					 1 changed files with 9 additions and 1 deletions
				
			
		|  | @ -123,7 +123,15 @@ static int ps3vram_notifier_wait(struct ps3_system_bus_device *dev, | |||
| { | ||||
| 	struct ps3vram_priv *priv = ps3_system_bus_get_drvdata(dev); | ||||
| 	u32 *notify = ps3vram_get_notifier(priv->reports, NOTIFIER); | ||||
| 	unsigned long timeout = jiffies + msecs_to_jiffies(timeout_ms); | ||||
| 	unsigned long timeout; | ||||
| 
 | ||||
| 	for (timeout = 20; timeout; timeout--) { | ||||
| 		if (!notify[3]) | ||||
| 			return 0; | ||||
| 		udelay(10); | ||||
| 	} | ||||
| 
 | ||||
| 	timeout = jiffies + msecs_to_jiffies(timeout_ms); | ||||
| 
 | ||||
| 	do { | ||||
| 		if (!notify[3]) | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Hideyuki Sasaki
						Hideyuki Sasaki