(2010/08/03 6:53), Rafael J. Wysocki wrote: > From: Rafael J. Wysocki<rjw@xxxxxxx> > > Introduce a function allowing the caller to obtain a mask of _OSC > control bits the BIOS will allow the kernel to control for a given > PCI root bridge. > > Signed-off-by: Rafael J. Wysocki<rjw@xxxxxxx> > --- > drivers/acpi/pci_root.c | 58 ++++++++++++++++++++++++++++++++++++++++-------- > include/linux/acpi.h | 1 > 2 files changed, 50 insertions(+), 9 deletions(-) > > Index: linux-2.6/drivers/acpi/pci_root.c > =================================================================== > --- linux-2.6.orig/drivers/acpi/pci_root.c > +++ linux-2.6/drivers/acpi/pci_root.c > @@ -225,21 +225,32 @@ static acpi_status acpi_pci_run_osc(acpi > return status; > } > > -static acpi_status acpi_pci_query_osc(struct acpi_pci_root *root, u32 flags) > +static acpi_status acpi_pci_query_osc(struct acpi_pci_root *root, > + u32 support, > + u32 *control) > { > acpi_status status; > - u32 support_set, result, capbuf[3]; > + u32 result, capbuf[3]; > + > + support&= OSC_PCI_SUPPORT_MASKS; > + support |= root->osc_support_set; > > - /* do _OSC query for all possible controls */ > - support_set = root->osc_support_set | (flags& OSC_PCI_SUPPORT_MASKS); > capbuf[OSC_QUERY_TYPE] = OSC_QUERY_ENABLE; > - capbuf[OSC_SUPPORT_TYPE] = support_set; > - capbuf[OSC_CONTROL_TYPE] = OSC_PCI_CONTROL_MASKS; > + capbuf[OSC_SUPPORT_TYPE] = support; > + if (control) { > + *control&= OSC_PCI_CONTROL_MASKS; > + capbuf[OSC_CONTROL_TYPE] = *control; I think controls that are already granted to OS need to be ORed here. I.e. capbuf[OSC_CONTROL_TYPE] = root->osc_control_set | *control; Thanks, Kenji Kaneshige _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm