[Top][All Lists]
[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