[PATCH v3] bus/pci: don't open uio device in secondary process
Konrad Sztyber
konrad.sztyber at gmail.com
Tue Jan 13 13:17:20 CET 2026
On 9/22/25 10:22 AM, chenbox at nvidia.com (Chenbo Xia) wrote:
>> +static int
>> +pci_uio_send_fd(const struct rte_mp_msg *request, const void *peer)
>> +{
>> + struct rte_pci_device *dev;
>> + const struct pci_uio_send_fd_param *param =
>> + (const struct pci_uio_send_fd_param *)request->param;
>> + struct rte_mp_msg reply = {};
>> + int fd;
>> +
>> + strlcpy(reply.name, request->name, sizeof(reply.name));
>> + TAILQ_FOREACH(dev, &rte_pci_bus.device_list, next) {
>> + if (!rte_pci_addr_cmp(&dev->addr, ¶m->addr))
>> + break;
>> + }
>> +
>> + if (dev == NULL) {
>> + PCI_LOG(ERR, "Could not find PCI device (" PCI_PRI_FMT ")",
>> + param->addr.domain, param->addr.bus,
>> + param->addr.devid, param->addr.function);
>> + goto reply;
>> + }
>> +
>> + fd = rte_intr_fd_get(dev->intr_handle);
>> + if (fd < 0) {
>> + PCI_LOG(ERR, "Could not get fd (" PCI_PRI_FMT ")",
>> + param->addr.domain, param->addr.bus,
>> + param->addr.devid, param->addr.function);
>> + goto reply;
>> + }
> Should we just return error instead of calling rte_mp_reply when dev == NULL or fd < 0?
We could, but that means that we won't send any response to the
secondary process, so it'll timeout. I figured it's better to return a
response with num_fds = 0 to let it fail immediately.
Konrad
More information about the dev
mailing list