On Mon, Sep 19, 2011 at 01:12:30PM +0300, Gleb Natapov wrote:
On Mon, Sep 19, 2011 at 01:02:59PM +0300, Michael S. Tsirkin wrote:
On Mon, Sep 19, 2011 at 12:57:33PM +0300, Gleb Natapov wrote:
On Mon, Sep 19, 2011 at 03:27:38AM -0400, Amos Kong wrote:
Only func 0 is registered to guest driver (we can only found func 0 in slot->funcs list of driver), the other functions could not be cleaned when hot-removing the whole slot. This patch adds device per function in ACPI DSDT tables.
You can't unplug a single function. Guest surely knows that.
Looking at guest code, it's clear that at least a Linux guest doesn't know that.
Have you asked relevant maintainers why is it so? Does Windows do the same? (Obviously you can't check Windows code, but you can see if removing function zero removes other functions from the device manager, or you can even try to access other function).
If I am not mistaken, with this new DSDT you will see more then one eject options in Windows GUI from each multi-function device. Is it so?
Have tested with linux/winxp/win7, hot-adding/hot-remving, single/multiple function device, they are all fine.
What was not fine before?
Have you looked at real HW that supports PCI hot plug DSDT? Does it looks the same?
I recall I saw some examples like this on the net.
Checking real HW DSDT will validate that we are doing a right thing here.
According to Microsoft own documentation they want _EJ0 for each function: http://www.microsoft.com/china/whdc/system/pnppwr/hotadd/hotplugpci.mspx
-- Gleb.