[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Machine description, an alternativ using XML
From: |
Blue Swirl |
Subject: |
Re: [Qemu-devel] Machine description, an alternativ using XML |
Date: |
Thu, 26 Feb 2009 21:41:36 +0200 |
On 2/26/09, Jamie Lokier <address@hidden> wrote:
> Torbjörn Andersson wrote:
> > <MACHINE name=ARM-INTEGRATOR>
> > <OBJECT name="cpu" class="ARM926ej">
> > <ATTRIBUTE name="mhz"> <value integer="208"/> </ATTRIBUTE>
> > <ATTRIBUTE name="dtcm_size"> <value integer="8192"/> </ATTRIBUTE>
> > <snipp...>
> > <ATTRIBUTE name="memmap"> <value obj_ref=":memmap"/> </ATTRIBUTE>
> > </OBJECT>
> > <OBJECT name="memmap" class="MEMMAP">
> > </OBJECT>
> > ....
> > <OBJECT name="pic" class="pl190">
> > <ATTRIBUTE name="pic"> <value obj_ref=":cpu"/> </ATTRIBUTE>
> > <ATTRIBUTE name="memmap"> <value obj_ref=":memmap"/> </ATTRIBUTE>
> > <ATTRIBUTE name="base"> <value integer="0xc0010000"/> </ATTRIBUTE>
> > </OBJECT>
> > <MACHINE/>
>
>
> Why so verbose?
>
> <machine name="arm-integrator">
> <cpu name="cpu0" type="ARM926ej">
> <clock mhz="208"/>
> <dtcm_size>8192</dtcm_size>
> <memmap ref="memmap0"/>
> </cpu>
> <memmap name="memmap0"/>
> <pic name="pic" type="pl190">
> <memmap ref="memmap0"/>
> <cpu ref="cpu0"/>
> <base>0xc0010000</base>
> </pic>
> </machine>
>
>
> > I know you are looking at a solution based on FDT. My belief is that the
> XML
> > solution is more flexible, but I admit that I know very little about FDT.
> > Further, I believe that one can create FDTs, from the XML machine
> > definitions, in runtime and pass them to the target-os if required.
> >
> > The strong point with the XML solution is that it is very suitable for
> > modeling embedded systems where lots of GPIOs, interrupts, dma-channels,
> > i2c, spi, i2s/pcm etc.
>
>
> Isn't FDT capable of that too?
>
>
> > I know that this is will result in a large patch set but I think the FDT is
> > equally big. Further I believe we can have both schemes in QEMU in
> parallel,
> > if necessary.
>
>
> If the schemes are equivalently powerful, you can have a converter
> which sits outside QEMU. No need to implement both inside QEMU.
> People do this already, converting config files to QEMU command line
> options.
>
> Fwiw, Microsoft Virtual PC uses an XML file to describe the machine
> and it makes sense to me.
>
> Here's an example from a real VPC machine. Hmm, maybe it's a bit long.
> Is the equivalent FDT any clearer or shorter, though?
>
> -- Jamie
>
>
>
> <?xml version="1.0" encoding="UTF-16"?>
> <!-- Microsoft Virtual Machine Options and Settings -->
> <preferences>
> <version type="string">2.0</version>
> <alerts>
> <notifications>
> <no_boot_disk type="boolean">true</no_boot_disk>
> </notifications>
> </alerts>
> <hardware>
> <memory>
> <ram_size type="integer">512</ram_size>
> </memory>
> <pci_bus>
> <ethernet_adapter>
> <controller_count type="integer">1</controller_count>
> <ethernet_controller id="0">
> <virtual_network>
> <id type="bytes">12341234123412341234123412341234</id>
> <name type="string">Marvell Yukon 88E8056 PCI-E
> Gigabit Ethernet Controller</name>
> </virtual_network>
> <ethernet_card_address
> type="bytes">000123456789</ethernet_card_address>
> </ethernet_controller>
> </ethernet_adapter>
> <video_adapter>
> <vram_size type="integer">8</vram_size>
> </video_adapter>
> <ide_adapter>
> <ide_controller id="1">
> <location id="0">
> <drive_type type="integer">2</drive_type>
> <pathname>
> <absolute type="string">\\srv\Develop\Software\MS
> SQL Eval\SQLEVAL.ISO</absolute>
> <relative type="string" />
> </pathname>
> </location>
> </ide_controller>
> <ide_controller id="0">
> <location id="0">
> <drive_type type="integer">1</drive_type>
> <pathname>
> <absolute type="string">C:\Documents and
> Settings\test\My Documents\My Virtual Machines\test\test Hard
> Disk.vhd</absolute>
> <relative type="string">.\test Hard
> Disk.vhd</relative>
> </pathname>
> <undo_pathname>
> <absolute type="string" />
> <relative type="string" />
> </undo_pathname>
> </location>
> </ide_controller>
> </ide_adapter>
> </pci_bus>
> <standard>
> <name type="string">Virtual PC 2007</name>
> <version type="string">0001.0000.0000</version>
> </standard>
> <super_io>
> <floppy id="0">
> <pathname>
> <absolute type="string" />
> <relative type="string" />
> </pathname>
> </floppy>
> <floppy>
> <auto_detect type="boolean">true</auto_detect>
> </floppy>
> <parallel_port>
> <port_shared type="boolean">false</port_shared>
> <port_type type="integer">0</port_type>
> </parallel_port>
> <serial_port>
> <connect_immediately
> type="boolean">false</connect_immediately>
> </serial_port>
> </super_io>
> <bios>
> <base_board>
> <serial_number
> type="string">8886-9141-1653-9060-4025-7842-65</serial_number>
> </base_board>
> <bios_guid
> type="string">{125BDA48-420C-446E-AA48-9B597632229C}</bios_guid>
> <bios_serial_number
> type="string">8886-9141-1653-9060-4025-7842-65</bios_serial_number>
> <chassis>
> <asset_tag
> type="string">8886-9141-1653-9060-4025-7842-65</asset_tag>
> <serial_number
> type="string">8886-9141-1653-9060-4025-7842-65</serial_number>
> </chassis>
> <cmos
> type="bytes">00004000F0223F8002FFFF2F00FF3F1000003F00000000000031004C070707070666FFFF208580FF01000000200C01800CF400000000000000000000000000901A32E24A580050E999E62401002784004A2080240000000000085AACFE1032547698BAE400000000000003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000</cmos>
> <time_bytes type="bytes">42004800120002290408</time_bytes>
> </bios>
> </hardware>
> <integration>
> <microsoft>
> <mouse>
> <allow type="boolean">true</allow>
> </mouse>
> <video>
> <user_selected>
> <depth type="integer">16</depth>
> <height type="integer">480</height>
> <width type="integer">640</width>
> </user_selected>
> </video>
> <version>
> <additions_number type="string">013803</additions_number>
> <guest_os>
> <build_number type="string">5.02.3790</build_number>
> <long_name type="string">Microsoft Windows Server
> 2003</long_name>
> <revision_number type="string">Service Pack
> 2</revision_number>
> <short_name type="string">Windows Server 2003</short_name>
> <suite_name type="string">Server</suite_name>
> </guest_os>
> </version>
> </microsoft>
> </integration>
> <properties>
> <creator>
> <build type="string">6.0.156.0</build>
> <name type="string">Microsoft Virtual PC 2007</name>
> </creator>
> <modifier>
> <build type="string">6.0.156.0</build>
> <name type="string">Microsoft Virtual PC 2007</name>
> </modifier>
> </properties>
> <settings>
> <shutdown>
> <prompt type="boolean">true</prompt>
> <quit>
> <action type="integer">4</action>
> <was_running type="boolean">false</was_running>
> </quit>
> <save>
> <enable type="boolean">true</enable>
> </save>
> <shutdown>
> <enable type="boolean">true</enable>
> </shutdown>
> <turn_off>
> <enable type="boolean">true</enable>
> </turn_off>
> <last_shutdown>
> <choice type="integer">0</choice>
> <commit type="boolean">true</commit>
> </last_shutdown>
> </shutdown>
> <sound>
> <sound_adapter>
> <enable type="boolean">true</enable>
> </sound_adapter>
> </sound>
> <startup>
> <automatic>
> <type type="integer">2</type>
> </automatic>
> </startup>
> <undo_drives>
> <enabled type="boolean">false</enabled>
> <purposely_kept type="boolean">false</purposely_kept>
> <use_default type="boolean">true</use_default>
> </undo_drives>
> <video>
> <disable_resize type="boolean">false</disable_resize>
> <full_screen type="boolean">false</full_screen>
> <mode>
> <full_screen>
> <startup type="boolean">false</startup>
> </full_screen>
> </mode>
> <resolutions>
> <standard_only type="boolean">false</standard_only>
> </resolutions>
> <height type="integer">768</height>
> <left_position type="integer">1361</left_position>
> <max_height type="integer">768</max_height>
> <max_width type="integer">1024</max_width>
> <top_position type="integer">58</top_position>
> <width type="integer">1024</width>
> </video>
> <guest_os type="integer">6</guest_os>
> </settings>
> <virtual_machines>
> <hw_assist>
> <enable_hw_assist type="boolean">true</enable_hw_assist>
> </hw_assist>
> </virtual_machines>
> </preferences>
OK, so now we have:
1 - Fabrice's original proposal
2 - Paul's FDT based work
3 - Mark's FDT based work
4 - Torbjörn's XML based configuration
5 - Microsoft XML configuration
Actually this M$ version could be interesting for compatibility reasons.
Re: [Qemu-devel] Machine description, an alternativ using XML, Jamie Lokier, 2009/02/26