All of lore.kernel.org
 help / color / mirror / Atom feed
* + x86_64-set-cfg_size-for-amd-family-10h-in-case-mmconfig-is-used.patch added to -mm tree
@ 2008-01-22  2:45 akpm
  2008-01-22  9:10 ` [PATCH] x86_64: AMD Family 10h enable ext config in quirk Yinghai Lu
  0 siblings, 1 reply; 2+ messages in thread
From: akpm @ 2008-01-22  2:45 UTC (permalink / raw)
  To: mm-commits; +Cc: Yinghai.Lu, ak, greg, hpa, mingo, tglx, yinghai.lu


The patch titled
     x86_64: set cfg_size for AMD Family 10h in case MMCONFIG is used
has been added to the -mm tree.  Its filename is
     x86_64-set-cfg_size-for-amd-family-10h-in-case-mmconfig-is-used.patch

Before you just go and hit "reply", please:
   a) Consider who else should be cc'ed
   b) Prefer to cc a suitable mailing list as well
   c) Ideally: find the original patch on the mailing list and do a
      reply-to-all to that, adding suitable additional cc's

*** Remember to use Documentation/SubmitChecklist when testing your code ***

See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find
out what to do about this

The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/

------------------------------------------------------
Subject: x86_64: set cfg_size for AMD Family 10h in case MMCONFIG is used
From: Yinghai Lu <Yinghai.Lu@Sun.COM>

Reuse pci_cfg_space_size but skip check pci express and pci-x CAP ID.

Signed-off-by: Yinghai Lu <yinghai.lu@sun.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Andi Kleen <ak@suse.de>
Cc: Greg KH <greg@kroah.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 arch/x86/pci/fixup.c |   14 ++++++++++++++
 drivers/pci/probe.c  |   11 ++++++++++-
 include/linux/pci.h  |    1 +
 3 files changed, 25 insertions(+), 1 deletion(-)

diff -puN arch/x86/pci/fixup.c~x86_64-set-cfg_size-for-amd-family-10h-in-case-mmconfig-is-used arch/x86/pci/fixup.c
--- a/arch/x86/pci/fixup.c~x86_64-set-cfg_size-for-amd-family-10h-in-case-mmconfig-is-used
+++ a/arch/x86/pci/fixup.c
@@ -491,3 +491,17 @@ static void __devinit pci_siemens_interr
 }
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SIEMENS, 0x0015,
 			  pci_siemens_interrupt_controller);
+
+/*
+ * Regular PCI devices have 256 bytes, but AMD Family 10h Opteron ext config
+ * have 4096 bytes.  Even if the device is capable, that doesn't mean we can
+ * access it.  Maybe we don't have a way to generate extended config space
+ * accesses.   So check it
+ */
+static void fam10h_pci_cfg_space_size(struct pci_dev *dev)
+{
+	dev->cfg_size = pci_cfg_space_size_ext(dev, 0);
+}
+
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, PCI_ANY_ID,
+			 fam10h_pci_cfg_space_size);
diff -puN drivers/pci/probe.c~x86_64-set-cfg_size-for-amd-family-10h-in-case-mmconfig-is-used drivers/pci/probe.c
--- a/drivers/pci/probe.c~x86_64-set-cfg_size-for-amd-family-10h-in-case-mmconfig-is-used
+++ a/drivers/pci/probe.c
@@ -827,11 +827,14 @@ static void set_pcie_port_type(struct pc
  * reading the dword at 0x100 which must either be 0 or a valid extended
  * capability header.
  */
-int pci_cfg_space_size(struct pci_dev *dev)
+int pci_cfg_space_size_ext(struct pci_dev *dev, unsigned check_exp_pcix)
 {
 	int pos;
 	u32 status;
 
+	if (!check_exp_pcix)
+		goto skip;
+
 	pos = pci_find_capability(dev, PCI_CAP_ID_EXP);
 	if (!pos) {
 		pos = pci_find_capability(dev, PCI_CAP_ID_PCIX);
@@ -843,6 +846,7 @@ int pci_cfg_space_size(struct pci_dev *d
 			goto fail;
 	}
 
+ skip:
 	if (pci_read_config_dword(dev, 256, &status) != PCIBIOS_SUCCESSFUL)
 		goto fail;
 	if (status == 0xffffffff)
@@ -854,6 +858,11 @@ int pci_cfg_space_size(struct pci_dev *d
 	return PCI_CFG_SPACE_SIZE;
 }
 
+int pci_cfg_space_size(struct pci_dev *dev)
+{
+	return pci_cfg_space_size_ext(dev, 1);
+}
+
 static void pci_release_bus_bridge_dev(struct device *dev)
 {
 	kfree(dev);
diff -puN include/linux/pci.h~x86_64-set-cfg_size-for-amd-family-10h-in-case-mmconfig-is-used include/linux/pci.h
--- a/include/linux/pci.h~x86_64-set-cfg_size-for-amd-family-10h-in-case-mmconfig-is-used
+++ a/include/linux/pci.h
@@ -663,6 +663,7 @@ int pci_scan_bridge(struct pci_bus *bus,
 
 void pci_walk_bus(struct pci_bus *top, void (*cb)(struct pci_dev *, void *),
 		  void *userdata);
+int pci_cfg_space_size_ext(struct pci_dev *dev, unsigned check_exp_pcix);
 int pci_cfg_space_size(struct pci_dev *dev);
 unsigned char pci_bus_max_busnr(struct pci_bus* bus);
 
_

Patches currently in -mm which might be from Yinghai.Lu@Sun.COM are

git-cpufreq.patch
serial-keep-the-dtr-setting-for-serial-console.patch
pcie-aer-dont-check-_osc-when-acpi-is-disabled.patch
git-x86.patch
pci-dont-load-acpi_php-when-acpi-is-disabled.patch
x86-clear-pci_mmcfg_virt-when-mmcfg-get-rejected.patch
x86-mmconf-enable-mcfg-early.patch
x86-mmconf-enable-mcfg-early-cleanup.patch
x86_64-check-and-enable-mmconfig-for-amd-family-10h-opteron-v3.patch
x86_64-check-msr-to-get-mmconfig-for-amd-family-10h-opteron-v3-2.patch
x86_64-set-cfg_size-for-amd-family-10h-in-case-mmconfig-is-used.patch
kernel-printkc-concerns-about-the-console-handover.patch

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [PATCH] x86_64: AMD Family 10h enable ext config in quirk
  2008-01-22  2:45 + x86_64-set-cfg_size-for-amd-family-10h-in-case-mmconfig-is-used.patch added to -mm tree akpm
@ 2008-01-22  9:10 ` Yinghai Lu
  0 siblings, 0 replies; 2+ messages in thread
From: Yinghai Lu @ 2008-01-22  9:10 UTC (permalink / raw)
  To: akpm, greg; +Cc: LKML, ak, hpa, mingo, tglx

need to be applied after
gregkh-pci-pci-make-pci-extended-config-space-a-driver-opt-in.patch
x86_64-set-cfg_size-for-amd-family-10h-in-case-mmconfig-is-used.patch

[PATCH] x86_64: AMD Family 10h enable ext config in quirk

because of changes of
gregkh-pci-pci-make-pci-extended-config-space-a-driver-opt-in.patch

need to call pci_enable_ext_config to enable mmconfig before set right cfg_size
even MCFG is there

Signed-off-by: Yinghai Lu <yinghai.lu@sun.com>

--- a/arch/x86/pci/fixup.c	2008-01-22 00:54:38.000000000 -0800
+++ b/arch/x86/pci/fixup.c	2008-01-22 00:55:06.000000000 -0800
@@ -498,10 +498,12 @@
  * access it.  Maybe we don't have a way to generate extended config space
  * accesses.   So check it
  */
-static void fam10h_pci_cfg_space_size(struct pci_dev *dev)
+static void fam10h_enable_pci_ext_cfg(struct pci_dev *dev)
 {
+	pci_enable_ext_config(dev);
+	/* recheck cfg_size without pcie_pcix checking */
 	dev->cfg_size = pci_cfg_space_size_ext(dev, 0);
 }
 
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, PCI_ANY_ID,
-			 fam10h_pci_cfg_space_size);
+			 fam10h_enable_pci_ext_cfg);


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2008-01-22  9:04 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-22  2:45 + x86_64-set-cfg_size-for-amd-family-10h-in-case-mmconfig-is-used.patch added to -mm tree akpm
2008-01-22  9:10 ` [PATCH] x86_64: AMD Family 10h enable ext config in quirk Yinghai Lu

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.