diff options
-rw-r--r-- | sound/pci/intel8x0.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c index 29e312597f20..c3b9bd0e188e 100644 --- a/sound/pci/intel8x0.c +++ b/sound/pci/intel8x0.c | |||
@@ -1077,6 +1077,13 @@ static snd_pcm_uframes_t snd_intel8x0_pcm_pointer(struct snd_pcm_substream *subs | |||
1077 | } | 1077 | } |
1078 | if (civ != igetbyte(chip, ichdev->reg_offset + ICH_REG_OFF_CIV)) | 1078 | if (civ != igetbyte(chip, ichdev->reg_offset + ICH_REG_OFF_CIV)) |
1079 | continue; | 1079 | continue; |
1080 | |||
1081 | /* IO read operation is very expensive inside virtual machine | ||
1082 | * as it is emulated. The probability that subsequent PICB read | ||
1083 | * will return different result is high enough to loop till | ||
1084 | * timeout here. | ||
1085 | * Same CIV is strict enough condition to be sure that PICB | ||
1086 | * is valid inside VM on emulated card. */ | ||
1080 | if (chip->inside_vm) | 1087 | if (chip->inside_vm) |
1081 | break; | 1088 | break; |
1082 | if (ptr1 == igetword(chip, ichdev->reg_offset + ichdev->roff_picb)) | 1089 | if (ptr1 == igetword(chip, ichdev->reg_offset + ichdev->roff_picb)) |