diff options
| author | Eric W. Biederman <ebiederm@xmission.com> | 2006-07-30 06:03:20 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-07-31 16:28:38 -0400 |
| commit | 2a8a3d5b65e86ec1dfef7d268c64a909eab94af7 (patch) | |
| tree | 90d4f3e42233c4b9e0385a114b5e22ddda6b57e8 | |
| parent | c35a7261eaf0e57924e2c56c6d72dc44ee9f3634 (diff) | |
[PATCH] machine_kexec.c: Fix the description of segment handling
One of my original comments in machine_kexec was unclear
and this should fix it.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Cc: Andi Kleen <ak@muc.de>
Acked-by: Horms <horms@verge.net.au>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
| -rw-r--r-- | arch/i386/kernel/machine_kexec.c | 13 | ||||
| -rw-r--r-- | arch/x86_64/kernel/machine_kexec.c | 13 |
2 files changed, 10 insertions, 16 deletions
diff --git a/arch/i386/kernel/machine_kexec.c b/arch/i386/kernel/machine_kexec.c index 511abe52a94e..6b1ae6ba76f0 100644 --- a/arch/i386/kernel/machine_kexec.c +++ b/arch/i386/kernel/machine_kexec.c | |||
| @@ -189,14 +189,11 @@ NORET_TYPE void machine_kexec(struct kimage *image) | |||
| 189 | memcpy((void *)reboot_code_buffer, relocate_new_kernel, | 189 | memcpy((void *)reboot_code_buffer, relocate_new_kernel, |
| 190 | relocate_new_kernel_size); | 190 | relocate_new_kernel_size); |
| 191 | 191 | ||
| 192 | /* The segment registers are funny things, they are | 192 | /* The segment registers are funny things, they have both a |
| 193 | * automatically loaded from a table, in memory wherever you | 193 | * visible and an invisible part. Whenever the visible part is |
| 194 | * set them to a specific selector, but this table is never | 194 | * set to a specific selector, the invisible part is loaded |
| 195 | * accessed again you set the segment to a different selector. | 195 | * with from a table in memory. At no other time is the |
| 196 | * | 196 | * descriptor table in memory accessed. |
| 197 | * The more common model is are caches where the behide | ||
| 198 | * the scenes work is done, but is also dropped at arbitrary | ||
| 199 | * times. | ||
| 200 | * | 197 | * |
| 201 | * I take advantage of this here by force loading the | 198 | * I take advantage of this here by force loading the |
| 202 | * segments, before I zap the gdt with an invalid value. | 199 | * segments, before I zap the gdt with an invalid value. |
diff --git a/arch/x86_64/kernel/machine_kexec.c b/arch/x86_64/kernel/machine_kexec.c index 83fb24a02821..106076b370fc 100644 --- a/arch/x86_64/kernel/machine_kexec.c +++ b/arch/x86_64/kernel/machine_kexec.c | |||
| @@ -207,14 +207,11 @@ NORET_TYPE void machine_kexec(struct kimage *image) | |||
| 207 | __flush_tlb(); | 207 | __flush_tlb(); |
| 208 | 208 | ||
| 209 | 209 | ||
| 210 | /* The segment registers are funny things, they are | 210 | /* The segment registers are funny things, they have both a |
| 211 | * automatically loaded from a table, in memory wherever you | 211 | * visible and an invisible part. Whenever the visible part is |
| 212 | * set them to a specific selector, but this table is never | 212 | * set to a specific selector, the invisible part is loaded |
| 213 | * accessed again unless you set the segment to a different selector. | 213 | * with from a table in memory. At no other time is the |
| 214 | * | 214 | * descriptor table in memory accessed. |
| 215 | * The more common model are caches where the behide | ||
| 216 | * the scenes work is done, but is also dropped at arbitrary | ||
| 217 | * times. | ||
| 218 | * | 215 | * |
| 219 | * I take advantage of this here by force loading the | 216 | * I take advantage of this here by force loading the |
| 220 | * segments, before I zap the gdt with an invalid value. | 217 | * segments, before I zap the gdt with an invalid value. |
