On Mon, Sep 19, 2011 at 01:27:25PM -0300, Marcelo Tosatti 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.
acpiphp_disable_slot function appears to eject all functions.
Yes but the siblings list seems to be populated from the ACPI tables, but by probing PCI functions. So we need to, at a minimum, have Device tables for all functions.
Have tested with linux/winxp/win7, hot-adding/hot-remving, single/multiple function device, they are all fine.
Does not work for me (FC12 guest). As mentioned previously, Linux driver looks for function 0 when injection request is seen (see enable_device function in acpiphp_glue.c).
What exactly are you trying to do? ATM the idea is to add all functions, add function 0 as the last one.
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.
new acpi-dst.hex(332K): http://amos-kong.rhcloud.com/pub/acpi-dsdt.hex
Signed-off-by: Amos Kong akong@redhat.com