Mac OS X always run in APIC mode.
Correct me if I'n wrong.

On 24.10.2014, at 13:51, Paolo Bonzini wrote:

> On 10/24/2014 05:33 AM, Gabriel L. Somlo wrote:
>> This patch removes hard-coded assumptions about the presence of a PIIX4
>> chipset, and dynamically probes for the presence of either PIIX4 or Q35.
>> 
>> Patches 1-6 are candidates for upstream right now (modulo any feedback,
>> of course). Patch 7, however, is just an RFC at this point, and I'm
>> hoping there's a standard mechanism already present in edk2 and/or OvmfPkg
>> to accomplish what I'm doing there for the general case.
> 
> I think removing the setting of PCI_INTERRUPT_LINE could cause some
> problems, similar to the ones you have with UHCI on Q35.  So I think the
> right thing to do is to keep the setting, and also set
> PCI_INTERRUPT_LINE for Q35 (your patch 7) in the same patch.  Later we
> can implement generic handling of PCI_INTERRUPT_LINE.
> 
> Did you find out if Mac OS X runs in PIC or APIC mode?  I think
> PCI_INTERRUPT_LINE should be set as if in PIC mode, since that's the
> mode when OVMF finishes booting.
> 
> Patches 1-3 look good; patch 4 is beyond my UEFI knowledge.  For patch 5
> I don't have the spec at hand but I could review it.
> 
> Paolo
> 
>> 
>> Patch 1/7 adds macros for probing the host bridge device ID, as well as
>>  accessing ACPI power management devices and registers.
>> 
>> Patch 2/7 uses these macros to initialize ACPI power management during PEI
>> 
>> Patch 3/7 has PEI write a dynamic PCD containing the detected hostbridge
>>  device ID, for use during later stages (e.g. dxe_driver, etc)
>> 
>> Patch 4/7 splits AcpiTimerLib into three instances: 1. BaseRom, which
>>  contains no global variables and queries ACPI pmbase each time it
>>  reads the timer tick counter; 2. Base, which stores the timer tick
>>  counter address in a global after directly reading the host bridge DID
>>  from its constructor; and 3. Dxe, same as Base, but uses PCD written
>>  by PEI for host bridge DID.
>> 
>> Patch 5/7 reads the host bridge type PCD set by PEI to initialize the
>>  legacy interrupt device number. NOTE: I have not actually tested this patch.
>> 
>> Patch 6/7 uses host bridge type PCD to initialize LNK IRQ routing, and
>>  cleans up a few stale and non-functional bits of PIIX4 pci device
>>  initialization.
>> 
>> Patch 7/7 is a proof of concept or RFC, and not meant to be applied
>>  upstream in its current form. It replicates the side effects of
>>  SeaBIOS pci_bios_init_devices() assuming the *default* set of PCI
>>  devices included with the QEMU Q35 machine type.
>>  I'm looking for ideas and advice on how I could take advantage of
>>  OVMF's existing PCI bus enumeration logic, or how/where I could
>>  enumerate the PCI bus on my own to essentially port pci_bios_init_devices()
>>  from SeaBIOS, which configures the PCI_INTERRUPT_LINE (0x3c) registers
>>  based on the contents of each device's PCI_INTERRUPT_PIN (0x3d) register.
>> 
>> 
>> Any comments and feedback much appreciated!
>> 
>> Thanks,
>>  Gabriel
>> 
>> 
>> Gabriel L. Somlo (7):
>>  OvmfPkg: Factor out platform detection (q35 vs. piix4)
>>  OvmfPkg: PlatformPei: Platform specific ACPI power management setup
>>  OvmfPkg: Add PCD for Host Bridge dev. ID (PcdOvmfHostBridgePciDevId)
>>  OvmfPkg: AcpiTimerLib: Split into multiple phase-specific instances
>>  OvmfPkg: CsmSupportLib: Set/use platform specific legacy interrupt device
>>  OvmfPkg: PlatformBdsLib: Platform specific PCI IRQ routing initialization
>>  OvmfPkg: RFC: Initialize interrupt line register for default Q35 pci device 
>> set
>> 
>> OvmfPkg/Csm/CsmSupportLib/CsmSupportLib.inf        |   3 +
>> OvmfPkg/Csm/CsmSupportLib/LegacyInterrupt.c        |  27 ++++-
>> OvmfPkg/Csm/CsmSupportLib/LegacyInterrupt.h        |   6 +-
>> OvmfPkg/Include/OvmfPlatforms.h                    |  49 ++++++++
>> OvmfPkg/Library/AcpiTimerLib/AcpiTimerLib.c        | 130 
>> +--------------------
>> OvmfPkg/Library/AcpiTimerLib/AcpiTimerLib.inf      |  44 -------
>> OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLib.c    |  97 +++++++++++++++
>> OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLib.inf  |  37 ++++++
>> OvmfPkg/Library/AcpiTimerLib/BaseRomAcpiTimerLib.c | 128 ++++++++++++++++++++
>> .../Library/AcpiTimerLib/BaseRomAcpiTimerLib.inf   |  39 +++++++
>> OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.c     |  98 ++++++++++++++++
>> OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf   |  40 +++++++
>> OvmfPkg/Library/PlatformBdsLib/BdsPlatform.c       | 102 ++++++++--------
>> OvmfPkg/Library/PlatformBdsLib/BdsPlatform.h       |   2 +
>> OvmfPkg/Library/PlatformBdsLib/PlatformBdsLib.inf  |   1 +
>> OvmfPkg/OvmfPkg.dec                                |   1 +
>> OvmfPkg/OvmfPkgIa32.dsc                            |  21 ++--
>> OvmfPkg/OvmfPkgIa32X64.dsc                         |  21 ++--
>> OvmfPkg/OvmfPkgX64.dsc                             |  21 ++--
>> OvmfPkg/PlatformPei/Platform.c                     |  43 +++++--
>> OvmfPkg/PlatformPei/PlatformPei.inf                |   1 +
>> 21 files changed, 643 insertions(+), 268 deletions(-)
>> create mode 100644 OvmfPkg/Include/OvmfPlatforms.h
>> delete mode 100644 OvmfPkg/Library/AcpiTimerLib/AcpiTimerLib.inf
>> create mode 100644 OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLib.c
>> create mode 100644 OvmfPkg/Library/AcpiTimerLib/BaseAcpiTimerLib.inf
>> create mode 100644 OvmfPkg/Library/AcpiTimerLib/BaseRomAcpiTimerLib.c
>> create mode 100644 OvmfPkg/Library/AcpiTimerLib/BaseRomAcpiTimerLib.inf
>> create mode 100644 OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.c
>> create mode 100644 OvmfPkg/Library/AcpiTimerLib/DxeAcpiTimerLib.inf
>> 
> 
> ------------------------------------------------------------------------------
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/edk2-devel


------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to