bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: rump pci drivers backend


From: Luca dariz
Subject: Re: rump pci drivers backend
Date: Sat, 17 Sep 2016 01:35:26 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Icedove/45.2.0

Il 17/09/2016 01:12, Luca dariz ha scritto:
> Il 09/08/2016 00:21, Luca dariz ha scritto:
>> Il 30/07/2016 03:47, Olaf Buddenhagen ha scritto:
>>> On Fri, Jul 29, 2016 at 06:30:09PM +0000, Luca wrote:
>>>
>>>> I need a way to translate logical addresses to physical,
>>>
>>> Is this for DMA or something along these lines? If so, the interface for
>>> allocating "contiguous memory" that was added for the purpose of DDE
>>> should work here as well I'd presume.
>>>
>>> (I didn't like how the original interface was designed specifically, and
>>> I don't know whether in has been improved since -- but regardless, it
>>> should get the job done...)
>>>
>>> If it doesn't cut it, or this is about something else entirely, could
>>> you elaborate please?
>>>
>>
>> The contiguous memory allocation interface is not enough. I mean, at
>> least in the virtio ld driver, there are some addresses that must be
>> translated which are not allocated with vm_allocate_contiguous. However
>> I did not investigate in detail why this is needed.
> 
> I investigated a bit more, and it seems that these addresses correspond
> to buffers in the netbsd block cache, so this is the reason for not
> being allocated with vm_allocate_contiguous().. Also these buffers are
> used to read and write data. I think the virtio driver uses DMA however
> I can read and write to the underlying device apparently without problems..
> 
> Here's a simple test to show what I'm doing:
> 
> uint8_t *buf=malloc(size);
> memset(buf, 0x5a, size);
> fd = rump_sys_open(("/dev/ld0d", RUMP_O_RDWR);
> rump_sys_write(fd, buf, size);
> rump_sys_lseek(fd, 0, SEEK_SET);
> memset(buf, 0, size);
> rump_sys_read(fd, buf, size);
> ... check that I read the same that I wrote ...
> rump_sys-close(fd);
> 

I also tried to close/open the file between write and read, and to
perform them in 2 different programs. That should prevent from reading
directly from the cache itself and not the device..

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]