[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v4] Hvmloader: Modify ACPI to only supply _EJ0 methods for PCIslots that support hotplug by runtime patching



On Wed, Aug 20, 2014 at 02:11:48PM +0200, Fabio Fantoni wrote:
> Il 12/05/2014 16:32, Ross Philipson ha scritto:
> >On 05/12/2014 05:05 AM, Ian Campbell wrote:
> >>On Fri, 2014-05-09 at 13:32 -0400, Ross Philipson wrote:
> >>>On 05/09/2014 12:34 PM, Paul Durrant wrote:
> >>>>>-----Original Message-----
> >>>>>From: Ian Campbell
> >>>>>Sent: 09 May 2014 17:12
> >>>>>To: Konrad Rzeszutek Wilk
> >>>>>Cc: Ross Philipson; kevin@xxxxxxxxxxxx; Huangweidong (C); Hanweidong
> >>>>>(Randy); mst@xxxxxxxxxx; qemu-devel@xxxxxxxxxx; xen-
> >>>>>devel@xxxxxxxxxxxxx; fabio.fantoni@xxxxxxx;
> >>>>>johannes.krampf@xxxxxxxxxxxxxx; Gonglei (Arei); Stefano Stabellini;
> >>>>>Gaowei (UVP); Jan Beulich; Anthony Perard; Paul Durrant
> >>>>>Subject: Re: [Xen-devel] [PATCH v4] Hvmloader: Modify ACPI to only
> >>>>>supply
> >>>>>_EJ0 methods for PCIslots that support hotplug by runtime patching
> 
> Ping...
> Are there any news about this patch?

I think we are waiting on the patch submitter to do some homework
and reimplement the patch based on our feedback.
> 
> Thanks for any reply.
> 
> >>>>>
> >>>>>On Fri, 2014-05-09 at 12:00 -0400, Konrad Rzeszutek Wilk wrote:
> >>>>>
> >>>>>>So we could just then gat the _EJ0 functionality based on values
> >>>>>>that
> >>>>>>are present (or not) in the SSDT ?
> >>>>>
> >>>>>AIUI the very presence of _EJ0 is what marks the device as being
> >>>>>ejectable (e.g. in the Windows device manager).
> >>>>>
> >>>>>It would be possible to make _EJ0 conditionally turn itself into a
> >>>>>NOP
> >>>>>without resorting to an SSDT, but I don't think that solves the issue
> >>>>>they are trying to solve, which is that the user can even try to
> >>>>>eject
> >>>>>an non-hotplug device. (grep for UAR1 in our dsdt.asl and
> >>>>>acpi_info->com1_present in hvmloader/acpi/build.c for an example
> >>>>>of this
> >>>>>sort of conditional thing)
> >>>>>
> >>>
> >>>Going back to the SSDT idea. A little poking around and what not and I
> >>>came up with something like this that I build into an SSDT:
> >>>
> >>>DefinitionBlock ("SSDTX.aml", "SSDT", 2, "Xen", "HVM", 0)
> >>>{
> >>>      /* S00 device is defined in DSDT, this allows me to
> >>>       * refrence it in this SSDT
> >>>       */
> >>>      External (\_SB.PCI0.S00, DeviceObj)
> >>>
> >>>      ...
> >>>
> >>>      /* Extend the functionality of S00 */
> >>>      Scope ( \_SB.PCI0.S00 ) {
> >>>          Method(_EJ0, 1, NotSerialized)
> >>>          {
> >>>              /* Do stuffs here */
> >>>          }
> >>>      }
> >>>}
> >>
> >>Thanks, this looks like the sort of thing I was naively imagining would
> >>be possible.
> >>
> >>>So I did find some examples of this after all in my pile of ACPI
> >>>firmware snapshots from all our supported platforms.
> >>
> >>Thanks (none of the machines I looked at had PCI hotplug apparently). I
> >>was curious to know how Real Firmware Engineers(tm) dealt with this sort
> >>of issue.
> >>
> >>I was worried how real life OSPMs might interpret this method being in
> >>an SSDT instead of the DSDT. In theory it shouldn't matter, and the fact
> >>that real firmware does this seem to suggest that at least Windows
> >>treats it that way (which is a relief).
> >
> >I did actually find SSDTs that were specifically adding an _EJ0 to a
> >device scope for a device defined externally. I attached an example from a
> >Fujitsu system I have. The PRT1 device on SAT0 is external:
> >
> >External (\_SB_.PCI0.SAT0.PRT1, DeviceObj)
> >
> >And _EJ0 is added to the scope.
> >
> >>
> >>>  I think this would
> >>>work allowing you to just add or not add _EJ0 methods to the PCI
> >>>devices
> >>>you want by either using different SSDTs or doing something to generate
> >>>or munge the SSDT at runtime (which would be simpler than messing with
> >>>the DSDT I think.
> >>
> >>Without filling out the body of _EJ0 (which I tried but failed to do)
> >>your stub compiles to 60 bytes of AML, I suppose that even having filled
> >>in _EJ0 in the result would be less than, say, 128 bytes.
> >>
> >>Given that there are 32 PCI slots we would be talking about a total of
> >>4k of space in hvmloader to provide a precompiled SSDT for each slot,
> >>which can be inserted at runtime depending on each slots configuration.
> >>
> >>I wouldn't be especially surprised if the code to generate a suitable
> >>SSDT dynamically was a reasonable proportion of that size, so unless
> >>there is the possibility of needing other variants it seems like just
> >>generating each of them would be the say to go.
> >>
> >>>  I did not try it (actually I did but ran into other
> >>>problems on our platform :).
> >>
> >>;-)
> >>
> >>Ian.
> >>
> >
> >
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.