* [PATCH 2/2] ISA DMA suspend for x86_64
2005-06-30 12:20 ` Pierre Ossman
@ 2005-06-30 17:58 ` Pierre Ossman
0 siblings, 0 replies; 10+ messages in thread
From: Pierre Ossman @ 2005-06-30 17:58 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Alan Cox, LKML, Russell King
[-- Attachment #1: Type: text/plain, Size: 301 bytes --]
Reset the ISA DMA controller into a known state after a suspend. Primary
concern was reenabling the cascading DMA channel (4).
Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
Word of warning, I haven't tested this platform since I don't have any
x86_64 hardware. But it shouldn't differ from i386.
[-- Attachment #2: i8237-x86_64.patch --]
[-- Type: text/x-patch, Size: 2213 bytes --]
Index: linux-wbsd/arch/x86_64/kernel/i8237.c
===================================================================
--- linux-wbsd/arch/x86_64/kernel/i8237.c (revision 0)
+++ linux-wbsd/arch/x86_64/kernel/i8237.c (revision 0)
@@ -0,0 +1,67 @@
+/*
+ * i8237.c: 8237A DMA controller suspend functions.
+ *
+ * Written by Pierre Ossman, 2005.
+ */
+
+#include <linux/init.h>
+#include <linux/sysdev.h>
+
+#include <asm/dma.h>
+
+/*
+ * This module just handles suspend/resume issues with the
+ * 8237A DMA controller (used for ISA and LPC).
+ * Allocation is handled in kernel/dma.c and normal usage is
+ * in asm/dma.h.
+ */
+
+static int i8237A_resume(struct sys_device *dev)
+{
+ unsigned long flags;
+ int i;
+
+ flags = claim_dma_lock();
+
+ dma_outb(DMA1_RESET_REG, 0);
+ dma_outb(DMA2_RESET_REG, 0);
+
+ for (i = 0;i < 8;i++) {
+ set_dma_addr(i, 0x000000);
+ /* DMA count is a bit weird so this is not 0 */
+ set_dma_count(i, 1);
+ }
+
+ /* Enable cascade DMA or channel 0-3 won't work */
+ enable_dma(4);
+
+ release_dma_lock(flags);
+
+ return 0;
+}
+
+static int i8237A_suspend(struct sys_device *dev, pm_message_t state)
+{
+ return 0;
+}
+
+static struct sysdev_class i8237_sysdev_class = {
+ set_kset_name("i8237"),
+ .suspend = i8237A_suspend,
+ .resume = i8237A_resume,
+};
+
+static struct sys_device device_i8237A = {
+ .id = 0,
+ .cls = &i8237_sysdev_class,
+};
+
+static int __init i8237A_init_sysfs(void)
+{
+ int error = sysdev_class_register(&i8237_sysdev_class);
+ if (!error)
+ error = sysdev_register(&device_i8237A);
+ return error;
+}
+
+device_initcall(i8237A_init_sysfs);
Index: linux-wbsd/arch/x86_64/kernel/Makefile
===================================================================
--- linux-wbsd/arch/x86_64/kernel/Makefile (revision 153)
+++ linux-wbsd/arch/x86_64/kernel/Makefile (working copy)
@@ -7,7 +7,7 @@
obj-y := process.o semaphore.o signal.o entry.o traps.o irq.o \
ptrace.o time.o ioport.o ldt.o setup.o i8259.o sys_x86_64.o \
x8664_ksyms.o i387.o syscall.o vsyscall.o \
- setup64.o bootflag.o e820.o reboot.o quirks.o
+ setup64.o bootflag.o e820.o reboot.o quirks.o i8237.o
obj-$(CONFIG_X86_MCE) += mce.o
obj-$(CONFIG_X86_MCE_INTEL) += mce_intel.o
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] ISA DMA suspend for x86_64
[not found] ` <42C432BB.407@drzeus.cx.suse.lists.linux.kernel>
@ 2005-07-01 10:53 ` Andi Kleen
2005-07-01 19:30 ` Adam Belay
2005-07-02 17:30 ` Pierre Ossman
0 siblings, 2 replies; 10+ messages in thread
From: Andi Kleen @ 2005-07-01 10:53 UTC (permalink / raw)
To: Pierre Ossman; +Cc: linux-kernel
Pierre Ossman <drzeus-list@drzeus.cx> writes:
> Reset the ISA DMA controller into a known state after a suspend. Primary
> concern was reenabling the cascading DMA channel (4).
>
> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
>
> Word of warning, I haven't tested this platform since I don't have any
> x86_64 hardware. But it shouldn't differ from i386.
This is identical to the i386 version isn't it?
Please just reuse the i386 version then in the Makefile.
And the whole thing should be probably dependent on CONFIG_SOFTWARE_SUSPEND
-Andi
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] ISA DMA suspend for x86_64
2005-07-01 10:53 ` [PATCH 2/2] ISA DMA suspend for x86_64 Andi Kleen
@ 2005-07-01 19:30 ` Adam Belay
2005-07-02 17:30 ` Pierre Ossman
1 sibling, 0 replies; 10+ messages in thread
From: Adam Belay @ 2005-07-01 19:30 UTC (permalink / raw)
To: Andi Kleen; +Cc: Pierre Ossman, linux-kernel
On Fri, Jul 01, 2005 at 12:53:31PM +0200, Andi Kleen wrote:
> Pierre Ossman <drzeus-list@drzeus.cx> writes:
>
> > Reset the ISA DMA controller into a known state after a suspend. Primary
> > concern was reenabling the cascading DMA channel (4).
> >
> > Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
> >
> > Word of warning, I haven't tested this platform since I don't have any
> > x86_64 hardware. But it shouldn't differ from i386.
>
> This is identical to the i386 version isn't it?
> Please just reuse the i386 version then in the Makefile.
>
> And the whole thing should be probably dependent on CONFIG_SOFTWARE_SUSPEND
>
> -Andi
CONFIG_SOFTWARE_SUSPEND is only suspend-to-disk. There are other power
management states that may need to be included (e.g. ACPI S1-S3).
Thanks,
Adam
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] ISA DMA suspend for x86_64
2005-07-01 10:53 ` [PATCH 2/2] ISA DMA suspend for x86_64 Andi Kleen
2005-07-01 19:30 ` Adam Belay
@ 2005-07-02 17:30 ` Pierre Ossman
2005-07-02 17:40 ` Andi Kleen
1 sibling, 1 reply; 10+ messages in thread
From: Pierre Ossman @ 2005-07-02 17:30 UTC (permalink / raw)
To: Andi Kleen; +Cc: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 444 bytes --]
Andi Kleen wrote:
>
>This is identical to the i386 version isn't it?
>Please just reuse the i386 version then in the Makefile.
>
>
Ok. Done and attached.
>And the whole thing should be probably dependent on CONFIG_SOFTWARE_SUSPEND
>
>
>
I used i8259.c as an example and it includes its suspend routines in all
cases. Also, the problem this patch solves is for suspend-to-ram, not
suspend-to-disk (i.e. software suspend).
Rgds
Pierre
[-- Attachment #2: i8237-x86_64.patch --]
[-- Type: text/x-patch, Size: 637 bytes --]
Index: linux-wbsd/arch/x86_64/kernel/Makefile
===================================================================
--- linux-wbsd/arch/x86_64/kernel/Makefile (revision 153)
+++ linux-wbsd/arch/x86_64/kernel/Makefile (working copy)
@@ -7,7 +7,8 @@
obj-y := process.o semaphore.o signal.o entry.o traps.o irq.o \
ptrace.o time.o ioport.o ldt.o setup.o i8259.o sys_x86_64.o \
x8664_ksyms.o i387.o syscall.o vsyscall.o \
- setup64.o bootflag.o e820.o reboot.o quirks.o
+ setup64.o bootflag.o e820.o reboot.o quirks.o \
+ ../../i386/kernel/i8237.o
obj-$(CONFIG_X86_MCE) += mce.o
obj-$(CONFIG_X86_MCE_INTEL) += mce_intel.o
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] ISA DMA suspend for x86_64
2005-07-02 17:30 ` Pierre Ossman
@ 2005-07-02 17:40 ` Andi Kleen
2005-07-02 17:50 ` Pierre Ossman
2005-07-03 11:39 ` Pavel Machek
0 siblings, 2 replies; 10+ messages in thread
From: Andi Kleen @ 2005-07-02 17:40 UTC (permalink / raw)
To: Pierre Ossman; +Cc: Andi Kleen, linux-kernel
> I used i8259.c as an example and it includes its suspend routines in all
> cases. Also, the problem this patch solves is for suspend-to-ram, not
> suspend-to-disk (i.e. software suspend).
Hmm, it would be better if that all was CONFIG_ able. But ok.
> Index: linux-wbsd/arch/x86_64/kernel/Makefile
> ===================================================================
> --- linux-wbsd/arch/x86_64/kernel/Makefile (revision 153)
> +++ linux-wbsd/arch/x86_64/kernel/Makefile (working copy)
> @@ -7,7 +7,8 @@
> obj-y := process.o semaphore.o signal.o entry.o traps.o irq.o \
> ptrace.o time.o ioport.o ldt.o setup.o i8259.o sys_x86_64.o \
> x8664_ksyms.o i387.o syscall.o vsyscall.o \
> - setup64.o bootflag.o e820.o reboot.o quirks.o
> + setup64.o bootflag.o e820.o reboot.o quirks.o \
> + ../../i386/kernel/i8237.o
I think that will break in builds with separate objdirs. You'll need
to do it like the other files (see the end of the Makefile)
-Andi
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] ISA DMA suspend for x86_64
2005-07-02 17:40 ` Andi Kleen
@ 2005-07-02 17:50 ` Pierre Ossman
2005-07-02 18:27 ` Andi Kleen
2005-07-03 11:39 ` Pavel Machek
1 sibling, 1 reply; 10+ messages in thread
From: Pierre Ossman @ 2005-07-02 17:50 UTC (permalink / raw)
To: Andi Kleen; +Cc: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 186 bytes --]
Andi Kleen wrote:
>
>I think that will break in builds with separate objdirs. You'll need
>to do it like the other files (see the end of the Makefile)
>
>
>
Like this?
Rgds
Pierre
[-- Attachment #2: i8237-x86_64.patch --]
[-- Type: text/x-patch, Size: 472 bytes --]
Index: linux-wbsd/arch/x86_64/kernel/Makefile
===================================================================
--- linux-wbsd/arch/x86_64/kernel/Makefile (revision 153)
+++ linux-wbsd/arch/x86_64/kernel/Makefile (working copy)
@@ -44,3 +45,4 @@
microcode-$(subst m,y,$(CONFIG_MICROCODE)) += ../../i386/kernel/microcode.o
intel_cacheinfo-y += ../../i386/kernel/cpu/intel_cacheinfo.o
quirks-y += ../../i386/kernel/quirks.o
+i8237-y += ../../i386/kernel/i8237.o
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] ISA DMA suspend for x86_64
2005-07-02 17:50 ` Pierre Ossman
@ 2005-07-02 18:27 ` Andi Kleen
2005-07-02 22:04 ` Pierre Ossman
0 siblings, 1 reply; 10+ messages in thread
From: Andi Kleen @ 2005-07-02 18:27 UTC (permalink / raw)
To: Pierre Ossman; +Cc: Andi Kleen, linux-kernel
> Like this?
You still need to add it to the obj-ys
-Andi
>
> Rgds
> Pierre
>
> Index: linux-wbsd/arch/x86_64/kernel/Makefile
> ===================================================================
> --- linux-wbsd/arch/x86_64/kernel/Makefile (revision 153)
> +++ linux-wbsd/arch/x86_64/kernel/Makefile (working copy)
> @@ -44,3 +45,4 @@
> microcode-$(subst m,y,$(CONFIG_MICROCODE)) += ../../i386/kernel/microcode.o
> intel_cacheinfo-y += ../../i386/kernel/cpu/intel_cacheinfo.o
> quirks-y += ../../i386/kernel/quirks.o
> +i8237-y += ../../i386/kernel/i8237.o
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] ISA DMA suspend for x86_64
2005-07-02 18:27 ` Andi Kleen
@ 2005-07-02 22:04 ` Pierre Ossman
2005-07-03 15:03 ` Andi Kleen
0 siblings, 1 reply; 10+ messages in thread
From: Pierre Ossman @ 2005-07-02 22:04 UTC (permalink / raw)
To: Andi Kleen; +Cc: linux-kernel
[-- Attachment #1: Type: text/plain, Size: 212 bytes --]
Andi Kleen wrote:
>>Like this?
>>
>>
>
>You still need to add it to the obj-ys
>
>
>
Ah, sorry. Not quite familiar with how the kernel's build system works.
Is it more correct this time? =)
Rgds
Pierre
[-- Attachment #2: i8237-x86_64.patch --]
[-- Type: text/x-patch, Size: 856 bytes --]
Index: linux-wbsd/arch/x86_64/kernel/Makefile
===================================================================
--- linux-wbsd/arch/x86_64/kernel/Makefile (revision 153)
+++ linux-wbsd/arch/x86_64/kernel/Makefile (working copy)
@@ -7,7 +7,7 @@
obj-y := process.o semaphore.o signal.o entry.o traps.o irq.o \
ptrace.o time.o ioport.o ldt.o setup.o i8259.o sys_x86_64.o \
x8664_ksyms.o i387.o syscall.o vsyscall.o \
- setup64.o bootflag.o e820.o reboot.o quirks.o
+ setup64.o bootflag.o e820.o reboot.o quirks.o i8237.o
obj-$(CONFIG_X86_MCE) += mce.o
obj-$(CONFIG_X86_MCE_INTEL) += mce_intel.o
@@ -44,3 +45,4 @@
microcode-$(subst m,y,$(CONFIG_MICROCODE)) += ../../i386/kernel/microcode.o
intel_cacheinfo-y += ../../i386/kernel/cpu/intel_cacheinfo.o
quirks-y += ../../i386/kernel/quirks.o
+i8237-y += ../../i386/kernel/i8237.o
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] ISA DMA suspend for x86_64
2005-07-02 17:40 ` Andi Kleen
2005-07-02 17:50 ` Pierre Ossman
@ 2005-07-03 11:39 ` Pavel Machek
1 sibling, 0 replies; 10+ messages in thread
From: Pavel Machek @ 2005-07-03 11:39 UTC (permalink / raw)
To: Andi Kleen; +Cc: Pierre Ossman, linux-kernel
Hi!
> > I used i8259.c as an example and it includes its suspend routines in all
> > cases. Also, the problem this patch solves is for suspend-to-ram, not
> > suspend-to-disk (i.e. software suspend).
>
> Hmm, it would be better if that all was CONFIG_ able. But ok.
I'll intoduce CONFIG_SLEEP for this, and it is already okay to make it
conditional on CONFIG_PM.
Pavel
--
teflon -- maybe it is a trademark, but it should not be.
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] ISA DMA suspend for x86_64
2005-07-02 22:04 ` Pierre Ossman
@ 2005-07-03 15:03 ` Andi Kleen
0 siblings, 0 replies; 10+ messages in thread
From: Andi Kleen @ 2005-07-03 15:03 UTC (permalink / raw)
To: Pierre Ossman; +Cc: Andi Kleen, linux-kernel
On Sun, Jul 03, 2005 at 12:04:49AM +0200, Pierre Ossman wrote:
> Andi Kleen wrote:
>
> >>Like this?
> >>
> >>
> >
> >You still need to add it to the obj-ys
> >
> >
> >
>
> Ah, sorry. Not quite familiar with how the kernel's build system works.
> Is it more correct this time? =)
Yes, looks good now. Thanks.
But I can't apply it before the i386 part didn't go in.
-Andi
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2005-07-06 10:09 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <42987450.9000601@drzeus.cx.suse.lists.linux.kernel>
[not found] ` <1117288285.2685.10.camel@localhost.localdomain.suse.lists.linux.kernel>
[not found] ` <42A2B610.1020408@drzeus.cx.suse.lists.linux.kernel>
[not found] ` <42A3061C.7010604@drzeus.cx.suse.lists.linux.kernel>
[not found] ` <42B1A08B.8080601@drzeus.cx.suse.lists.linux.kernel>
[not found] ` <20050616170622.A1712@flint.arm.linux.org.uk.suse.lists.linux.kernel>
[not found] ` <42C3A698.9020404@drzeus.cx.suse.lists.linux.kernel>
[not found] ` <1120130926.6482.83.camel@localhost.localdomain.suse.lists.linux.kernel>
[not found] ` <42C3E3A4.3090305@drzeus.cx.suse.lists.linux.kernel>
[not found] ` <42C432BB.407@drzeus.cx.suse.lists.linux.kernel>
2005-07-01 10:53 ` [PATCH 2/2] ISA DMA suspend for x86_64 Andi Kleen
2005-07-01 19:30 ` Adam Belay
2005-07-02 17:30 ` Pierre Ossman
2005-07-02 17:40 ` Andi Kleen
2005-07-02 17:50 ` Pierre Ossman
2005-07-02 18:27 ` Andi Kleen
2005-07-02 22:04 ` Pierre Ossman
2005-07-03 15:03 ` Andi Kleen
2005-07-03 11:39 ` Pavel Machek
2005-05-28 13:38 ISA DMA controller hangs Pierre Ossman
2005-05-28 13:51 ` Alan Cox
2005-06-05 8:21 ` Pierre Ossman
2005-06-05 14:03 ` Pierre Ossman
2005-06-16 15:53 ` Pierre Ossman
2005-06-16 16:06 ` Russell King
2005-06-30 8:00 ` Pierre Ossman
2005-06-30 11:28 ` Alan Cox
2005-06-30 12:20 ` Pierre Ossman
2005-06-30 17:58 ` [PATCH 2/2] ISA DMA suspend for x86_64 Pierre Ossman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox