From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ondrej Zary Subject: Re: AGP cards in PCI mode (fake slots like AGPro, AGP Express, AGI, AGX, XGP) Date: Mon, 14 Sep 2015 00:01:55 +0200 Message-ID: <201509140001.55580.linux@rainbow-software.org> References: <201509132057.30674.linux@rainbow-software.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Disposition: inline List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ilia Mirkin Cc: "nouveau@lists.freedesktop.org" , Kernel development list , "dri-devel@lists.freedesktop.org" List-Id: nouveau.vger.kernel.org T24gU3VuZGF5IDEzIFNlcHRlbWJlciAyMDE1IDIxOjEyOjI1IElsaWEgTWlya2luIHdyb3RlOgo+ IE9uIFN1biwgU2VwIDEzLCAyMDE1IGF0IDI6NTcgUE0sIE9uZHJlaiBaYXJ5IDxsaW51eEByYWlu Ym93LXNvZnR3YXJlLm9yZz4gd3JvdGU6Cj4gPiBIZWxsbywKPiA+IEkgaGF2ZSBhIFBDIENoaXBz IEEzMUcgYm9hcmQgd2l0aCBBR1BybyBzbG90IGFuZCBmb3VuZCB0aGF0IG5vdXZlYXUgZG9lcwo+ ID4gbm90IHdvcmsgcHJvcGVybHkgd2l0aCBpdC4gQ29uc29sZSB3b3JrcyBidXQgcmV2ZXJ0cyB0 byBzb2Z0d2FyZSBtb2RlLAo+ID4gWDExIGhhbmdzIHdpdGggbW91c2UgY3Vyc29yIG9ubHkuCj4g Pgo+ID4gVGhlIHNsb3QgaXMgcGh5c2ljYWxseSBBR1AgMS41ViBidXQgaXMgd2lyZWQgdG8gUENJ IGJ1cyBhcyB0aGUgY2hpcHNldAo+ID4gKFNpUyA3NjEpIGRvZXMgbm90IHN1cHBvcnQgQUdQIGNh cmRzLiBUbyBmdXJ0aGVyIGNvbXBsaWNhdGUgdGhpbmdzLCB0aGUKPiA+IGNoaXBzZXQgaGFzIEFH UCBjYXBhYmlsaXR5IC0gYnV0IG9ubHkgZm9yIHRoZSBpbnRlZ3JhdGVkIHZpZGVvLiBZb3UgY2Fu Cj4gPiBzZWUgdGhhdCBpbiB0aGUgbHNwY2kgb3V0cHV0IGJlbG93IC0gdGhlIEFHUCBjYXJkIGlz IG9uIGJ1cyAwIGFuZCBTaVMKPiA+IGNhcmQgb24gYnVzIDEgKEFHUCBidXMgYmVoaW5kIHRoZSBB R1AgYnJpZGdlKS4gVGhlIFNpUyBjYXJkIGlzIG5vdCB1c2VkCj4gPiAoY2FuIGJlIGRpc2FibGVk IGluIEJJT1MgYnV0IGl0IGRvZXMgbm90IGltcHJvdmUgdGhpbmdzIC0gYXMgdGhlIEFHUAo+ID4g Y2FwYWJpbGl0eSBvZiB0aGUgaG9zdCBicmlkZ2UgcmVtYWlucyBhY3RpdmUpLgo+Cj4gSSBiZWxp ZXZlIHdlIGNhbiBoYW5kbGUgaXQgd2l0aCBhIGJsYWNrbGlzdC4gSWYgdGhlIGNoaXBzZXQganVz dAo+IGRvZXNuJ3Qgc3VwcG9ydCBBR1AgYXQgYWxsLCB3ZSBzaG91bGQganVzdCBzZXQgYWdwbW9k ZT0wIGlycmVzcGVjdGl2ZQo+IG9mIHRoZSBjYXJkIHBsdWdnZWQgaW4sIHJpZ2h0Pwo+Cj4gU2hv dWxkbid0IHRoZSBhZ3BnYXJ0IGtub3cgYWJvdXQgdGhpcyBhbmQgbm90IGV2ZW4gYWxsb3cgYW55 IHNldHRpbmcKPiBhdCBhbGw/IFRoaXMgaXMgd2hlcmUgd2UgZ2V0IHRoZSBpZGVhIHRvIHNldCA4 eCBBR1AgZnJvbS4gU2VlCj4gZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvcGNp L2FncC5jIGZvciBkZXRhaWxzLgoKVGhlIGNoaXBzZXQgZG9lcyBub3Qgc3VwcG9ydCBBR1Agc2xv dCBidXQgc3VwcG9ydHMgQUdQIGZvciB0aGUgaW50ZWdyYXRlZAp2aWRlby4gU28gaXQgc2hvdWxk bid0IGJlIGNvbXBsZXRlbHkgZGlzYWJsZWQuCgo+IFRoZSBhbHRlcm5hdGl2ZSBpcyB0byBhZGQg dG8gbnZrbV9kZXZpY2VfYWdwX3F1aXJrcywgYW5kIGp1c3QgYWRkCj4gc29tZXRoaW5nIHRoYXQg bWF0Y2hlcyBqdXN0IHRoZSBob3N0IGJyaWRnZSB2ZW5kb3IvZGV2aWNlLCBpZ25vcmluZwo+IHRo ZSBjaGlwLgoKU29tZXRoaW5nIGxpa2UgdGhpcz8KCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbm91dmVhdS9udmttL3N1YmRldi9wY2kvYWdwLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVh dS9udmttL3N1YmRldi9wY2kvYWdwLmMKaW5kZXggODE0Y2I1MS4uMzg1YTkwZiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvcGNpL2FncC5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252a20vc3ViZGV2L3BjaS9hZ3AuYwpAQCAtMzUsNiArMzUs OCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG52a21fZGV2aWNlX2FncF9xdWlyawogbnZrbV9kZXZp Y2VfYWdwX3F1aXJrc1tdID0gewogCS8qIFZJQSBBcG9sbG8gUFJPMTMzeCAvIEdlRm9yY2UgRlgg NTYwMCBVbHRyYSAtIGZkbyMyMDM0MSAqLwogCXsgUENJX1ZFTkRPUl9JRF9WSUEsIDB4MDY5MSwg UENJX1ZFTkRPUl9JRF9OVklESUEsIDB4MDMxMSwgMiB9LAorCS8qIFNpUyA3NjEgZG9lcyBub3Qg c3VwcG9ydCBBR1AgY2FyZHMsIHVzZSBQQ0kgbW9kZSAqLworCXsgUENJX1ZFTkRPUl9JRF9TSSwg MHgwNzYxLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwIH0sCiAJe30sCiB9OwogCkBAIC0xMzcs OCArMTM5LDEwIEBAIG52a21fYWdwX2N0b3Ioc3RydWN0IG52a21fcGNpICpwY2kpCiAJd2hpbGUg KHF1aXJrLT5ob3N0YnJpZGdlX3ZlbmRvcikgewogCQlpZiAoaW5mby5kZXZpY2UtPnZlbmRvciA9 PSBxdWlyay0+aG9zdGJyaWRnZV92ZW5kb3IgJiYKIAkJICAgIGluZm8uZGV2aWNlLT5kZXZpY2Ug PT0gcXVpcmstPmhvc3RicmlkZ2VfZGV2aWNlICYmCi0JCSAgICBwY2ktPnBkZXYtPnZlbmRvciA9 PSBxdWlyay0+Y2hpcF92ZW5kb3IgJiYKLQkJICAgIHBjaS0+cGRldi0+ZGV2aWNlID09IHF1aXJr LT5jaGlwX2RldmljZSkgeworCQkgICAgKHF1aXJrLT5jaGlwX3ZlbmRvciA9PSAodTE2KVBDSV9B TllfSUQgfHwKKwkJICAgIHBjaS0+cGRldi0+dmVuZG9yID09IHF1aXJrLT5jaGlwX3ZlbmRvcikg JiYKKwkJICAgIChxdWlyay0+Y2hpcF9kZXZpY2UgPT0gKHUxNilQQ0lfQU5ZX0lEIHx8CisJCSAg ICBwY2ktPnBkZXYtPmRldmljZSA9PSBxdWlyay0+Y2hpcF9kZXZpY2UpKSB7CiAJCQludmttX2lu Zm8oc3ViZGV2LCAiZm9yY2luZyBkZWZhdWx0IGFncCBtb2RlIHRvICVkWCwgIgogCQkJCQkgICJ1 c2UgTnZBR1A9PG1vZGU+IHRvIG92ZXJyaWRlXG4iLAogCQkJCSAgcXVpcmstPm1vZGUpOwotLSAK T25kcmVqIFphcnkKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755359AbbIMWCI (ORCPT ); Sun, 13 Sep 2015 18:02:08 -0400 Received: from smtp-1b.atlantis.sk ([80.94.52.26]:36994 "EHLO smtp-1b.atlantis.sk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755219AbbIMWCH (ORCPT ); Sun, 13 Sep 2015 18:02:07 -0400 From: Ondrej Zary To: Ilia Mirkin Subject: Re: AGP cards in PCI mode (fake slots like AGPro, AGP Express, AGI, AGX, XGP) Date: Mon, 14 Sep 2015 00:01:55 +0200 User-Agent: KMail/1.9.10 (enterprise35 0.20100827.1168748) Cc: "nouveau@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" , Kernel development list References: <201509132057.30674.linux@rainbow-software.org> In-Reply-To: X-KMail-QuotePrefix: > MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <201509140001.55580.linux@rainbow-software.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sunday 13 September 2015 21:12:25 Ilia Mirkin wrote: > On Sun, Sep 13, 2015 at 2:57 PM, Ondrej Zary wrote: > > Hello, > > I have a PC Chips A31G board with AGPro slot and found that nouveau does > > not work properly with it. Console works but reverts to software mode, > > X11 hangs with mouse cursor only. > > > > The slot is physically AGP 1.5V but is wired to PCI bus as the chipset > > (SiS 761) does not support AGP cards. To further complicate things, the > > chipset has AGP capability - but only for the integrated video. You can > > see that in the lspci output below - the AGP card is on bus 0 and SiS > > card on bus 1 (AGP bus behind the AGP bridge). The SiS card is not used > > (can be disabled in BIOS but it does not improve things - as the AGP > > capability of the host bridge remains active). > > I believe we can handle it with a blacklist. If the chipset just > doesn't support AGP at all, we should just set agpmode=0 irrespective > of the card plugged in, right? > > Shouldn't the agpgart know about this and not even allow any setting > at all? This is where we get the idea to set 8x AGP from. See > drivers/gpu/drm/nouveau/nvkm/subdev/pci/agp.c for details. The chipset does not support AGP slot but supports AGP for the integrated video. So it shouldn't be completely disabled. > The alternative is to add to nvkm_device_agp_quirks, and just add > something that matches just the host bridge vendor/device, ignoring > the chip. Something like this? diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pci/agp.c b/drivers/gpu/drm/nouveau/nvkm/subdev/pci/agp.c index 814cb51..385a90f 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/pci/agp.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pci/agp.c @@ -35,6 +35,8 @@ static const struct nvkm_device_agp_quirk nvkm_device_agp_quirks[] = { /* VIA Apollo PRO133x / GeForce FX 5600 Ultra - fdo#20341 */ { PCI_VENDOR_ID_VIA, 0x0691, PCI_VENDOR_ID_NVIDIA, 0x0311, 2 }, + /* SiS 761 does not support AGP cards, use PCI mode */ + { PCI_VENDOR_ID_SI, 0x0761, PCI_ANY_ID, PCI_ANY_ID, 0 }, {}, }; @@ -137,8 +139,10 @@ nvkm_agp_ctor(struct nvkm_pci *pci) while (quirk->hostbridge_vendor) { if (info.device->vendor == quirk->hostbridge_vendor && info.device->device == quirk->hostbridge_device && - pci->pdev->vendor == quirk->chip_vendor && - pci->pdev->device == quirk->chip_device) { + (quirk->chip_vendor == (u16)PCI_ANY_ID || + pci->pdev->vendor == quirk->chip_vendor) && + (quirk->chip_device == (u16)PCI_ANY_ID || + pci->pdev->device == quirk->chip_device)) { nvkm_info(subdev, "forcing default agp mode to %dX, " "use NvAGP= to override\n", quirk->mode); -- Ondrej Zary