From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexander Gordeev Subject: Re: [kvm-unit-tests PATCH v10 10/12] pci: Add generic ECAM host support Date: Mon, 7 Nov 2016 09:03:07 +0100 Message-ID: <20161107080307.GF10472@agordeev.lab.eng.brq.redhat.com> References: <20161104143352.gakhitj32hoojsfh@kamzik.brq.redhat.com> <20161105095625.GA10472@agordeev.lab.eng.brq.redhat.com> <20161105172006.GA27776@dhcp-27-118.brq.redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: kvm@vger.kernel.org, Thomas Huth , Peter Xu To: Andrew Jones Return-path: Received: from mx1.redhat.com ([209.132.183.28]:41850 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751218AbcKGHzL (ORCPT ); Mon, 7 Nov 2016 02:55:11 -0500 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E242D61B96 for ; Mon, 7 Nov 2016 07:55:10 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20161105172006.GA27776@dhcp-27-118.brq.redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On Sat, Nov 05, 2016 at 06:20:06PM +0100, Alexander Gordeev wrote: > +bool pci_probe(void) > +{ > + pcidevaddr_t dev; > + u8 header; > + u32 cmd; > + int i; > + > + assert(!pci_host_bridge); > + pci_host_bridge = pci_dt_probe(); > + if (!pci_host_bridge) > + return false; > + > + for (dev = 0; dev < 256; dev++) { > + if (!pci_dev_exists(dev)) > + continue; > + > + /* We are only interested in normal PCI devices */ > + header = pci_config_readb(dev, PCI_HEADER_TYPE); > + if ((header & PCI_HEADER_TYPE_MASK) != PCI_HEADER_TYPE_NORMAL) > + continue; > + > + cmd = PCI_COMMAND_SERR; Sigh. Please, ignore this patch. I forgot to add PCI_COMMAND_PARITY here, as intended. > + for (i = 0; i < 6; i++) { > + u64 addr; > + > + if (pci_alloc_resource(dev, i, &addr)) { > + pci_bar_set_addr(dev, i, addr); > + > + if (pci_bar_is_memory(dev, i)) > + cmd |= PCI_COMMAND_MEMORY; > + else > + cmd |= PCI_COMMAND_IO; > + } > + > + if (pci_bar_is64(dev, i)) > + i++; > + } > + > + pci_config_writel(dev, PCI_COMMAND, cmd); > + } > + > + return true; > +}