[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device
From: |
Cam Macdonell |
Subject: |
[Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device |
Date: |
Mon, 10 May 2010 09:41:18 -0600 |
On Mon, May 10, 2010 at 9:28 AM, Avi Kivity <address@hidden> wrote:
> On 05/10/2010 06:22 PM, Cam Macdonell wrote:
>>
>>>
>>>> +
>>>> + /* if the position is -1, then it's shared memory region fd */
>>>> + if (incoming_posn == -1) {
>>>> +
>>>> + s->num_eventfds = 0;
>>>> +
>>>> + if (check_shm_size(s, incoming_fd) == -1) {
>>>> + exit(-1);
>>>> + }
>>>> +
>>>> + /* creating a BAR in qemu_chr callback may be crazy */
>>>> + create_shared_memory_BAR(s, incoming_fd);
>>>>
>>>>
>>>
>>> It probably is... why can't you create it during initialization?
>>>
>>
>> This is for the shared memory server implementation, so the fd for the
>> shared memory has to be received (over the qemu char device) from the
>> server before the BAR can be created via qemu_ram_mmap() which adds
>> the necessary memory
>>
>>
>
>
> We could do the handshake during initialization. I'm worried that the
> device will appear without the BAR, and strange things will happen. But the
> chardev API is probably not geared for passing data during init.
More specifically, the challenge I've found is that there is no
function to tell a chardev to block and wait for the initialization
data.
>
> Anthony, any ideas?
>
>> Otherwise, if the BAR is allocated during initialization, I would have
>> to use MAP_FIXED to mmap the memory. This is what I did before the
>> qemu_ram_mmap() function was added.
>>
>
> What would happen to any data written to the BAR before the the handshake
> completed? I think it would disappear.
But, the BAR isn't there until the handshake is completed. Only after
receiving the shared memory fd does my device call pci_register_bar()
in the callback function. So there may be a case with BAR2 (the
shared memory BAR) missing during initialization. FWIW, I haven't
encountered this.
>
> So it's a good idea to make the initialization process atomic.
>
> --
> error compiling committee.c: too many arguments to function
>
>
- [Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device, (continued)
- [Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device, Avi Kivity, 2010/05/11
- [Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device, Anthony Liguori, 2010/05/11
- [Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device, Cam Macdonell, 2010/05/11
- [Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device, Anthony Liguori, 2010/05/11
- [Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device, Cam Macdonell, 2010/05/11
- [Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device, Avi Kivity, 2010/05/11
- [Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device, Cam Macdonell, 2010/05/12
- [Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device, Avi Kivity, 2010/05/12
- [Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device, Avi Kivity, 2010/05/11
- [Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device, Avi Kivity, 2010/05/11
- [Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device,
Cam Macdonell <=
- [Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device, Avi Kivity, 2010/05/10
- [Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device, Cam Macdonell, 2010/05/10
- [Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device, Avi Kivity, 2010/05/12
- [Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device, Cam Macdonell, 2010/05/12
- [Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device, Avi Kivity, 2010/05/12
[Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device, Cam Macdonell, 2010/05/10
[Qemu-devel] Re: [PATCH v5 4/5] Inter-VM shared memory PCI device, Cam Macdonell, 2010/05/13