All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Add optional ACPI device for Windows Continuum
@ 2016-07-13  9:16 Owen Smith
  2016-07-14 13:21 ` Andrew Cooper
  0 siblings, 1 reply; 3+ messages in thread
From: Owen Smith @ 2016-07-13  9:16 UTC (permalink / raw)
  To: xen-devel; +Cc: Owen Smith

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@citrix.com>
---
 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");
+    }
+
     /* 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.
+ *
+ * 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/>.
+ */
+
+DefinitionBlock ("SSDT_CONV.aml", "SSDT", 2, "Xen", "HVM", 0)
+{
+    Device(CONV)
+    {
+        Method(_HID, 0x0, NotSerialized)
+        {
+            Return("ID9001")
+        }
+        Name(_CID, "PNP0C60")
+    }
+}
+
diff --git a/tools/libxl/libxl_types.idl b/tools/libxl/libxl_types.idl
index ef614be..01c7c61 100644
--- a/tools/libxl/libxl_types.idl
+++ b/tools/libxl/libxl_types.idl
@@ -502,6 +502,7 @@ libxl_domain_build_info = Struct("domain_build_info",[
                                        ("acpi",             libxl_defbool),
                                        ("acpi_s3",          libxl_defbool),
                                        ("acpi_s4",          libxl_defbool),
+                                       ("acpi_conv",        libxl_defbool),
                                        ("nx",               libxl_defbool),
                                        ("viridian",         libxl_defbool),
                                        ("viridian_enable",  libxl_bitmap),
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index d1fcfa4..2db76bf 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -1574,6 +1574,7 @@ static void parse_config_data(const char *config_source,
         xlu_cfg_get_defbool(config, "acpi", &b_info->u.hvm.acpi, 0);
         xlu_cfg_get_defbool(config, "acpi_s3", &b_info->u.hvm.acpi_s3, 0);
         xlu_cfg_get_defbool(config, "acpi_s4", &b_info->u.hvm.acpi_s4, 0);
+        xlu_cfg_get_defbool(config, "acpi_conv", &b_info->u.hvm.acpi_conv, 0);
         xlu_cfg_get_defbool(config, "nx", &b_info->u.hvm.nx, 0);
         xlu_cfg_get_defbool(config, "hpet", &b_info->u.hvm.hpet, 0);
         xlu_cfg_get_defbool(config, "vpt_align", &b_info->u.hvm.vpt_align, 0);
-- 
2.1.4


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

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] Add optional ACPI device for Windows Continuum
  2016-07-13  9:16 [PATCH] Add optional ACPI device for Windows Continuum Owen Smith
@ 2016-07-14 13:21 ` Andrew Cooper
  2016-07-14 14:26   ` Owen Smith
  0 siblings, 1 reply; 3+ messages in thread
From: Andrew Cooper @ 2016-07-14 13:21 UTC (permalink / raw)
  To: Owen Smith, xen-devel

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@citrix.com>

Are there any docs which can be referenced about this device?

> ---
>  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.

> +
>      /* 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.

> + *
> + * 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@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] Add optional ACPI device for Windows Continuum
  2016-07-14 13:21 ` Andrew Cooper
@ 2016-07-14 14:26   ` Owen Smith
  0 siblings, 0 replies; 3+ messages in thread
From: Owen Smith @ 2016-07-14 14:26 UTC (permalink / raw)
  To: Andrew Cooper, xen-devel


> -----Original Message-----
> From: Andrew Cooper [mailto:andrew.cooper3@citrix.com]
> Sent: 14 July 2016 14:21
> To: Owen Smith; xen-devel@lists.xenproject.org
> 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@citrix.com>
> 
> 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@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2016-07-14 14:48 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-13  9:16 [PATCH] Add optional ACPI device for Windows Continuum Owen Smith
2016-07-14 13:21 ` Andrew Cooper
2016-07-14 14:26   ` Owen Smith

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.