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: Jamie Lokier
Subject: Re: [Qemu-devel] Machine description, an alternativ using XML
Date: Thu, 26 Feb 2009 09:36:40 +0000
User-agent: Mutt/1.5.13 (2006-08-11)

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>




reply via email to

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