qemu-devel
[Top][All Lists]
Advanced

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




reply via email to

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