qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@web.de>
To: Le Tan <tamlokveer@gmail.com>
Cc: qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] Why devfn will be -1
Date: Tue, 01 Jul 2014 15:08:08 +0200	[thread overview]
Message-ID: <53B2B2B8.1090600@web.de> (raw)
In-Reply-To: <CACrq+i+SuF74tQm_3bHuAjV9vuT=oofoUJXi0iLbDvCMA1nLvw@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3081 bytes --]

On 2014-07-01 15:02, Le Tan wrote:
> 2014-07-01 20:56 GMT+08:00 Jan Kiszka <jan.kiszka@web.de>:
>> On 2014-07-01 14:55, Le Tan wrote:
>>> 2014-07-01 20:52 GMT+08:00 Le Tan <tamlokveer@gmail.com>:
>>>> Hi Jan,
>>>>
>>>> 2014-07-01 15:34 GMT+08:00 Jan Kiszka <jan.kiszka@web.de>:
>>>>> Hi Le,
>>>>>
>>>>> On 2014-07-01 04:34, Le Tan wrote:
>>>>>> Hi Jan,
>>>>>> I use pci_setup_iommu() to setup a PCIIOMMUFunc for the q35 pci bus.
>>>>>> In the iommu_fn, I print out the devfn parameter and find out that it
>>>>>> sometimes will be -1. So what does it mean?
>>>>>> The detail code is here:
>>>>>>
>>>>>> In mch_init() function, I write like this:
>>>>>> PCIBus *pci_bus = PCI_BUS(qdev_get_parent_bus(DEVICE(mch)));
>>>>>> pci_setup_iommu(pci_bus, q35_host_dma_iommu, mch->iommu);
>>>>>>
>>>>>> And in q35_host_dma_iommu(PCIBus *bus, void *opaque, int devfn), I
>>>>>> print out the devfn parameter, sometimes it will be -1.
>>>>>
>>>>> Hmm, I have no idea about the reason and would suggest to set a
>>>>> conditional breakpoint on this function, then print the backtrace to see
>>>>> where this comes from and analyze the device structure from where that
>>>>> -1 was most probably taken.
>>>
>>> I think maybe this is a bug? In the function do_pci_register_device(),
>>> maybe these two sentence should be reorder?
>>> dma_as = pci_device_iommu_address_space(pci_dev);
>>> pci_dev->devfn = devfn;
>>
>> Looks like. Give it a try, then possibly send a patch :)
> I reorder these two sentences and get the print log like this:
> vtd bus 0 slot 31 func 0 devfn 248
> vtd bus 0 slot 31 func 2 devfn 250
> vtd bus 0 slot 31 func 3 devfn 251
> vtd bus 0 slot 1 func 0 devfn 8
> vtd bus 0 slot 2 func 0 devfn 16
> 
> The "info pci" output is here:
> (qemu) info pci
>   Bus  0, device   0, function 0:
>     Host bridge: PCI device 8086:29c0
>       id ""
>   Bus  0, device   1, function 0:
>     VGA controller: PCI device 1013:00b8
>       BAR0: 32 bit prefetchable memory at 0xfc000000 [0xfdffffff].
>       BAR1: 32 bit memory at 0xfebf0000 [0xfebf0fff].
>       BAR6: 32 bit memory at 0xffffffffffffffff [0x0000fffe].
>       id ""
>   Bus  0, device   2, function 0:
>     Ethernet controller: PCI device 8086:100e
>       IRQ 11.
>       BAR0: 32 bit memory at 0xfebc0000 [0xfebdffff].
>       BAR1: I/O at 0xc000 [0xc03f].
>       BAR6: 32 bit memory at 0xffffffffffffffff [0x0003fffe].
>       id ""
>   Bus  0, device  31, function 0:
>     ISA bridge: PCI device 8086:2918
>       id ""
>   Bus  0, device  31, function 2:
>     SATA controller: PCI device 8086:2922
>       IRQ 10.
>       BAR4: I/O at 0xc080 [0xc09f].
>       BAR5: 32 bit memory at 0xfebf1000 [0xfebf1fff].
>       id ""
>   Bus  0, device  31, function 3:
>     SMBus: PCI device 8086:2930
>       IRQ 10.
>       BAR4: I/O at 0x0700 [0x073f].
>       id ""
> 
> So maybe it is all right now? And I will go on the vtd emulation.:)
> Thanks very much!

Looks better :). Don't forget to send the patch against pci.c!

Jan



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 263 bytes --]

      reply	other threads:[~2014-07-01 13:08 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-01  2:34 [Qemu-devel] Why devfn will be -1 Le Tan
2014-07-01  7:34 ` Jan Kiszka
2014-07-01 12:52   ` Le Tan
2014-07-01 12:55     ` Le Tan
2014-07-01 12:56       ` Jan Kiszka
2014-07-01 13:02         ` Le Tan
2014-07-01 13:08           ` Jan Kiszka [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=53B2B2B8.1090600@web.de \
    --to=jan.kiszka@web.de \
    --cc=qemu-devel@nongnu.org \
    --cc=tamlokveer@gmail.com \
    /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).