From: Pavel Machek <pavel@suse.cz>
To: Vivek Goyal <vgoyal@in.ibm.com>
Cc: linux kernel mailing list <linux-kernel@vger.kernel.org>,
akpm@osdl.org, rjw@sisk.pl, ebiederm@xmission.com, hpa@zytor.com,
magnus.damm@gmail.com,
Reloc Kernel List <fastboot@lists.osdl.org>,
ak@suse.de
Subject: Re: [Fastboot] [RFC] [PATCH 10/16] x86_64: 64bit PIC ACPI wakeup
Date: Thu, 16 Nov 2006 21:53:13 +0100 [thread overview]
Message-ID: <20061116205313.GB5596@elf.ucw.cz> (raw)
In-Reply-To: <20061116200933.GE13069@in.ibm.com>
Hi!
> > Ok. In the new code NX bit protection feature is not being enabled and that
> > seems to be causing the problem. I checked and enabled the NX bit feature
> > in EFER in wakeup.S and it starts working.
> >
> > I think my new machine supports NX bit protection feature and if while
> > resuming if I don't enable that feature back probably it must have caused
> > a GPF while loading the page tables which have got NX bit set. (A guess).
> >
> > I know that previous machine I was testing on does not support NX bit
> > feature and that could be the reason that previous machine did not run into
> > the problems.
>
> Fixed the resume problem happening on my second box which supported NX
> protection bit. Please find attached the regenerated patch.
>
> - Killed lots of dead code
Cleanup. (a)
> - Improve the cpu sanity checks to verify long mode
> is enabled when we wake up.
Change. (b). I'm not sure if we really need this one. I do not think
replacing cpu while suspended is supported operation.
> - Removed the need for modifying any existing kernel page table.
Unrelated change, probably good one. (c).
> - Moved wakeup_level4_pgt into the wakeup routine so we can
> run the kernel above 4G.
The change you really wanted to do in the first place. (d).
> - Increased the size of the wakeup routine to 8K.
You want bigger stack or what? (e)
> - Renamed the variables to use the 64bit register names.
Cleanup. (a)
> - Lots of misc cleanups to match trampoline.S
More cleanups. (a).
Can we at least get (a) (b) (c) (d) and (e) separated?
Oh and please drop the whitespace changes.
> I don't have a configuration I can test this but it compiles cleanly
> and it should work, the code is very similar to the SMP trampoline,
I assume you have configuration for test now?
> @@ -60,17 +60,6 @@ extern char wakeup_start, wakeup_end;
>
> extern unsigned long FASTCALL(acpi_copy_wakeup_routine(unsigned long));
>
> -static pgd_t low_ptr;
> -
> -static void init_low_mapping(void)
> -{
> - pgd_t *slot0 = pgd_offset(current->mm, 0UL);
> - low_ptr = *slot0;
> - set_pgd(slot0, *pgd_offset(current->mm, PAGE_OFFSET));
> - WARN_ON(num_online_cpus() != 1);
> - local_flush_tlb();
> -}
> -
So you no longer need identity mapping? Is not it specified that when
you transition between modes, you should do that while in identity
mapping?
> @@ -15,7 +16,6 @@
> # cs = 0x1234, eip = 0x05
> #
>
> -
> ALIGN
> .align 16
> ENTRY(wakeup_start)
Whitespace changes.
> @@ -30,22 +30,25 @@ wakeup_code:
> cld
> # setup data segment
> movw %cs, %ax
> - movw %ax, %ds # Make ds:0 point to wakeup_start
> + movw %ax, %ds # Make ds:0 point to wakeup_start
> movw %ax, %ss
> - mov $(wakeup_stack - wakeup_code), %sp # Private stack is needed for ASUS board
> + # Private stack is needed for ASUS board
> + mov $(wakeup_stack - wakeup_code), %sp
>
> - pushl $0 # Kill any dangerous flags
> + pushl $0 # Kill any dangerous flags
> popfl
More whitespace changes.
> movl real_magic - wakeup_code, %eax
> cmpl $0x12345678, %eax
> jne bogus_real_magic
>
> + call verify_cpu # Verify the cpu supports long mode
> +
Check if cpu supports long mode... but we suspended when running long
mode, why checking again?
> testl $1, video_flags - wakeup_code
> jz 1f
> lcall $0xc000,$3
> movw %cs, %ax
> - movw %ax, %ds # Bios might have played with that
> + movw %ax, %ds # Bios might have played with that
> movw %ax, %ss
> 1:
More whitespace changes.
> @@ -228,25 +206,10 @@ wakeup_long64:
> .align 64
> gdta:
> .word 0, 0, 0, 0 # dummy
> -
> - .word 0, 0, 0, 0 # unused
> -
> - .word 0xFFFF # 4Gb - (0x100000*0x1000 = 4Gb)
> - .word 0 # base address = 0
> - .word 0x9B00 # code read/exec. ??? Why I need 0x9B00 (as opposed to 0x9A00 in order for this to work?)
> - .word 0x00CF # granularity = 4096, 386
> - # (+5th nibble of limit)
> -
> - .word 0xFFFF # 4Gb - (0x100000*0x1000 = 4Gb)
> - .word 0 # base address = 0
> - .word 0x9200 # data read/write
> - .word 0x00CF # granularity = 4096, 386
> - # (+5th nibble of limit)
> -# this is 64bit descriptor for code
> - .word 0xFFFF
> - .word 0
> - .word 0x9A00 # code read/exec
> - .word 0x00AF # as above, but it is long mode and with D=0
> + /* ??? Why I need the accessed bit set in order for this to work? */
> + .quad 0x00cf9b000000ffff # __KERNEL32_CS
> + .quad 0x00af9b000000ffff # __KERNEL_CS
> + .quad 0x00cf93000000ffff # __KERNEL_DS
Why this change, why did you change the values in here, and why you
did not tell me about it in the changelog?
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
next prev parent reply other threads:[~2006-11-16 20:53 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-13 16:21 [RFC] [PATCH 0/16] x86_64: Relocatable bzImage Support (V2) Vivek Goyal
2006-11-13 16:26 ` [RFC] [PATCH 1/16] x86_64: Align data segment to page size boundary Vivek Goyal
2006-11-13 16:28 ` [RFC] [PATCH 2/16] x86_64: Assembly safe page.h and pgtable.h Vivek Goyal
2006-11-13 17:17 ` Andi Kleen
2006-11-13 19:27 ` Eric W. Biederman
2006-11-13 21:16 ` Vivek Goyal
2006-11-14 1:46 ` Andi Kleen
2006-11-14 2:41 ` Eric W. Biederman
2006-11-13 16:30 ` [RFC] [PATCH 3/16] x86_64: Kill temp_boot_pmds Vivek Goyal
2006-11-13 16:31 ` [RFC] [PATCH 4/16] x86_64: Clean up the early boot page table Vivek Goyal
2006-11-13 16:33 ` [RFC] [PATCH 5/16] x86_64: Fix earlyprintk to use standard ISA mapping Vivek Goyal
2006-11-13 16:34 ` [RFC] [PATCH 6/16] x86_64: Modify copy_bootdata to to use virtual address Vivek Goyal
2006-11-13 16:35 ` [RFC] [PATCH 7/16] x86_64: cleanup segments Vivek Goyal
2006-11-13 16:40 ` [RFC] [PATCH 8/16] x86_64: Add EFER to the set registers saved by save_processor_state Vivek Goyal
2006-11-13 16:42 ` [RFC] [PATCH 9/16] x86_64: 64bit PIC SMP trampoline Vivek Goyal
2006-11-13 17:28 ` Andi Kleen
2006-11-13 16:43 ` [RFC] [PATCH 10/16] x86_64: 64bit PIC ACPI wakeup Vivek Goyal
2006-11-13 17:22 ` Andi Kleen
2006-11-13 17:59 ` Vivek Goyal
2006-11-13 18:13 ` Andi Kleen
2006-11-13 19:21 ` Eric W. Biederman
2006-11-13 19:34 ` Vivek Goyal
2006-11-13 19:57 ` Eric W. Biederman
2006-11-13 23:01 ` Pavel Machek
2006-11-13 23:09 ` Vivek Goyal
2006-11-15 21:07 ` [PATCH] x86_64: Move cpu long mode verification code to common file (was Re: [RFC] [PATCH 10/16] x86_64: 64bit PIC ACPI wakeup) Vivek Goyal
2006-11-15 22:54 ` Pavel Machek
2006-11-16 20:06 ` Vivek Goyal
2006-11-14 16:30 ` [RFC] [PATCH 10/16] x86_64: 64bit PIC ACPI wakeup Pavel Machek
2006-11-14 21:36 ` Eric W. Biederman
2006-11-14 21:40 ` H. Peter Anvin
2006-11-14 23:43 ` Pavel Machek
2006-11-15 3:49 ` Andi Kleen
2006-11-15 17:26 ` Eric W. Biederman
2006-11-15 18:29 ` Vivek Goyal
2006-11-15 18:38 ` Pavel Machek
2006-11-14 23:17 ` Vivek Goyal
2006-11-14 23:39 ` Pavel Machek
2006-11-15 21:24 ` [Fastboot] " Vivek Goyal
2006-11-15 23:03 ` Pavel Machek
2006-11-16 0:28 ` Vivek Goyal
2006-11-16 20:09 ` Vivek Goyal
2006-11-16 20:53 ` Pavel Machek [this message]
2006-11-16 21:29 ` Vivek Goyal
2006-11-16 21:51 ` Pavel Machek
2006-11-13 16:44 ` [RFC] [PATCH 11/16] x86_64: Modify discover_ebda to use virtual address Vivek Goyal
2006-11-13 16:46 ` [RFC] [PATCH 12/16] x86_64: Remove the identity mapping as early as possible Vivek Goyal
2006-11-13 16:47 ` [RFC] [PATCH 13/16] x86_64: __pa and __pa_symbol address space separation Vivek Goyal
2006-11-13 16:48 ` [RFC] [PATCH 14/16] x86_64: Remove CONFIG_PHYSICAL_START Vivek Goyal
2006-11-13 16:50 ` [RFC] [PATCH 15/16] x86_64: Relocatable kernel support Vivek Goyal
2006-11-13 16:51 ` [RFC] [PATCH 16/16] x86_64: Extend bzImage protocol for relocatable bzImage Vivek Goyal
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=20061116205313.GB5596@elf.ucw.cz \
--to=pavel@suse.cz \
--cc=ak@suse.de \
--cc=akpm@osdl.org \
--cc=ebiederm@xmission.com \
--cc=fastboot@lists.osdl.org \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=magnus.damm@gmail.com \
--cc=rjw@sisk.pl \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®