From: Paul Brook <paul@codesourcery.com>
To: qemu-devel@nongnu.org, adnan@khaleel.us
Cc: yamahata@valinux.co.jp
Subject: Re: [Qemu-devel] PCIe Transaction handling in Qemu
Date: Wed, 22 Dec 2010 11:24:59 +0000 [thread overview]
Message-ID: <201012221124.59926.paul@codesourcery.com> (raw)
In-Reply-To: <20101221202429.27699a64@shadowfax.no-ip.com>
> I have some questions about PCIe operations sssuming the device has MMIO
> handlers involved (as shown above).
> 1. Will all PCIe config operations
> ALWAYS use the installed config handlers? Or can PCIe config operations
> use the MMIO handlers?
Access to PCI config space is provided by the PCI host bridge. It has nothing
to do with any memory BARs the device may have. The host bridge may expose
this in any way it chooses, including but not limited to ISA IO ports or a
memory mapped region of its own. Ether way the device doesn't care.
> 2. Assuming that both PCI config and MMIO
> operations can use the MMIO handlers, is there any way I can identify if a
> transaction is a config or a memory transaction?
Incorrect assumption. Memory and Config accesses ae completely separate.
> 3.a. What address is
> passed on the MMIO handlers for config and MMIO operations? From
> pci_data_write in pci_host.c, it appears that config operations send only
> the offset into the config region. I couldn't determine what address is
> passed for MMIO operations. b. Is it an offset from the BAR for MMIO
> operations?
Th offset from the start of the region.
> c. How do I get the full physical address?
You don't. "Full physical address" is a fairly ill defined term. Physical
addresses are local to a particular bus. It's common for CPU/ram and each PCI
bus to have completely independent physical address spaces, with the host
bridge providing mapping between the two.
> d. What address does a PCIe device expect to see - physical or offset
> for?
Offset. Old versions of qemu used to pass the cpu physical address. This was a
bug.
> e. Is there anyway I can find out what the bus and device numbers are
> once inside the config and MMIO handlers? i.e once the execution has
> reached the pci_cirrus_write_config() or cirrus_vga_mem_readb(..) from the
> code above?
No. The device does not, and should not know this.
Paul
prev parent reply other threads:[~2010-12-22 11:25 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-21 20:24 [Qemu-devel] PCIe Transaction handling in Qemu Adnan Khaleel
2010-12-22 10:40 ` [Qemu-devel] " Isaku Yamahata
2010-12-22 11:24 ` Paul Brook [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201012221124.59926.paul@codesourcery.com \
--to=paul@codesourcery.com \
--cc=adnan@khaleel.us \
--cc=qemu-devel@nongnu.org \
--cc=yamahata@valinux.co.jp \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).