xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: "Luis R. Rodriguez" <mcgrof@kernel.org>
To: bp@alien8.de, hpa@zytor.com, tglx@linutronix.de,
	mingo@redhat.com, rusty@rustcorp.com.au
Cc: x86@kernel.org, linux-kernel@vger.kernel.org,
	luto@amacapital.net, boris.ostrovsky@oracle.com,
	david.vrabel@citrix.com, konrad.wilk@oracle.com,
	xen-devel@lists.xensource.com, lguest@lists.ozlabs.org,
	andriy.shevchenko@linux.intel.com, jlee@suse.com, glin@suse.com,
	matt@codeblueprint.co.uk, andrew.cooper3@citrix.com,
	"Luis R. Rodriguez" <mcgrof@kernel.org>
Subject: [PATCH v4 11/14] pnpbios: replace paravirt_enabled() check with legacy device check
Date: Wed,  6 Apr 2016 17:06:31 -0700	[thread overview]
Message-ID: <1459987594-5434-12-git-send-email-mcgrof@kernel.org> (raw)
In-Reply-To: <1459987594-5434-1-git-send-email-mcgrof@kernel.org>

Since we are removing paravirt_enabled() replace it with a
logical equivalent. Even though PNPBIOS is x86 specific we
add an arch-specific type call, which can be implemented by
any architecture to show how other legacy attribute devices
can later be also checked for with other ACPI legacy attribute
flags.

This implicates the first ACPI 5.2.9.3 IA-PC Boot Architecture
ACPI_FADT_LEGACY_DEVICES flag device, and shows how to add more.

Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
---
 arch/x86/include/asm/x86_init.h   | 26 ++++++++++++++++++++++++++
 arch/x86/kernel/platform-quirks.c | 10 ++++++++++
 drivers/pnp/pnpbios/core.c        |  3 ++-
 include/linux/pnp.h               |  2 ++
 4 files changed, 40 insertions(+), 1 deletion(-)

diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h
index f3f81122ae3b..894cc29529f9 100644
--- a/arch/x86/include/asm/x86_init.h
+++ b/arch/x86/include/asm/x86_init.h
@@ -142,15 +142,41 @@ struct x86_cpuinit_ops {
 struct timespec;
 
 /**
+ * struct x86_legacy_devices - legacy x86 devices
+ *
+ * @pnpbios: this platform can have a PNPBIOS. If this is disabled the platform
+ * 	is known to never have a PNPBIOS.
+ *
+ * These are devices known to require LPC or ISA bus. The definition of legacy
+ * devices adheres to the ACPI 5.2.9.3 IA-PC Boot Architecture flag
+ * ACPI_FADT_LEGACY_DEVICES. These devices consist of user visible devices on
+ * the LPC or ISA bus. User visible devices are devices that have end-user
+ * accessible connectors (for example, LPT parallel port). Legacy devices on
+ * the LPC bus consist for example of serial and parallel ports, PS/2 keyboard
+ * / mouse, and the floppy disk controller. A system that lacks all known
+ * legacy devices can assume all devices can be detected exclusively via
+ * standard device enumeration mechanisms including the ACPI namespace.
+ *
+ * A system which has does not have ACPI_FADT_LEGACY_DEVICES enabled must not
+ * have any of the legacy devices enumerated below present.
+ */
+struct x86_legacy_devices {
+	int pnpbios;
+};
+
+/**
  * struct x86_legacy_features - legacy x86 features
  *
  * @rtc: this device has a CMOS real-time clock present
  * @ebda_search: it's safe to search for the EBDA signature in the hardware's
  * 	low RAM
+ * @devices: legacy x86 devices, refer to struct x86_legacy_devices
+ * 	documentation for further details.
  */
 struct x86_legacy_features {
 	int rtc;
 	int ebda_search;
+	struct x86_legacy_devices devices;
 };
 
 /**
diff --git a/arch/x86/kernel/platform-quirks.c b/arch/x86/kernel/platform-quirks.c
index a871b6b0e35f..742f879da871 100644
--- a/arch/x86/kernel/platform-quirks.c
+++ b/arch/x86/kernel/platform-quirks.c
@@ -8,6 +8,7 @@ void __init x86_early_init_platform_quirks(void)
 {
 	x86_platform.legacy.rtc = 1;
 	x86_platform.legacy.ebda_search = 0;
+	x86_platform.legacy.devices.pnpbios = 1;
 
 	switch (boot_params.hdr.hardware_subarch) {
 	case X86_SUBARCH_PC:
@@ -15,8 +16,17 @@ void __init x86_early_init_platform_quirks(void)
 		break;
 	case X86_SUBARCH_XEN:
 	case X86_SUBARCH_LGUEST:
+		x86_platform.legacy.devices.pnpbios = 0;
+	/* fall through */
 	case X86_SUBARCH_INTEL_MID:
 		x86_platform.legacy.rtc = 0;
 		break;
 	}
 }
+
+#if defined(CONFIG_PNPBIOS)
+bool __init arch_pnpbios_disabled(void)
+{
+	return x86_platform.legacy.devices.pnpbios == 0;
+}
+#endif
diff --git a/drivers/pnp/pnpbios/core.c b/drivers/pnp/pnpbios/core.c
index facd43b8516c..81603d99082b 100644
--- a/drivers/pnp/pnpbios/core.c
+++ b/drivers/pnp/pnpbios/core.c
@@ -521,10 +521,11 @@ static int __init pnpbios_init(void)
 	int ret;
 
 	if (pnpbios_disabled || dmi_check_system(pnpbios_dmi_table) ||
-	    paravirt_enabled()) {
+	    arch_pnpbios_disabled()) {
 		printk(KERN_INFO "PnPBIOS: Disabled\n");
 		return -ENODEV;
 	}
+
 #ifdef CONFIG_PNPACPI
 	if (!acpi_disabled && !pnpacpi_disabled) {
 		pnpbios_disabled = 1;
diff --git a/include/linux/pnp.h b/include/linux/pnp.h
index 5df733b8f704..2588ca6a9028 100644
--- a/include/linux/pnp.h
+++ b/include/linux/pnp.h
@@ -337,9 +337,11 @@ extern struct mutex pnp_res_mutex;
 
 #ifdef CONFIG_PNPBIOS
 extern struct pnp_protocol pnpbios_protocol;
+extern bool arch_pnpbios_disabled(void);
 #define pnp_device_is_pnpbios(dev) ((dev)->protocol == (&pnpbios_protocol))
 #else
 #define pnp_device_is_pnpbios(dev) 0
+#define arch_pnpbios_disabled()	false
 #endif
 
 #ifdef CONFIG_PNPACPI
-- 
2.7.2

  parent reply	other threads:[~2016-04-07  0:06 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-07  0:06 [PATCH v4 00/14] x86: remove paravirt_enabled Luis R. Rodriguez
2016-04-07  0:06 ` [PATCH v4 01/14] x86/boot: enumerate documentation for the x86 hardware_subarch Luis R. Rodriguez
2016-04-07 11:25   ` Andy Shevchenko
2016-04-07 22:36     ` Luis R. Rodriguez
2016-04-07  0:06 ` [PATCH v4 02/14] x86/xen: use X86_SUBARCH_XEN for PV guest boots Luis R. Rodriguez
2016-04-07  9:41   ` [Xen-devel] " David Vrabel
2016-04-07  0:06 ` [PATCH v4 03/14] tools/lguest: make lguest launcher use X86_SUBARCH_LGUEST explicitly Luis R. Rodriguez
2016-04-07  0:06 ` [PATCH v4 04/14] x86/rtc: replace paravirt rtc check with platform legacy quirk Luis R. Rodriguez
2016-04-07  9:42   ` [Xen-devel] " David Vrabel
2016-04-13 23:08     ` Luis R. Rodriguez
2016-04-07 12:55   ` Boris Ostrovsky
2016-04-08  0:32     ` Luis R. Rodriguez
2016-04-08  5:18       ` Juergen Gross
2016-04-08  6:29         ` Luis R. Rodriguez
2016-04-08  6:38           ` Juergen Gross
2016-04-08  6:56             ` Luis R. Rodriguez
2016-04-08  7:13               ` Juergen Gross
2016-04-08  7:36                 ` Luis R. Rodriguez
2016-04-08  7:59                   ` Juergen Gross
2016-04-08 12:37                     ` Boris Ostrovsky
2016-04-08 18:45                       ` Luis R. Rodriguez
2016-04-08 12:25           ` Boris Ostrovsky
2016-04-07  0:06 ` [PATCH v4 05/14] x86, ACPI: move ACPI_FADT_NO_CMOS_RTC check to ACPI boot code Luis R. Rodriguez
2016-04-07  0:06 ` [PATCH v4 06/14] x86/init: use a platform legacy quirk for ebda Luis R. Rodriguez
2016-04-07  9:44   ` [Xen-devel] " David Vrabel
2016-04-07 21:07     ` Luis R. Rodriguez
2016-04-07  0:06 ` [PATCH v4 07/14] tools/lguest: force disable tboot and apm Luis R. Rodriguez
2016-04-11  3:32   ` Rusty Russell
2016-04-07  0:06 ` [PATCH v4 08/14] apm32: remove paravirt_enabled() use Luis R. Rodriguez
2016-04-07 13:08   ` Boris Ostrovsky
2016-04-07 22:31     ` Luis R. Rodriguez
2016-04-07  0:06 ` [PATCH v4 09/14] x86/tboot: remove paravirt_enabled() Luis R. Rodriguez
2016-04-07  0:06 ` [PATCH v4 10/14] x86/cpu/intel: remove not needed paravirt_enabled() for f00f work around Luis R. Rodriguez
2016-04-07  0:06 ` Luis R. Rodriguez [this message]
     [not found]   ` <1459987594-5434-12-git-send-email-mcgrof-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-04-07  9:46     ` [Xen-devel] [PATCH v4 11/14] pnpbios: replace paravirt_enabled() check with legacy device check David Vrabel
2016-04-07 21:42       ` Luis R. Rodriguez
2016-04-07  0:06 ` [PATCH v4 12/14] x86, ACPI: parse ACPI_FADT_LEGACY_DEVICES Luis R. Rodriguez
2016-04-07  0:06 ` [PATCH v4 13/14] x86/init: rename ebda code file Luis R. Rodriguez
2016-04-07  0:06 ` [PATCH v4 14/14] x86/paravirt: remove paravirt_enabled() Luis R. Rodriguez
2016-04-07 13:24 ` [Xen-devel] [PATCH v4 00/14] x86: remove paravirt_enabled Juergen Gross
2016-04-07 21:31 ` [PATCH v4 13/14] x86/init: rename ebda code file Luis R. Rodriguez
2016-04-08  1:14 ` [PATCH v4 00/14] x86: remove paravirt_enabled Luis R. Rodriguez
2016-04-08 10:23   ` Borislav Petkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1459987594-5434-12-git-send-email-mcgrof@kernel.org \
    --to=mcgrof@kernel.org \
    --cc=andrew.cooper3@citrix.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=bp@alien8.de \
    --cc=david.vrabel@citrix.com \
    --cc=glin@suse.com \
    --cc=hpa@zytor.com \
    --cc=jlee@suse.com \
    --cc=konrad.wilk@oracle.com \
    --cc=lguest@lists.ozlabs.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=matt@codeblueprint.co.uk \
    --cc=mingo@redhat.com \
    --cc=rusty@rustcorp.com.au \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).