From owner-p4-projects@FreeBSD.ORG Wed Feb 5 13:25:57 2014 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3E2A5DA6; Wed, 5 Feb 2014 13:25:57 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0149CDA4 for ; Wed, 5 Feb 2014 13:25:57 +0000 (UTC) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:1900:2254:2068::682:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id DEBFD176C for ; Wed, 5 Feb 2014 13:25:56 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.8/8.14.8) with ESMTP id s15DPuaM081693 for ; Wed, 5 Feb 2014 13:25:56 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.8/8.14.8/Submit) id s15DPupt081690 for perforce@freebsd.org; Wed, 5 Feb 2014 13:25:56 GMT (envelope-from jhb@freebsd.org) Date: Wed, 5 Feb 2014 13:25:56 GMT Message-Id: <201402051325.s15DPupt081690@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin Subject: PERFORCE change 1190644 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.17 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 05 Feb 2014 13:25:57 -0000 http://p4web.freebsd.org/@@1190644?ac=10 Change 1190644 by jhb@jhb_ralph on 2014/02/05 13:25:06 Handle PCI-PCI bridge bus number quirks when reserving bus number resources. Affected files ... .. //depot/projects/pci/sys/dev/pci/pci.c#52 edit .. //depot/projects/pci/sys/dev/pci/pci_pci.c#47 edit Differences ... ==== //depot/projects/pci/sys/dev/pci/pci.c#52 (text+ko) ==== @@ -3221,8 +3221,9 @@ struct resource_list *rl) { struct resource *res; + char *cp; u_long start, end, count; - int rid, sec_bus, sec_reg, sub_bus, sub_reg; + int rid, sec_bus, sec_reg, sub_bus, sub_reg, sup_bus; switch (cfg->hdrtype & PCIM_HDRTYPE) { case PCIM_HDRTYPE_BRIDGE: @@ -3248,6 +3249,38 @@ */ sec_bus = PCI_READ_CONFIG(bus, dev, sec_reg, 1); sub_bus = PCI_READ_CONFIG(bus, dev, sub_reg, 1); + + /* Quirk handling. */ + switch (pci_get_devid(dev)) { + case 0x12258086: /* Intel 82454KX/GX (Orion) */ + supbus = pci_read_config(dev, 0x41, 1); + if (supbus != 0xff) { + sec_bus = supbus + 1; + sub_bus = supbus + 1; + } + break; + + case 0x00dd10de: + /* Compaq R3000 BIOS sets wrong subordinate bus number. */ + if ((cp = getenv("smbios.planar.maker")) == NULL) + break; + if (strncmp(cp, "Compal", 6) != 0) { + freeenv(cp); + break; + } + freeenv(cp); + if ((cp = getenv("smbios.planar.product")) == NULL) + break; + if (strncmp(cp, "08A0", 4) != 0) { + freeenv(cp); + break; + } + freeenv(cp); + if (sub_bus < 0xa) + sub_bus = 0xa; + break; + } + if (bootverbose || 1) printf("\tsecbus=%d, subbus=%d\n", sec_bus, sub_bus); if (sec_bus > 0 && sub_bus >= sec_bus) { ==== //depot/projects/pci/sys/dev/pci/pci_pci.c#47 (text+ko) ==== @@ -957,8 +957,6 @@ } break; } -#else - /* XXX: This is now broken */ #endif /*