All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: "Gabriel L. Somlo" <gsomlo@gmail.com>
Cc: mst@redhat.com, seabios@seabios.org, kraxel@redhat.com,
	qemu-devel@nongnu.org, agraf@suse.de
Subject: Re: [Qemu-devel] os x boot broken by commit 11948748495841bd54721b250d68c7b3cb0475ef
Date: Fri, 22 Nov 2013 10:00:20 +0100	[thread overview]
Message-ID: <528F1D24.8070209@redhat.com> (raw)
In-Reply-To: <20131121220207.GO13775@HEDWIG.INI.CMU.EDU>

Il 21/11/2013 23:02, Gabriel L. Somlo ha scritto:
> On Thu, Nov 21, 2013 at 07:14:27PM +0100, Paolo Bonzini wrote:
>> > Can you remind us about your DSDT modifications?  It should be possible
>> > to patch the HPET and applesmc bits appropriately from QEMU (or to move
>> > them from the DSDT to an SSDT that is built entirely in QEMU).
>> > 
>> > It actually isn't impossible that Mac OS X would boot just fine with 1.8...
> My current DSDT patch (against QEMU) is enclosed below. The HPET
> basically needs "IRQNoFlags() {2, 8}", which causes XP to bluescreen.

The IRQNoFlags(){2,8} setting makes sense if the general configuration
register of the HPET has bits 0..1=1 (HPET enabled = 1 and HPET legacy
replacement route = 1).

That would be something like

     Field(HPTM, DWordAcc, Lock, Preserve) {
         VEND, 32,
         PRD, 32,
         UNUS, 32
         GCNF, 32
     }

     ...

     Method(_CRS, 0) {
        Store(GCNF, Local0)
        If (LEqual(LAnd(Local0, 3), 3)) {   // Legacy replacement route
             ConcatenateResTemplate(RESP, RESI, Local1)
             Return (Local1)
        } else {
             Return (RESP)
        }
    }

If that doesn't work, there are various choices here...

(1) Does Mac OS work if you add a _PRS with IRQNoFlags and
Memory32Fixed, but leave _CRS as it is?

(2) does it work with -no-hpet?

(3) you could also make that dependent on _OSI("Darwin").  It's unlikely
that Linux and/or Windows expose _OSI("Darwin"), and anyway the BSOD is
only there for Windows XP as I understand it.

> So, I've made it conditional on the SMC STA method returning success
> (0x0B).

That would mean that running Windows XP on "Mac OS X hardware" breaks,
though.

> The SMC node's STA method returns 0x0B unconditionally on real
> hardware. So I was planning on figuring out what's easier in the
> context of the most recent QEMU code base:
> 
> 	1. dynamically generating (during qemu runtime initialization)
> 	 a DSDT entry for SMC with hardcoded 0x0B STA method, whenever
> 	"--device isa-applesmc" is present on the qemu command line
> 
> or
> 
> 	2. writing a static (compile-time) SMC node but with a slightly
> 	smarter _STA method, which returns 0x0B when "--device isa-applesmc"
> 	was given on the cmdline, or which returns 0x00 in the absence
> 	of "--device isa-applesmc".

Either would work.  See acpi_get_misc_info and patch_ssdt in
hw/i386/acpi-build.c.

I think device-dependent ACPI stuff should become a QOM interface, but
you need not do that.

Paolo

  reply	other threads:[~2013-11-22  9:00 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20131111213933.GG13775@HEDWIG.INI.CMU.EDU>
     [not found] ` <20131111221821.GH13775@HEDWIG.INI.CMU.EDU>
     [not found]   ` <528E4D83.6070708@redhat.com>
2013-11-21 22:02     ` [Qemu-devel] os x boot broken by commit 11948748495841bd54721b250d68c7b3cb0475ef Gabriel L. Somlo
2013-11-22  9:00       ` Paolo Bonzini [this message]
2013-11-26 10:16         ` Michael S. Tsirkin
2013-11-26 10:06       ` Michael S. Tsirkin

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=528F1D24.8070209@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=agraf@suse.de \
    --cc=gsomlo@gmail.com \
    --cc=kraxel@redhat.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=seabios@seabios.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.