Message ID | 1558548634-25154-1-git-send-email-igor.druzhinin@citrix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | libacpi: report PCI slots as enabled only for hotpluggable devices | expand |
>>> On 22.05.19 at 20:10, <igor.druzhinin@citrix.com> wrote: > DSDT for qemu-xen lacks _STA method of PCI slot object. If _STA method > doesn't exist then the slot is assumed to be always present and active > which in conjunction with _EJ0 method makes every device ejectable for > an OS even if it's not the case. > > qemu-kvm is able to dynamically add _EJ0 method only to those slots > that either have hotpluggable devices or free for PCI passthrough. > As Xen lacks this capability we cannot use their way. > > qemu-xen-traditional DSDT has _STA method which only reports that > the slot is present if there is a PCI devices hotplugged there. > This is done through querying of its PCI hotplug controller. > qemu-xen has similar capability that reports if device is "hotpluggable > or absent" which we can use to achieve the same result. > > Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com> Reviewed-by: Jan Beulich <jbeulich@suse.com>
On Thu, May 23, 2019 at 02:57:49AM -0600, Jan Beulich wrote: > >>> On 22.05.19 at 20:10, <igor.druzhinin@citrix.com> wrote: > > DSDT for qemu-xen lacks _STA method of PCI slot object. If _STA method > > doesn't exist then the slot is assumed to be always present and active > > which in conjunction with _EJ0 method makes every device ejectable for > > an OS even if it's not the case. > > > > qemu-kvm is able to dynamically add _EJ0 method only to those slots > > that either have hotpluggable devices or free for PCI passthrough. > > As Xen lacks this capability we cannot use their way. > > > > qemu-xen-traditional DSDT has _STA method which only reports that > > the slot is present if there is a PCI devices hotplugged there. > > This is done through querying of its PCI hotplug controller. > > qemu-xen has similar capability that reports if device is "hotpluggable > > or absent" which we can use to achieve the same result. > > > > Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com> > > Reviewed-by: Jan Beulich <jbeulich@suse.com> > Jan, FAOD since you're the maintainer I'm expecting you to push this patch yourself. Wei.
>>> On 23.05.19 at 17:20, <wei.liu2@citrix.com> wrote: > On Thu, May 23, 2019 at 02:57:49AM -0600, Jan Beulich wrote: >> >>> On 22.05.19 at 20:10, <igor.druzhinin@citrix.com> wrote: >> > DSDT for qemu-xen lacks _STA method of PCI slot object. If _STA method >> > doesn't exist then the slot is assumed to be always present and active >> > which in conjunction with _EJ0 method makes every device ejectable for >> > an OS even if it's not the case. >> > >> > qemu-kvm is able to dynamically add _EJ0 method only to those slots >> > that either have hotpluggable devices or free for PCI passthrough. >> > As Xen lacks this capability we cannot use their way. >> > >> > qemu-xen-traditional DSDT has _STA method which only reports that >> > the slot is present if there is a PCI devices hotplugged there. >> > This is done through querying of its PCI hotplug controller. >> > qemu-xen has similar capability that reports if device is "hotpluggable >> > or absent" which we can use to achieve the same result. >> > >> > Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com> >> >> Reviewed-by: Jan Beulich <jbeulich@suse.com> >> > > Jan, FAOD since you're the maintainer I'm expecting you to push this > patch yourself. Sure, I have it on my list of things to push. Jan
Jan Beulich writes ("Re: [PATCH] libacpi: report PCI slots as enabled only for hotpluggable devices"): > >>> On 23.05.19 at 17:20, <wei.liu2@citrix.com> wrote: > > On Thu, May 23, 2019 at 02:57:49AM -0600, Jan Beulich wrote: > >> >>> On 22.05.19 at 20:10, <igor.druzhinin@citrix.com> wrote: > >> > DSDT for qemu-xen lacks _STA method of PCI slot object. If _STA method > >> > doesn't exist then the slot is assumed to be always present and active > >> > which in conjunction with _EJ0 method makes every device ejectable for > >> > an OS even if it's not the case. > >> > > >> > qemu-kvm is able to dynamically add _EJ0 method only to those slots > >> > that either have hotpluggable devices or free for PCI passthrough. > >> > As Xen lacks this capability we cannot use their way. > >> > > >> > qemu-xen-traditional DSDT has _STA method which only reports that > >> > the slot is present if there is a PCI devices hotplugged there. > >> > This is done through querying of its PCI hotplug controller. > >> > qemu-xen has similar capability that reports if device is "hotpluggable > >> > or absent" which we can use to achieve the same result. > >> > > >> > Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com> > >> > >> Reviewed-by: Jan Beulich <jbeulich@suse.com> > >> > > > > Jan, FAOD since you're the maintainer I'm expecting you to push this > > patch yourself. > > Sure, I have it on my list of things to push. Is this a backport candidate ? It sounds like it might be a bugfix but I don't understand the risks/implications. Thanks, Ian.
On 05.08.2019 16:50, Ian Jackson wrote: > Jan Beulich writes ("Re: [PATCH] libacpi: report PCI slots as enabled only for hotpluggable devices"): >>>>> On 23.05.19 at 17:20, <wei.liu2@citrix.com> wrote: >>> On Thu, May 23, 2019 at 02:57:49AM -0600, Jan Beulich wrote: >>>>>>> On 22.05.19 at 20:10, <igor.druzhinin@citrix.com> wrote: >>>>> DSDT for qemu-xen lacks _STA method of PCI slot object. If _STA method >>>>> doesn't exist then the slot is assumed to be always present and active >>>>> which in conjunction with _EJ0 method makes every device ejectable for >>>>> an OS even if it's not the case. >>>>> >>>>> qemu-kvm is able to dynamically add _EJ0 method only to those slots >>>>> that either have hotpluggable devices or free for PCI passthrough. >>>>> As Xen lacks this capability we cannot use their way. >>>>> >>>>> qemu-xen-traditional DSDT has _STA method which only reports that >>>>> the slot is present if there is a PCI devices hotplugged there. >>>>> This is done through querying of its PCI hotplug controller. >>>>> qemu-xen has similar capability that reports if device is "hotpluggable >>>>> or absent" which we can use to achieve the same result. >>>>> >>>>> Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com> >>>> >>>> Reviewed-by: Jan Beulich <jbeulich@suse.com> >>>> >>> >>> Jan, FAOD since you're the maintainer I'm expecting you to push this >>> patch yourself. >> >> Sure, I have it on my list of things to push. > > Is this a backport candidate ? It sounds like it might be a bugfix > but I don't understand the risks/implications. I did already take the liberty of backporting this (back in June). Jan
diff --git a/tools/libacpi/mk_dsdt.c b/tools/libacpi/mk_dsdt.c index 2daf32c..c5ba4c0 100644 --- a/tools/libacpi/mk_dsdt.c +++ b/tools/libacpi/mk_dsdt.c @@ -439,9 +439,10 @@ int main(int argc, char **argv) pop_block(); } } else { - stmt("OperationRegion", "SEJ, SystemIO, 0xae08, 0x04"); + stmt("OperationRegion", "SEJ, SystemIO, 0xae08, 0x08"); push_block("Field", "SEJ, DWordAcc, NoLock, WriteAsZeros"); indent(); printf("B0EJ, 32,\n"); + indent(); printf("B0RM, 32,\n"); pop_block(); /* hotplug_slot */ @@ -452,6 +453,12 @@ int main(int argc, char **argv) stmt("Store", "%#010x, B0EJ", 1 << slot); } pop_block(); stmt("Name", "_SUN, %i", slot); + push_block("Method", "_STA, 0"); { + push_block("If", "And(B0RM, ShiftLeft(1, %i))", slot); + stmt("Return", "0xF"); + pop_block(); + stmt("Return", "0x0"); + } pop_block(); } pop_block(); } }
DSDT for qemu-xen lacks _STA method of PCI slot object. If _STA method doesn't exist then the slot is assumed to be always present and active which in conjunction with _EJ0 method makes every device ejectable for an OS even if it's not the case. qemu-kvm is able to dynamically add _EJ0 method only to those slots that either have hotpluggable devices or free for PCI passthrough. As Xen lacks this capability we cannot use their way. qemu-xen-traditional DSDT has _STA method which only reports that the slot is present if there is a PCI devices hotplugged there. This is done through querying of its PCI hotplug controller. qemu-xen has similar capability that reports if device is "hotpluggable or absent" which we can use to achieve the same result. Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com> --- tools/libacpi/mk_dsdt.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)