mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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 22:51:54 +0100	[thread overview]
Message-ID: <20061116215154.GD6695@elf.ucw.cz> (raw)
In-Reply-To: <20061116212950.GF13069@in.ibm.com>

Hi!

> > > 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.
> > 
> 
> That's fine but it does not harm. Now all the entry path share the
> same sanity check (verify_cpu.S) and I believe it makes code more
> maintanable and more robust. It just makes our checks stronger in
> case somebody really replaces the cpus.

It is probably okay if shared.

> > > - 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)
> > 
> 
> I think this is because of wakeup_level4_pgt page tables which are now
> part of trampoline. And these page tables got to be at 4K byte boundary.
> Hence now we need two pages for trampoline instead of one.

Aha, ok. Notice that in the changelog.

> > > - 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?
> 
> Ok. I will separate the patches.

Thanks!

> > > 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?
> 
> Eric did not have but now I have tested it already on two configurations.
> I think that's good enough. Isn't it?

Should be... if it is in -mm for long enough. Unfortunately very
little people are testing x86-64 on notebooks :-(. I guess I should
force myself to install 64-bit distro on old arima here...

> > > -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?
> > 
> 
> I am not sure where these mappings are required at all in first place?
> While going to sleep state? While resuming we are using wake page tables
> and they already got identity mappings so it should not be an issue.

Ok, I guess that's okay.

> > > @@ -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?
> 
> I think mainly it has been modified to be consistent gdt table across
> the kernel (cpu_gdt_table, trampoline.S and wakeup.S). Now __KERNEL_32_CS
> entry has been moved up to keep the size of gdt small on trampoline. This
> change was done in patch number 7 (cleanup segments).
> 
> Seondly, I think it is just change of form from using .word to .quad. More
> compact form.
> 
> Thirdly I think it does not harm marking that gdt entry has been accessed.
> Eric can elaborate more on it. Patch 7 also has got details.

Ok. Maybe it would be nice to #include the GDT's, too, so they do not
drift apart? Or at least comment "this has to be kept in sync
with..."?

									Pavel
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

  reply	other threads:[~2006-11-16 21:52 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
2006-11-16 21:29           ` Vivek Goyal
2006-11-16 21:51             ` Pavel Machek [this message]
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=20061116215154.GD6695@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®