2008-07-09 20:41:40

by John Keller

[permalink] [raw]
Subject: [PATCH] x86: Allow MMCONFIG above 4GB on x86_64

SGI UV will have MMCFG base addresses that are greater than 4GB (32 bits).

Signed-off-by: John Keller <[email protected]>
---

A similar patch was submitted over a year ago, but apparently was not
merged in.

http://marc.info/?l=linux-acpi&m=117283388212912&w=2


Index: linux-2.6/arch/x86/kernel/acpi/boot.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/acpi/boot.c 2008-07-09 13:02:54.000000000 -0500
+++ linux-2.6/arch/x86/kernel/acpi/boot.c 2008-07-09 15:25:32.000000000 -0500
@@ -200,6 +200,7 @@ int __init acpi_parse_mcfg(struct acpi_t
}

memcpy(pci_mmcfg_config, &mcfg[1], config_size);
+#ifndef CONFIG_X86_64
for (i = 0; i < pci_mmcfg_config_num; ++i) {
if (pci_mmcfg_config[i].address > 0xFFFFFFFF) {
printk(KERN_ERR PREFIX
@@ -209,6 +210,7 @@ int __init acpi_parse_mcfg(struct acpi_t
return -ENODEV;
}
}
+#endif

return 0;
}


2008-07-09 21:02:44

by Yinghai Lu

[permalink] [raw]
Subject: Re: [PATCH] x86: Allow MMCONFIG above 4GB on x86_64

On Wed, Jul 9, 2008 at 1:41 PM, John Keller <[email protected]> wrote:
> SGI UV will have MMCFG base addresses that are greater than 4GB (32 bits).
>
> Signed-off-by: John Keller <[email protected]>
> ---
>
> A similar patch was submitted over a year ago, but apparently was not
> merged in.
>
> http://marc.info/?l=linux-acpi&m=117283388212912&w=2
>
>
> Index: linux-2.6/arch/x86/kernel/acpi/boot.c
> ===================================================================
> --- linux-2.6.orig/arch/x86/kernel/acpi/boot.c 2008-07-09 13:02:54.000000000 -0500
> +++ linux-2.6/arch/x86/kernel/acpi/boot.c 2008-07-09 15:25:32.000000000 -0500
> @@ -200,6 +200,7 @@ int __init acpi_parse_mcfg(struct acpi_t
> }
>
> memcpy(pci_mmcfg_config, &mcfg[1], config_size);
> +#ifndef CONFIG_X86_64
> for (i = 0; i < pci_mmcfg_config_num; ++i) {
> if (pci_mmcfg_config[i].address > 0xFFFFFFFF) {
> printk(KERN_ERR PREFIX
> @@ -209,6 +210,7 @@ int __init acpi_parse_mcfg(struct acpi_t
> return -ENODEV;
> }
> }
> +#endif
>
> return 0;
> }

CONFIG_RESOURCES_64BIT ?

YH

2008-07-10 07:29:28

by Kenji Kaneshige

[permalink] [raw]
Subject: Re: [PATCH] x86: Allow MMCONFIG above 4GB on x86_64

John Keller wrote:
> SGI UV will have MMCFG base addresses that are greater than 4GB (32 bits).
>
> Signed-off-by: John Keller <[email protected]>

Fujitsu servers also will need this change.

Thanks,
Kenji Kaneshige


> ---
>
> A similar patch was submitted over a year ago, but apparently was not
> merged in.
>
> http://marc.info/?l=linux-acpi&m=117283388212912&w=2
>
>
> Index: linux-2.6/arch/x86/kernel/acpi/boot.c
> ===================================================================
> --- linux-2.6.orig/arch/x86/kernel/acpi/boot.c 2008-07-09 13:02:54.000000000 -0500
> +++ linux-2.6/arch/x86/kernel/acpi/boot.c 2008-07-09 15:25:32.000000000 -0500
> @@ -200,6 +200,7 @@ int __init acpi_parse_mcfg(struct acpi_t
> }
>
> memcpy(pci_mmcfg_config, &mcfg[1], config_size);
> +#ifndef CONFIG_X86_64
> for (i = 0; i < pci_mmcfg_config_num; ++i) {
> if (pci_mmcfg_config[i].address > 0xFFFFFFFF) {
> printk(KERN_ERR PREFIX
> @@ -209,6 +210,7 @@ int __init acpi_parse_mcfg(struct acpi_t
> return -ENODEV;
> }
> }
> +#endif
>
> return 0;
> }
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
>

2008-07-13 15:36:32

by Andi Kleen

[permalink] [raw]
Subject: Re: [PATCH] x86: Allow MMCONFIG above 4GB on x86_64

John Keller <[email protected]> writes:
>
> A similar patch was submitted over a year ago, but apparently was not
> merged in.

There's no reason at all to make this 64bit only. A PAE 32bit kernel
can also access data above 4GB. So an ifdef is the wrong way.

The reason the check is there is that there are lots of
x86 BIOS that report wrong mmconfig and this way there's another
sanity check.

You'll need either to find a way to preserve this check
on kernels not running on your system or show that the
sanity check is not needed anymore. The later would
be likely tricky.

-Andi

2008-07-18 12:39:39

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] x86: Allow MMCONFIG above 4GB on x86_64


* John Keller <[email protected]> wrote:

> SGI UV will have MMCFG base addresses that are greater than 4GB (32
> bits).

> +++ linux-2.6/arch/x86/kernel/acpi/boot.c 2008-07-09 15:25:32.000000000 -0500
> @@ -200,6 +200,7 @@ int __init acpi_parse_mcfg(struct acpi_t
> }
>
> memcpy(pci_mmcfg_config, &mcfg[1], config_size);
> +#ifndef CONFIG_X86_64
> for (i = 0; i < pci_mmcfg_config_num; ++i) {
> if (pci_mmcfg_config[i].address > 0xFFFFFFFF) {
> printk(KERN_ERR PREFIX
> @@ -209,6 +210,7 @@ int __init acpi_parse_mcfg(struct acpi_t
> return -ENODEV;
> }
> }
> +#endif

hm. If then it should be enabled very carefully and initially probably
on a per system (i.e. DMI driven whitelist) basis.

Ingo

2008-07-18 13:03:06

by John Keller

[permalink] [raw]
Subject: Re: [PATCH] x86: Allow MMCONFIG above 4GB on x86_64

>
>
> * John Keller <[email protected]> wrote:
>
> > SGI UV will have MMCFG base addresses that are greater than 4GB (32
> > bits).
>
> > +++ linux-2.6/arch/x86/kernel/acpi/boot.c 2008-07-09 15:25:32.000000000 -0500
> > @@ -200,6 +200,7 @@ int __init acpi_parse_mcfg(struct acpi_t
> > }
> >
> > memcpy(pci_mmcfg_config, &mcfg[1], config_size);
> > +#ifndef CONFIG_X86_64
> > for (i = 0; i < pci_mmcfg_config_num; ++i) {
> > if (pci_mmcfg_config[i].address > 0xFFFFFFFF) {
> > printk(KERN_ERR PREFIX
> > @@ -209,6 +210,7 @@ int __init acpi_parse_mcfg(struct acpi_t
> > return -ENODEV;
> > }
> > }
> > +#endif
>
> hm. If then it should be enabled very carefully and initially probably
> on a per system (i.e. DMI driven whitelist) basis.
>
> Ingo

I've also posted a revised patch that is platform specific.

http://marc.info/?l=linux-acpi&m=121615159014404&w=2

John