From: Jeremy Fitzhardinge <jeremy@goop.org>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Yinghai Lu <yinghai@kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: Latest brk patchset
Date: Sat, 14 Mar 2009 23:29:17 -0700 [thread overview]
Message-ID: <49BCA03D.3020605@goop.org> (raw)
In-Reply-To: <49BC4DB6.9070403@zytor.com>
H. Peter Anvin wrote:
> Well, the semantics are different; the .bss section is zeroed while the
> brk isn't, and the brk symbols don't necessarily point to the data
> associated with those particular symbols, unlike (of course) the bss.
>
> It's not a big issue, obviously, it just seems cleaner to me that way.
>
OK, I just added a couple of changes to:
* make the brk reservation symbols have the form ".brk.NAME" to make
them inaccessible from C, and to make them look obviously
different from normal symbols (more like sections, since it is
their size that's more important than their address)
* Put all the brk stuff in a .brk section
* Mention alignment in the comment for the slop space
J
The following changes since commit 1e08816af0bc345995c3f26ce4eaba1171ffb531:
Ingo Molnar (1):
Merge branch 'linus'
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git push/x86/brk
Jeremy Fitzhardinge (7):
x86: make section delimiter symbols part of their section
x86: add brk allocation for very, very early allocations
x86-32: use brk segment for allocating initial kernel pagetable
x86: use brk allocation for DMI
x86: allow extend_brk users to reserve brk space
x86/brk: make the brk reservation symbols inaccessible from C
x86/brk: put the brk reservations in their own section
Yinghai Lu (2):
x86-32: compute initial mapping size more accurately
x86: put initial_pg_tables into .bss -v4
arch/x86/include/asm/dmi.h | 14 +----
arch/x86/include/asm/page_32_types.h | 5 ++
arch/x86/include/asm/pgtable_32.h | 3 -
arch/x86/include/asm/sections.h | 7 +++
arch/x86/include/asm/setup.h | 37 ++++++++++++-
arch/x86/kernel/head32.c | 5 +--
arch/x86/kernel/head64.c | 2 +-
arch/x86/kernel/head_32.S | 62 +++++++++-------------
arch/x86/kernel/setup.c | 53 +++++++++++++------
arch/x86/kernel/vmlinux_32.lds.S | 19 ++++++-
arch/x86/kernel/vmlinux_64.lds.S | 94 +++++++++++++++++++--------------
arch/x86/lguest/boot.c | 8 ---
arch/x86/mm/pageattr.c | 5 +-
arch/x86/xen/mmu.c | 6 +-
14 files changed, 187 insertions(+), 133 deletions(-)
Diff for last two changes:
diff --git a/arch/x86/include/asm/setup.h b/arch/x86/include/asm/setup.h
index 61b126b..fbf0521 100644
--- a/arch/x86/include/asm/setup.h
+++ b/arch/x86/include/asm/setup.h
@@ -116,13 +116,13 @@ void *extend_brk(size_t size, size_t align);
* executable.)
*/
#define RESERVE_BRK(name,sz) \
- static void __section(.discard) __used \
+ static void __section(.discard) __used \
__brk_reservation_fn_##name##__(void) { \
asm volatile ( \
".pushsection .brk_reservation,\"aw\",@nobits;" \
- "__brk_reservation_" #name "__:" \
+ ".brk." #name ":" \
" 1:.skip %c0;" \
- " .size __brk_reservation_" #name "__, . - 1b;" \
+ " .size .brk." #name ", . - 1b;" \
" .popsection" \
: : "i" (sz)); \
}
@@ -141,9 +141,9 @@ void __init x86_64_start_reservations(char *real_mode_data);
#else
#define RESERVE_BRK(name,sz) \
.pushsection .brk_reservation,"aw",@nobits; \
-__brk_reservation_##name##__: \
+.brk.name: \
1: .skip sz; \
- .size __brk_reservation_##name##__,.-1b; \
+ .size .brk.name,.-1b; \
.popsection
#endif /* __ASSEMBLY__ */
#endif /* __KERNEL__ */
diff --git a/arch/x86/kernel/vmlinux_32.lds.S b/arch/x86/kernel/vmlinux_32.lds.S
index c318dee..de14973 100644
--- a/arch/x86/kernel/vmlinux_32.lds.S
+++ b/arch/x86/kernel/vmlinux_32.lds.S
@@ -189,16 +189,18 @@ SECTIONS
*(.bss)
. = ALIGN(4);
__bss_stop = .;
+ }
+ .brk : AT(ADDR(.brk) - LOAD_OFFSET) {
. = ALIGN(PAGE_SIZE);
__brk_base = . ;
- . += 64 * 1024 ; /* 64k slop space */
+ . += 64 * 1024 ; /* 64k alignment slop space */
*(.brk_reservation) /* areas brk users have reserved */
__brk_limit = . ;
-
- _end = . ;
}
+ _end = . ;
+
/* Sections to be discarded */
/DISCARD/ : {
*(.exitcall.exit)
diff --git a/arch/x86/kernel/vmlinux_64.lds.S b/arch/x86/kernel/vmlinux_64.lds.S
index 47deee3..2f231f3 100644
--- a/arch/x86/kernel/vmlinux_64.lds.S
+++ b/arch/x86/kernel/vmlinux_64.lds.S
@@ -247,12 +247,14 @@ SECTIONS
*(.bss.page_aligned)
*(.bss)
__bss_stop = .;
+ }
- . = ALIGN(PAGE_SIZE);
- __brk_base = . ;
- . += 64 * 1024 ; /* 64k slop space */
+ .brk : AT(ADDR(.brk) - LOAD_OFFSET) {
+ . = ALIGN(PAGE_SIZE);
+ __brk_base = . ;
+ . += 64 * 1024 ; /* 64k alignment slop space */
*(.brk_reservation) /* areas brk users have reserved */
- __brk_limit = . ;
+ __brk_limit = . ;
}
_end = . ;
next prev parent reply other threads:[~2009-03-15 6:29 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-14 23:43 Latest brk patchset H. Peter Anvin
2009-03-15 0:32 ` Jeremy Fitzhardinge
2009-03-15 0:37 ` H. Peter Anvin
2009-03-15 6:09 ` Jeremy Fitzhardinge
2009-03-15 6:29 ` Jeremy Fitzhardinge [this message]
2009-03-15 20:38 ` [crash] " Ingo Molnar
2009-03-15 20:42 ` Ingo Molnar
2009-03-15 21:19 ` Jeremy Fitzhardinge
2009-03-15 21:28 ` Ingo Molnar
2009-03-15 23:28 ` Jeremy Fitzhardinge
2009-03-16 8:54 ` Ingo Molnar
2009-03-16 16:12 ` Jeremy Fitzhardinge
2009-03-16 16:56 ` Yinghai Lu
2009-03-16 17:20 ` Jeremy Fitzhardinge
2009-03-16 17:54 ` Jeremy Fitzhardinge
2009-03-16 18:15 ` H. Peter Anvin
2009-03-16 18:17 ` Yinghai Lu
2009-03-16 18:22 ` H. Peter Anvin
2009-03-16 18:31 ` Yinghai Lu
2009-03-16 18:17 ` H. Peter Anvin
2009-03-16 19:25 ` Jeremy Fitzhardinge
2009-03-16 19:34 ` H. Peter Anvin
2009-03-16 19:48 ` Yinghai Lu
2009-03-16 20:00 ` Jeremy Fitzhardinge
2009-03-16 20:26 ` H. Peter Anvin
2009-03-16 20:59 ` Jeremy Fitzhardinge
2009-03-16 21:14 ` H. Peter Anvin
2009-03-16 21:31 ` Jeremy Fitzhardinge
2009-03-16 22:35 ` H. Peter Anvin
2009-03-17 2:26 ` Yinghai Lu
2009-03-17 4:00 ` H. Peter Anvin
2009-03-17 5:07 ` Jeremy Fitzhardinge
2009-03-17 16:04 ` H. Peter Anvin
2009-03-17 19:42 ` Jeremy Fitzhardinge
2009-03-17 19:45 ` H. Peter Anvin
2009-03-17 19:59 ` Jeremy Fitzhardinge
2009-03-17 21:19 ` Yinghai Lu
2009-03-17 21:28 ` Jeremy Fitzhardinge
2009-03-17 19:47 ` Jeremy Fitzhardinge
2009-03-22 15:09 ` Ingo Molnar
2009-03-22 17:12 ` Jeremy Fitzhardinge
2009-03-22 17:22 ` Ingo Molnar
2009-03-22 21:48 ` Jeremy Fitzhardinge
2009-03-23 16:39 ` [tip:x86/setup] x86/dmi: fix dmi_alloc() section mismatches Jeremy Fitzhardinge
2009-03-15 1:37 ` Latest brk patchset H. Peter Anvin
2009-03-15 4:43 ` Yinghai Lu
2009-03-15 4:51 ` H. Peter Anvin
2009-03-15 5:33 ` Yinghai Lu
2009-03-15 6:05 ` Jeremy Fitzhardinge
2009-03-15 6:25 ` Yinghai Lu
2009-03-15 6:03 ` Jeremy Fitzhardinge
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=49BCA03D.3020605@goop.org \
--to=jeremy@goop.org \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=yinghai@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox