All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
To: "Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	Marcel Apfelbaum <marcel@redhat.com>
Cc: Laszlo Ersek <lersek@redhat.com>, qemu-devel@nongnu.org, mst@redhat.com
Subject: Re: [Qemu-devel] [PATCH] pci: allow 32-bit PCI IO accesses to pass through the PCI bridge
Date: Thu, 28 Sep 2017 08:31:05 +0100	[thread overview]
Message-ID: <c0055753-30ba-7cd0-cf64-94e1679678ef@ilande.co.uk> (raw)
In-Reply-To: <20170925081140.GA2656@work-vm>

On 25/09/17 09:11, Dr. David Alan Gilbert wrote:

> * Marcel Apfelbaum (marcel@redhat.com) wrote:
>> On 23/09/2017 11:23, Mark Cave-Ayland wrote:
>>> On 22/09/17 23:18, Laszlo Ersek wrote:
>>>
>>>> On 09/22/17 14:18, Mark Cave-Ayland wrote:
>>>>> Whilst the underlying PCI bridge implementation supports 32-bit PCI IO
>>>>> accesses, unfortunately they are truncated at the legacy 64K limit.
>>>>>
>>>>> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
>>>>> ---
>>>>>   hw/pci/pci_bridge.c |    3 ++-
>>>>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/hw/pci/pci_bridge.c b/hw/pci/pci_bridge.c
>>>>> index 17feae5..a47d257 100644
>>>>> --- a/hw/pci/pci_bridge.c
>>>>> +++ b/hw/pci/pci_bridge.c
>>>>> @@ -379,7 +379,8 @@ void pci_bridge_initfn(PCIDevice *dev, const char *typename)
>>>>>       sec_bus->address_space_mem = &br->address_space_mem;
>>>>>       memory_region_init(&br->address_space_mem, OBJECT(br), "pci_bridge_pci", UINT64_MAX);
>>>>>       sec_bus->address_space_io = &br->address_space_io;
>>>>> -    memory_region_init(&br->address_space_io, OBJECT(br), "pci_bridge_io", 65536);
>>>>> +    memory_region_init(&br->address_space_io, OBJECT(br), "pci_bridge_io",
>>>>> +                       UINT32_MAX);
>>>>>       br->windows = pci_bridge_region_init(br);
>>>>>       QLIST_INIT(&sec_bus->child);
>>>>>       QLIST_INSERT_HEAD(&parent->child, sec_bus, sibling);
>>>>>
>>>>
>>
>> Hi Mark,
>>
>>>> Based on the commit message, I assume this change is guest-visible. If
>>>> so, should it be made dependent on a compat property, so that it doesn't
>>>> cause problems with migration?
>>>
>>> In order to enable 32-bit IO accesses the PCI bridge needs to set bit 0
>>> in the IO_LIMIT and IO_BASE registers - this bit is read-only to guests,
>>> so unless a PCI bridge has this bit set then it's impossible for this
>>> change to be guest visible.
>>>
>>> I did a grep for PCI_IO_RANGE_TYPE_32 and didn't see any existing users
>>> (other than an upcoming patchset from me!), so this combined with the
>>> fact that without this patch the feature is broken makes me think that I
>>> am the first user and so existing guests won't have a problem.
>>>
>>
>> (adding Dave for his expertise)
>>
>> Do you know how the migration code will behave if it will have
>> a 65k address space on source and MAX UINT on destination?
>> (and the other way around for rolling back)
> 
> Hmm not sure; we don't migrate regions explicitly; just RAMBlocks
> and devices that back them.  If the change is visible in the IO
> addresses allocated to the PCI devices or in the config space then
> it might fail.

For reference here is the link to the sun4u patch I posted yesterday
that requires this fix if anyone else would like to test:
https://lists.gnu.org/archive/html/qemu-devel/2017-09/msg07355.html.

Other than that are there any further objections to this patch?


ATB,

Mark.

  reply	other threads:[~2017-09-28  7:31 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-22 12:18 [Qemu-devel] [PATCH] pci: allow 32-bit PCI IO accesses to pass through the PCI bridge Mark Cave-Ayland
2017-09-22 21:21 ` Richard Henderson
2017-09-22 22:18 ` Laszlo Ersek
2017-09-23  8:23   ` Mark Cave-Ayland
2017-09-24 15:43     ` Marcel Apfelbaum
2017-09-24 16:56       ` Mark Cave-Ayland
2017-09-25  8:11       ` Dr. David Alan Gilbert
2017-09-28  7:31         ` Mark Cave-Ayland [this message]
2017-09-28  7:56           ` Laszlo Ersek
2017-10-01 21:44             ` Mark Cave-Ayland
2017-10-11  6:35               ` Mark Cave-Ayland
2017-10-19  9:38                 ` Marcel Apfelbaum
2017-09-28  9:19           ` Marcel Apfelbaum
2017-10-01 21:49             ` Mark Cave-Ayland

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=c0055753-30ba-7cd0-cf64-94e1679678ef@ilande.co.uk \
    --to=mark.cave-ayland@ilande.co.uk \
    --cc=dgilbert@redhat.com \
    --cc=lersek@redhat.com \
    --cc=marcel@redhat.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.