qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@web.de>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] Re: KQEMU code organization
Date: Wed, 28 May 2008 20:34:33 +0200	[thread overview]
Message-ID: <483DA5B9.4010002@web.de> (raw)
In-Reply-To: <483D8E9A.40509@siemens.com>

[-- Attachment #1: Type: text/plain, Size: 4249 bytes --]

Jan Kiszka wrote:
> Fabrice Bellard wrote:
>> Jan Kiszka wrote:
>>> Fabrice Bellard wrote:
>>>> Jan Kiszka wrote:
>>>>> Hi,
>>>>>
>>>>> is there a technical reason why the kqemu kernel module is built out of
>>>>> a binary blob (monitor-image.bin->monitor-image.h)? Does this simply
>>>>> date back to the time when wrapper and core were distributed under
>>>>> different licenses?
>>>> This is a technical reason: the "blob" is run in an address space
>>>> different from the host kernel.
>>> Well, easy to claim, I know, but I don't think this is a hard reason.
>>> However, as overcoming genmon and genoffset may require quite some
>>> refactoring, I'm not sure if it's worth it.
>> I may change the monitor blob format to ELF to allow relocation, but the
>> idea stays the same, and I don't think you can do it another way...
> 
> I agree (from my current knowledge of the problem) that the monitor
> remains "foreign" code to the kernel module. But at least the
> repackaging into a c-structure should be unnecessary.
> 
> The offset generation can be skipped if the assembly files are converted
> into inline assembly. Might be tricky in some cases, but I see no
> show-stopper yet.
> 
> The give it a tiny start, I will look if I can unify the build process
> for all "true" kernel components. That is what currently breaks the
> debugability of the driver frame (up to kernel2monitor), and which also
> causes a kbuild warning. Likely harmless ATM, but it is fragile on
> long-term.

Here we go. Still not nice (I would put all monitor code in its own
directory, moving those few host kernel bits into the top-level dir),
but at least much cleaner from kbuild's POV.

Signed-off-by: Jan Kiszka <jan.kiszka@web.de>
---
 Makefile |   15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

Index: b/Makefile
===================================================================
--- a/Makefile
+++ b/Makefile
@@ -17,7 +17,7 @@ ifdef CONFIG_KBUILD26
 all: kqemu.ko
 
 kqemu.ko:
-	make -C common all
+	make -C common monitor-image.h
 	make -C $(KERNEL_PATH) M=`pwd` modules
 
 else
@@ -38,7 +38,8 @@ endif # !CONFIG_WIN32
 
 clean:
 	$(MAKE) -C common clean
-	rm -f kqemu.ko *.o *~
+	rm -rf kqemu.ko *.o *~ .kqemu* Module.* modules.order kqemu.mod.c .tmp_versions \
+               common/.kernel* common/*/.kernel*
 
 FILES=configure Makefile README Changelog LICENSE COPYING \
       install.sh kqemu-linux.c kqemu.h \
@@ -89,10 +90,10 @@ kqemu.o: $(kqemu-objs)
 else
 # called from 2.6 kernel kbuild
 
-obj-m:= kqemu.o
-kqemu-objs:= kqemu-linux.o kqemu-mod.o
+EXTRA_AFLAGS=-I $(PWD)/common
+EXTRA_CFLAGS=-I $(PWD)
 
-$(obj)/kqemu-mod.o: $(src)/kqemu-mod-$(ARCH).o
-	cp $< $@
+obj-m:= kqemu.o
+kqemu-objs:= kqemu-linux.o common/kernel.o common/$(ARCH)/kernel_asm.o
 endif
 endif # PATCHLEVEL


BTW, there is more trouble ahead for kqemu. This is what I get booting a 
x86-64 OpenSuse 10.3 image on a 64-bit platform:

RAX=ffff810001008220 RBX=ffff81002f88a160 RCX=0000000000000036 RDX=0000000000000000
RSI=ffffe20000065aa0 RDI=ffff81002f88a164 RBP=ffff81002df99e68 RSP=ffff81002df99e68
R8 =0000000000000000 R9 =0000000000000000 R10=ffff81002df99db8 R11=0000000000010246
R12=ffff81002f88a164 R13=0000000000000004 R14=ffff81002f4a6b10 R15=ffff81002df99f58
RIP=ffffffff80447515 RFL=00010246 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0000 0000000000000000 00000000 00000000
CS =0010 0000000000000000 ffffffff 00a09b00
SS =0000 0000000000000000 ffffffff 00c09300
DS =0000 0000000000000000 00000000 00000000
FS =0000 0000000000000000 00000000 00000000
GS =0000 ffffffff8059b000 00000000 00000000
LDT=0000 0000000000000000 00000000 00008000
TR =0040 ffff81000101c280 00002087 00008900
GDT=     ffffffff8061e000 00000080
IDT=     ffffffff8067f000 00000fff
CR0=8005003b CR2=00007fff4183bf70 CR3=000000002e8a7000 CR4=000006a0
Unsupported return value: 0xffffffff

Kernel log says

  kqemu: aborting: Unexpected exception 0x0d in monitor space
  err=0000 CS:EIP=f180:00000000f0001f6f SS:SP=0000:00000000f00c6e20

with the official kqemu and, interestingly,

  kqemu: aborting: mon_get_ptel_l3() failed

with Ben's repos.

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 254 bytes --]

  reply	other threads:[~2008-05-28 18:34 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-27 16:56 [Qemu-devel] KQEMU code organization Jan Kiszka
2008-05-27 17:20 ` Ben Taylor
2008-05-27 18:25   ` [Qemu-devel] " Jan Kiszka
2008-05-27 20:58 ` [Qemu-devel] " Fabrice Bellard
2008-05-27 21:40   ` [Qemu-devel] " Jan Kiszka
2008-05-27 22:11 ` [Qemu-devel] " Fabrice Bellard
2008-05-28 16:02   ` [Qemu-devel] " Jan Kiszka
2008-05-28 16:37     ` Fabrice Bellard
2008-05-28 16:55       ` Jan Kiszka
2008-05-28 18:34         ` Jan Kiszka [this message]
2008-05-29 12:29         ` Fabrice Bellard
2008-05-29 13:16           ` Jan Kiszka
2008-05-29 16:13           ` Jamie Lokier
2008-05-29 16:26             ` Paul Brook
2008-05-29 16:35               ` Jamie Lokier
2008-05-29 17:43                 ` Anthony Liguori
2008-05-29 21:46                   ` Fabrice Bellard
2008-05-30  3:32                     ` Mulyadi Santosa
2008-05-30  8:14                       ` Andreas Färber
2008-05-29 16:26             ` Anthony Liguori
2008-05-29 16:53               ` Jan Kiszka
2008-05-29 17:48                 ` Anthony Liguori
2008-05-31 10:18                 ` Avi Kivity
2008-06-02 16:34                   ` Jamie Lokier
2008-05-29 21:52               ` Fabrice Bellard
2008-05-31 10:06                 ` Avi Kivity
2008-06-01 22:58                 ` Anthony Liguori
2008-06-02  9:02                   ` Fabrice Bellard
2008-06-02 13:25                     ` Anthony Liguori
2008-05-29 16:48             ` Jan Kiszka
2008-05-29 17:47               ` Anthony Liguori

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=483DA5B9.4010002@web.de \
    --to=jan.kiszka@web.de \
    --cc=qemu-devel@nongnu.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;
as well as URLs for NNTP newsgroup(s).