On Fri, Mar 13, 2009 at 01:59:24PM +0900, Yuji Shimada wrote:
> This patch unmaps INTx interrupt on hot-remove.
>
> Please apply this patch after applying the following patch.
>
> [Xen-devel] [PATCH] ioemu: msi/msix clean up on hotplug remove
>
> Thanks,
> --
> Yuji Shimada
>
>
> Signed-off-by: Yuji Shimada <shimada-yxb@xxxxxxxxxxxxxxx>
>
> diff --git a/hw/pass-through.c b/hw/pass-through.c
> index ee52960..4e7f447 100644
> --- a/hw/pass-through.c
> +++ b/hw/pass-through.c
> @@ -46,6 +46,8 @@ struct dpci_infos {
>
> } dpci_infos;
>
> +char mapped_machine_irq[PT_NR_IRQS] = {0};
This only initialises the first element of mapped_machine_irq[] to 0.
> +
> /* prototype */
> static uint32_t pt_common_reg_init(struct pt_dev *ptdev,
> struct pt_reg_info_tbl *reg, uint32_t real_offset);
> @@ -3657,6 +3659,7 @@ struct pt_dev * register_real_device(PCIBus *e_bus,
> {
> machine_irq = pirq;
> assigned_device->machine_irq = pirq;
> + mapped_machine_irq[machine_irq]++;
> }
> }
>
> @@ -3737,6 +3740,19 @@ int unregister_real_device(int php_slot)
> if (assigned_device->msix)
> pt_msix_disable(assigned_device);
>
> + if (machine_irq)
> + {
> + mapped_machine_irq[machine_irq]--;
> +
> + if (mapped_machine_irq[machine_irq] == 0)
> + {
> + rc = xc_physdev_unmap_pirq(xc_handle, domid, machine_irq);
> +
> + if (rc < 0)
> + PT_LOG("Error: Unmaping of interrupt failed! rc=%d\n", rc);
> + }
> + }
> +
> /* delete all emulated config registers */
> pt_config_delete(assigned_device);
>
> diff --git a/hw/pass-through.h b/hw/pass-through.h
> index e86d311..6679fc2 100644
> --- a/hw/pass-through.h
> +++ b/hw/pass-through.h
> @@ -40,6 +40,7 @@
>
> #define PT_MACHINE_IRQ_AUTO (0xFFFFFFFF)
> #define PT_VIRT_DEVFN_AUTO (-1)
> +#define PT_NR_IRQS (256)
>
> /* Misc PCI constants that should be moved to a separate library :) */
> #define PCI_CONFIG_SIZE (256)
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
--
Simon Horman
VA Linux Systems Japan K.K., Sydney, Australia Satellite Office
H: www.vergenet.net/~horms/ W: www.valinux.co.jp/en
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|