qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] Template for developing a Qemu device with PCIe?and MSI


From: Isaku Yamahata
Subject: Re: [Qemu-devel] Template for developing a Qemu device with PCIe?and MSI-X
Date: Thu, 26 Aug 2010 18:43:56 +0900
User-agent: Mutt/1.5.19 (2009-01-05)

On Wed, Aug 25, 2010 at 05:39:50PM -0500, Adnan Khaleel wrote:
> Hi Isaku,
> 
> I've made some progress in coding the device template but its no where near
> complete.
> 
> I've created some files and am attaching it to this note. Based on what I 
> could
> gather from the pcie source files I've made a stab at creating a simple model.
> I've also attached a file for a simple pci device that works under regular
> Qemu. I would like to duplicate its functionality in your pcie environment for
> starters.
> 
> Could you please take a look at the files I've created and tell me if I've
> understood your pcie model correctly. Any help will be truly appreciated.

pcie_msix_write_config() should call pci_default_write_config()
unless you did it so intentionally.

You also want to catch up pci api clean up.
pci_{set, get}_{byte, word, long, quad}(),
pci_config_set_vendor() ...


> 
> Adnan
> 
> The five files I've modified from your git repository are as follows
> 
> hw/pci_ids.h                    // Added vendor id defines
> hw/pc_q35.c                    // Device instantiation
> hw/pcie_msix_template.h  // Device header file
> hw/pcie_msix_template.c  // Device file
> Makefile.objs                   // Added pcie_msix_template.o to list of
> objects being built
> 
> Everything should compile without any warnings or errors.
> 
> The last file:
> sc_link_pci.c
> Is the original PCI device that I'm trying to convert into being PCIe and 
> MSI-X
> and is included merely for reference to help you understand what I'd like to
> achieve in your environment.
> 
> 
> 
>     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
>     From: Isaku Yamahata [mailto:address@hidden
>     To: Adnan Khaleel [mailto:address@hidden
>     Cc: address@hidden
>     Sent: Wed, 18 Aug 2010 22:19:04 -0500
>     Subject: Re: [Qemu-devel] Template for developing a Qemu device with PCIe
>     and MSI-X
> 
>     On Wed, Aug 18, 2010 at 02:10:10PM -0500, Adnan Khaleel wrote:
>     > Hello Qemu developers,
>     >
>     > I'm interested in developing a device model that plugs into Qemu that is
>     based
>     > on a PCIe interface and uses MSI-X. My goal is to ultimately attach a 
> GPU
>     > simulator to this PCIe interface and use the entire platfom (Qemu + GPU
>     > simulator) for studying cpu, gpu interactions.
>     >
>     > I'm not terribly familiar with the Qemu device model and I'm looking for
>     some
>     > assistance, perhaps a starting template for pcie and msi-x that would
>     offer the
>     > basic functionality that I could then build upon.
>     >
>     > I have looked at the various devices that already modelled that are
>     included
>     > with Qemu (v0.12.5 at least) and I've noticed several a few pci devices,
>     eg;
>     > ne2k and cirrus-pci etc, however only one device truly seems to utilize
>     both
>     > the technologies that I'm interested in and that is the virtio-pci.c
>     >
>     > I'm not sure what virtio-pci does so I'm not sure if that is a suitable
>     > starting point for me.
>     >
>     > Any help, suggestions etc would be extremely helpful and much
>     appreciated.
> 
>     Qemu doesn't support pcie at the moment.
>     Only partial patches have been merged, still more patches have to
>     be merged for pcie to fully work. The following repo is available.
> 
>     git clone http://people.valinux.co.jp/~yamahata/qemu/q35/qemu
>     git clone http://people.valinux.co.jp/~yamahata/qemu/q35/seabios
>     git clone http://people.valinux.co.jp/~yamahata/qemu/q35/vgabios
> 
>     Note: patched seabios and vgabios are needed, you have to pass ACPI DSDT
>     for q35.
>     example:
>     qemu-system-x86_64 -M pc_q35 -acpitable load_header,data=roms/seabios/src/
>     q35-acpi-dsdt.aml
> 
>     This repo is for those who want to try/develop pcie support,
>     not for upstream merge. So they include patches unsuitable for upstream.
>     The repo includes pcie port switch emulator which utilize pcie and
>     MSI(not MSI-X).
> 
>     The difference between PCI device and PCIe device is configuration
>     space size.
>     By setting PCIDeviceInfo::is_express = 1, you'll get 4K configuration
>     space. Helper functions for pcie are found in qemu/hw/pcie.c
>     For msi-x, see qemu/hw/msix.c.
> 
>     Thanks,
>     --
>     yamahata
> 



-- 
yamahata



reply via email to

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