svn commit: r335632 - in head/sys: dev/vt/hw/vga x86/include x86/isa x86/x86
Konstantin Belousov
kib at FreeBSD.org
Mon Jun 25 11:01:14 UTC 2018
Author: kib
Date: Mon Jun 25 11:01:12 2018
New Revision: 335632
URL: https://svnweb.freebsd.org/changeset/base/335632
Log:
Provide a helper function acpi_get_fadt_bootflags() to fetch the FADT
x86 boot flags.
Reviewed by: royger
Sponsored by: The FreeBSD Foundation
Differential revision: https://reviews.freebsd.org/D16004
MFC after: 1 week
Modified:
head/sys/dev/vt/hw/vga/vt_vga.c
head/sys/x86/include/x86_var.h
head/sys/x86/isa/atrtc.c
head/sys/x86/x86/cpu_machdep.c
Modified: head/sys/dev/vt/hw/vga/vt_vga.c
==============================================================================
--- head/sys/dev/vt/hw/vga/vt_vga.c Mon Jun 25 10:52:41 2018 (r335631)
+++ head/sys/dev/vt/hw/vga/vt_vga.c Mon Jun 25 11:01:12 2018 (r335632)
@@ -48,9 +48,8 @@ __FBSDID("$FreeBSD$");
#include <dev/pci/pcivar.h>
#include <machine/bus.h>
-
-#if ((defined(__amd64__) || defined(__i386__)) && defined(DEV_ACPI))
-#include <contrib/dev/acpica/include/acpi.h>
+#if defined(__amd64__) || defined(__i386__)
+#include <machine/md_var.h>
#endif
struct vga_softc {
@@ -1213,36 +1212,18 @@ vga_initialize(struct vt_device *vd, int textmode)
static bool
vga_acpi_disabled(void)
{
-#if ((defined(__amd64__) || defined(__i386__)) && defined(DEV_ACPI))
- ACPI_TABLE_FADT *fadt;
- vm_paddr_t physaddr;
+#if (defined(__amd64__) || defined(__i386__)
uint16_t flags;
int ignore;
ignore = 0;
TUNABLE_INT_FETCH("hw.vga.acpi_ignore_no_vga", &ignore);
-
- if (ignore)
- return (false);
-
- physaddr = acpi_find_table(ACPI_SIG_FADT);
- if (physaddr == 0)
- return (false);
-
- fadt = acpi_map_table(physaddr, ACPI_SIG_FADT);
- if (fadt == NULL) {
- printf("vt_vga: unable to map FADT ACPI table\n");
- return (false);
- }
-
- flags = fadt->BootFlags;
- acpi_unmap_table(fadt);
-
- if (flags & ACPI_FADT_NO_VGA)
- return (true);
-#endif
-
+ if (ignore || !acpi_get_fadt_bootflags(&flags))
+ return (false);
+ return ((flags & ACPI_FADT_NO_VGA) != 0);
+#else
return (false);
+#endif
}
static int
Modified: head/sys/x86/include/x86_var.h
==============================================================================
--- head/sys/x86/include/x86_var.h Mon Jun 25 10:52:41 2018 (r335631)
+++ head/sys/x86/include/x86_var.h Mon Jun 25 11:01:12 2018 (r335632)
@@ -116,6 +116,7 @@ cpu_getmaxphyaddr(void)
#endif
}
+bool acpi_get_fadt_bootflags(uint16_t *flagsp);
void *alloc_fpusave(int flags);
void busdma_swi(void);
bool cpu_mwait_usable(void);
Modified: head/sys/x86/isa/atrtc.c
==============================================================================
--- head/sys/x86/isa/atrtc.c Mon Jun 25 10:52:41 2018 (r335631)
+++ head/sys/x86/isa/atrtc.c Mon Jun 25 11:01:12 2018 (r335632)
@@ -32,7 +32,6 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
-#include "opt_acpi.h"
#include "opt_isa.h"
#include <sys/param.h>
@@ -55,10 +54,8 @@ __FBSDID("$FreeBSD$");
#endif
#include <machine/intr_machdep.h>
#include "clock_if.h"
-
-#ifdef DEV_ACPI
#include <contrib/dev/acpica/include/acpi.h>
-#endif
+#include <machine/md_var.h>
/*
* atrtc_lock protects low-level access to individual hardware registers.
@@ -261,29 +258,12 @@ static struct isa_pnp_id atrtc_ids[] = {
static bool
atrtc_acpi_disabled(void)
{
-#ifdef DEV_ACPI
- ACPI_TABLE_FADT *fadt;
- vm_paddr_t physaddr;
uint16_t flags;
- physaddr = acpi_find_table(ACPI_SIG_FADT);
- if (physaddr == 0)
+ if (!acpi_get_fadt_bootflags(&flags))
return (false);
-
- fadt = acpi_map_table(physaddr, ACPI_SIG_FADT);
- if (fadt == NULL) {
- printf("at_rtc: unable to map FADT ACPI table\n");
- return (false);
- }
-
- flags = fadt->BootFlags;
- acpi_unmap_table(fadt);
-
- if (flags & ACPI_FADT_NO_CMOS_RTC)
+ return ((flags & ACPI_FADT_NO_CMOS_RTC) != 0);
return (true);
-#endif
-
- return (false);
}
static int
Modified: head/sys/x86/x86/cpu_machdep.c
==============================================================================
--- head/sys/x86/x86/cpu_machdep.c Mon Jun 25 10:52:41 2018 (r335631)
+++ head/sys/x86/x86/cpu_machdep.c Mon Jun 25 11:01:12 2018 (r335632)
@@ -41,6 +41,7 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
+#include "opt_acpi.h"
#include "opt_atpic.h"
#include "opt_cpu.h"
#include "opt_ddb.h"
@@ -98,6 +99,8 @@ __FBSDID("$FreeBSD$");
#include <isa/isareg.h>
+#include <contrib/dev/acpica/include/acpi.h>
+
#define STATE_RUNNING 0x0
#define STATE_MWAIT 0x1
#define STATE_SLEEPING 0x2
@@ -930,3 +933,23 @@ restore_wp(bool old_wp)
load_cr0(rcr0() | CR0_WP);
}
+bool
+acpi_get_fadt_bootflags(uint16_t *flagsp)
+{
+#ifdef DEV_ACPI
+ ACPI_TABLE_FADT *fadt;
+ vm_paddr_t physaddr;
+
+ physaddr = acpi_find_table(ACPI_SIG_FADT);
+ if (physaddr == 0)
+ return (false);
+ fadt = acpi_map_table(physaddr, ACPI_SIG_FADT);
+ if (fadt == NULL)
+ return (false);
+ *flagsp = fadt->BootFlags;
+ acpi_unmap_table(fadt);
+ return (true);
+#else
+ return (false);
+#endif
+}
More information about the svn-src-all
mailing list