All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rusty Russell <rusty@rustcorp.com.au>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: lkml - Kernel Mailing List <linux-kernel@vger.kernel.org>,
	virtualization <virtualization@lists.osdl.org>,
	Andi Kleen <ak@muc.de>
Subject: [PATCH 1/7] cleanup: paravirt unhandled fallthrough
Date: Mon, 12 Feb 2007 14:32:00 +1100	[thread overview]
Message-ID: <1171251120.10409.2.camel@localhost.localdomain> (raw)

The current code simply calls "start_kernel" directly if we're under a
hypervisor and no paravirt_ops backend wants us, because paravirt.c
registers that as a backend.

This was always a vain hope; start_kernel won't get far without setup.
It's also impossible for paravirt_ops backends which don't sit in the
arch/i386/kernel directory: they can't link before paravirt.o anyway.

Keep it simple: if we pass all the registered paravirt probes, BUG().

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>

diff -r 4fb7fc327801 arch/i386/kernel/Makefile
--- a/arch/i386/kernel/Makefile	Mon Feb 12 12:37:01 2007 +1100
+++ b/arch/i386/kernel/Makefile	Mon Feb 12 12:55:00 2007 +1100
@@ -41,8 +41,6 @@ obj-$(CONFIG_KWATCH)		+= debugreg.o kwat
 obj-$(CONFIG_KWATCH)		+= debugreg.o kwatch.o
 
 obj-$(CONFIG_VMI)		+= vmi.o vmitime.o
-
-# Make sure this is linked after any other paravirt_ops structs: see head.S
 obj-$(CONFIG_PARAVIRT)		+= paravirt.o
 
 EXTRA_AFLAGS   := -traditional
diff -r 4fb7fc327801 arch/i386/kernel/head.S
--- a/arch/i386/kernel/head.S	Mon Feb 12 12:37:01 2007 +1100
+++ b/arch/i386/kernel/head.S	Mon Feb 12 12:54:19 2007 +1100
@@ -513,10 +513,11 @@ startup_paravirt:
 	pushl	%ecx
 	pushl	%eax
 
-	/* paravirt.o is last in link, and that probe fn never returns */
 	pushl	$__start_paravirtprobe
 1:
 	movl	0(%esp), %eax
+	cmpl	$__stop_paravirtprobe, %eax
+	je	unhandled_paravirt
 	pushl	(%eax)
 	movl	8(%esp), %eax
 	call	*(%esp)
@@ -528,6 +529,10 @@ 1:
 
 	addl	$4, (%esp)
 	jmp	1b
+
+unhandled_paravirt:
+	/* Nothing wanted us: we're screwed. */ 
+	ud2
 #endif
 
 /*
diff -r 4fb7fc327801 arch/i386/kernel/paravirt.c
--- a/arch/i386/kernel/paravirt.c	Mon Feb 12 12:37:01 2007 +1100
+++ b/arch/i386/kernel/paravirt.c	Mon Feb 12 12:54:19 2007 +1100
@@ -481,9 +481,6 @@ static int __init print_banner(void)
 	return 0;
 }
 core_initcall(print_banner);
-
-/* We simply declare start_kernel to be the paravirt probe of last resort. */
-paravirt_probe(start_kernel);
 
 struct paravirt_ops paravirt_ops = {
 	.name = "bare hardware",



             reply	other threads:[~2007-02-12  3:32 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-12  3:32 Rusty Russell [this message]
2007-02-12  3:33 ` [PATCH 2/7] cleanup: Initialize esp0 properly all the time Rusty Russell
2007-02-12  3:34   ` [PATCH 3/7] cleanup: Make hvc_console.c compile on non-PowerPC Rusty Russell
2007-02-12  3:35     ` [PATCH 4/7] cleanup: Move mce_disabled to asm/mce.h Rusty Russell
2007-02-12  3:36       ` [PATCH 5/7] cleanup: Rename cpu_gdt_descr and remove extern declaration from smpboot.c Rusty Russell
2007-02-12  3:37         ` [PATCH 6/7] cleanup: Remove extern declaration from mm/discontig.c, put in header Rusty Russell
2007-02-12  3:39           ` [PATCH 7/7] cleanup: make disable_acpi() valid w/o CONFIG_ACPI Rusty Russell
2007-02-12  3:41             ` [PATCH 1/2] lguest preparation: EXPORT_SYMBOL_GPL 5 functions Rusty Russell
2007-02-12  3:42               ` [PATCH 2/2] lguest preparation: expose futex infrastructure: get_futex_key, get_key_refs and drop_key_refs Rusty Russell
2007-02-12  3:44                 ` [PATCH 1/8] lguest: Kconfig and headers Rusty Russell
2007-02-12  3:46                   ` [PATCH 2/8] lguest: the host code (lg.ko) Rusty Russell
2007-02-12  3:48                     ` [PATCH 3/8] lguest: Guest code Rusty Russell
2007-02-12  3:50                       ` [PATCH 4/8] lguest: Makefile Rusty Russell
2007-02-12  3:52                         ` [PATCH 5/8] lguest: trivial guest network driver Rusty Russell
2007-02-12  3:53                           ` [PATCH 6/8] lguest: trivial guest console driver Rusty Russell
2007-02-12  3:54                             ` [PATCH 7/8] lguest: trivial guest block driver Rusty Russell
2007-02-12  3:55                               ` [PATCH 8/8] lguest: documentatation and example launcher Rusty Russell
2007-02-12  4:43                               ` [PATCH 7/8] lguest: trivial guest block driver Jens Axboe
2007-02-12  5:27                                 ` Rusty Russell
2007-02-12  5:32                                   ` Jens Axboe
2007-02-12  5:33                                     ` Jens Axboe
2007-02-12  7:09                                     ` Rusty Russell
2007-02-12  7:09                                       ` Rusty Russell
2007-02-12 15:01                                       ` Jens Axboe
2007-02-13  0:25                                         ` Rusty Russell
2007-02-13  0:25                                           ` Rusty Russell
2007-02-13  0:44                                           ` Jens Axboe
2007-02-12 15:55                           ` [PATCH 5/8] lguest: trivial guest network driver Herbert Xu
2007-02-13  2:15                             ` Rusty Russell
2007-02-13 14:06                               ` Herbert Xu
2007-02-14  4:47                                 ` Rusty Russell
2007-02-14 13:57                                   ` Herbert Xu
2007-02-14 23:00                                     ` Rusty Russell
2007-02-12 16:02                   ` [PATCH 1/8] lguest: Kconfig and headers James Morris
2007-02-13  5:09             ` [PATCH 7/7] cleanup: make disable_acpi() valid w/o CONFIG_ACPI Len Brown
2007-02-12  9:16         ` [PATCH 5/7] cleanup: Rename cpu_gdt_descr and remove extern declaration from smpboot.c Zachary Amsden

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=1171251120.10409.2.camel@localhost.localdomain \
    --to=rusty@rustcorp.com.au \
    --cc=ak@muc.de \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=virtualization@lists.osdl.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.