Lines Matching +full:memory +full:- +full:region

5  * See the COPYING file in the top-level directory.
14 #include "io/channel-util.h"
15 #include "hw/qdev-properties.h"
19 #include "hw/remote/mpqemu-link.h"
20 #include "qemu/error-report.h"
21 #include "hw/remote/proxy-memory-listener.h"
33 int pin = pci_get_byte(pci_dev->config + PCI_INTERRUPT_PIN) - 1; in proxy_intx_update()
35 if (dev->virq != -1) { in proxy_intx_update()
36 kvm_irqchip_remove_irqfd_notifier_gsi(kvm_state, &dev->intr, dev->virq); in proxy_intx_update()
37 dev->virq = -1; in proxy_intx_update()
42 dev->virq = route.irq; in proxy_intx_update()
44 if (dev->virq != -1) { in proxy_intx_update()
45 kvm_irqchip_add_irqfd_notifier_gsi(kvm_state, &dev->intr, in proxy_intx_update()
46 &dev->resample, dev->virq); in proxy_intx_update()
56 event_notifier_init(&dev->intr, 0); in setup_irqfd()
57 event_notifier_init(&dev->resample, 0); in setup_irqfd()
62 msg.fds[0] = event_notifier_get_fd(&dev->intr); in setup_irqfd()
63 msg.fds[1] = event_notifier_get_fd(&dev->resample); in setup_irqfd()
66 if (!mpqemu_msg_send(&msg, dev->ioc, &local_err)) { in setup_irqfd()
70 dev->virq = -1; in setup_irqfd()
81 uint8_t *pci_conf = device->config; in pci_proxy_dev_realize()
84 if (!dev->fd) { in pci_proxy_dev_realize()
86 DEVICE(device)->id); in pci_proxy_dev_realize()
90 fd = monitor_fd_param(monitor_cur(), dev->fd, errp); in pci_proxy_dev_realize()
91 if (fd == -1) { in pci_proxy_dev_realize()
92 error_prepend(errp, "proxy: unable to parse fd %s: ", dev->fd); in pci_proxy_dev_realize()
102 dev->ioc = qio_channel_new_fd(fd, errp); in pci_proxy_dev_realize()
103 if (!dev->ioc) { in pci_proxy_dev_realize()
108 error_setg(&dev->migration_blocker, "%s does not support migration", in pci_proxy_dev_realize()
110 if (migrate_add_blocker(&dev->migration_blocker, errp) < 0) { in pci_proxy_dev_realize()
111 object_unref(dev->ioc); in pci_proxy_dev_realize()
115 qemu_mutex_init(&dev->io_mutex); in pci_proxy_dev_realize()
116 qio_channel_set_blocking(dev->ioc, true, NULL); in pci_proxy_dev_realize()
121 proxy_memory_listener_configure(&dev->proxy_listener, dev->ioc); in pci_proxy_dev_realize()
132 if (dev->ioc) { in pci_proxy_dev_exit()
133 qio_channel_close(dev->ioc, NULL); in pci_proxy_dev_exit()
136 migrate_del_blocker(&dev->migration_blocker); in pci_proxy_dev_exit()
138 proxy_memory_listener_deconfigure(&dev->proxy_listener); in pci_proxy_dev_exit()
140 event_notifier_cleanup(&dev->intr); in pci_proxy_dev_exit()
141 event_notifier_cleanup(&dev->resample); in pci_proxy_dev_exit()
148 uint64_t ret = -EINVAL; in config_op_send()
203 k->realize = pci_proxy_dev_realize; in pci_proxy_dev_class_init()
204 k->exit = pci_proxy_dev_exit; in pci_proxy_dev_class_init()
205 k->config_read = pci_proxy_read_config; in pci_proxy_dev_class_init()
206 k->config_write = pci_proxy_write_config; in pci_proxy_dev_class_init()
233 unsigned size, bool memory) in type_init()
236 long ret = -EINVAL; in type_init()
240 msg.data.bar_access.addr = mr->addr + addr; in type_init()
242 msg.data.bar_access.memory = memory; in type_init()
266 send_bar_access_msg(pmr->dev, &pmr->mr, true, addr, &val, size, in proxy_bar_write()
267 pmr->memory); in proxy_bar_write()
275 send_bar_access_msg(pmr->dev, &pmr->mr, false, addr, &val, size, in proxy_bar_read()
276 pmr->memory); in proxy_bar_read()
301 pc->vendor_id = (uint16_t)val; in probe_pci_info()
304 pc->device_id = (uint16_t)val; in probe_pci_info()
307 pc->class_id = (uint16_t)val; in probe_pci_info()
310 pc->subsystem_id = (uint16_t)val; in probe_pci_info()
312 base_class = pc->class_id >> 4; in probe_pci_info()
315 set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); in probe_pci_info()
318 set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); in probe_pci_info()
322 set_bit(DEVICE_CATEGORY_NETWORK, dc->categories); in probe_pci_info()
325 set_bit(DEVICE_CATEGORY_INPUT, dc->categories); in probe_pci_info()
328 set_bit(DEVICE_CATEGORY_DISPLAY, dc->categories); in probe_pci_info()
331 set_bit(DEVICE_CATEGORY_CPU, dc->categories); in probe_pci_info()
334 set_bit(DEVICE_CATEGORY_MISC, dc->categories); in probe_pci_info()
353 g_autofree char *name = g_strdup_printf("bar-region-%d", i); in probe_pci_info()
354 pdev->region[i].dev = pdev; in probe_pci_info()
355 pdev->region[i].present = true; in probe_pci_info()
357 pdev->region[i].memory = true; in probe_pci_info()
359 memory_region_init_io(&pdev->region[i].mr, OBJECT(pdev), in probe_pci_info()
360 &proxy_mr_ops, &pdev->region[i], in probe_pci_info()
362 pci_register_bar(dev, i, type, &pdev->region[i].mr); in probe_pci_info()