From: Muli Ben-Yehuda <muli@il.ibm.com>
To: Yinghai Lu <Yinghai.Lu@Sun.COM>
Cc: Andi Kleen <ak@suse.de>,
Andrew Morton <akpm@linux-foundation.org>,
Alan Cox <alan@lxorguk.ukuu.org.uk>,
"Eric W. Biederman" <ebiederm@xmission.com>,
Vivek Goyal <vgoyal@in.ibm.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] x86-64: disable the GART in shutdown v2
Date: Mon, 25 Jun 2007 15:41:12 -0400 [thread overview]
Message-ID: <20070625194112.GC5334@rhun.ibm.com> (raw)
In-Reply-To: <200706251234.04548.yinghai.lu@sun.com>
On Mon, Jun 25, 2007 at 12:34:03PM -0700, Yinghai Lu wrote:
> [PATCH] x86-64: disable the GART in shutdown
>
> For K8 system: 4G RAM with memory hole remapping enabled, or more than 4G RAM
> installed. when using kexec to load second kernel. In the second kernel,
> when mem is allocated for GART, it will do the memset for clear, it will cause
> restart, because some device still used that for dma.
> solution will be:
> in second kernel: disable that at first before we try to allocate mem for it.
> or in the first kernel: do disable that before shutdown.
> Andi/Eric/Alan prefer to second one for clean shutdown in first kernel.
> Andi also point out need to consider to AGP enable but mem less 4G case too.
>
> Signed-off-by: Yinghai Lu <yinghai.lu@sun.com>
>
> arch/x86_64/kernel/pci-dma.c | 5 +++++
> arch/x86_64/kernel/pci-gart.c | 21 +++++++++++++++++++++
> arch/x86_64/kernel/reboot.c | 4 ++++
> include/asm-x86_64/proto.h | 7 +++++++
> 4 files changed, 37 insertions(+)
> diff --git a/arch/x86_64/kernel/pci-gart.c b/arch/x86_64/kernel/pci-gart.c
> index ae091cd..6c4fe16 100644
> --- a/arch/x86_64/kernel/pci-gart.c
> +++ b/arch/x86_64/kernel/pci-gart.c
> @@ -571,6 +571,27 @@ static const struct dma_mapping_ops gart_dma_ops = {
> .unmap_sg = gart_unmap_sg,
> };
>
> +void gart_iommu_shutdown(void)
> +{
> + struct pci_dev *dev;
> + int i;
> +
extra blank line
> +
> + if (noagp && (dma_ops != &gart_dma_ops))
> + return;
noagp? did you mean 'no_agp'?
> +
> + for (i = 0; i < num_k8_northbridges; i++) {
> + u32 ctl;
> +
> + dev = k8_northbridges[i];
> + pci_read_config_dword(dev, 0x90, &ctl);
> +
> + ctl &= ~1;
> +
> + pci_write_config_dword(dev, 0x90, ctl);
> + }
> +}
> +
> void __init gart_iommu_init(void)
> {
> struct agp_kern_info info;
> diff --git a/arch/x86_64/kernel/pci-dma.c b/arch/x86_64/kernel/pci-dma.c
> index 9f80aad..b406b54 100644
> --- a/arch/x86_64/kernel/pci-dma.c
> +++ b/arch/x86_64/kernel/pci-dma.c
> @@ -322,6 +322,11 @@ static int __init pci_iommu_init(void)
> return 0;
> }
>
> +void pci_iommu_shutdown(void)
> +{
> + gart_iommu_shutdown();
I really dislike this. Here's how this function is going to look in a
few months:
void pci_iommu_shutdown(void)
{
gart_iommu_shutdown();
calgary_iommu_shutdown();
vtd_iommu_shutdown();
amd_iommu_shutdown();
/* etc, ad nauseam */
}
Where all of these are no-ops, except one. Now what's wrong with this
picture?
> diff --git a/include/asm-x86_64/proto.h b/include/asm-x86_64/proto.h
> index 85255db..b70aa0c 100644
> --- a/include/asm-x86_64/proto.h
> +++ b/include/asm-x86_64/proto.h
> @@ -85,11 +85,13 @@ extern int exception_trace;
> extern unsigned cpu_khz;
> extern unsigned tsc_khz;
>
> +extern void pci_iommu_shutdown(void);
> extern void no_iommu_init(void);
> extern int force_iommu, no_iommu;
> extern int iommu_detected;
> #ifdef CONFIG_IOMMU
> extern void gart_iommu_init(void);
> +extern void gart_iommu_shutdown(void);
> extern void __init gart_parse_options(char *);
> extern void iommu_hole_init(void);
> extern int fallback_aper_order;
> @@ -101,6 +103,11 @@ extern int fix_aperture;
> #else
> #define iommu_aperture 0
> #define iommu_aperture_allowed 0
> +
> +static inline void gart_iommu_shutdown(void)
> +{
> +}
> +
I suggest include/asm-x86_64/iommu.h for this. proto.h doesn't have
anything to do with it.
Cheers,
Muli
next prev parent reply other threads:[~2007-06-25 19:41 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-22 19:19 [PATCH] x86-64: disable the GART before allocate aperture Yinghai Lu
2007-06-22 19:31 ` Muli Ben-Yehuda
2007-06-22 19:38 ` Yinghai Lu
2007-06-22 19:49 ` Yinghai Lu
2007-06-22 20:33 ` Alan Cox
2007-06-22 21:28 ` Andi Kleen
2007-06-22 21:38 ` Yinghai Lu
2007-06-22 21:41 ` Eric W. Biederman
2007-06-22 21:32 ` Eric W. Biederman
2007-06-22 21:45 ` Muli Ben-Yehuda
2007-06-22 21:59 ` Yinghai Lu
2007-06-22 22:19 ` Alan Cox
2007-06-22 22:32 ` Eric W. Biederman
2007-06-22 22:43 ` Yinghai Lu
2007-06-22 22:54 ` Alan Cox
2007-06-22 22:57 ` Yinghai Lu
2007-06-22 23:04 ` Alan Cox
2007-06-22 23:14 ` Eric W. Biederman
2007-06-23 0:14 ` Andi Kleen
2007-06-23 0:27 ` Yinghai Lu
2007-06-23 0:35 ` Muli Ben-Yehuda
2007-06-23 0:38 ` Andi Kleen
2007-06-23 2:34 ` [PATCH] x86-64: disable the GART in shutdown Yinghai Lu
2007-06-23 10:39 ` Muli Ben-Yehuda
2007-06-23 10:59 ` Andi Kleen
2007-06-23 11:09 ` Muli Ben-Yehuda
2007-06-23 11:08 ` Andi Kleen
2007-06-25 0:18 ` Yinghai Lu
2007-06-23 16:52 ` Andrew Morton
2007-06-25 0:22 ` Yinghai Lu
2007-06-25 2:10 ` Muli Ben-Yehuda
2007-06-25 19:34 ` [PATCH] x86-64: disable the GART in shutdown v2 Yinghai Lu
2007-06-25 19:41 ` Muli Ben-Yehuda [this message]
2007-06-25 19:52 ` Yinghai Lu
2007-06-25 19:56 ` Muli Ben-Yehuda
2007-06-25 21:48 ` [PATCH 1/2] x86-64: disable the GART in shutdown Yinghai Lu
2007-06-25 21:49 ` [PATCH 2/2] x86_84: move iommu declaration from proto to iommu.h Yinghai Lu
2007-06-26 11:43 ` Muli Ben-Yehuda
2007-06-23 9:08 ` [PATCH] x86-64: disable the GART before allocate aperture Alan Cox
2007-06-23 11:12 ` Vivek Goyal
2007-06-23 13:14 ` Andi Kleen
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=20070625194112.GC5334@rhun.ibm.com \
--to=muli@il.ibm.com \
--cc=Yinghai.Lu@Sun.COM \
--cc=ak@suse.de \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=ebiederm@xmission.com \
--cc=linux-kernel@vger.kernel.org \
--cc=vgoyal@in.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.