At 11/02/2011 03:11 AM, Michael S. Tsirkin Write:
So here's the plan: move all hotplug handling out to ssdt, this way it'll keep working even with a user-supplied dsdt. Next step we can patch this ssdt at runtime.
There's little point in this change alone, so posting as RFC, will repost with the patching part when it's ready, posting now to present opportunity for early feedback.
Compiled only.
Hot plug on PCI bus 0 can not work with this patch. It can works without this patch.
I have met the following warning messages when hot removing a PCI device:
WARNING: at /builddir/build/BUILD/kernel-2.6.32-195.el6/linux-2.6.32-195.el6.i686/arch/x86/include/asm/dma-mapping.h:154 ___free_dma_mem_cluster+0xe1/0xf0 [sym53c8xx]() (Tainted : G W ---------------- ) Hardware name: Bochs Modules linked in: sym53c8xx scsi_transport_spi autofs4 sunrpc ipt_REJECT nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter ip_tables ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables ipv6 dm_mirror dm_region_hash dm_log virtio_net i6300esb virtio_balloon 8139too 8139cp mii i2c_piix4 i2c_core sg ext4 mbcache jbd2 virtio_blk sr_mod cdrom sd_mod crc_t10dif virtio_pci virtio_ring virtio pata_acpi ata_generic ata_piix dm_mod [last unloaded: mperf] Pid: 39, comm: kacpi_notify Tainted: G W ---------------- 2.6.32-195.el6.i686 #1 Call Trace: [<c0454b11>] ? warn_slowpath_common+0x81/0xc0 [<e13bb961>] ? ___free_dma_mem_cluster+0xe1/0xf0 [sym53c8xx] [<e13bb961>] ? ___free_dma_mem_cluster+0xe1/0xf0 [sym53c8xx] [<c0454b6b>] ? warn_slowpath_null+0x1b/0x20 [<e13bb961>] ? ___free_dma_mem_cluster+0xe1/0xf0 [sym53c8xx] [<e13bb764>] ? __sym_mfree+0xa4/0xf0 [sym53c8xx] [<e13bb806>] ? __sym_mfree_dma+0x56/0xd0 [sym53c8xx] [<e13b288f>] ? sym_free_resources+0x4f/0x70 [sym53c8xx] [<e13b2947>] ? sym_detach+0x97/0xc0 [sym53c8xx] [<e13b2994>] ? sym2_remove+0x24/0x50 [sym53c8xx] [<c0610a36>] ? pci_device_remove+0x16/0x40 [<c06b9c8d>] ? __device_release_driver+0x4d/0xb0 [<c06b9d9d>] ? device_release_driver+0x1d/0x30 [<c06b8e5c>] ? bus_remove_device+0x7c/0xe0 [<c06b6f6f>] ? device_del+0xdf/0x160 [<c06b7009>] ? device_unregister+0x19/0x60 [<c06471f9>] ? acpi_os_execute_deferred+0x0/0x23 [<c060afc6>] ? pci_stop_bus_device+0x66/0x80 [<c061fee0>] ? acpiphp_disable_slot+0x80/0x1a0 [<c06471f9>] ? acpi_os_execute_deferred+0x0/0x23 [<c0620649>] ? handle_hotplug_event_func+0xb9/0x180 [<c047b78b>] ? up+0xb/0x40 [<c064711d>] ? acpi_os_signal_semaphore+0x1e/0x23 [<c0665c14>] ? acpi_ut_release_mutex+0x50/0x53 [<c065cd5e>] ? acpi_get_data+0x4a/0x58 [<c06471f9>] ? acpi_os_execute_deferred+0x0/0x23 [<c064931e>] ? acpi_bus_get_device+0x18/0x2c [<c065481b>] ? acpi_ev_notify_dispatch+0x4c/0x55 [<c0647213>] ? acpi_os_execute_deferred+0x1a/0x23 [<c047181b>] ? worker_thread+0x11b/0x230 [<c0475f50>] ? autoremove_wake_function+0x0/0x40 [<c0471700>] ? worker_thread+0x0/0x230 [<c0475d14>] ? kthread+0x74/0x80 [<c0475ca0>] ? kthread+0x0/0x80 [<c0409fff>] ? kernel_thread_helper+0x7/0x10 ---[ end trace 1261f0bed0518ca9 ]---
Signed-off-by: Michael S. Tsirkin mst@redhat.com