Thread (25 messages) 25 messages, 3 authors, 2016-02-05

Re: [PATCH v6 1/8] eal: pci: add api to rd/wr pci bar region

From: Santosh Shukla <hidden>
Date: 2016-02-02 07:01:29

On Tue, Feb 2, 2016 at 12:30 PM, Santosh Shukla [off-list ref] wrote:
On Tue, Feb 2, 2016 at 11:13 AM, Yuanhan Liu
[off-list ref] wrote:
quoted
On Tue, Feb 02, 2016 at 09:44:14AM +0530, Santosh Shukla wrote:
quoted
quoted
quoted
+int rte_eal_pci_read_bar(const struct rte_pci_device *device,
+                      void *buf, size_t len, off_t offset,
+                      int bar_idx)
+
+{
+     const struct rte_intr_handle *intr_handle = &device->intr_handle;
I'd suggest to reference this var inside pci_vfio_read/write_bar(), and
pass device as the parmater instead.
(Sorry for late reply, I was travelling on Monday.)
Make sense.
quoted
quoted
+
+     switch (device->kdrv) {
+     case RTE_KDRV_VFIO:
+             return pci_vfio_read_bar(intr_handle, buf, len,
+                                      offset, bar_idx);
+     default:
+             RTE_LOG(ERR, EAL, "write bar not supported by driver\n");
                                   ^^^^^
typo.
Oh, r / write / read, right? sorry for typo error (:-
Right.
quoted
quoted
BTW, I have a question about this API. Obviously, reading/writing bar
space is supported with UIO (when memory resource is mmapped). And I
know why you introduced such 2 APIs, for reading IO bar.

So, here is the question: what are the 2 APIs for, for being gerneric
APIs to read/write bar spaces, or just to read IO bar spaces? If it's
former, the message is wrong; if it's later, you may better rename it
to rte_eal_pci_read/write_io_bar()?
Current use-case is virtio: It is used as io_bar which is first
bar[1]. But implementation is generic, can be used to do rd/wr for
other bar index too. Also vfio facilitate user to do rd/wr to pci_bars
w/o mapping that bar, So apis will be useful for such cases in future.

AFAIU: uio has read/write_config api only and Yes if bar region mapped
then no need to do rd/wr, user can directly access the pci_memory. But
use-case of this api entirely different: unmapped memory by
application context i.e.. vfio_rd/wr-way {pread/pwrite-way}.

Is above explanation convincing? Pl. let me know.
TBH, not really. So, as you stated, it should be generic APIs to
read/write bar space, but limiting it to VFIO only and claiming
that read/write bar space is not support by other drivers (such
as UIO) while in fact it can (in some ways) doesn't seem right
to me.
Sorry typo
I agree.. But if UIO doesn't and need could, then I am confused what
r / But if UIO doesn't and need could / But if UIO doesn't and vfio could
can be done? However we have a use-case for vfio so It make sense to
me use this api.  Or else If we all agree then I can export api only
for VFIO.. but it will violate EAL abstraction.

quoted
Anyway, it's just some thoughts from me. David, comments?

        --yliu
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help