All of lore.kernel.org
 help / color / mirror / Atom feed
From: Herbert Poetzl <herbert@13thfloor.at>
To: kvm@vger.kernel.org, qemu-devel@nongnu.org
Cc: Avi Kivity <avi@redhat.com>
Subject: Re: i8259 defaults wrong?
Date: Tue, 18 Aug 2009 03:02:29 +0200	[thread overview]
Message-ID: <20090818010229.GA6083@MAIL.13thfloor.at> (raw)
In-Reply-To: <20090817022024.GE1025@MAIL.13thfloor.at>

>On Mon, Aug 17, 2009 at 04:20:24AM +0200, Herbert Poetzl wrote:
>> 
>> Greetings!
>> 
>> looking at the i8259 implementation found in qemu
>> as well as in the in-kernel kvm implementation, I
>> see that on pic_reset() special_fully_nested_mode
>> is set to zero, but the intel(r) 8259A manual says
>> on page 15:
>> 
>>   Fully Nested Mode
>>  
>>   This mode is entered after initialization unless
>>   another mode is programmed.
>> 
>> any comments are appreciated, a patch should be
>> trivial, but I'd gladly submit one if requested.
>
> Well, does the BIOS set fully nested mode on reset? 

no idea, but as far as I tested, it doesn't matter
for Linux guests, but makes some other operating
systems - which seem to heavily rely on this default 
(e.g. OpenStep, darwin) - work like expected.

> If not, a kvm change is difficult, since the bios 
> and kvm are updated independently.

nevertheless IMHO it should be fixed ASAP, and the 
required change is trivial, i.e. only a single line 
in the kvm/qemu code needs to be changed to make it
work correctly (see patches below)

best,
Herbert

please CC me as I'm not subscribed to either list


; fix i8259 reset behaviour 
; qemu/kvm (outside the kernel)
;
--- ./hw/i8259.c.orig	2009-08-12 19:45:45.000000000 +0200
+++ ./hw/i8259.c	2009-08-17 03:48:15.000000000 +0200
@@ -295,7 +295,7 @@ static void pic_reset(void *opaque)
     s->init_state = 0;
     s->auto_eoi = 0;
     s->rotate_on_auto_eoi = 0;
-    s->special_fully_nested_mode = 0;
+    s->special_fully_nested_mode = 1;
     s->init4 = 0;
     s->single_mode = 0;
     /* Note: ELCR is not reset */


; fix i8259 reset behaviour
; kvm (inside the kernel)

--- ./arch/x86/kvm/i8259.c.orig	2009-06-11 17:12:23.000000000 +0200
+++ ./arch/x86/kvm/i8259.c	2009-08-18 02:50:00.000000000 +0200
@@ -279,7 +279,7 @@ void kvm_pic_reset(struct kvm_kpic_state
 	s->init_state = 0;
 	s->auto_eoi = 0;
 	s->rotate_on_auto_eoi = 0;
-	s->special_fully_nested_mode = 0;
+	s->special_fully_nested_mode = 1;
 	s->init4 = 0;
 }
 

>> TIA,
>> Herbert


WARNING: multiple messages have this Message-ID (diff)
From: Herbert Poetzl <herbert@13thfloor.at>
To: kvm@vger.kernel.org, qemu-devel@nongnu.org
Cc: Avi Kivity <avi@redhat.com>
Subject: [Qemu-devel] Re: i8259 defaults wrong?
Date: Tue, 18 Aug 2009 03:02:29 +0200	[thread overview]
Message-ID: <20090818010229.GA6083@MAIL.13thfloor.at> (raw)
In-Reply-To: <20090817022024.GE1025@MAIL.13thfloor.at>

>On Mon, Aug 17, 2009 at 04:20:24AM +0200, Herbert Poetzl wrote:
>> 
>> Greetings!
>> 
>> looking at the i8259 implementation found in qemu
>> as well as in the in-kernel kvm implementation, I
>> see that on pic_reset() special_fully_nested_mode
>> is set to zero, but the intel(r) 8259A manual says
>> on page 15:
>> 
>>   Fully Nested Mode
>>  
>>   This mode is entered after initialization unless
>>   another mode is programmed.
>> 
>> any comments are appreciated, a patch should be
>> trivial, but I'd gladly submit one if requested.
>
> Well, does the BIOS set fully nested mode on reset? 

no idea, but as far as I tested, it doesn't matter
for Linux guests, but makes some other operating
systems - which seem to heavily rely on this default 
(e.g. OpenStep, darwin) - work like expected.

> If not, a kvm change is difficult, since the bios 
> and kvm are updated independently.

nevertheless IMHO it should be fixed ASAP, and the 
required change is trivial, i.e. only a single line 
in the kvm/qemu code needs to be changed to make it
work correctly (see patches below)

best,
Herbert

please CC me as I'm not subscribed to either list


; fix i8259 reset behaviour 
; qemu/kvm (outside the kernel)
;
--- ./hw/i8259.c.orig	2009-08-12 19:45:45.000000000 +0200
+++ ./hw/i8259.c	2009-08-17 03:48:15.000000000 +0200
@@ -295,7 +295,7 @@ static void pic_reset(void *opaque)
     s->init_state = 0;
     s->auto_eoi = 0;
     s->rotate_on_auto_eoi = 0;
-    s->special_fully_nested_mode = 0;
+    s->special_fully_nested_mode = 1;
     s->init4 = 0;
     s->single_mode = 0;
     /* Note: ELCR is not reset */


; fix i8259 reset behaviour
; kvm (inside the kernel)

--- ./arch/x86/kvm/i8259.c.orig	2009-06-11 17:12:23.000000000 +0200
+++ ./arch/x86/kvm/i8259.c	2009-08-18 02:50:00.000000000 +0200
@@ -279,7 +279,7 @@ void kvm_pic_reset(struct kvm_kpic_state
 	s->init_state = 0;
 	s->auto_eoi = 0;
 	s->rotate_on_auto_eoi = 0;
-	s->special_fully_nested_mode = 0;
+	s->special_fully_nested_mode = 1;
 	s->init4 = 0;
 }
 

>> TIA,
>> Herbert

  parent reply	other threads:[~2009-08-18  1:02 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-17  2:20 i8259 defaults wrong? Herbert Poetzl
2009-08-17  2:20 ` [Qemu-devel] " Herbert Poetzl
2009-08-17  9:54 ` Avi Kivity
2009-08-17  9:54   ` [Qemu-devel] " Avi Kivity
2009-08-18  1:02 ` Herbert Poetzl [this message]
2009-08-18  1:02   ` Herbert Poetzl
2009-08-18  7:46   ` Avi Kivity
2009-08-18  7:46     ` [Qemu-devel] " Avi Kivity
2009-08-18  9:39 ` Bernhard Kauer
2009-08-18  9:39   ` [Qemu-devel] " Bernhard Kauer

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=20090818010229.GA6083@MAIL.13thfloor.at \
    --to=herbert@13thfloor.at \
    --cc=avi@redhat.com \
    --cc=kvm@vger.kernel.org \
    --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 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.