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

Re: [Xen-devel] [PATCH] Add optional ACPI device for Windows Continuum



> -----Original Message-----
> From: Andrew Cooper [mailto:andrew.cooper3@xxxxxxxxxx]
> Sent: 14 July 2016 14:21
> To: Owen Smith; xen-devel@xxxxxxxxxxxxxxxxxxxx
> Subject: Re: [Xen-devel] [PATCH] Add optional ACPI device for Windows
> Continuum
> 
> On 13/07/16 10:16, Owen Smith wrote:
> > Windows 10 supports a specific ACPI device for handling the switch
> > between tablet mode and desktop mode. The meer existance of this
> > device is the mimimum to allow tablet/desktop mode to be switched.
> > Tablet mode referes to the "undocked" state where all applications are
> > forced full screen and additional touch screen elements are added,
> > such as touch keyboard, larger icons and menus, and touch gestures for
> > ease of use.
> >
> > Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>
> 
> Are there any docs which can be referenced about this device?
> 

I must have missed the links from the comment
https://msdn.microsoft.com/en-us/library/windows/hardware/dn917883(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/windows/hardware/dn457868(v=vs.85).aspx

> > ---
> >  tools/firmware/hvmloader/acpi/Makefile      |  4 ++--
> >  tools/firmware/hvmloader/acpi/build.c       | 11 ++++++++++
> >  tools/firmware/hvmloader/acpi/ssdt_conv.asl | 31
> +++++++++++++++++++++++++++++
> >  tools/libxl/libxl_types.idl                 |  1 +
> >  tools/libxl/xl_cmdimpl.c                    |  1 +
> >  5 files changed, 46 insertions(+), 2 deletions(-)  create mode 100644
> > tools/firmware/hvmloader/acpi/ssdt_conv.asl
> >
> > diff --git a/tools/firmware/hvmloader/acpi/Makefile
> > b/tools/firmware/hvmloader/acpi/Makefile
> > index d3e882a..d75c7af 100644
> > --- a/tools/firmware/hvmloader/acpi/Makefile
> > +++ b/tools/firmware/hvmloader/acpi/Makefile
> > @@ -25,7 +25,7 @@ CFLAGS += $(CFLAGS_xeninclude)  vpath iasl $(PATH)
> >  all: acpi.a
> >
> > -ssdt_s3.h ssdt_s4.h ssdt_pm.h ssdt_tpm.h: %.h: %.asl iasl
> > +ssdt_s3.h ssdt_s4.h ssdt_conv.h ssdt_pm.h ssdt_tpm.h: %.h: %.asl iasl
> >     iasl -vs -p $* -tc $<
> >     sed -e 's/AmlCode/$*/g' $*.hex >$@
> >     rm -f $*.hex $*.aml
> > @@ -56,7 +56,7 @@ iasl:
> >     @echo
> >     @exit 1
> >
> > -build.o: ssdt_s3.h ssdt_s4.h ssdt_pm.h ssdt_tpm.h
> > +build.o: ssdt_s3.h ssdt_s4.h ssdt_conv.h ssdt_pm.h ssdt_tpm.h
> >
> >  acpi.a: $(OBJS)
> >     $(AR) rc $@ $(OBJS)
> > diff --git a/tools/firmware/hvmloader/acpi/build.c
> > b/tools/firmware/hvmloader/acpi/build.c
> > index 1f7103e..6485ac8 100644
> > --- a/tools/firmware/hvmloader/acpi/build.c
> > +++ b/tools/firmware/hvmloader/acpi/build.c
> > @@ -18,6 +18,7 @@
> >  #include "acpi2_0.h"
> >  #include "ssdt_s3.h"
> >  #include "ssdt_s4.h"
> > +#include "ssdt_conv.h"
> >  #include "ssdt_tpm.h"
> >  #include "ssdt_pm.h"
> >  #include "../config.h"
> > @@ -398,6 +399,16 @@ static int construct_secondary_tables(unsigned
> long *table_ptrs,
> >          printf("S4 disabled\n");
> >      }
> >
> > +    if ( !strncmp(xenstore_read("platform/acpi_conv", "1"), "1", 1) )
> > +    {
> > +        ssdt = mem_alloc(sizeof(ssdt_conv), 16);
> > +        if (!ssdt) return -1;
> > +        memcpy(ssdt, ssdt_conv, sizeof(ssdt_conv));
> > +        table_ptrs[nr_tables++] = (unsigned long)ssdt;
> > +    } else {
> > +        printf("Conv disabled\n");
> > +    }
> 
> I would drop this else clause.  It isn't interesting in the general case, and
> anyone who doesn't know exactly what Conv is will be confused by it.
> 

Sure

> > +
> >      /* TPM TCPA and SSDT. */
> >      tis_hdr = (uint16_t *)0xFED40F00;
> >      if ( (tis_hdr[0] == tis_signature[0]) && diff --git
> > a/tools/firmware/hvmloader/acpi/ssdt_conv.asl
> > b/tools/firmware/hvmloader/acpi/ssdt_conv.asl
> > new file mode 100644
> > index 0000000..6e20340
> > --- /dev/null
> > +++ b/tools/firmware/hvmloader/acpi/ssdt_conv.asl
> > @@ -0,0 +1,31 @@
> > +/*
> > + * ssdt_conv.asl
> > + *
> > + * Copyright (c) 2015  Citrix Systems, Inc.
> 
> Year.
> 

Ok

> > + *
> > + * This program is free software; you can redistribute it and/or
> > + modify
> > + * it under the terms of the GNU General Public License as published
> > + by
> > + * the Free Software Foundation; either version 2 of the License, or
> > + * (at your option) any later version.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + * GNU General Public License for more details.
> > + *
> > + * You should have received a copy of the GNU General Public License
> > + * along with this program; If not, see <http://www.gnu.org/licenses/>.
> 
> Be aware that there is currently an ongoing effort to re-licence all the apci
> work as LGPL, and move the acpi/ subdirectory into being a separate
> standalone library.
> 
> ~Andrew
> 
> > + */
> > +
> > +DefinitionBlock ("SSDT_CONV.aml", "SSDT", 2, "Xen", "HVM", 0) {
> > +    Device(CONV)
> > +    {
> > +        Method(_HID, 0x0, NotSerialized)
> > +        {
> > +            Return("ID9001")
> > +        }
> > +        Name(_CID, "PNP0C60")
> > +    }
> > +}
> > +

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

 


Rackspace

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