[SeaBIOS] [SeaBIOS PATCH 2/2] hotplug: Add device per func in ACPI DSDT tables

Michael S. Tsirkin mst at redhat.com
Mon Sep 19 21:08:30 CEST 2011


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 at redhat.com>



More information about the SeaBIOS mailing list