From owner-freebsd-bugs@FreeBSD.ORG Sat Apr 18 20:40:03 2009 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 415C8106564A for ; Sat, 18 Apr 2009 20:40:03 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 145528FC25 for ; Sat, 18 Apr 2009 20:40:03 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.3/8.14.3) with ESMTP id n3IKe2cH035498 for ; Sat, 18 Apr 2009 20:40:02 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.3/8.14.3/Submit) id n3IKe2Mb035497; Sat, 18 Apr 2009 20:40:02 GMT (envelope-from gnats) Date: Sat, 18 Apr 2009 20:40:02 GMT Message-Id: <200904182040.n3IKe2Mb035497@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org From: Mark Linimon Cc: Subject: Re: kern/133554: [sis] [drm] [panic] page fault in sis.ko / drm.ko X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Mark Linimon List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 18 Apr 2009 20:40:03 -0000 The following reply was made to PR kern/133554; it has been noted by GNATS. From: Mark Linimon To: bug-followup@FreeBSD.org Cc: Subject: Re: kern/133554: [sis] [drm] [panic] page fault in sis.ko / drm.ko Date: Sat, 18 Apr 2009 15:38:12 -0500 ----- Forwarded message from Robert Noland ----- From: Robert Noland To: cpghost Subject: Re: page fault in sis.ko / drm.ko On Sat, 2009-04-18 at 19:13 +0200, cpghost wrote: > Could a drm guru please have a look at kern/133554? > > Thanks, > -cpghost. Give this patch a try, it looks like the sis driver doesn't have irq's. robert. -- Robert Noland FreeBSD Index: dev/drm/drm_drv.c =================================================================== --- dev/drm/drm_drv.c (revision 190987) +++ dev/drm/drm_drv.c (working copy) @@ -134,7 +134,7 @@ .d_flags = D_TRACKCLOSE }; -int drm_msi = 1; /* Enable by default. */ +static int drm_msi = 1; /* Enable by default. */ TUNABLE_INT("hw.drm.msi", &drm_msi); static struct drm_msi_blacklist_entry drm_msi_blacklist[] = { @@ -228,28 +228,31 @@ dev->pci_vendor = pci_get_vendor(dev->device); dev->pci_device = pci_get_device(dev->device); - if (drm_msi && - !drm_msi_is_blacklisted(dev->pci_vendor, dev->pci_device)) { - msicount = pci_msi_count(dev->device); - DRM_DEBUG("MSI count = %d\n", msicount); - if (msicount > 1) - msicount = 1; + if (drm_core_check_feature(dev, DRIVER_HAVE_IRQ)) { + if (drm_msi && + !drm_msi_is_blacklisted(dev->pci_vendor, dev->pci_device)) { + msicount = pci_msi_count(dev->device); + DRM_DEBUG("MSI count = %d\n", msicount); + if (msicount > 1) + msicount = 1; - if (pci_alloc_msi(dev->device, &msicount) == 0) { - DRM_INFO("MSI enabled %d message(s)\n", msicount); - dev->msi_enabled = 1; - dev->irqrid = 1; + if (pci_alloc_msi(dev->device, &msicount) == 0) { + DRM_INFO("MSI enabled %d message(s)\n", + msicount); + dev->msi_enabled = 1; + dev->irqrid = 1; + } } - } - dev->irqr = bus_alloc_resource_any(dev->device, SYS_RES_IRQ, - &dev->irqrid, RF_SHAREABLE); - if (!dev->irqr) { - return ENOENT; + dev->irqr = bus_alloc_resource_any(dev->device, SYS_RES_IRQ, + &dev->irqrid, RF_SHAREABLE); + if (!dev->irqr) { + return ENOENT; + } + + dev->irq = (int) rman_get_start(dev->irqr); } - dev->irq = (int) rman_get_start(dev->irqr); - mtx_init(&dev->dev_lock, "drmdev", NULL, MTX_DEF); mtx_init(&dev->irq_lock, "drmirq", NULL, MTX_DEF); mtx_init(&dev->vbl_lock, "drmvbl", NULL, MTX_DEF); ----- End forwarded message -----