qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] Check if the i8254 timer is active before deactivating it
@ 2009-01-26 16:41 Alexander Graf
  2009-01-26 20:33 ` Anthony Liguori
  0 siblings, 1 reply; 4+ messages in thread
From: Alexander Graf @ 2009-01-26 16:41 UTC (permalink / raw)
  To: qemu-devel

The HPET emulation can disable the i8254 when the HPET is
in legacy mode, thus emulating the i8254's behavior.

But if it does, the i8254 doesn't have to be running, so
let's check to see if the timer works and not disable it
if it's not.

This fixes a segmentation fault when running Mac OS X as
guest os.

Signed-off-by: Alexander Graf <agraf@suse.de>
---
 hw/i8254.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/hw/i8254.c b/hw/i8254.c
index a4a1efe..44e4531 100644
--- a/hw/i8254.c
+++ b/hw/i8254.c
@@ -467,7 +467,8 @@ static void pit_reset(void *opaque)
 void hpet_pit_disable(void) {
     PITChannelState *s;
     s = &pit_state.channels[0];
-    qemu_del_timer(s->irq_timer);
+    if (s->irq_timer)
+        qemu_del_timer(s->irq_timer);
 }
 
 /* When HPET is reset or leaving legacy mode, it must reenable i8254
-- 
1.6.0.2

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PATCH] Check if the i8254 timer is active before deactivating it
  2009-01-26 16:41 [Qemu-devel] [PATCH] Check if the i8254 timer is active before deactivating it Alexander Graf
@ 2009-01-26 20:33 ` Anthony Liguori
  2009-01-27  7:18   ` Alexander Graf
  0 siblings, 1 reply; 4+ messages in thread
From: Anthony Liguori @ 2009-01-26 20:33 UTC (permalink / raw)
  To: qemu-devel

Alexander Graf wrote:
> The HPET emulation can disable the i8254 when the HPET is
> in legacy mode, thus emulating the i8254's behavior.
>
> But if it does, the i8254 doesn't have to be running, so
> let's check to see if the timer works and not disable it
> if it's not.
>
> This fixes a segmentation fault when running Mac OS X as
> guest os.
>   

So the HPET works with Mac OS X with this patch?  That's good to know 
since there was a fair bit of change from your original patch.

> Signed-off-by: Alexander Graf <agraf@suse.de>
>   

Applied.  Thanks.

Regards,

Anthony Liguori

> ---
>  hw/i8254.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/hw/i8254.c b/hw/i8254.c
> index a4a1efe..44e4531 100644
> --- a/hw/i8254.c
> +++ b/hw/i8254.c
> @@ -467,7 +467,8 @@ static void pit_reset(void *opaque)
>  void hpet_pit_disable(void) {
>      PITChannelState *s;
>      s = &pit_state.channels[0];
> -    qemu_del_timer(s->irq_timer);
> +    if (s->irq_timer)
> +        qemu_del_timer(s->irq_timer);
>  }
>  
>  /* When HPET is reset or leaving legacy mode, it must reenable i8254
>   

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PATCH] Check if the i8254 timer is active before deactivating it
  2009-01-26 20:33 ` Anthony Liguori
@ 2009-01-27  7:18   ` Alexander Graf
  2009-01-27  7:37     ` Alexander Graf
  0 siblings, 1 reply; 4+ messages in thread
From: Alexander Graf @ 2009-01-27  7:18 UTC (permalink / raw)
  To: qemu-devel@nongnu.org





On 26.01.2009, at 21:33, Anthony Liguori <aliguori@us.ibm.com> wrote:

> Alexander Graf wrote:
>> The HPET emulation can disable the i8254 when the HPET is
>> in legacy mode, thus emulating the i8254's behavior.
>>
>> But if it does, the i8254 doesn't have to be running, so
>> let's check to see if the timer works and not disable it
>> if it's not.
>>
>> This fixes a segmentation fault when running Mac OS X as
>> guest os.
>>
>
> So the HPET works with Mac OS X with this patch?  That's good to  
> know since there was a fair bit of change from your original patch.

Yes, works perfectly fine as long as you add the hpet descriptor in  
acpi.

So far the only user in osx that uses the hpet I've encountered is the  
power management though - and so far that only checks if 1 ibterrupt  
arrives on bootup.

But beth's changes do look sane, so I'd guess if anything the new  
implementation is more likely to work ;). My old was was actually just  
a hack to get osx running at all, so I'm really grateful someons  
cleaned it up.

Alex

>
>
>> Signed-off-by: Alexander Graf <agraf@suse.de>
>>
>
> Applied.  Thanks.
>
> Regards,
>
> Anthony Liguori
>
>> ---
>> hw/i8254.c |    3 ++-
>> 1 files changed, 2 insertions(+), 1 deletions(-)
>>
>> diff --git a/hw/i8254.c b/hw/i8254.c
>> index a4a1efe..44e4531 100644
>> --- a/hw/i8254.c
>> +++ b/hw/i8254.c
>> @@ -467,7 +467,8 @@ static void pit_reset(void *opaque)
>> void hpet_pit_disable(void) {
>>     PITChannelState *s;
>>     s = &pit_state.channels[0];
>> -    qemu_del_timer(s->irq_timer);
>> +    if (s->irq_timer)
>> +        qemu_del_timer(s->irq_timer);
>> }
>>  /* When HPET is reset or leaving legacy mode, it must reenable i8254
>>
>
>
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PATCH] Check if the i8254 timer is active before deactivating it
  2009-01-27  7:18   ` Alexander Graf
@ 2009-01-27  7:37     ` Alexander Graf
  0 siblings, 0 replies; 4+ messages in thread
From: Alexander Graf @ 2009-01-27  7:37 UTC (permalink / raw)
  To: qemu-devel@nongnu.org


On 27.01.2009, at 08:18, Alexander Graf <agraf@suse.de> wrote:

>
>
>
>
> On 26.01.2009, at 21:33, Anthony Liguori <aliguori@us.ibm.com> wrote:
>
>> Alexander Graf wrote:
>>> The HPET emulation can disable the i8254 when the HPET is
>>> in legacy mode, thus emulating the i8254's behavior.
>>>
>>> But if it does, the i8254 doesn't have to be running, so
>>> let's check to see if the timer works and not disable it
>>> if it's not.
>>>
>>> This fixes a segmentation fault when running Mac OS X as
>>> guest os.
>>>
>>
>> So the HPET works with Mac OS X with this patch?  That's good to  
>> know since there was a fair bit of change from your original patch.
>
> Yes, works perfectly fine as long as you add the hpet descriptor in  
> acpi.

Oh and the LPC of course, which tells osx where to look for the hpet,  
before it reads the acpi tables.

Alex

>
>
> So far the only user in osx that uses the hpet I've encountered is  
> the power management though - and so far that only checks if 1  
> ibterrupt arrives on bootup.
>
> But beth's changes do look sane, so I'd guess if anything the new  
> implementation is more likely to work ;). My old was was actually  
> just a hack to get osx running at all, so I'm really grateful  
> someons cleaned it up.
>
> Alex
>
>>
>>
>>> Signed-off-by: Alexander Graf <agraf@suse.de>
>>>
>>
>> Applied.  Thanks.
>>
>> Regards,
>>
>> Anthony Liguori
>>
>>> ---
>>> hw/i8254.c |    3 ++-
>>> 1 files changed, 2 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/hw/i8254.c b/hw/i8254.c
>>> index a4a1efe..44e4531 100644
>>> --- a/hw/i8254.c
>>> +++ b/hw/i8254.c
>>> @@ -467,7 +467,8 @@ static void pit_reset(void *opaque)
>>> void hpet_pit_disable(void) {
>>>    PITChannelState *s;
>>>    s = &pit_state.channels[0];
>>> -    qemu_del_timer(s->irq_timer);
>>> +    if (s->irq_timer)
>>> +        qemu_del_timer(s->irq_timer);
>>> }
>>> /* When HPET is reset or leaving legacy mode, it must reenable i8254
>>>
>>
>>
>>
>
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-01-27  7:38 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-01-26 16:41 [Qemu-devel] [PATCH] Check if the i8254 timer is active before deactivating it Alexander Graf
2009-01-26 20:33 ` Anthony Liguori
2009-01-27  7:18   ` Alexander Graf
2009-01-27  7:37     ` Alexander Graf

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).