From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kirill A. Shutemov" Subject: Re: [PATCH] vgaarb: fix signal handling in vga_get() Date: Thu, 10 Dec 2015 05:53:03 +0200 Message-ID: <20151210035303.GA27821@node.shutemov.name> References: <1448849851-26061-1-git-send-email-kirill@shutemov.name> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f47.google.com (mail-wm0-f47.google.com [74.125.82.47]) by gabe.freedesktop.org (Postfix) with ESMTPS id 27D2189E75 for ; Wed, 9 Dec 2015 19:53:07 -0800 (PST) Received: by mail-wm0-f47.google.com with SMTP id v187so13788821wmv.1 for ; Wed, 09 Dec 2015 19:53:07 -0800 (PST) Content-Disposition: inline In-Reply-To: <1448849851-26061-1-git-send-email-kirill@shutemov.name> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Alex Williamson , David Airlie Cc: vfio-users@redhat.com, dri-devel@lists.freedesktop.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBOb3YgMzAsIDIwMTUgYXQgMDQ6MTc6MzFBTSArMDIwMCwgS2lyaWxsIEEuIFNodXRl bW92IHdyb3RlOgo+IFRoZXJlIGFyZSBmZXcgZGVmZWN0cyBpbiB2Z2FfZ2V0KCkgcmVsYXRlZCB0 byBzaWduYWwgaGFkbmluZzoKPiAKPiAgIC0gd2Ugc2hvdWxkbid0IGNoZWNrIGZvciBwZW5kaW5n IHNpZ25hbHMgZm9yIFRBU0tfVU5JTlRFUlJVUFRJQkxFCj4gICAgIGNhc2U7Cj4gCj4gICAtIGlm IHdlIGZvdW5kIHBlbmRpbmcgc2lnbmFsIHdlIG11c3QgcmVtb3ZlIG91cnNlbGYgZnJvbSB3YWl0 IHF1ZXVlCj4gICAgIGFuZCBjaGFuZ2UgdGFzayBzdGF0ZSBiYWNrIHRvIHJ1bm5pbmc7Cj4gCj4g ICAtIC1FUkVTVEFSVFNZUyBpcyBtb3JlIGFwcHJvcHJpYXRlLCBJIGd1ZXNzLgo+IAo+IFNpZ25l ZC1vZmYtYnk6IEtpcmlsbCBBLiBTaHV0ZW1vdiA8a2lyaWxsQHNodXRlbW92Lm5hbWU+CgpQaW5n PwoKRGF2aWQsIHRoaXMgcGF0Y2ggZml4ZXMgY3Jhc2guIEl0IHdvdWxkIGJlIG5pY2UgdG8gZ2V0 IGl0IGludG8gNC40LgoKPiAtLS0KPiAKPiBBbGV4LCBJIHRyeSB0byBnZXQgS1ZNIHdpdGggVkdB IHBhc3N0aHJvdWdoIHdvcmtpbmcgcHJvcGVybHkuIEkgaGF2ZSBpOTE1Cj4gKEhEIDQ2MDApIG9u IHRoZSBob3N0IGFuZCBHVFggNTgwIGZvciB0aGUgZ3Vlc3QuIFRoZSBndWVzdCBHUFUgaXMgbm90 Cj4gY2FwYWJhbGUgb2YgRUZJLCBzbyBJIGhhdmUgdG8gdXNlIHgtdmdhPW9uLiBJdCdzIGtpbmRh IHdvcmsgd2l0aCB5b3VyCj4gcGF0Y2ggZm9yIGk5MTUuZW5hYmxlX2hkX3ZnYWFyYj0xLiBCdXQg Z3Vlc3QgcmVmdXNlIHRvIGluaXRpYWxpemUgdGhlIEdQVQo+IGFmdGVyIEtWTSB3YXMgbm90IHNo dXQgZG93biBjb3JyZWN0bHksIHJlc3VsdGluZyBpbiBob3N0IGNyYXNoIGxpa2UgdGhpczoKPiAK PiBCVUc6IHVuYWJsZSB0byBoYW5kbGUga2VybmVsIHBhZ2luZyByZXF1ZXN0IGF0IGZmZmY4ODA4 NzAxODdlZDgKPiBJUDogWzxmZmZmODgwODcwMTg3ZWQ4Pl0gMHhmZmZmODgwODcwMTg3ZWQ4Cj4g UEdEIDIxMjkwNjcgUFVEIDgwMDAwMDA4NDAwMDAxZTMKPiBPb3BzOiAwMDExIFsjMV0gUFJFRU1Q VCBTTVAKPiBNb2R1bGVzIGxpbmtlZCBpbjogaXdsbXZtIGl3bHdpZmkKPiBDUFU6IDYgUElEOiAz OTgzIENvbW06IHFlbXUtc3lzdGVtLXg4NiBOb3QgdGFpbnRlZCA0LjMuMC1nZW50b28gIzYKPiBI YXJkd2FyZSBuYW1lOiBHaWdhYnl0ZSBUZWNobm9sb2d5IENvLiwgTHRkLiBaODdYLVVENyBUSC9a ODdYLVVENyBUSC1DRiwgQklPUyBGNWEgMDYvMTIvMjAxNAo+IHRhc2s6IGZmZmY4ODA4N2E5MTAw MDAgdGk6IGZmZmY4ODA4NjMyYzAwMDAgdGFzay50aTogZmZmZjg4MDg2MzJjMDAwMAo+IFJJUDog MDAxMDpbPGZmZmY4ODA4NzAxODdlZDg+XSAgWzxmZmZmODgwODcwMTg3ZWQ4Pl0gMHhmZmZmODgw ODcwMTg3ZWQ4Cj4gUlNQOiAwMDE4OmZmZmY4ODA4NjMyYzNkMDggIEVGTEFHUzogMDAwMTAwMDYK PiBSQVg6IGZmZmY4ODA4NzAxODdkYjAgUkJYOiAwMDAwMDAwMDcwMTg3ZjU4IFJDWDogMDAwMDAw MDAwMDAwMDAwMAo+IFJEWDogMDAwMDAwMDAwMDAwMDAwMCBSU0k6IDAwMDAwMDAwMDAwMDAwMDMg UkRJOiBmZmZmODgwODcwMTg3ZGIwCj4gUkJQOiBmZmZmODgwODYzMmMzZDQ4IFIwODogMDAwMDAw MDAwMDAwMDAwMCBSMDk6IDAwMDAwMDAwMDAwMDAwMDAKPiBSMTA6IDAwMDAwMDAwMDAwMTAzYzAg UjExOiAwMDAwMDAwMDAwMDAwMjkzIFIxMjogZmZmZmZmZmY4MWVhMDNjOAo+IFIxMzogZmZmZmZm ZmY4MTA0YzdjYiBSMTQ6IDAwMDAwMDAwMDAwMDAwMDAgUjE1OiAwMDAwMDAwMDAwMDAwMDAzCj4g RlM6ICAwMDAwN2Y5ODRmOWIyNzAwKDAwMDApIEdTOmZmZmY4ODA4OWYzODAwMDAoMDAwMCkga25s R1M6MDAwMDAwMDAwMDAwMDAwMAo+IENTOiAgMDAxMCBEUzogMDAwMCBFUzogMDAwMCBDUjA6IDAw MDAwMDAwODAwNTAwMzMKPiBDUjI6IGZmZmY4ODA4NzAxODdlZDggQ1IzOiAwMDAwMDAwODY0NWY4 MDAwIENSNDogMDAwMDAwMDAwMDE0MjZlMAo+IFN0YWNrOgo+ICBmZmZmZmZmZjgxMGNjODNkIDAw MDAwMDAwNjMyYzNkMjggMDAwMDAwMDAwMDAwMDAwMCBmZmZmZmZmZjgxZWEwM2MwCj4gIDAwMDAw MDAwMDAwMDAwNDYgMDAwMDAwMDAwMDAwMDAwMyAwMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAw MDAwMDAKPiAgZmZmZjg4MDg2MzJjM2Q4MCBmZmZmZmZmZjgxMGNjYTQ0IGZmZmY4ODA4N2FmNjM4 MDAgMDAwMDAwMDAwMDAwMDI4Ngo+IENhbGwgVHJhY2U6Cj4gIFs8ZmZmZmZmZmY4MTBjYzgzZD5d ID8gX193YWtlX3VwX2NvbW1vbisweDRkLzB4ODAKPiAgWzxmZmZmZmZmZjgxMGNjYTQ0Pl0gX193 YWtlX3VwKzB4MzQvMHg1MAo+ICBbPGZmZmZmZmZmODE1ZDk5ZTM+XSBfX3ZnYV9wdXQrMHg3My8w eGQwCj4gIFs8ZmZmZmZmZmY4MTVkOWRiND5dIHZnYV9wdXQrMHg1NC8weDgwCj4gIFs8ZmZmZmZm ZmY4MTY5ZDA0Mj5dIHZmaW9fcGNpX3ZnYV9ydysweDFkMi8weDIyMAo+ICBbPGZmZmZmZmZmODE2 OWE3ZjM+XSB2ZmlvX3BjaV9ydysweDMzLzB4NjAKPiAgWzxmZmZmZmZmZjgxNjlhYmY3Pl0gdmZp b19wY2lfd3JpdGUrMHgxNy8weDIwCj4gIFs8ZmZmZmZmZmY4MTY5NjZhNj5dIHZmaW9fZGV2aWNl X2ZvcHNfd3JpdGUrMHgyNi8weDMwCj4gIFs8ZmZmZmZmZmY4MTFhNGIyMz5dIF9fdmZzX3dyaXRl KzB4MjMvMHhlMAo+ICBbPGZmZmZmZmZmODExYTRhNTM+XSA/IF9fdmZzX3JlYWQrMHgyMy8weGQw Cj4gIFs8ZmZmZmZmZmY4MTFiNmUzNT5dID8gZG9fdmZzX2lvY3RsKzB4MmI1LzB4NDkwCj4gIFs8 ZmZmZmZmZmY4MTFhNTE5ND5dIHZmc193cml0ZSsweGE0LzB4MTkwCj4gIFs8ZmZmZmZmZmY4MTFh NWZhNj5dIFN5U19wd3JpdGU2NCsweDY2LzB4YTAKPiAgWzxmZmZmZmZmZjgxOWExN2Q3Pl0gZW50 cnlfU1lTQ0FMTF82NF9mYXN0cGF0aCsweDEyLzB4NmEKPiBDb2RlOiA4OCBmZiBmZiBlMCA3ZSAx OCA3MCAwOCA4OCBmZiBmZiAwMCA4YyA1NyA3NiAwOCA4OCBmZiBmZiAyMCA3ZiAxOCA3MCAwOCA4 OCBmZiBmZiAwOCA3ZiAxOCA3MCAwOCA4OCBmZiBmZiA5NCA1MSAxYSA4MSBmZiBmZiBmZiBmZiA8 MDk+IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAxIDhjIDU3IDc2IDA4IDg4IGZmIGZmIDAwIDhjIDU3 IDc2IDA4Cj4gUklQICBbPGZmZmY4ODA4NzAxODdlZDg+XSAweGZmZmY4ODA4NzAxODdlZDgKPiAg UlNQIDxmZmZmODgwODYzMmMzZDA4Pgo+IENSMjogZmZmZjg4MDg3MDE4N2VkOAo+IAo+IFRoZSBw YXRjaCBmaXhlcyB0aGUgY3Jhc2gsIGJ1dCBkb2Vzbid0IGhlbHAgd2l0aCBnZXR0aW5nIEdQVSBp biBndWVzdAo+IHdvcmtpbmcgYWdhaW4uCj4gCj4gQW55IGlkZWFzPwo+IAo+IC0tLQo+ICBkcml2 ZXJzL2dwdS92Z2EvdmdhYXJiLmMgfCA2ICsrKystLQo+ICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNl cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS92 Z2EvdmdhYXJiLmMgYi9kcml2ZXJzL2dwdS92Z2EvdmdhYXJiLmMKPiBpbmRleCAzMTY2ZTRiYzRl YjYuLjlhYmNhYTUzYmQyNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS92Z2EvdmdhYXJiLmMK PiArKysgYi9kcml2ZXJzL2dwdS92Z2EvdmdhYXJiLmMKPiBAQCAtMzk1LDggKzM5NSwxMCBAQCBp bnQgdmdhX2dldChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdW5zaWduZWQgaW50IHJzcmMsIGludCBp bnRlcnJ1cHRpYmxlKQo+ICAJCXNldF9jdXJyZW50X3N0YXRlKGludGVycnVwdGlibGUgPwo+ICAJ CQkJICBUQVNLX0lOVEVSUlVQVElCTEUgOgo+ICAJCQkJICBUQVNLX1VOSU5URVJSVVBUSUJMRSk7 Cj4gLQkJaWYgKHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7Cj4gLQkJCXJjID0gLUVJTlRSOwo+ ICsJCWlmIChpbnRlcnJ1cHRpYmxlICYmIHNpZ25hbF9wZW5kaW5nKGN1cnJlbnQpKSB7Cj4gKwkJ CV9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTsKPiArCQkJcmVtb3ZlX3dhaXRfcXVl dWUoJnZnYV93YWl0X3F1ZXVlLCAmd2FpdCk7Cj4gKwkJCXJjID0gLUVSRVNUQVJUU1lTOwo+ICAJ CQlicmVhazsKPiAgCQl9Cj4gIAkJc2NoZWR1bGUoKTsKPiAtLSAKPiAyLjYuMwo+IAoKLS0gCiBL aXJpbGwgQS4gU2h1dGVtb3YKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752734AbbLJDxK (ORCPT ); Wed, 9 Dec 2015 22:53:10 -0500 Received: from mail-wm0-f47.google.com ([74.125.82.47]:32989 "EHLO mail-wm0-f47.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752424AbbLJDxI (ORCPT ); Wed, 9 Dec 2015 22:53:08 -0500 Date: Thu, 10 Dec 2015 05:53:03 +0200 From: "Kirill A. Shutemov" To: Alex Williamson , David Airlie Cc: kvm@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, vfio-users@redhat.com Subject: Re: [PATCH] vgaarb: fix signal handling in vga_get() Message-ID: <20151210035303.GA27821@node.shutemov.name> References: <1448849851-26061-1-git-send-email-kirill@shutemov.name> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1448849851-26061-1-git-send-email-kirill@shutemov.name> User-Agent: Mutt/1.5.23.1 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Nov 30, 2015 at 04:17:31AM +0200, Kirill A. Shutemov wrote: > There are few defects in vga_get() related to signal hadning: > > - we shouldn't check for pending signals for TASK_UNINTERRUPTIBLE > case; > > - if we found pending signal we must remove ourself from wait queue > and change task state back to running; > > - -ERESTARTSYS is more appropriate, I guess. > > Signed-off-by: Kirill A. Shutemov Ping? David, this patch fixes crash. It would be nice to get it into 4.4. > --- > > Alex, I try to get KVM with VGA passthrough working properly. I have i915 > (HD 4600) on the host and GTX 580 for the guest. The guest GPU is not > capabale of EFI, so I have to use x-vga=on. It's kinda work with your > patch for i915.enable_hd_vgaarb=1. But guest refuse to initialize the GPU > after KVM was not shut down correctly, resulting in host crash like this: > > BUG: unable to handle kernel paging request at ffff880870187ed8 > IP: [] 0xffff880870187ed8 > PGD 2129067 PUD 80000008400001e3 > Oops: 0011 [#1] PREEMPT SMP > Modules linked in: iwlmvm iwlwifi > CPU: 6 PID: 3983 Comm: qemu-system-x86 Not tainted 4.3.0-gentoo #6 > Hardware name: Gigabyte Technology Co., Ltd. Z87X-UD7 TH/Z87X-UD7 TH-CF, BIOS F5a 06/12/2014 > task: ffff88087a910000 ti: ffff8808632c0000 task.ti: ffff8808632c0000 > RIP: 0010:[] [] 0xffff880870187ed8 > RSP: 0018:ffff8808632c3d08 EFLAGS: 00010006 > RAX: ffff880870187db0 RBX: 0000000070187f58 RCX: 0000000000000000 > RDX: 0000000000000000 RSI: 0000000000000003 RDI: ffff880870187db0 > RBP: ffff8808632c3d48 R08: 0000000000000000 R09: 0000000000000000 > R10: 00000000000103c0 R11: 0000000000000293 R12: ffffffff81ea03c8 > R13: ffffffff8104c7cb R14: 0000000000000000 R15: 0000000000000003 > FS: 00007f984f9b2700(0000) GS:ffff88089f380000(0000) knlGS:0000000000000000 > CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > CR2: ffff880870187ed8 CR3: 00000008645f8000 CR4: 00000000001426e0 > Stack: > ffffffff810cc83d 00000000632c3d28 0000000000000000 ffffffff81ea03c0 > 0000000000000046 0000000000000003 0000000000000000 0000000000000000 > ffff8808632c3d80 ffffffff810cca44 ffff88087af63800 0000000000000286 > Call Trace: > [] ? __wake_up_common+0x4d/0x80 > [] __wake_up+0x34/0x50 > [] __vga_put+0x73/0xd0 > [] vga_put+0x54/0x80 > [] vfio_pci_vga_rw+0x1d2/0x220 > [] vfio_pci_rw+0x33/0x60 > [] vfio_pci_write+0x17/0x20 > [] vfio_device_fops_write+0x26/0x30 > [] __vfs_write+0x23/0xe0 > [] ? __vfs_read+0x23/0xd0 > [] ? do_vfs_ioctl+0x2b5/0x490 > [] vfs_write+0xa4/0x190 > [] SyS_pwrite64+0x66/0xa0 > [] entry_SYSCALL_64_fastpath+0x12/0x6a > Code: 88 ff ff e0 7e 18 70 08 88 ff ff 00 8c 57 76 08 88 ff ff 20 7f 18 70 08 88 ff ff 08 7f 18 70 08 88 ff ff 94 51 1a 81 ff ff ff ff <09> 00 00 00 00 00 00 00 01 8c 57 76 08 88 ff ff 00 8c 57 76 08 > RIP [] 0xffff880870187ed8 > RSP > CR2: ffff880870187ed8 > > The patch fixes the crash, but doesn't help with getting GPU in guest > working again. > > Any ideas? > > --- > drivers/gpu/vga/vgaarb.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/vga/vgaarb.c b/drivers/gpu/vga/vgaarb.c > index 3166e4bc4eb6..9abcaa53bd25 100644 > --- a/drivers/gpu/vga/vgaarb.c > +++ b/drivers/gpu/vga/vgaarb.c > @@ -395,8 +395,10 @@ int vga_get(struct pci_dev *pdev, unsigned int rsrc, int interruptible) > set_current_state(interruptible ? > TASK_INTERRUPTIBLE : > TASK_UNINTERRUPTIBLE); > - if (signal_pending(current)) { > - rc = -EINTR; > + if (interruptible && signal_pending(current)) { > + __set_current_state(TASK_RUNNING); > + remove_wait_queue(&vga_wait_queue, &wait); > + rc = -ERESTARTSYS; > break; > } > schedule(); > -- > 2.6.3 > -- Kirill A. Shutemov