From owner-p4-projects@FreeBSD.ORG Tue Apr 4 01:22:19 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6F89916A420; Tue, 4 Apr 2006 01:22:19 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1A45516A400 for ; Tue, 4 Apr 2006 01:22:19 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7E7E943D53 for ; Tue, 4 Apr 2006 01:22:18 +0000 (GMT) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id k341MISR085843 for ; Tue, 4 Apr 2006 01:22:18 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id k341MI1E085840 for perforce@freebsd.org; Tue, 4 Apr 2006 01:22:18 GMT (envelope-from kmacy@freebsd.org) Date: Tue, 4 Apr 2006 01:22:18 GMT Message-Id: <200604040122.k341MI1E085840@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 94573 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 04 Apr 2006 01:22:19 -0000 http://perforce.freebsd.org/chv.cgi?CH=94573 Change 94573 by kmacy@kmacy_storage:sun4v_work on 2006/04/04 01:22:05 local HV PCI support changes Affected files ... .. //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/hv_pci.c#18 edit Differences ... ==== //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/hv_pci.c#18 (text+ko) ==== @@ -138,17 +138,24 @@ int br[2]; int n; + printf("hvpci_attach: dev_name=%s dev_type=%s\n", + ofw_bus_get_name(dev), ofw_bus_get_type(dev)); + node = ofw_bus_get_node(dev); + printf("hvpci_attach: %p, node: %#x\n", dev, node); if (node == -1) panic("%s: ofw_bus_get_node failed.", __func__); sc = device_get_softc(dev); - n = OF_getprop(node, "bus-range", (void *)br, sizeof br); + n = OF_getprop(node, "bus-range", &br[0], 8); + if (n == -1) panic("%s: could not get bus-range", __func__); - if (n != sizeof br) + if (n != sizeof(br)) panic("%s: broken bus-range (%d)", __func__, n); + sc->hs_busnum = br[0]; + #if 0 if (OF_getprop(node, "reg", &cell, sizeof cell) == -1) panic("%s: OF_getprop failed.", __func__); @@ -185,26 +192,37 @@ int width) { struct hvpci_softc *sc; - uint32_t data; - int r; - uint64_t ret; + uint32_t data = -1; + uint64_t r; + uint32_t ret; sc = device_get_softc(dev); r = hvio_config_get(sc->hs_devhandle, HVPCI_BDF(bus, slot, func), reg, width, (pci_cfg_data_t *)&data); - printf("%d = read_config(%#lx, %#x, %d, %d) = %#x\n", r, - sc->hs_devhandle, HVPCI_BDF(bus, slot, func), reg, width, data); if (r == H_EOK) { switch (width) { case 1: ret = data & 0xff; +#if 0 + printf("%ld = read_config(%#lx, %#x, %d, %d) = %#x\n", r, + sc->hs_devhandle, HVPCI_BDF(bus, slot, func), reg, width, ret); +#endif break; case 2: ret = data & 0xffff; +#if 0 + printf("%ld = read_config(%#lx, %#x, %d, %d) = %#x\n", r, + sc->hs_devhandle, HVPCI_BDF(bus, slot, func), reg, width, ret); +#endif + break; case 4: ret = data; +#if 0 + printf("%ld = read_config(%#lx, %#x, %d, %d) = %#x\n", r, + sc->hs_devhandle, HVPCI_BDF(bus, slot, func), reg, width, ret); +#endif break; default: ret = -1; @@ -225,24 +243,29 @@ uint32_t val, int width) { struct hvpci_softc *sc; - uint32_t data; + pci_cfg_data_t data = { 0 }; + uint64_t r; sc = device_get_softc(dev); switch (width) { case 1: - data = val; + data.qw = (uint8_t)val; break; case 2: - data = val & 0xffff; + data.qw = (uint16_t)(val & 0xffff); break; case 4: - data = val; + data.qw = (uint32_t)val; break; default: panic("unsupported width: %d", width); } - hvio_config_put(sc->hs_devhandle, HVPCI_BDF(bus, slot, func), reg, - width, (pci_cfg_data_t)data); + + r = hvio_config_put(sc->hs_devhandle, HVPCI_BDF(bus, slot, func), + reg, width, (pci_cfg_data_t)data); + + if (r) + printf("put failed with: %ld\n", r); } #ifdef notyet