All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yinghai Lu <yinghai@kernel.org>
To: Bjorn Helgaas <bhelgaas@google.com>,
	David Miller <davem@davemloft.net>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Wei Yang <weiyang@linux.vnet.ibm.com>, TJ <linux@iam.tj>,
	Yijing Wang <wangyijing@huawei.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
	Yinghai Lu <yinghai@kernel.org>, Michal Simek <monstr@monstr.eu>,
	Paul Mackerras <paulus@samba.org>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Arnd Bergmann <arnd@arndb.de>,
	linuxppc-dev@lists.ozlabs.org, linux-arch@vger.kernel.org
Subject: [PATCH v4 31/52] PCI: Unify skip_ioresource_align()
Date: Thu, 20 Aug 2015 23:20:46 -0700	[thread overview]
Message-ID: <1440138067-4314-32-git-send-email-yinghai@kernel.org> (raw)
In-Reply-To: <1440138067-4314-1-git-send-email-yinghai@kernel.org>

There are powerpc generic version and x86 local version for
skip_ioresource_align().

Move the powerpc version to setup-bus.c, and kill x86 local version.

Also kill dummy version in microblaze.

Cc: Michal Simek <monstr@monstr.eu>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: linuxppc-dev@lists.ozlabs.org
Cc: linux-arch@vger.kernel.org
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
---
 arch/microblaze/pci/pci-common.c |  8 --------
 arch/powerpc/kernel/pci-common.c | 11 +----------
 arch/x86/include/asm/pci_x86.h   |  1 -
 arch/x86/pci/common.c            |  4 ++--
 arch/x86/pci/i386.c              | 12 ++----------
 drivers/pci/setup-bus.c          |  9 +++++++++
 include/asm-generic/pci-bridge.h |  2 ++
 7 files changed, 16 insertions(+), 31 deletions(-)

diff --git a/arch/microblaze/pci/pci-common.c b/arch/microblaze/pci/pci-common.c
index ae838ed..09b1af6 100644
--- a/arch/microblaze/pci/pci-common.c
+++ b/arch/microblaze/pci/pci-common.c
@@ -878,11 +878,6 @@ void pcibios_fixup_bus(struct pci_bus *bus)
 }
 EXPORT_SYMBOL(pcibios_fixup_bus);
 
-static int skip_isa_ioresource_align(struct pci_dev *dev)
-{
-	return 0;
-}
-
 /*
  * We need to avoid collisions with `mirrored' VGA ports
  * and other strange ISA hardware, so we always want the
@@ -899,12 +894,9 @@ static int skip_isa_ioresource_align(struct pci_dev *dev)
 resource_size_t pcibios_align_resource(void *data, const struct resource *res,
 				resource_size_t size, resource_size_t align)
 {
-	struct pci_dev *dev = data;
 	resource_size_t start = res->start;
 
 	if (res->flags & IORESOURCE_IO) {
-		if (skip_isa_ioresource_align(dev))
-			return start;
 		if (start & 0x300)
 			start = (start + 0x3ff) & ~0x3ff;
 	}
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index b9de34d..2d8d654 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -1064,15 +1064,6 @@ void pci_fixup_cardbus(struct pci_bus *bus)
 	pcibios_setup_bus_devices(bus);
 }
 
-
-static int skip_isa_ioresource_align(struct pci_dev *dev)
-{
-	if (pci_has_flag(PCI_CAN_SKIP_ISA_ALIGN) &&
-	    !(dev->bus->bridge_ctl & PCI_BRIDGE_CTL_ISA))
-		return 1;
-	return 0;
-}
-
 /*
  * We need to avoid collisions with `mirrored' VGA ports
  * and other strange ISA hardware, so we always want the
@@ -1093,7 +1084,7 @@ resource_size_t pcibios_align_resource(void *data, const struct resource *res,
 	resource_size_t start = res->start;
 
 	if (res->flags & IORESOURCE_IO) {
-		if (skip_isa_ioresource_align(dev))
+		if (skip_isa_ioresource_align(dev->bus))
 			return start;
 		if (start & 0x300)
 			start = (start + 0x3ff) & ~0x3ff;
diff --git a/arch/x86/include/asm/pci_x86.h b/arch/x86/include/asm/pci_x86.h
index 164e3f8..ddac225 100644
--- a/arch/x86/include/asm/pci_x86.h
+++ b/arch/x86/include/asm/pci_x86.h
@@ -28,7 +28,6 @@ do {						\
 #define PCI_ASSIGN_ROMS		0x1000
 #define PCI_BIOS_IRQ_SCAN	0x2000
 #define PCI_ASSIGN_ALL_BUSSES	0x4000
-#define PCI_CAN_SKIP_ISA_ALIGN	0x8000
 #define PCI_USE__CRS		0x10000
 #define PCI_CHECK_ENABLE_AMD_MMCONF	0x20000
 #define PCI_HAS_IO_ECS		0x40000
diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
index 8fd6f44..e8df922 100644
--- a/arch/x86/pci/common.c
+++ b/arch/x86/pci/common.c
@@ -83,7 +83,7 @@ DEFINE_RAW_SPINLOCK(pci_config_lock);
 
 static int __init can_skip_ioresource_align(const struct dmi_system_id *d)
 {
-	pci_probe |= PCI_CAN_SKIP_ISA_ALIGN;
+	pci_add_flags(PCI_CAN_SKIP_ISA_ALIGN);
 	printk(KERN_INFO "PCI: %s detected, can skip ISA alignment\n", d->ident);
 	return 0;
 }
@@ -619,7 +619,7 @@ char *__init pcibios_setup(char *str)
 		pci_routeirq = 1;
 		return NULL;
 	} else if (!strcmp(str, "skip_isa_align")) {
-		pci_probe |= PCI_CAN_SKIP_ISA_ALIGN;
+		pci_add_flags(PCI_CAN_SKIP_ISA_ALIGN);
 		return NULL;
 	} else if (!strcmp(str, "noioapicquirk")) {
 		noioapicquirk = 1;
diff --git a/arch/x86/pci/i386.c b/arch/x86/pci/i386.c
index 0a9f2ca..3f17726 100644
--- a/arch/x86/pci/i386.c
+++ b/arch/x86/pci/i386.c
@@ -33,6 +33,7 @@
 #include <linux/errno.h>
 #include <linux/bootmem.h>
 
+#include <asm-generic/pci-bridge.h>
 #include <asm/pat.h>
 #include <asm/e820.h>
 #include <asm/pci_x86.h>
@@ -128,15 +129,6 @@ static void __init pcibios_fw_addr_list_del(void)
 	pcibios_fw_addr_done = true;
 }
 
-static int
-skip_isa_ioresource_align(struct pci_dev *dev) {
-
-	if ((pci_probe & PCI_CAN_SKIP_ISA_ALIGN) &&
-	    !(dev->bus->bridge_ctl & PCI_BRIDGE_CTL_ISA))
-		return 1;
-	return 0;
-}
-
 /*
  * We need to avoid collisions with `mirrored' VGA ports
  * and other strange ISA hardware, so we always want the
@@ -158,7 +150,7 @@ pcibios_align_resource(void *data, const struct resource *res,
 	resource_size_t start = res->start;
 
 	if (res->flags & IORESOURCE_IO) {
-		if (skip_isa_ioresource_align(dev))
+		if (skip_isa_ioresource_align(dev->bus))
 			return start;
 		if (start & 0x300)
 			start = (start + 0x3ff) & ~0x3ff;
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index 7fb08ef..1f08bed 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -1157,6 +1157,15 @@ static resource_size_t window_alignment(struct pci_bus *bus,
 	return max(align, arch_align);
 }
 
+int skip_isa_ioresource_align(struct pci_bus *bus)
+{
+	if (pci_has_flag(PCI_CAN_SKIP_ISA_ALIGN) &&
+	    !(bus->bridge_ctl & PCI_BRIDGE_CTL_ISA))
+		return 1;
+
+	return 0;
+}
+
 static resource_size_t size_aligned_for_isa(resource_size_t size)
 {
 	/*
diff --git a/include/asm-generic/pci-bridge.h b/include/asm-generic/pci-bridge.h
index 20db2e5..fab4bd0 100644
--- a/include/asm-generic/pci-bridge.h
+++ b/include/asm-generic/pci-bridge.h
@@ -60,6 +60,8 @@ static inline int pci_has_flag(int flag)
 {
 	return pci_flags & flag;
 }
+
+int skip_isa_ioresource_align(struct pci_bus *bus);
 #else
 static inline void pci_set_flags(int flags) { }
 static inline void pci_add_flags(int flags) { }
-- 
1.8.4.5

  parent reply	other threads:[~2015-08-21  6:20 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-21  6:20 [PATCH v4 00/52] PCI: Resource allocation cleanup for v4.3 Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 01/52] PCI: Cleanup res_to_dev_res() printout Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 02/52] PCI: Reuse res_to_dev_res() in reassign_resources_sorted() Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 03/52] PCI: Use correct align for optional only resources during sorting Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 04/52] PCI: Optimize bus min_align/size calculation during sizing Yinghai Lu
2015-09-14 20:21   ` Bjorn Helgaas
2015-09-14 21:37     ` Yinghai Lu
2015-09-15 14:57       ` Bjorn Helgaas
2015-09-16 19:33         ` Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 05/52] PCI: Optimize bus align/size calculation for optional " Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 06/52] PCI: Don't add too much optional size for hotplug bridge MMIO Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 07/52] PCI: Reorder resources list for required/optional resources Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 08/52] PCI: Remove duplicated code for resource sorting Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 09/52] PCI: Rename pdev_sort_resources() to pdev_assign_resources_prepare() Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 10/52] PCI: Treat ROM resource as optional during realloc Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 11/52] PCI: Add debug printout during releasing partial assigned resources Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 12/52] PCI: Simplify res reference using in __assign_resources_sorted() Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 13/52] PCI, acpiphp: Add missing realloc list checking after resource allocation Yinghai Lu
2015-08-24 22:09   ` Rafael J. Wysocki
2015-08-24 22:14     ` Yinghai Lu
2015-08-25  0:37       ` Rafael J. Wysocki
2015-08-25  0:14         ` Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 14/52] PCI: Add __add_to_list() Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 15/52] PCI: Cache window alignment value during bus sizing Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 16/52] PCI: Check if resource is allocated before trying to assign one Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 17/52] PCI: Separate out save_resources()/restore_resources() Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 18/52] PCI: Move comment to pci_need_to_release() Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 19/52] PCI: Separate required+optional assigning to another function Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 20/52] PCI: Skip required+optional if there is no optional Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 21/52] PCI: Move saved required resource list out of required+optional assigning Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 22/52] PCI: Add alt_size ressource allocation support Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 23/52] PCI: Add support for more than two alt_size under same bridge Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 24/52] PCI: Better support for two alt_size Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 25/52] PCI: Fix size calculation with old_size on rescan path Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 26/52] PCI: Don't add too much optional size for hotplug bridge io Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 27/52] PCI: Move ISA io port align out of calculate_iosize() Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 28/52] PCI: Don't add too much io port for hotplug bridge with old size Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 29/52] PCI: Unify calculate_size() for io port and MMIO Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 30/52] PCI: Allow bridge optional only io port resource required size to be 0 Yinghai Lu
2015-08-21  6:20 ` Yinghai Lu [this message]
2015-08-21  6:20 ` [PATCH v4 32/52] PCI: Kill macro checking for bus io port sizing Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 33/52] resources: Split out __allocate_resource() Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 34/52] resources: Make allocate_resource() return best fit resource Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 35/52] PCI: Check pref compatible bit for mem64 resource of PCIe device Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 36/52] PCI: Only treat non-pref mmio64 as pref if all bridges have MEM_64 Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 37/52] PCI: Add has_mem64 for struct host_bridge Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 38/52] PCI: Only treat non-pref mmio64 as pref if host bridge has mmio64 Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 39/52] PCI: Restore pref MMIO allocation logic for host bridge without mmio64 Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 40/52] sparc/PCI: Add mem64 resource parsing for root bus Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 41/52] sparc/PCI: Add IORESOURCE_MEM_64 for 64-bit resource in OF parsing Yinghai Lu
2015-08-21  6:20   ` Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 42/52] powerpc/PCI: " Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 43/52] OF/PCI: Add IORESOURCE_MEM_64 for 64-bit resource Yinghai Lu
2015-08-21 18:18   ` Rob Herring
2015-08-21 18:18     ` Rob Herring
2015-08-21 18:24     ` Yinghai Lu
2015-08-21 18:24       ` Yinghai Lu
2015-08-21  6:20 ` [PATCH v4 44/52] PCI: Treat optional as required in first try for bridge rescan Yinghai Lu
2015-08-21  6:21 ` [PATCH v4 45/52] PCI: Get new realloc size for bridge for last try Yinghai Lu
2015-08-21  6:21 ` [PATCH v4 46/52] PCI: Don't release sibling bridge resources during hotplug Yinghai Lu
2015-08-21  6:21 ` [PATCH v4 47/52] PCI: Don't release fixed resource for realloc Yinghai Lu
2015-08-21  6:21 ` [PATCH v4 48/52] PCI: Claim fixed resource during remove/rescan path Yinghai Lu
2015-08-21  6:21 ` [PATCH v4 49/52] PCI: Set resource to FIXED for LSI devices Yinghai Lu
2015-08-21  6:21 ` [PATCH v4 50/52] PCI, x86: Add pci=assign_pref_bars to reallocate pref BARs Yinghai Lu
     [not found] ` <1440138067-4314-1-git-send-email-yinghai-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2015-08-21  6:21   ` [PATCH v4 51/52] PCI: Introduce resource_disabled() Yinghai Lu
2015-08-21  6:21     ` Yinghai Lu
2015-08-21  6:21     ` Yinghai Lu
2015-08-21  6:21 ` [PATCH v4 52/52] PCI: Don't set flags to 0 when assign resource fail Yinghai Lu

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=1440138067-4314-32-git-send-email-yinghai@kernel.org \
    --to=yinghai@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=benh@kernel.crashing.org \
    --cc=bhelgaas@google.com \
    --cc=davem@davemloft.net \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux@iam.tj \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=monstr@monstr.eu \
    --cc=mpe@ellerman.id.au \
    --cc=paulus@samba.org \
    --cc=wangyijing@huawei.com \
    --cc=weiyang@linux.vnet.ibm.com \
    /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.