From: Pavel Machek <pavel-+ZI9xUNit7I@public.gmane.org>
To: Michael Frank <mflt1-DTdK3Ks6N5kHTnRCetW4+N0b+6lKrnBL@public.gmane.org>
Cc: acpi-devel-pyega4qmqnRoyOMFzWx49A@public.gmane.org
Subject: Re: 2.5.69 - S3
Date: Mon, 19 May 2003 10:53:24 +0200 [thread overview]
Message-ID: <20030519085323.GC130@elf.ucw.cz> (raw)
In-Reply-To: <200305191153.51196.mflt1-DTdK3Ks6N5kHTnRCetW4+N0b+6lKrnBL@public.gmane.org>
Hi!
> > > and mode 6)
> > >
> > > System hangs after all tasks left fridge with disk led on.
> > >
> > > I suppose IDE gets false interupt upon resume.
> >
> > Spurious interrupts should be handled gracefully by IDE. On velo I
> > ran my machine with IDE interrupt connected to 1kHz timer, and it
> > more or less worked ("IDE0: spurious interrupt", "Last message
> > repeated 1539 times").
>
> Cute, Your velo S3 OK (before it died) ? - Do you know of any machines that really work with S3?
I just fixed mtrrs and suspended/resumed that desktop ~10 times... It
seems okay. [Not yet applicable to mainline, I guess, as mtrr is not
in].
Pavel
--- /usr/src/tmp/linux/arch/i386/kernel/cpu/mtrr/main.c 2003-05-19 10:44:09.000000000 +0200
+++ /usr/src/linux/arch/i386/kernel/cpu/mtrr/main.c 2003-05-19 10:43:10.000000000 +0200
@@ -648,33 +648,33 @@
};
#ifdef CONFIG_PM
-struct mtrr_suspend_state
-{
+struct mtrr_suspend_one {
mtrr_type ltype;
unsigned long lbase;
unsigned int lsize;
};
-/* We return a pointer ptr on an area of *ptr bytes
- beginning at ptr+sizeof(int)
- This buffer has to be saved in some way during suspension */
-static int *mtrr_save_state(void)
+struct mtrr_suspend_state {
+ int len;
+ struct mtrr_suspend_one mtrr[0];
+};
+
+/* This buffer has to be saved in some way during suspension */
+struct mtrr_suspend_state *mtrr_save_state(void)
{
int i, len;
- int *ptr = NULL;
- static struct mtrr_suspend_state *mtrr_suspend_buffer=NULL;
+ static struct mtrr_suspend_state *ptr = NULL;
+ static struct mtrr_suspend_one *mtrr_suspend_buffer=NULL;
if(!mtrr_suspend_buffer)
{
- len = num_var_ranges * sizeof (struct mtrr_suspend_state) + sizeof(int);
+ len = num_var_ranges * sizeof (struct mtrr_suspend_one) + sizeof(int);
ptr = kmalloc (len, GFP_KERNEL);
if (ptr == NULL)
return(NULL);
- *ptr = len;
- ptr++;
- mtrr_suspend_buffer = (struct mtrr_suspend_state *)ptr;
- ptr--;
+ ptr->len = len;
}
+ mtrr_suspend_buffer = &ptr->mtrr;
for (i = 0; i < num_var_ranges; ++i,mtrr_suspend_buffer++)
mtrr_if->get (i,
&(mtrr_suspend_buffer->lbase),
@@ -684,19 +684,17 @@
}
/* We restore mtrrs from buffer ptr */
-static void mtrr_restore_state(int *ptr)
+static void mtrr_restore_state(struct mtrr_suspend_state *ptr)
{
int i, len;
- struct mtrr_suspend_state *mtrr_suspend_buffer;
+ struct mtrr_suspend_one *mtrr_suspend_buffer;
- len = num_var_ranges * sizeof (struct mtrr_suspend_state) + sizeof(int);
- if(*ptr != len)
- {
- printk ("mtrr: Resuming failed due to different number of MTRRs\n");
+ len = num_var_ranges * sizeof (struct mtrr_suspend_one) + sizeof(int);
+ if(ptr->len != len) {
+ printk (KERN_CRIT "mtrr: Resuming failed due to different number of MTRRs\n");
return;
}
- ptr++;
- mtrr_suspend_buffer=(struct mtrr_suspend_state *)ptr;
+ mtrr_suspend_buffer = &ptr->mtrr;
for (i = 0; i < num_var_ranges; ++i,mtrr_suspend_buffer++)
if (mtrr_suspend_buffer->lsize)
set_mtrr(i,
@@ -705,7 +703,7 @@
mtrr_suspend_buffer->ltype);
}
-static void *mtrr_state;
+static struct mtrr_suspend_state *mtrr_state;
static int mtrr_suspend(struct device *dev, u32 state, u32 level)
{
--
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]
-------------------------------------------------------
This SF.net email is sponsored by: If flattening out C++ or Java
code to make your application fit in a relational database is painful,
don't do it! Check out ObjectStore. Now part of Progress Software.
http://www.objectstore.net/sourceforge
next prev parent reply other threads:[~2003-05-19 8:53 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-05-13 17:40 2.5.69 - S3 Michael Frank
[not found] ` <20030516111120.GA686@zaurus.ucw.cz>
[not found] ` <20030516111120.GA686-VNkyu7EogrqGmfs5Z0+9fw@public.gmane.org>
2003-05-17 21:23 ` Michael Frank
[not found] ` <200305180523.25157.mflt1-DTdK3Ks6N5kHTnRCetW4+N0b+6lKrnBL@public.gmane.org>
2003-05-18 10:48 ` Pavel Machek
[not found] ` <20030518104852.GA324-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2003-05-18 12:05 ` Michael Frank
[not found] ` <200305182005.30192.mflt1-DTdK3Ks6N5kHTnRCetW4+N0b+6lKrnBL@public.gmane.org>
2003-05-18 21:12 ` Pavel Machek
[not found] ` <20030518211245.GA452-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2003-05-19 3:53 ` Michael Frank
[not found] ` <200305191153.51196.mflt1-DTdK3Ks6N5kHTnRCetW4+N0b+6lKrnBL@public.gmane.org>
2003-05-19 8:07 ` Karol Kozimor
2003-05-19 8:31 ` Pavel Machek
2003-05-19 8:53 ` Pavel Machek [this message]
[not found] ` <200305191731.34692.mflt1@micrologica.com.hk>
[not found] ` <20030519100135.GA18034@atrey.karlin.mff.cuni.cz>
[not found] ` <20030519100135.GA18034-jyMamyUUXNJG4ohzP4jBZS1Fcj925eT/@public.gmane.org>
2003-05-19 10:22 ` Michael Frank
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=20030519085323.GC130@elf.ucw.cz \
--to=pavel-+zi9xunit7i@public.gmane.org \
--cc=acpi-devel-pyega4qmqnRoyOMFzWx49A@public.gmane.org \
--cc=mflt1-DTdK3Ks6N5kHTnRCetW4+N0b+6lKrnBL@public.gmane.org \
/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.