From: Wei Yang <weiyang@linux.vnet.ibm.com>
To: Yinghai Lu <yinghai@kernel.org>
Cc: Wei Yang <weiyang@linux.vnet.ibm.com>,
Bjorn Helgaas <bhelgaas@google.com>,
David Miller <davem@davemloft.net>,
David Ahern <david.ahern@oracle.com>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
TJ <linux@iam.tj>, Yijing Wang <wangyijing@huawei.com>,
Andrew Morton <akpm@linux-foundation.org>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 36/36] PCI: Don't set flags to 0 when assign resource fail
Date: Thu, 9 Jul 2015 14:04:21 +0800 [thread overview]
Message-ID: <20150709060420.GA7465@richard> (raw)
In-Reply-To: <CAE9FiQVSK9kAg-qyASpb1AoHSwQbKK33eHhFmzUjoLOftK9M4w@mail.gmail.com>
This one is on top of the last one ? or replace the last one?
On Wed, Jul 08, 2015 at 10:01:47PM -0700, Yinghai Lu wrote:
>On Wed, Jul 8, 2015 at 8:30 PM, Wei Yang <weiyang@linux.vnet.ibm.com> wrote:
>> Hi, Yinghai
>>
>> This patch may introduce some problem.
>>
>> On my P8 machine, after applying this patch, I see following error:
>>
>> [ 0.589948] pnv_ioda_setup_pe_seg: trigger IO SEG 0
>> [ 0.589992] pnv_ioda_setup_pe_seg: res[io 0x1000-0x3fff] 100
>>
>> The last 0x100 is the res->flags, which indicates the UNSET and DISABLED bit
>> is not set.
>
>Maybe we should introduce resource_disabled() for that.
>
>Please check if attached patch would fix the problem.
>
>Thanks
>
>Yinghai
>Subject: [PATCH] PCI: Introduce resource_disabled()
>
>so we can cover !flags and IORESOURCE_DISABLED both.
>
>Signed-off-by: Yinghai Lu <yinghai@kernel.org>
>
>diff --git a/arch/alpha/kernel/pci.c b/arch/alpha/kernel/pci.c
>index 82f738e..91a7153 100644
>--- a/arch/alpha/kernel/pci.c
>+++ b/arch/alpha/kernel/pci.c
>@@ -282,7 +282,7 @@ pcibios_claim_one_bus(struct pci_bus *b)
> for (i = 0; i < PCI_NUM_RESOURCES; i++) {
> struct resource *r = &dev->resource[i];
>
>- if (r->parent || !r->start || !r->flags)
>+ if (r->parent || !r->start || resource_disabled(r))
> continue;
> if (pci_has_flag(PCI_PROBE_ONLY) ||
> (r->flags & IORESOURCE_PCI_FIXED)) {
>diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c
>index 7cc3be9..cc293ea 100644
>--- a/arch/ia64/pci/pci.c
>+++ b/arch/ia64/pci/pci.c
>@@ -501,7 +501,7 @@ void pcibios_fixup_device_resources(struct pci_dev *dev)
> for (idx = 0; idx < PCI_BRIDGE_RESOURCES; idx++) {
> struct resource *r = &dev->resource[idx];
>
>- if (!r->flags || r->parent || !r->start)
>+ if (resource_disabled(r) || r->parent || !r->start)
> continue;
>
> pci_claim_resource(dev, idx);
>@@ -519,7 +519,7 @@ static void pcibios_fixup_bridge_resources(struct pci_dev *dev)
> for (idx = PCI_BRIDGE_RESOURCES; idx < PCI_NUM_RESOURCES; idx++) {
> struct resource *r = &dev->resource[idx];
>
>- if (!r->flags || r->parent || !r->start)
>+ if (resource_disabled(r) || r->parent || !r->start)
> continue;
>
> pci_claim_bridge_resource(dev, idx);
>diff --git a/arch/microblaze/pci/pci-common.c b/arch/microblaze/pci/pci-common.c
>index ae838ed..67848f8 100644
>--- a/arch/microblaze/pci/pci-common.c
>+++ b/arch/microblaze/pci/pci-common.c
>@@ -705,7 +705,7 @@ static void pcibios_fixup_resources(struct pci_dev *dev)
> }
> for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
> struct resource *res = dev->resource + i;
>- if (!res->flags)
>+ if (resource_disabled(res))
> continue;
> if (res->start == 0) {
> pr_debug("PCI:%s Resource %d %016llx-%016llx [%x]",
>@@ -806,7 +806,7 @@ static void pcibios_fixup_bridge(struct pci_bus *bus)
> pci_bus_for_each_resource(bus, res, i) {
> if (!res)
> continue;
>- if (!res->flags)
>+ if (resource_disabled(res))
> continue;
> if (i >= 3 && bus->self->transparent)
> continue;
>@@ -993,7 +993,7 @@ static void pcibios_allocate_bus_resources(struct pci_bus *bus)
> pci_domain_nr(bus), bus->number);
>
> pci_bus_for_each_resource(bus, res, i) {
>- if (!res || !res->flags
>+ if (!res || resource_disabled(res)
> || res->start > res->end || res->parent)
> continue;
> if (bus->parent == NULL)
>@@ -1095,7 +1095,8 @@ static void __init pcibios_allocate_resources(int pass)
> r = &dev->resource[idx];
> if (r->parent) /* Already allocated */
> continue;
>- if (!r->flags || (r->flags & IORESOURCE_UNSET))
>+ if (resource_disabled(r) ||
>+ (r->flags & IORESOURCE_UNSET))
> continue; /* Not assigned at all */
> /* We only allocate ROMs on pass 1 just in case they
> * have been screwed up by firmware
>@@ -1226,7 +1227,7 @@ void pcibios_claim_one_bus(struct pci_bus *bus)
> for (i = 0; i < PCI_NUM_RESOURCES; i++) {
> struct resource *r = &dev->resource[i];
>
>- if (r->parent || !r->start || !r->flags)
>+ if (r->parent || !r->start || resource_disabled(r))
> continue;
>
> pr_debug("PCI: Claiming %s: ", pci_name(dev));
>@@ -1286,7 +1287,7 @@ static void pcibios_setup_phb_resources(struct pci_controller *hose,
> res->start = (res->start + io_offset) & 0xffffffffu;
> res->end = (res->end + io_offset) & 0xffffffffu;
>
>- if (!res->flags) {
>+ if (resource_disabled(res)) {
> pr_warn("PCI: I/O resource not set for host ");
> pr_cont("bridge %s (domain %d)\n",
> hose->dn->full_name, hose->global_number);
>@@ -1306,7 +1307,7 @@ static void pcibios_setup_phb_resources(struct pci_controller *hose,
> /* Hookup PHB Memory resources */
> for (i = 0; i < 3; ++i) {
> res = &hose->mem_resources[i];
>- if (!res->flags) {
>+ if (resource_disabled(res)) {
> if (i > 0)
> continue;
> pr_err("PCI: Memory resource 0 not set for ");
>diff --git a/arch/mn10300/unit-asb2305/pci-asb2305.c b/arch/mn10300/unit-asb2305/pci-asb2305.c
>index b5b036f..a249821 100644
>--- a/arch/mn10300/unit-asb2305/pci-asb2305.c
>+++ b/arch/mn10300/unit-asb2305/pci-asb2305.c
>@@ -103,7 +103,7 @@ static void __init pcibios_allocate_bus_resources(struct list_head *bus_list)
> idx < PCI_NUM_RESOURCES;
> idx++) {
> r = &dev->resource[idx];
>- if (!r->flags)
>+ if (resource_disabled(r))
> continue;
> if (!r->start ||
> pci_claim_bridge_resource(dev, idx) < 0) {
>@@ -189,7 +189,7 @@ static int __init pcibios_assign_resources(void)
> addresses. */
> for_each_pci_dev(dev) {
> r = &dev->resource[PCI_ROM_RESOURCE];
>- if (!r->flags || !r->start)
>+ if (resource_disabled(r) || !r->start)
> continue;
> if (pci_claim_resource(dev, PCI_ROM_RESOURCE) < 0) {
> r->end -= r->start;
>diff --git a/arch/mn10300/unit-asb2305/pci.c b/arch/mn10300/unit-asb2305/pci.c
>index 3dfe2d3..ad77b18 100644
>--- a/arch/mn10300/unit-asb2305/pci.c
>+++ b/arch/mn10300/unit-asb2305/pci.c
>@@ -291,7 +291,7 @@ static void pcibios_fixup_device_resources(struct pci_dev *dev)
> for (idx = 0; idx < PCI_BRIDGE_RESOURCES; idx++) {
> struct resource *r = &dev->resource[idx];
>
>- if (!r->flags || r->parent || !r->start)
>+ if (resource_disabled(r) || r->parent || !r->start)
> continue;
>
> pci_claim_resource(dev, idx);
>@@ -308,7 +308,7 @@ static void pcibios_fixup_bridge_resources(struct pci_dev *dev)
> for (idx = PCI_BRIDGE_RESOURCES; idx < PCI_NUM_RESOURCES; idx++) {
> struct resource *r = &dev->resource[idx];
>
>- if (!r->flags || r->parent || !r->start)
>+ if (resource_disabled(r) || r->parent || !r->start)
> continue;
>
> pci_claim_bridge_resource(dev, idx);
>diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
>index b9de34d..140106d 100644
>--- a/arch/powerpc/kernel/pci-common.c
>+++ b/arch/powerpc/kernel/pci-common.c
>@@ -810,7 +810,7 @@ static void pcibios_fixup_resources(struct pci_dev *dev)
> for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
> struct resource *res = dev->resource + i;
> struct pci_bus_region reg;
>- if (!res->flags)
>+ if (resource_disabled(res))
> continue;
>
> /* If we're going to re-assign everything, we mark all resources
>@@ -927,7 +927,7 @@ static void pcibios_fixup_bridge(struct pci_bus *bus)
> struct pci_dev *dev = bus->self;
>
> pci_bus_for_each_resource(bus, res, i) {
>- if (!res || !res->flags)
>+ if (!res || resource_disabled(res))
> continue;
> if (i >= 3 && bus->self->transparent)
> continue;
>@@ -1183,7 +1183,8 @@ static void pcibios_allocate_bus_resources(struct pci_bus *bus)
> pci_domain_nr(bus), bus->number);
>
> pci_bus_for_each_resource(bus, res, i) {
>- if (!res || !res->flags || res->start > res->end || res->parent)
>+ if (!res || resource_disabled(res) ||
>+ res->start > res->end || res->parent)
> continue;
>
> /* If the resource was left unset at this point, we clear it */
>@@ -1290,7 +1291,8 @@ static void __init pcibios_allocate_resources(int pass)
> r = &dev->resource[idx];
> if (r->parent) /* Already allocated */
> continue;
>- if (!r->flags || (r->flags & IORESOURCE_UNSET))
>+ if (resource_disabled(r) ||
>+ (r->flags & IORESOURCE_UNSET))
> continue; /* Not assigned at all */
> /* We only allocate ROMs on pass 1 just in case they
> * have been screwed up by firmware
>@@ -1428,7 +1430,7 @@ void pcibios_claim_one_bus(struct pci_bus *bus)
> for (i = 0; i < PCI_NUM_RESOURCES; i++) {
> struct resource *r = &dev->resource[i];
>
>- if (r->parent || !r->start || !r->flags)
>+ if (r->parent || !r->start || resource_disabled(r))
> continue;
>
> pr_debug("PCI: Claiming %s: "
>@@ -1513,7 +1515,7 @@ static void pcibios_setup_phb_resources(struct pci_controller *hose,
> /* Hookup PHB IO resource */
> res = &hose->io_resource;
>
>- if (!res->flags) {
>+ if (resource_disabled(res)) {
> pr_info("PCI: I/O resource not set for host"
> " bridge %s (domain %d)\n",
> hose->dn->full_name, hose->global_number);
>@@ -1531,7 +1533,7 @@ static void pcibios_setup_phb_resources(struct pci_controller *hose,
> /* Hookup PHB Memory resources */
> for (i = 0; i < 3; ++i) {
> res = &hose->mem_resources[i];
>- if (!res->flags) {
>+ if (resource_disabled(res)) {
> if (i == 0)
> printk(KERN_ERR "PCI: Memory resource 0 not set for "
> "host bridge %s (domain %d)\n",
>diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c
>index 5738d31..9c42f52 100644
>--- a/arch/powerpc/platforms/powernv/pci-ioda.c
>+++ b/arch/powerpc/platforms/powernv/pci-ioda.c
>@@ -905,7 +905,7 @@ static int pnv_pci_vf_resource_shift(struct pci_dev *dev, int offset)
> num_vfs = pdn->num_vfs;
> for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) {
> res = &dev->resource[i + PCI_IOV_RESOURCES];
>- if (!res->flags || !res->parent)
>+ if (resource_disabled(res) || !res->parent)
> continue;
>
> if (!pnv_pci_is_mem_pref_64(res->flags))
>@@ -936,7 +936,7 @@ static int pnv_pci_vf_resource_shift(struct pci_dev *dev, int offset)
> */
> for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) {
> res = &dev->resource[i + PCI_IOV_RESOURCES];
>- if (!res->flags || !res->parent)
>+ if (resource_disabled(res) || !res->parent)
> continue;
>
> if (!pnv_pci_is_mem_pref_64(res->flags))
>@@ -1218,7 +1218,7 @@ static int pnv_pci_vf_assign_m64(struct pci_dev *pdev, u16 num_vfs)
>
> for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) {
> res = &pdev->resource[i + PCI_IOV_RESOURCES];
>- if (!res->flags || !res->parent)
>+ if (resource_disabled(res) || !res->parent)
> continue;
>
> if (!pnv_pci_is_mem_pref_64(res->flags))
>@@ -2771,7 +2771,7 @@ static void pnv_pci_ioda_fixup_iov_resources(struct pci_dev *pdev)
>
> for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) {
> res = &pdev->resource[i + PCI_IOV_RESOURCES];
>- if (!res->flags || res->parent)
>+ if (resource_disabled(res) || res->parent)
> continue;
> if (!pnv_pci_is_mem_pref_64(res->flags)) {
> dev_warn(&pdev->dev, " non M64 VF BAR%d: %pR\n",
>@@ -2793,7 +2793,7 @@ static void pnv_pci_ioda_fixup_iov_resources(struct pci_dev *pdev)
>
> for (i = 0; i < PCI_SRIOV_NUM_BARS; i++) {
> res = &pdev->resource[i + PCI_IOV_RESOURCES];
>- if (!res->flags || res->parent)
>+ if (resource_disabled(res) || res->parent)
> continue;
> if (!pnv_pci_is_mem_pref_64(res->flags)) {
> dev_warn(&pdev->dev, "Skipping expanding VF BAR%d: %pR\n",
>@@ -2834,7 +2834,7 @@ static void pnv_ioda_setup_pe_seg(struct pci_controller *hose,
> BUG_ON(!(pe->flags & (PNV_IODA_PE_BUS | PNV_IODA_PE_BUS_ALL)));
>
> pci_bus_for_each_resource(pe->pbus, res, i) {
>- if (!res || !res->flags ||
>+ if (!res || resource_disabled(res) ||
> res->start > res->end)
> continue;
>
>diff --git a/arch/s390/pci/pci.c b/arch/s390/pci/pci.c
>index 598f023..d850749 100644
>--- a/arch/s390/pci/pci.c
>+++ b/arch/s390/pci/pci.c
>@@ -658,7 +658,7 @@ int pcibios_add_device(struct pci_dev *pdev)
>
> for (i = 0; i < PCI_BAR_COUNT; i++) {
> res = &pdev->resource[i];
>- if (res->parent || !res->flags)
>+ if (res->parent || resource_disabled(res))
> continue;
> pci_claim_resource(pdev, i);
> }
>diff --git a/arch/sparc/kernel/pci.c b/arch/sparc/kernel/pci.c
>index bfd0b70..f5e9536 100644
>--- a/arch/sparc/kernel/pci.c
>+++ b/arch/sparc/kernel/pci.c
>@@ -630,7 +630,7 @@ static void pci_claim_bus_resources(struct pci_bus *bus)
> for (i = 0; i < PCI_NUM_RESOURCES; i++) {
> struct resource *r = &dev->resource[i];
>
>- if (r->parent || !r->start || !r->flags)
>+ if (r->parent || !r->start || resource_disabled(r))
> continue;
>
> if (ofpci_verbose)
>diff --git a/arch/x86/pci/i386.c b/arch/x86/pci/i386.c
>index d4718d4..7feee46 100644
>--- a/arch/x86/pci/i386.c
>+++ b/arch/x86/pci/i386.c
>@@ -212,7 +212,7 @@ static void pcibios_allocate_bridge_resources(struct pci_dev *dev)
>
> for (idx = PCI_BRIDGE_RESOURCES; idx < PCI_NUM_RESOURCES; idx++) {
> r = &dev->resource[idx];
>- if (!r->flags)
>+ if (resource_disabled(r))
> continue;
> if (r->parent) /* Already allocated */
> continue;
>@@ -341,7 +341,7 @@ static void pcibios_allocate_dev_rom_resource(struct pci_dev *dev)
> * addresses.
> */
> r = &dev->resource[PCI_ROM_RESOURCE];
>- if (!r->flags || !r->start)
>+ if (resource_disabled(r) || !r->start)
> return;
> if (r->parent) /* Already allocated */
> return;
>diff --git a/arch/xtensa/kernel/pci.c b/arch/xtensa/kernel/pci.c
>index b848cc3..f34d061 100644
>--- a/arch/xtensa/kernel/pci.c
>+++ b/arch/xtensa/kernel/pci.c
>@@ -142,7 +142,7 @@ static void __init pci_controller_apertures(struct pci_controller *pci_ctrl,
>
> io_offset = (unsigned long)pci_ctrl->io_space.base;
> res = &pci_ctrl->io_resource;
>- if (!res->flags) {
>+ if (resource_disabled(res)) {
> if (io_offset)
> printk (KERN_ERR "I/O resource not set for host"
> " bridge %d\n", pci_ctrl->index);
>@@ -156,7 +156,7 @@ static void __init pci_controller_apertures(struct pci_controller *pci_ctrl,
>
> for (i = 0; i < 3; i++) {
> res = &pci_ctrl->mem_resources[i];
>- if (!res->flags) {
>+ if (resource_disabled(res)) {
> if (i > 0)
> continue;
> printk(KERN_ERR "Memory resource not set for "
>diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
>index a98a7b2..de7788b 100644
>--- a/drivers/iommu/intel-iommu.c
>+++ b/drivers/iommu/intel-iommu.c
>@@ -1743,7 +1743,8 @@ static int dmar_init_reserved_ranges(void)
>
> for (i = 0; i < PCI_NUM_RESOURCES; i++) {
> r = &pdev->resource[i];
>- if (!r->flags || !(r->flags & IORESOURCE_MEM))
>+ if (resource_disabled(r) ||
>+ !(r->flags & IORESOURCE_MEM))
> continue;
> iova = reserve_iova(&reserved_iova_list,
> IOVA_PFN(r->start),
>diff --git a/drivers/pci/host/pcie-rcar.c b/drivers/pci/host/pcie-rcar.c
>index c086210..a6d6bd0 100644
>--- a/drivers/pci/host/pcie-rcar.c
>+++ b/drivers/pci/host/pcie-rcar.c
>@@ -365,7 +365,7 @@ static int rcar_pcie_setup(int nr, struct pci_sys_data *sys)
> for (i = 0; i < RCAR_PCI_MAX_RESOURCES; i++) {
>
> res = &pcie->res[i];
>- if (!res->flags)
>+ if (resource_disabled(res))
> continue;
>
> rcar_pcie_setup_window(i, pcie);
>diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
>index ee0ebff..808d08b 100644
>--- a/drivers/pci/iov.c
>+++ b/drivers/pci/iov.c
>@@ -438,7 +438,7 @@ found:
> res = &dev->resource[i + PCI_IOV_RESOURCES];
> bar64 = __pci_read_base(dev, pci_bar_unknown, res,
> pos + PCI_SRIOV_BAR + i * 4);
>- if (!res->flags)
>+ if (resource_disabled(res))
> continue;
> if (resource_size(res) & (PAGE_SIZE - 1)) {
> rc = -EIO;
>diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
>index 14bdbca..5440fb1 100644
>--- a/drivers/pci/probe.c
>+++ b/drivers/pci/probe.c
>@@ -2129,7 +2129,7 @@ void pci_bus_release_busn_res(struct pci_bus *b)
> struct resource *res = &b->busn_res;
> int ret;
>
>- if (!res->flags || !res->parent)
>+ if (resource_disabled(res) || !res->parent)
> return;
>
> ret = release_resource(res);
>diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
>index 184a09e..1d6ae73 100644
>--- a/drivers/pci/quirks.c
>+++ b/drivers/pci/quirks.c
>@@ -337,7 +337,7 @@ static void quirk_bar_fixed(struct pci_dev *dev)
> for (i = 0; i < PCI_STD_RESOURCE_END; i++) {
> struct resource *r = &dev->resource[i];
>
>- if (!r->flags || r->flags & IORESOURCE_UNSET)
>+ if (resource_disabled(r) || r->flags & IORESOURCE_UNSET)
> continue;
> r->flags |= IORESOURCE_PCI_FIXED;
> }
>diff --git a/drivers/pci/rom.c b/drivers/pci/rom.c
>index eb0ad53..585a9d3 100644
>--- a/drivers/pci/rom.c
>+++ b/drivers/pci/rom.c
>@@ -28,7 +28,7 @@ int pci_enable_rom(struct pci_dev *pdev)
> struct pci_bus_region region;
> u32 rom_addr;
>
>- if (!res->flags)
>+ if (resource_disabled(res))
> return -1;
>
> pcibios_resource_to_bus(pdev->bus, ®ion, res);
>diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
>index 04fc2e0..9197c97 100644
>--- a/drivers/pci/setup-bus.c
>+++ b/drivers/pci/setup-bus.c
>@@ -260,8 +260,7 @@ static void pdev_check_resources(struct pci_dev *dev,
> if (r->flags & IORESOURCE_PCI_FIXED)
> continue;
>
>- if (!r->flags || r->parent ||
>- (r->flags & IORESOURCE_DISABLED))
>+ if (resource_disabled(r) || r->parent)
> continue;
>
> r_align = __pci_resource_alignment(dev, r, realloc_head);
>@@ -2088,7 +2087,7 @@ static void pci_bus_dump_res(struct pci_bus *bus)
> int i;
>
> pci_bus_for_each_resource(bus, res, i) {
>- if (!res || !res->end || !res->flags)
>+ if (!res || !res->end || resource_disabled(res))
> continue;
>
> dev_printk(KERN_DEBUG, &bus->dev, "resource %d %pR\n", i, res);
>@@ -2171,7 +2170,7 @@ static int iov_resources_unassigned(struct pci_dev *dev, void *data)
> struct pci_bus_region region;
>
> /* Not assigned or rejected by kernel? */
>- if (!r->flags)
>+ if (resource_disabled(r))
> continue;
>
> pcibios_resource_to_bus(dev->bus, ®ion, r);
>diff --git a/drivers/pci/setup-res.c b/drivers/pci/setup-res.c
>index 2a5cddc..070d6d2 100644
>--- a/drivers/pci/setup-res.c
>+++ b/drivers/pci/setup-res.c
>@@ -40,7 +40,7 @@ void pci_update_resource(struct pci_dev *dev, int resno)
> * Ignore resources for unimplemented BARs and unused resource slots
> * for 64 bit BARs.
> */
>- if (!res->flags)
>+ if (resource_disabled(res))
> return;
>
> if (res->flags & IORESOURCE_UNSET)
>diff --git a/include/linux/ioport.h b/include/linux/ioport.h
>index 27dbb18..fb21179 100644
>--- a/include/linux/ioport.h
>+++ b/include/linux/ioport.h
>@@ -179,6 +179,10 @@ static inline bool resource_contains(struct resource *r1, struct resource *r2)
> return r1->start <= r2->start && r1->end >= r2->end;
> }
>
>+static inline bool resource_disabled(struct resource *r)
>+{
>+ return !r->flags || (r->flags & IORESOURCE_DISABLED);
>+}
>
> /* Convenience shorthand with allocation */
> #define request_region(start,n,name) __request_region(&ioport_resource, (start), (n), (name), 0)
--
Richard Yang
Help you, Help me
next prev parent reply other threads:[~2015-07-09 6:04 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-06 23:38 [PATCH 00/36] PCI: Resource allocation cleanup for v4.3 Yinghai Lu
2015-07-06 23:38 ` [PATCH 01/36] PCI: Cleanup res_to_dev_res() printout for addon resources Yinghai Lu
2015-07-06 23:38 ` [PATCH 02/36] PCI: Reuse res_to_dev_res in reassign_resources_sorted Yinghai Lu
2015-07-06 23:38 ` [PATCH 03/36] PCI: Use correct align for optional only resources during sorting for resource allocation Yinghai Lu
2015-07-06 23:38 ` [PATCH 04/36] PCI: Optimize bus align/size calculation during sizing Yinghai Lu
2015-07-06 23:38 ` [PATCH 05/36] PCI: Optimize bus align/size calculation for optional " Yinghai Lu
2015-07-06 23:38 ` [PATCH 06/36] PCI: Reorder resources list for must/optional resources Yinghai Lu
2015-07-06 23:38 ` [PATCH 07/36] PCI: Remove duplicated code for resource sorting Yinghai Lu
2015-07-06 23:38 ` [PATCH 08/36] PCI: Rename pdev_sort_resources to pdev_check_resources Yinghai Lu
2015-07-06 23:38 ` [PATCH 09/36] PCI: Treat ROM resource as optional during realloc Yinghai Lu
2015-07-06 23:39 ` [PATCH 10/36] PCI: Add debug printout during releasing partial must/optinal assigned resources Yinghai Lu
2015-07-06 23:39 ` [PATCH 11/36] PCI: Simplify res reference using in __assign_resourcs_sorted Yinghai Lu
2015-07-06 23:39 ` [PATCH 12/36] PCI: Separate realloc list checking after allocation Yinghai Lu
2015-07-06 23:39 ` [PATCH 13/36] PCI: Add __add_to_list() Yinghai Lu
2015-07-06 23:39 ` [PATCH 14/36] PCI: Separate must_add assigning to another function Yinghai Lu
2015-07-06 23:39 ` [PATCH 15/36] PCI: Bail out early if there is no addon Yinghai Lu
2015-07-06 23:39 ` [PATCH 16/36] PCI: Add alt_size allocation support Yinghai Lu
2015-07-06 23:39 ` [PATCH 17/36] PCI: Add support for more than two alt_size under same bridge Yinghai Lu
2015-07-15 3:07 ` Yijing Wang
2015-07-15 5:08 ` Yinghai Lu
2015-07-15 5:16 ` Yijing Wang
2015-07-06 23:39 ` [PATCH 18/36] PCI: Better support for two alt_size Yinghai Lu
2015-07-06 23:39 ` [PATCH 19/36] resources: Split out __allocate_resource() Yinghai Lu
2015-07-06 23:39 ` [PATCH 20/36] resources: Make allocate_resource return just fit resource Yinghai Lu
2015-07-06 23:39 ` [PATCH 21/36] PCI: Check pref compatible bit for mem64 resource of pcie device Yinghai Lu
2015-07-06 23:39 ` [PATCH 22/36] PCI: Only treat non-pef mmio64 as pref if all bridges has MEM_64 Yinghai Lu
2015-07-06 23:39 ` [PATCH 23/36] PCI: Add has_mem64 for host_bridge Yinghai Lu
2015-07-06 23:39 ` [PATCH 24/36] PCI: Only treat non-pef mmio64 as pref if host-bridge has_mem64 Yinghai Lu
2015-07-06 23:39 ` [PATCH 25/36] PCI: Restore pref mmio allocation logic for hostbridge without mmio64 Yinghai Lu
2015-07-06 23:39 ` [PATCH 26/36] sparc/PCI: Add mem64 resource parsing for root bus Yinghai Lu
2015-07-06 23:39 ` [PATCH 27/36] sparc/PCI: Add IORESOURCE_MEM_64 for 64-bit resource in of parsing Yinghai Lu
2015-07-06 23:39 ` Yinghai Lu
2015-07-06 23:39 ` [PATCH 28/36] powerpc/PCI: " Yinghai Lu
2015-07-06 23:39 ` [PATCH 29/36] of/PCI: Add IORESOURCE_MEM_64 for 64-bit resource Yinghai Lu
2015-07-06 23:39 ` Yinghai Lu
2015-07-10 20:21 ` Rob Herring
2015-07-06 23:39 ` [PATCH 30/36] PCI: Treat optional as must in first try for bridge rescan Yinghai Lu
2015-07-06 23:39 ` [PATCH 31/36] PCI: Get new realloc size for bridge for last try Yinghai Lu
2015-07-06 23:39 ` [PATCH 32/36] PCI: Don't release sibiling bridge resources during hotplug Yinghai Lu
2015-07-06 23:39 ` [PATCH 33/36] PCI: Don't release fixed resource for realloc Yinghai Lu
2015-07-06 23:39 ` [PATCH 34/36] PCI: Set resource to FIXED for lsi devices Yinghai Lu
2015-07-06 23:39 ` [PATCH 35/36] PCI, x86: Add pci=assign_pref_bars to re-allocate pref bars Yinghai Lu
2015-07-06 23:39 ` [PATCH 36/36] PCI: Don't set flags to 0 when assign resource fail Yinghai Lu
2015-07-09 3:30 ` Wei Yang
2015-07-09 5:01 ` Yinghai Lu
2015-07-09 6:04 ` Wei Yang [this message]
2015-07-09 16:20 ` Yinghai Lu
2015-07-10 2:30 ` Wei Yang
2015-07-10 2:48 ` Yinghai Lu
2015-07-10 5:49 ` Yinghai Lu
2015-07-11 0:03 ` Wei Yang
2015-07-11 0:42 ` Yinghai Lu
2015-07-11 1:37 ` Wei Yang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150709060420.GA7465@richard \
--to=weiyang@linux.vnet.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=benh@kernel.crashing.org \
--cc=bhelgaas@google.com \
--cc=davem@davemloft.net \
--cc=david.ahern@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux@iam.tj \
--cc=wangyijing@huawei.com \
--cc=yinghai@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.