qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] ACPI table loading [was: q35 chipset support for native


From: Isaku Yamahata
Subject: Re: [Qemu-devel] ACPI table loading [was: q35 chipset support for native pci express support]
Date: Wed, 16 Mar 2011 21:10:39 +0900
User-agent: Mutt/1.5.19 (2009-01-05)

On Wed, Mar 16, 2011 at 01:12:27PM +0300, Michael Tokarev wrote:
> 16.03.2011 12:29, Isaku Yamahata wrote:
> > This patch series adds basic q35 chipset support for native pci express
> > support. Some bios related patches are still needed.
> > For those who want to try it, the following repo is avaiable.
> > (vgabios doesn't need patches, so use the upstream one)
> > 
> > git clone http://people.valinux.co.jp/~yamahata/qemu/q35/20110316/qemu
> > git clone http://people.valinux.co.jp/~yamahata/qemu/q35/20110316/seabios
> > 
> > Example:
> > qemu-system-x86_64 ... -M pc_q35 -acpitable 
> > 'load_header,data=roms/seabios/src/q35-acpi-dsdt.aml
> 
> My question is unrelated to your q35 work, but I have a suggestion
> here: can we avoid this "load_header" thing please?  I hacked this
> area locally a while back while trying to run OEM-licensed windows
> with a SLIC table in BIOS, and wanted to come with alternative
> approach.  Now when you reminded me that again I'd rather finish
> that old thing and post a real patch...
> 
> Here's my "idea".  First, if there's no other options provided
> except of data=..., just treat it as "headerful", ie, complete with
> the header.  Or alternatively (or at the same time), recognize
> "file=" the same way as "data=".  We can go even further and load
> file/data first and patch in the other header field if specified,
> so it'll be possible to overwrite only certain parts of the header
> but load the rest of the table (complete with all other headers)
> from a file.
> 
> Does it make sense?

It sounds reasonable. As long as the patch is acceptable,
I'm willing to update the patch.
Let me summarize it. Your suggestion for -acpitable is
  
                existing behavior               your suggested way
data= only
no sig=,...     header is filled with zero      headerful
                (headerless)                    (new behaviour)
                useless behavior

with sig=...    header is created               header is created
                (headerless)                    (headerless)

thanks,

> > 
> > 
> > The motivation is to support newer hardware features because
> > piix chipset is very old.
> > Especially I have PCI express in mind and this is the basic infrastructure
> > for PCI express hot plug and PCI express native direct attach.
> > I can boot Linux with PCIe MMCONFIG with APIC mode pci interrupt routing.
> > I haven't tested other OSes.
> > 
> > The patch series consist as following
> > 
> > - Firstly, some PCI patches which introduce helper functions and so on.
> > - Then, PC initialization related patches which simplifies pc board
> >   initialization, pc_init1().
> > - Thirdly, factoring out the logics which are common to the existing
> >    piix and q35. ie. smram, pam and acpi logic.
> > - At last introduce q35 chipset emulator which is able to handle
> >   pci express natively.
> > 
> > Thanks,
> > 
> > Change from v7:
> > - heavily reorganized and improved.
> > - factoring out code duplication.
> > - improved irq routing fully.
> > 
> > Changes from split out piix specific part from pc emulator. V6
> > - rebased to 731c54f86988d3f28268f184fabfe9b2a32fb5d3
> > - PCIe MMCONFIG
> > - pci bridge related fixes
> > - chipset emulator works.
> > - IOAPIC patches
> > 
> > Changes from v5:
> > - rebased 0.11.0-rc0
> > - changed qemu_system_powerdown_register() to call
> >   qemu_system_shutdown_request() if qemu_system_shutdown() is called before
> >   registering.
> > 
> > Changes from v4:
> > - fix version number.
> > - rebased anthony's staging tree whose latest change set is
> >   62969268f876c547ee64da6d60e0f363e0f1df75
> > 
> > Changes from v3:
> > - move qemu_system_powerdown() in vl.c and more generic
> >   following the comment by Marcelo Tosatti <address@hidden>
> >   acpi.c: make qemu_system_powerdown() piix independent.
> > - define cmos_set_s3_resume_init() and cmos_set_s3_resume() in pc.c
> >   even if TARGET_I386 isn't defined following th ecommit by
> >   Paolo Bonzini <address@hidden>
> >   pc.c: remove a global variable, RTCState *rtc_state.
> > - minor compilation fixes
> > 
> > Changes from v2:
> > - clean up pc_pci_device_init() not to use unnecessary braces.
> > 
> > Changes from v1:
> > - make patches full bisectable
> > - typo s/allocte/allocate/
> > - some minor fixes
> > - dropped a merged patch
> > 
> > Isaku Yamahata (26):
> >   pci: replace the magic, 256, for the maximum of slot
> >   pci: add opaque argument to pci_map_irq_fn
> >   pci: introduce pci_swizzle_map_irq_fn() for standardized interrupt
> >     pin swizzle
> >   pci: add accessor function to get irq levels
> >   piix_pci: eliminate PIIX3State::pci_irq_levels
> >   pci_bridge: add helper function to convert PCIBridge into PCIDevice
> >   pci/p2pbr: generic pci p2p bridge
> >   apb_pci: simplify apb_pci.c by using pci_p2pbr
> >   dec_pci: simplify dec_pci.c by using pci_p2pbr
> >   ide/ahci/ich: use qdev.reset
> >   ahci: add ide device initialization helper
> >   usb/uhci: generalize initialization
> >   usb/uhci: add ich9 usb uhci id's device
> >   ide: consolidate drive_get(IF_IDE)
> >   smbus_eeprom: consolidate smbus eeprom creation
> >   pc, pc_piix: split out allocating isa irqs
> >   pc, pc_piix: split out pc nic initialization
> >   ioapic: move ioapic_init() from pc_piix.c to pc.c
> >   pc/piix_pci: factor out smram/pam logic
> >   pc, i440fx: simply i440fx initialization
> >   acpi, acpi_piix: factor out PM_TMR logic
> >   acpi, acpi_piix: factor out PM1a EVT logic
> >   acpi, acpi_piix: factor out PM1_CNT logic
> >   acpi, acpi_piix: factor out GPE logic
> >   pci_ids: add intel 82801BA pci-to-pci bridge id and
> >     PCI_CLASS_SERIAL_SMBUS
> >   pc q35 based chipset emulator
> > 
> >  Makefile.objs      |    2 +-
> >  Makefile.target    |    3 +-
> >  hw/acpi.c          |  197 ++++++++++++
> >  hw/acpi.h          |   68 ++++
> >  hw/acpi_ich9.c     |  314 +++++++++++++++++++
> >  hw/acpi_ich9.h     |   53 ++++
> >  hw/acpi_piix4.c    |  220 ++++----------
> >  hw/apb_pci.c       |   67 ++---
> >  hw/bonito.c        |    2 +-
> >  hw/dec_pci.c       |   51 +---
> >  hw/grackle_pci.c   |    2 +-
> >  hw/gt64xxx.c       |    2 +-
> >  hw/ide.h           |    6 +
> >  hw/ide/ahci.c      |   15 +
> >  hw/ide/core.c      |   14 +
> >  hw/ide/ich.c       |    9 +-
> >  hw/mips_fulong2e.c |   18 +-
> >  hw/mips_malta.c    |   22 +--
> >  hw/mips_r4k.c      |   10 +-
> >  hw/pam.c           |  128 ++++++++
> >  hw/pam.h           |   96 ++++++
> >  hw/pc.c            |   47 +++-
> >  hw/pc.h            |    7 +-
> >  hw/pc_piix.c       |   64 +----
> >  hw/pc_q35.c        |  359 +++++++++++++++++++++
> >  hw/pci.c           |   27 ++-
> >  hw/pci.h           |    6 +-
> >  hw/pci_bridge.c    |    6 +
> >  hw/pci_bridge.h    |    1 +
> >  hw/pci_ids.h       |   17 +
> >  hw/pci_internals.h |    2 +-
> >  hw/pci_p2pbr.c     |  151 +++++++++
> >  hw/pci_p2pbr.h     |   61 ++++
> >  hw/piix_pci.c      |  117 +++-----
> >  hw/ppc4xx_pci.c    |    2 +-
> >  hw/ppc_newworld.c  |   11 +-
> >  hw/ppc_oldworld.c  |   11 +-
> >  hw/ppc_prep.c      |   10 +-
> >  hw/ppce500_pci.c   |    2 +-
> >  hw/prep_pci.c      |    2 +-
> >  hw/q35.c           |  877 
> > ++++++++++++++++++++++++++++++++++++++++++++++++++++
> >  hw/q35.h           |  271 ++++++++++++++++
> >  hw/q35_smbus.c     |  154 +++++++++
> >  hw/sh_pci.c        |    2 +-
> >  hw/smbus.h         |    3 +
> >  hw/smbus_eeprom.c  |   22 ++-
> >  hw/sun4u.c         |    9 +-
> >  hw/unin_pci.c      |    2 +-
> >  hw/usb-uhci.c      |   93 +++---
> >  hw/versatile_pci.c |    2 +-
> >  50 files changed, 3116 insertions(+), 521 deletions(-)
> >  create mode 100644 hw/acpi_ich9.c
> >  create mode 100644 hw/acpi_ich9.h
> >  create mode 100644 hw/pam.c
> >  create mode 100644 hw/pam.h
> >  create mode 100644 hw/pc_q35.c
> >  create mode 100644 hw/pci_p2pbr.c
> >  create mode 100644 hw/pci_p2pbr.h
> >  create mode 100644 hw/q35.c
> >  create mode 100644 hw/q35.h
> >  create mode 100644 hw/q35_smbus.c
> > 
> > 
>       
> 

-- 
yamahata



reply via email to

[Prev in Thread] Current Thread [Next in Thread]