From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Luis R. Rodriguez" Subject: [PATCH v5 11/14] pnpbios: replace paravirt_enabled() check with legacy device check Date: Fri, 8 Apr 2016 16:40:22 -0700 Message-ID: <1460158825-13117-12-git-send-email-mcgrof@kernel.org> References: <1460158825-13117-1-git-send-email-mcgrof@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1460158825-13117-1-git-send-email-mcgrof@kernel.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: bp@alien8.de, hpa@zytor.com, tglx@linutronix.de, mingo@redhat.com, rusty@rustcorp.com.au Cc: kozerkov@parallels.com, matt@codeblueprint.co.uk, lv.zheng@intel.com, xen-devel@lists.xensource.com, joro@8bytes.org, x86@kernel.org, robert.moore@intel.com, linux-acpi@vger.kernel.org, glin@suse.com, lenb@kernel.org, josh@joshtriplett.org, jlee@suse.com, lguest@lists.ozlabs.org, boris.ostrovsky@oracle.com, andriy.shevchenko@linux.intel.com, toshi.kani@hp.com, andrew.cooper3@citrix.com, rjw@rjwysocki.net, linux-kernel@vger.kernel.org, luto@amacapital.net, "Luis R. Rodriguez" , david.vrabel@citrix.com, tiwai@suse.de List-Id: linux-acpi@vger.kernel.org U2luY2Ugd2UgYXJlIHJlbW92aW5nIHBhcmF2aXJ0X2VuYWJsZWQoKSByZXBsYWNlIGl0IHdpdGgg YQpsb2dpY2FsIGVxdWl2YWxlbnQuIEV2ZW4gdGhvdWdoIFBOUEJJT1MgaXMgeDg2IHNwZWNpZmlj IHdlCmFkZCBhbiBhcmNoLXNwZWNpZmljIHR5cGUgY2FsbCwgd2hpY2ggY2FuIGJlIGltcGxlbWVu dGVkIGJ5CmFueSBhcmNoaXRlY3R1cmUgdG8gc2hvdyBob3cgb3RoZXIgbGVnYWN5IGF0dHJpYnV0 ZSBkZXZpY2VzCmNhbiBsYXRlciBiZSBhbHNvIGNoZWNrZWQgZm9yIHdpdGggb3RoZXIgQUNQSSBs ZWdhY3kgYXR0cmlidXRlCmZsYWdzLgoKVGhpcyBpbXBsaWNhdGVzIHRoZSBmaXJzdCBBQ1BJIDUu Mi45LjMgSUEtUEMgQm9vdCBBcmNoaXRlY3R1cmUKQUNQSV9GQURUX0xFR0FDWV9ERVZJQ0VTIGZs YWcgZGV2aWNlLCBhbmQgc2hvd3MgaG93IHRvIGFkZCBtb3JlLgoKVGhlIHJlYXNvbiBwbnBiaW9z IGdldHMgYSBkZWZpbmVkIHN0cnVjdHVyZSBhbmQgYXMgc3VjaCB1c2VzCmEgZGlmZmVyZW50IGFw cHJvYWNoIHRoYW4gdGhlIFJUQyBsZWdhY3kgcXVpcmsgaXMgdGhhdCBBQ1BJCmhhcyBhIHJlc3Bl Y3RpdmUgUlRDIGZsYWcsIHdoaWxlIHBucGJpb3MgZG9lcyBub3QuIFdlIGZvbGQKdGhlIHBucGJp b3MgcXVpcmsgdW5kZXIgQUNQSV9GQURUX0xFR0FDWV9ERVZJQ0VTIEFDUEkgZmxhZwp1c2UgY2Fz ZSwgYW5kIHVzZSBhIHN0cnVjdCBvZiBwb3NzaWJsZSBkZXZpY2VzIHRvIGVuYWJsZQpmdXR1cmUg ZXh0ZW5zaW9ucyBvZiB0aGlzLgoKQXMgcGVyIDAtZGF5LCB0aGlzIGJ1bXBzIHRoZSB2bWxpbnV4 IHNpemUgdXNpbmcgaTM4Ni10aW55Y29uZmlnIGFzCmZvbGxvd3M6CgpUT1RBTCAgIFRFWFQgICBp bml0LnRleHQgICB4ODZfZWFybHlfaW5pdF9wbGF0Zm9ybV9xdWlya3MoKQorMzIgICAgICsyOCAg ICArMjggICAgICAgICArMjgKClRoYXQncyA0IGJ5dGUgb3ZlcmhlYWQgdG90YWwsIHRoZSByZXN0 IGlzIGNsZWFyZWQgb3V0IG9uIGluaXQKYXMgaXRzIGFsbCBfX2luaXQgdGV4dC4KCnYyOiBzcGxp dCBvdXQgc3ViYXJjaCBoYW5kbG5nIG9uIHN3aXRjaCB0byBtYWtlIGl0IGVhc2llcgogICAgbGF0 ZXIgdG8gYWRkIG90aGVyIHN1YmFyY2hzLiBUaGUgJ2ZhbGwtdGhyb3VnaCcgc3dpdGNoCiAgICBo YW5kbGluZyBjYW4gYmUgY29uZnVzaW5nIGFuZCB3ZSdsbCByZW1vdmUgaXQgbGF0ZXIKICAgIHdo ZW4gd2UgYWRkIGhhbmRsaW5nIGZvciBYODZfU1VCQVJDSF9DRTQxMDAuCnYzOiBkb2N1bWVudCB2 bWxpbnV4IHNpemUgaW1wYWN0IGFzIHBlciAwLWRheSwgYW5kIGFsc28KICAgIGV4cGxhaW4gd2h5 IHBucGJpb3MgaXMgdHJlYXRlZCBkaWZmZXJlbnRseSB0aGFuIHRoZQogICAgUlRDIGxlZ2FjeSBm ZWF0dXJlLgoKU2lnbmVkLW9mZi1ieTogTHVpcyBSLiBSb2RyaWd1ZXogPG1jZ3JvZkBrZXJuZWwu b3JnPgotLS0KIGFyY2gveDg2L2luY2x1ZGUvYXNtL3g4Nl9pbml0LmggICB8IDI2ICsrKysrKysr KysrKysrKysrKysrKysrKysrCiBhcmNoL3g4Ni9rZXJuZWwvcGxhdGZvcm0tcXVpcmtzLmMgfCAx MSArKysrKysrKysrKwogZHJpdmVycy9wbnAvcG5wYmlvcy9jb3JlLmMgICAgICAgIHwgIDMgKyst CiBpbmNsdWRlL2xpbnV4L3BucC5oICAgICAgICAgICAgICAgfCAgMiArKwogNCBmaWxlcyBjaGFu Z2VkLCA0MSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC94 ODYvaW5jbHVkZS9hc20veDg2X2luaXQuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3g4Nl9pbml0 LmgKaW5kZXggODlkOWQ1N2UxNDVkLi40ZGNkZjc0ZGZlZDggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3g4Nl9pbml0LmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20veDg2X2lu aXQuaApAQCAtMTQyLDE1ICsxNDIsNDEgQEAgc3RydWN0IHg4Nl9jcHVpbml0X29wcyB7CiBzdHJ1 Y3QgdGltZXNwZWM7CiAKIC8qKgorICogc3RydWN0IHg4Nl9sZWdhY3lfZGV2aWNlcyAtIGxlZ2Fj eSB4ODYgZGV2aWNlcworICoKKyAqIEBwbnBiaW9zOiB0aGlzIHBsYXRmb3JtIGNhbiBoYXZlIGEg UE5QQklPUy4gSWYgdGhpcyBpcyBkaXNhYmxlZCB0aGUgcGxhdGZvcm0KKyAqIAlpcyBrbm93biB0 byBuZXZlciBoYXZlIGEgUE5QQklPUy4KKyAqCisgKiBUaGVzZSBhcmUgZGV2aWNlcyBrbm93biB0 byByZXF1aXJlIExQQyBvciBJU0EgYnVzLiBUaGUgZGVmaW5pdGlvbiBvZiBsZWdhY3kKKyAqIGRl dmljZXMgYWRoZXJlcyB0byB0aGUgQUNQSSA1LjIuOS4zIElBLVBDIEJvb3QgQXJjaGl0ZWN0dXJl IGZsYWcKKyAqIEFDUElfRkFEVF9MRUdBQ1lfREVWSUNFUy4gVGhlc2UgZGV2aWNlcyBjb25zaXN0 IG9mIHVzZXIgdmlzaWJsZSBkZXZpY2VzIG9uCisgKiB0aGUgTFBDIG9yIElTQSBidXMuIFVzZXIg dmlzaWJsZSBkZXZpY2VzIGFyZSBkZXZpY2VzIHRoYXQgaGF2ZSBlbmQtdXNlcgorICogYWNjZXNz aWJsZSBjb25uZWN0b3JzIChmb3IgZXhhbXBsZSwgTFBUIHBhcmFsbGVsIHBvcnQpLiBMZWdhY3kg ZGV2aWNlcyBvbgorICogdGhlIExQQyBidXMgY29uc2lzdCBmb3IgZXhhbXBsZSBvZiBzZXJpYWwg YW5kIHBhcmFsbGVsIHBvcnRzLCBQUy8yIGtleWJvYXJkCisgKiAvIG1vdXNlLCBhbmQgdGhlIGZs b3BweSBkaXNrIGNvbnRyb2xsZXIuIEEgc3lzdGVtIHRoYXQgbGFja3MgYWxsIGtub3duCisgKiBs ZWdhY3kgZGV2aWNlcyBjYW4gYXNzdW1lIGFsbCBkZXZpY2VzIGNhbiBiZSBkZXRlY3RlZCBleGNs dXNpdmVseSB2aWEKKyAqIHN0YW5kYXJkIGRldmljZSBlbnVtZXJhdGlvbiBtZWNoYW5pc21zIGlu Y2x1ZGluZyB0aGUgQUNQSSBuYW1lc3BhY2UuCisgKgorICogQSBzeXN0ZW0gd2hpY2ggaGFzIGRv ZXMgbm90IGhhdmUgQUNQSV9GQURUX0xFR0FDWV9ERVZJQ0VTIGVuYWJsZWQgbXVzdCBub3QKKyAq IGhhdmUgYW55IG9mIHRoZSBsZWdhY3kgZGV2aWNlcyBlbnVtZXJhdGVkIGJlbG93IHByZXNlbnQu CisgKi8KK3N0cnVjdCB4ODZfbGVnYWN5X2RldmljZXMgeworCWludCBwbnBiaW9zOworfTsKKwor LyoqCiAgKiBzdHJ1Y3QgeDg2X2xlZ2FjeV9mZWF0dXJlcyAtIGxlZ2FjeSB4ODYgZmVhdHVyZXMK ICAqCiAgKiBAcnRjOiB0aGlzIGRldmljZSBoYXMgYSBDTU9TIHJlYWwtdGltZSBjbG9jayBwcmVz ZW50CiAgKiBAZWJkYV9zZWFyY2g6IGl0J3Mgc2FmZSB0byBzZWFyY2ggZm9yIHRoZSBFQkRBIHNp Z25hdHVyZSBpbiB0aGUgaGFyZHdhcmUncwogICogCWxvdyBSQU0KKyAqIEBkZXZpY2VzOiBsZWdh Y3kgeDg2IGRldmljZXMsIHJlZmVyIHRvIHN0cnVjdCB4ODZfbGVnYWN5X2RldmljZXMKKyAqIAlk b2N1bWVudGF0aW9uIGZvciBmdXJ0aGVyIGRldGFpbHMuCiAgKi8KIHN0cnVjdCB4ODZfbGVnYWN5 X2ZlYXR1cmVzIHsKIAlpbnQgcnRjOwogCWludCBlYmRhX3NlYXJjaDsKKwlzdHJ1Y3QgeDg2X2xl Z2FjeV9kZXZpY2VzIGRldmljZXM7CiB9OwogCiAvKioKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tl cm5lbC9wbGF0Zm9ybS1xdWlya3MuYyBiL2FyY2gveDg2L2tlcm5lbC9wbGF0Zm9ybS1xdWlya3Mu YwppbmRleCAwMWIxNTk3ODFkOTYuLmFiNjQzODI1YTdhYSAxMDA2NDQKLS0tIGEvYXJjaC94ODYv a2VybmVsL3BsYXRmb3JtLXF1aXJrcy5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9wbGF0Zm9ybS1x dWlya3MuYwpAQCAtOCw2ICs4LDcgQEAgdm9pZCBfX2luaXQgeDg2X2Vhcmx5X2luaXRfcGxhdGZv cm1fcXVpcmtzKHZvaWQpCiB7CiAJeDg2X3BsYXRmb3JtLmxlZ2FjeS5ydGMgPSAxOwogCXg4Nl9w bGF0Zm9ybS5sZWdhY3kuZWJkYV9zZWFyY2ggPSAwOworCXg4Nl9wbGF0Zm9ybS5sZWdhY3kuZGV2 aWNlcy5wbnBiaW9zID0gMTsKIAogCXN3aXRjaCAoYm9vdF9wYXJhbXMuaGRyLmhhcmR3YXJlX3N1 YmFyY2gpIHsKIAljYXNlIFg4Nl9TVUJBUkNIX1BDOgpAQCAtMTUsNiArMTYsOSBAQCB2b2lkIF9f aW5pdCB4ODZfZWFybHlfaW5pdF9wbGF0Zm9ybV9xdWlya3Modm9pZCkKIAkJYnJlYWs7CiAJY2Fz ZSBYODZfU1VCQVJDSF9YRU46CiAJY2FzZSBYODZfU1VCQVJDSF9MR1VFU1Q6CisJCXg4Nl9wbGF0 Zm9ybS5sZWdhY3kuZGV2aWNlcy5wbnBiaW9zID0gMDsKKwkJeDg2X3BsYXRmb3JtLmxlZ2FjeS5y dGMgPSAwOworCQlicmVhazsKIAljYXNlIFg4Nl9TVUJBUkNIX0lOVEVMX01JRDoKIAkJeDg2X3Bs YXRmb3JtLmxlZ2FjeS5ydGMgPSAwOwogCQlicmVhazsKQEAgLTIzLDMgKzI3LDEwIEBAIHZvaWQg X19pbml0IHg4Nl9lYXJseV9pbml0X3BsYXRmb3JtX3F1aXJrcyh2b2lkKQogCWlmICh4ODZfcGxh dGZvcm0uc2V0X2xlZ2FjeV9mZWF0dXJlcykKIAkJeDg2X3BsYXRmb3JtLnNldF9sZWdhY3lfZmVh dHVyZXMoKTsKIH0KKworI2lmIGRlZmluZWQoQ09ORklHX1BOUEJJT1MpCitib29sIF9faW5pdCBh cmNoX3BucGJpb3NfZGlzYWJsZWQodm9pZCkKK3sKKwlyZXR1cm4geDg2X3BsYXRmb3JtLmxlZ2Fj eS5kZXZpY2VzLnBucGJpb3MgPT0gMDsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9w bnAvcG5wYmlvcy9jb3JlLmMgYi9kcml2ZXJzL3BucC9wbnBiaW9zL2NvcmUuYwppbmRleCBmYWNk NDNiODUxNmMuLjgxNjAzZDk5MDgyYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wbnAvcG5wYmlvcy9j b3JlLmMKKysrIGIvZHJpdmVycy9wbnAvcG5wYmlvcy9jb3JlLmMKQEAgLTUyMSwxMCArNTIxLDEx IEBAIHN0YXRpYyBpbnQgX19pbml0IHBucGJpb3NfaW5pdCh2b2lkKQogCWludCByZXQ7CiAKIAlp ZiAocG5wYmlvc19kaXNhYmxlZCB8fCBkbWlfY2hlY2tfc3lzdGVtKHBucGJpb3NfZG1pX3RhYmxl KSB8fAotCSAgICBwYXJhdmlydF9lbmFibGVkKCkpIHsKKwkgICAgYXJjaF9wbnBiaW9zX2Rpc2Fi bGVkKCkpIHsKIAkJcHJpbnRrKEtFUk5fSU5GTyAiUG5QQklPUzogRGlzYWJsZWRcbiIpOwogCQly ZXR1cm4gLUVOT0RFVjsKIAl9CisKICNpZmRlZiBDT05GSUdfUE5QQUNQSQogCWlmICghYWNwaV9k aXNhYmxlZCAmJiAhcG5wYWNwaV9kaXNhYmxlZCkgewogCQlwbnBiaW9zX2Rpc2FibGVkID0gMTsK ZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcG5wLmggYi9pbmNsdWRlL2xpbnV4L3BucC5oCmlu ZGV4IDVkZjczM2I4ZjcwNC4uMjU4OGNhNmE5MDI4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4 L3BucC5oCisrKyBiL2luY2x1ZGUvbGludXgvcG5wLmgKQEAgLTMzNyw5ICszMzcsMTEgQEAgZXh0 ZXJuIHN0cnVjdCBtdXRleCBwbnBfcmVzX211dGV4OwogCiAjaWZkZWYgQ09ORklHX1BOUEJJT1MK IGV4dGVybiBzdHJ1Y3QgcG5wX3Byb3RvY29sIHBucGJpb3NfcHJvdG9jb2w7CitleHRlcm4gYm9v bCBhcmNoX3BucGJpb3NfZGlzYWJsZWQodm9pZCk7CiAjZGVmaW5lIHBucF9kZXZpY2VfaXNfcG5w YmlvcyhkZXYpICgoZGV2KS0+cHJvdG9jb2wgPT0gKCZwbnBiaW9zX3Byb3RvY29sKSkKICNlbHNl CiAjZGVmaW5lIHBucF9kZXZpY2VfaXNfcG5wYmlvcyhkZXYpIDAKKyNkZWZpbmUgYXJjaF9wbnBi aW9zX2Rpc2FibGVkKCkJZmFsc2UKICNlbmRpZgogCiAjaWZkZWYgQ09ORklHX1BOUEFDUEkKLS0g CjIuNy4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlz dHMueGVuLm9yZy94ZW4tZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933054AbcDHXmr (ORCPT ); Fri, 8 Apr 2016 19:42:47 -0400 Received: from mail.kernel.org ([198.145.29.136]:39912 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932929AbcDHXlE (ORCPT ); Fri, 8 Apr 2016 19:41:04 -0400 From: "Luis R. Rodriguez" 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, rjw@rjwysocki.net, lenb@kernel.org, robert.moore@intel.com, lv.zheng@intel.com, toshi.kani@hp.com, linux-acpi@vger.kernel.org, kozerkov@parallels.com, josh@joshtriplett.org, joro@8bytes.org, tiwai@suse.de, "Luis R. Rodriguez" Subject: [PATCH v5 11/14] pnpbios: replace paravirt_enabled() check with legacy device check Date: Fri, 8 Apr 2016 16:40:22 -0700 Message-Id: <1460158825-13117-12-git-send-email-mcgrof@kernel.org> X-Mailer: git-send-email 2.7.0 In-Reply-To: <1460158825-13117-1-git-send-email-mcgrof@kernel.org> References: <1460158825-13117-1-git-send-email-mcgrof@kernel.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.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. The reason pnpbios gets a defined structure and as such uses a different approach than the RTC legacy quirk is that ACPI has a respective RTC flag, while pnpbios does not. We fold the pnpbios quirk under ACPI_FADT_LEGACY_DEVICES ACPI flag use case, and use a struct of possible devices to enable future extensions of this. As per 0-day, this bumps the vmlinux size using i386-tinyconfig as follows: TOTAL TEXT init.text x86_early_init_platform_quirks() +32 +28 +28 +28 That's 4 byte overhead total, the rest is cleared out on init as its all __init text. v2: split out subarch handlng on switch to make it easier later to add other subarchs. The 'fall-through' switch handling can be confusing and we'll remove it later when we add handling for X86_SUBARCH_CE4100. v3: document vmlinux size impact as per 0-day, and also explain why pnpbios is treated differently than the RTC legacy feature. Signed-off-by: Luis R. Rodriguez --- arch/x86/include/asm/x86_init.h | 26 ++++++++++++++++++++++++++ arch/x86/kernel/platform-quirks.c | 11 +++++++++++ drivers/pnp/pnpbios/core.c | 3 ++- include/linux/pnp.h | 2 ++ 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h index 89d9d57e145d..4dcdf74dfed8 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 01b159781d96..ab643825a7aa 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,6 +16,9 @@ void __init x86_early_init_platform_quirks(void) break; case X86_SUBARCH_XEN: case X86_SUBARCH_LGUEST: + x86_platform.legacy.devices.pnpbios = 0; + x86_platform.legacy.rtc = 0; + break; case X86_SUBARCH_INTEL_MID: x86_platform.legacy.rtc = 0; break; @@ -23,3 +27,10 @@ void __init x86_early_init_platform_quirks(void) if (x86_platform.set_legacy_features) x86_platform.set_legacy_features(); } + +#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