| .. | .. |
|---|
| 798 | 798 | static int hvfb_on_panic(struct notifier_block *nb, |
|---|
| 799 | 799 | unsigned long e, void *p) |
|---|
| 800 | 800 | { |
|---|
| 801 | + struct hv_device *hdev; |
|---|
| 801 | 802 | struct hvfb_par *par; |
|---|
| 802 | 803 | struct fb_info *info; |
|---|
| 803 | 804 | |
|---|
| 804 | 805 | par = container_of(nb, struct hvfb_par, hvfb_panic_nb); |
|---|
| 805 | | - par->synchronous_fb = true; |
|---|
| 806 | 806 | info = par->info; |
|---|
| 807 | + hdev = device_to_hv_device(info->device); |
|---|
| 808 | + |
|---|
| 809 | + if (hv_ringbuffer_spinlock_busy(hdev->channel)) |
|---|
| 810 | + return NOTIFY_DONE; |
|---|
| 811 | + |
|---|
| 812 | + par->synchronous_fb = true; |
|---|
| 807 | 813 | if (par->need_docopy) |
|---|
| 808 | 814 | hvfb_docopy(par, 0, dio_fb_size); |
|---|
| 809 | 815 | synthvid_update(info, 0, 0, INT_MAX, INT_MAX); |
|---|