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:yamah...@valinux.co.jp] > To: Adnan Khaleel [mailto:ad...@khaleel.us] > Cc: qemu-devel@nongnu.org > 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