[SPDK] Re: Can I use spdk_pci_hook_device to implement a virtual NVMe device?

Harris, James R <james.r.harris at intel.com>
Newsgroups dev.linux.lists.spdk
Message-ID <[email protected]>
Hi Oscar,

Have you tried a signal handler to trap writes to the virtual BAR?  Then your handler can get the fault address and do whatever actions it needs.

-Jim


On 4/23/20, 6:30 PM, "oscar.huang(a)microchip.com" <oscar.huang(a)microchip.com> wrote:

    I'd like to create a virtual NVMe device and use SPDK NVMe APIs to operate it. It looks like spdk_pci_hook_device() can add a virtual PCI device to SPDK PCI system:

    void spdk_pci_hook_device(struct spdk_pci_driver *drv, struct spdk_pci_device *dev);

    But the struct spdk_pci_device only contains the following callbacks:
        int (*map_bar)(struct spdk_pci_device *dev, uint32_t bar, 
                   void **mapped_addr, uint64_t *phys_addr, uint64_t *size);
        int (*unmap_bar)(struct spdk_pci_device *dev, uint32_t bar, 
                 void *addr);
        int (*cfg_read)(struct spdk_pci_device *dev, void *value,
                uint32_t len, uint32_t offset);
        int (*cfg_write)(struct spdk_pci_device *dev, void *value,
                 uint32_t len, uint32_t offset);
        void (*detach)(struct spdk_pci_device *dev);

    It does not have mmio callbacks. When applications write a device memory, sometimes it needs to trigger some actions on the device. Without mmio callbacks, how to make a useful virtual device with spdk_pci_hook_device? Pls suggest. Much appreciated!
    _______________________________________________
    SPDK mailing list -- spdk(a)lists.01.org
    To unsubscribe send an email to spdk-leave(a)lists.01.org
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.