Pull up following revision(s) (requested by nonaka in ticket #502): sys/arch/x86/x86/hyperv.c: revision 1.5 sys/arch/x86/include/genfb_machdep.h: revision 1.4 sys/arch/x86/x86/genfb_machdep.c: revision 1.15 Prevent panic when attaching genfb if using a serial console with Hyper-V Gen.2.diff -r1.3 -r1.3.60.1 src/sys/arch/x86/include/genfb_machdep.h
(martin)
--- src/sys/arch/x86/include/genfb_machdep.h 2011/02/09 13:24:23 1.3
+++ src/sys/arch/x86/include/genfb_machdep.h 2019/12/08 13:09:28 1.3.60.1
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | /* $NetBSD: genfb_machdep.h,v 1.3 2011/02/09 13:24:23 jmcneill Exp $ */ | 1 | /* $NetBSD: genfb_machdep.h,v 1.3.60.1 2019/12/08 13:09:28 martin Exp $ */ | |
2 | 2 | |||
3 | /*- | 3 | /*- | |
4 | * Copyright (c) 2009 Jared D. McNeill <jmcneill@invisible.ca> | 4 | * Copyright (c) 2009 Jared D. McNeill <jmcneill@invisible.ca> | |
5 | * All rights reserved. | 5 | * All rights reserved. | |
6 | * | 6 | * | |
7 | * Redistribution and use in source and binary forms, with or without | 7 | * Redistribution and use in source and binary forms, with or without | |
8 | * modification, are permitted provided that the following conditions | 8 | * modification, are permitted provided that the following conditions | |
9 | * are met: | 9 | * are met: | |
10 | * 1. Redistributions of source code must retain the above copyright | 10 | * 1. Redistributions of source code must retain the above copyright | |
11 | * notice, this list of conditions and the following disclaimer. | 11 | * notice, this list of conditions and the following disclaimer. | |
12 | * 2. Redistributions in binary form must reproduce the above copyright | 12 | * 2. Redistributions in binary form must reproduce the above copyright | |
13 | * notice, this list of conditions and the following disclaimer in the | 13 | * notice, this list of conditions and the following disclaimer in the | |
14 | * documentation and/or other materials provided with the distribution. | 14 | * documentation and/or other materials provided with the distribution. | |
@@ -19,19 +19,20 @@ | @@ -19,19 +19,20 @@ | |||
19 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | 19 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | |
20 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 20 | * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | 23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
26 | * POSSIBILITY OF SUCH DAMAGE. | 26 | * POSSIBILITY OF SUCH DAMAGE. | |
27 | */ | 27 | */ | |
28 | 28 | |||
29 | #ifndef _X86_GENFB_MACHDEP_H | 29 | #ifndef _X86_GENFB_MACHDEP_H | |
30 | #define _X86_GENFB_MACHDEP_H | 30 | #define _X86_GENFB_MACHDEP_H | |
31 | 31 | |||
32 | int x86_genfb_init(void); | |||
32 | int x86_genfb_cnattach(void); | 33 | int x86_genfb_cnattach(void); | |
33 | void x86_genfb_mtrr_init(uint64_t, uint32_t); | 34 | void x86_genfb_mtrr_init(uint64_t, uint32_t); | |
34 | void x86_genfb_set_console_dev(device_t); | 35 | void x86_genfb_set_console_dev(device_t); | |
35 | void x86_genfb_ddb_trap_callback(int); | 36 | void x86_genfb_ddb_trap_callback(int); | |
36 | 37 | |||
37 | #endif /* !_X86_GENFB_MACHDEP_H */ | 38 | #endif /* !_X86_GENFB_MACHDEP_H */ |
--- src/sys/arch/x86/x86/genfb_machdep.c 2019/05/19 07:43:17 1.13
+++ src/sys/arch/x86/x86/genfb_machdep.c 2019/12/08 13:09:28 1.13.2.1
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | /* $NetBSD: genfb_machdep.c,v 1.13 2019/05/19 07:43:17 mlelstv Exp $ */ | 1 | /* $NetBSD: genfb_machdep.c,v 1.13.2.1 2019/12/08 13:09:28 martin Exp $ */ | |
2 | 2 | |||
3 | /*- | 3 | /*- | |
4 | * Copyright (c) 2009 Jared D. McNeill <jmcneill@invisible.ca> | 4 | * Copyright (c) 2009 Jared D. McNeill <jmcneill@invisible.ca> | |
5 | * All rights reserved. | 5 | * All rights reserved. | |
6 | * | 6 | * | |
7 | * Redistribution and use in source and binary forms, with or without | 7 | * Redistribution and use in source and binary forms, with or without | |
8 | * modification, are permitted provided that the following conditions | 8 | * modification, are permitted provided that the following conditions | |
9 | * are met: | 9 | * are met: | |
10 | * 1. Redistributions of source code must retain the above copyright | 10 | * 1. Redistributions of source code must retain the above copyright | |
11 | * notice, this list of conditions and the following disclaimer. | 11 | * notice, this list of conditions and the following disclaimer. | |
12 | * 2. Redistributions in binary form must reproduce the above copyright | 12 | * 2. Redistributions in binary form must reproduce the above copyright | |
13 | * notice, this list of conditions and the following disclaimer in the | 13 | * notice, this list of conditions and the following disclaimer in the | |
14 | * documentation and/or other materials provided with the distribution. | 14 | * documentation and/or other materials provided with the distribution. | |
@@ -21,27 +21,27 @@ | @@ -21,27 +21,27 @@ | |||
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | 23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
26 | * POSSIBILITY OF SUCH DAMAGE. | 26 | * POSSIBILITY OF SUCH DAMAGE. | |
27 | */ | 27 | */ | |
28 | 28 | |||
29 | /* | 29 | /* | |
30 | * Early attach support for raster consoles | 30 | * Early attach support for raster consoles | |
31 | */ | 31 | */ | |
32 | 32 | |||
33 | #include <sys/cdefs.h> | 33 | #include <sys/cdefs.h> | |
34 | __KERNEL_RCSID(0, "$NetBSD: genfb_machdep.c,v 1.13 2019/05/19 07:43:17 mlelstv Exp $"); | 34 | __KERNEL_RCSID(0, "$NetBSD: genfb_machdep.c,v 1.13.2.1 2019/12/08 13:09:28 martin Exp $"); | |
35 | 35 | |||
36 | #include "opt_mtrr.h" | 36 | #include "opt_mtrr.h" | |
37 | 37 | |||
38 | #include <sys/param.h> | 38 | #include <sys/param.h> | |
39 | #include <sys/conf.h> | 39 | #include <sys/conf.h> | |
40 | #include <sys/device.h> | 40 | #include <sys/device.h> | |
41 | #include <sys/ioctl.h> | 41 | #include <sys/ioctl.h> | |
42 | #include <sys/kernel.h> | 42 | #include <sys/kernel.h> | |
43 | #include <sys/kmem.h> | 43 | #include <sys/kmem.h> | |
44 | #include <sys/lwp.h> | 44 | #include <sys/lwp.h> | |
45 | 45 | |||
46 | #include <sys/bus.h> | 46 | #include <sys/bus.h> | |
47 | #include <machine/bootinfo.h> | 47 | #include <machine/bootinfo.h> | |
@@ -126,43 +126,39 @@ x86_genfb_mtrr_init(uint64_t physaddr, u | @@ -126,43 +126,39 @@ x86_genfb_mtrr_init(uint64_t physaddr, u | |||
126 | error = mtrr_set(&mtrr, &n, curlwp->l_proc, MTRR_GETSET_KERNEL); | 126 | error = mtrr_set(&mtrr, &n, curlwp->l_proc, MTRR_GETSET_KERNEL); | |
127 | if (n != 0) | 127 | if (n != 0) | |
128 | mtrr_commit(); | 128 | mtrr_commit(); | |
129 | KERNEL_UNLOCK_ONE(NULL); | 129 | KERNEL_UNLOCK_ONE(NULL); | |
130 | 130 | |||
131 | aprint_debug("%s: mtrr_set returned %d\n", __func__, error); | 131 | aprint_debug("%s: mtrr_set returned %d\n", __func__, error); | |
132 | #else | 132 | #else | |
133 | aprint_debug("%s: kernel lacks MTRR option\n", __func__); | 133 | aprint_debug("%s: kernel lacks MTRR option\n", __func__); | |
134 | #endif | 134 | #endif | |
135 | #endif | 135 | #endif | |
136 | } | 136 | } | |
137 | 137 | |||
138 | int | 138 | int | |
139 | x86_genfb_cnattach(void) | 139 | x86_genfb_init(void) | |
140 | { | 140 | { | |
141 | static int ncalls = 0; | 141 | static int inited, attached; | |
142 | struct rasops_info *ri = &x86_genfb_console_screen.scr_ri; | 142 | struct rasops_info *ri = &x86_genfb_console_screen.scr_ri; | |
143 | const struct btinfo_framebuffer *fbinfo; | 143 | const struct btinfo_framebuffer *fbinfo; | |
144 | bus_space_tag_t t = x86_bus_space_mem; | 144 | bus_space_tag_t t = x86_bus_space_mem; | |
145 | bus_space_handle_t h; | 145 | bus_space_handle_t h; | |
146 | void *bits; | 146 | void *bits; | |
147 | long defattr; | |||
148 | int err; | 147 | int err; | |
149 | 148 | |||
150 | /* XXX jmcneill | 149 | if (inited) | |
151 | * Defer console initialization until UVM is initialized | 150 | return attached; | |
152 | */ | 151 | inited = 1; | |
153 | ++ncalls; | |||
154 | if (ncalls < 3) | |||
155 | return -1; | |||
156 | 152 | |||
157 | memset(&x86_genfb_console_screen, 0, sizeof(x86_genfb_console_screen)); | 153 | memset(&x86_genfb_console_screen, 0, sizeof(x86_genfb_console_screen)); | |
158 | 154 | |||
159 | fbinfo = lookup_bootinfo(BTINFO_FRAMEBUFFER); | 155 | fbinfo = lookup_bootinfo(BTINFO_FRAMEBUFFER); | |
160 | if (fbinfo == NULL || fbinfo->physaddr == 0) | 156 | if (fbinfo == NULL || fbinfo->physaddr == 0) | |
161 | return 0; | 157 | return 0; | |
162 | 158 | |||
163 | err = _x86_memio_map(t, (bus_addr_t)fbinfo->physaddr, | 159 | err = _x86_memio_map(t, (bus_addr_t)fbinfo->physaddr, | |
164 | fbinfo->height * fbinfo->stride, | 160 | fbinfo->height * fbinfo->stride, | |
165 | BUS_SPACE_MAP_LINEAR | BUS_SPACE_MAP_PREFETCHABLE, &h); | 161 | BUS_SPACE_MAP_LINEAR | BUS_SPACE_MAP_PREFETCHABLE, &h); | |
166 | if (err) { | 162 | if (err) { | |
167 | aprint_error("x86_genfb_cnattach: couldn't map framebuffer\n"); | 163 | aprint_error("x86_genfb_cnattach: couldn't map framebuffer\n"); | |
168 | return 0; | 164 | return 0; | |
@@ -196,25 +192,52 @@ x86_genfb_cnattach(void) | @@ -196,25 +192,52 @@ x86_genfb_cnattach(void) | |||
196 | } else | 192 | } else | |
197 | ri->ri_bits = bits; | 193 | ri->ri_bits = bits; | |
198 | ri->ri_flg = RI_CENTER | RI_FULLCLEAR | RI_CLEAR; | 194 | ri->ri_flg = RI_CENTER | RI_FULLCLEAR | RI_CLEAR; | |
199 | rasops_init(ri, ri->ri_height / 8, ri->ri_width / 8); | 195 | rasops_init(ri, ri->ri_height / 8, ri->ri_width / 8); | |
200 | ri->ri_caps = WSSCREEN_WSCOLORS; | 196 | ri->ri_caps = WSSCREEN_WSCOLORS; | |
201 | rasops_reconfig(ri, ri->ri_height / ri->ri_font->fontheight, | 197 | rasops_reconfig(ri, ri->ri_height / ri->ri_font->fontheight, | |
202 | ri->ri_width / ri->ri_font->fontwidth); | 198 | ri->ri_width / ri->ri_font->fontwidth); | |
203 | 199 | |||
204 | x86_genfb_stdscreen.nrows = ri->ri_rows; | 200 | x86_genfb_stdscreen.nrows = ri->ri_rows; | |
205 | x86_genfb_stdscreen.ncols = ri->ri_cols; | 201 | x86_genfb_stdscreen.ncols = ri->ri_cols; | |
206 | x86_genfb_stdscreen.textops = &ri->ri_ops; | 202 | x86_genfb_stdscreen.textops = &ri->ri_ops; | |
207 | x86_genfb_stdscreen.capabilities = ri->ri_caps; | 203 | x86_genfb_stdscreen.capabilities = ri->ri_caps; | |
208 | 204 | |||
205 | attached = 1; | |||
206 | return 1; | |||
207 | } | |||
208 | ||||
209 | int | |||
210 | x86_genfb_cnattach(void) | |||
211 | { | |||
212 | static int ncalls = 0; | |||
213 | struct rasops_info *ri = &x86_genfb_console_screen.scr_ri; | |||
214 | long defattr; | |||
215 | ||||
216 | /* XXX jmcneill | |||
217 | * Defer console initialization until UVM is initialized | |||
218 | */ | |||
219 | ++ncalls; | |||
220 | if (ncalls < 3) | |||
221 | return -1; | |||
222 | ||||
223 | if (!x86_genfb_init()) | |||
224 | return 0; | |||
225 | ||||
209 | ri->ri_ops.allocattr(ri, 0, 0, 0, &defattr); | 226 | ri->ri_ops.allocattr(ri, 0, 0, 0, &defattr); | |
210 | wsdisplay_preattach(&x86_genfb_stdscreen, ri, 0, 0, defattr); | 227 | wsdisplay_preattach(&x86_genfb_stdscreen, ri, 0, 0, defattr); | |
211 | 228 | |||
212 | return 1; | 229 | return 1; | |
213 | } | 230 | } | |
214 | #else /* NWSDISPLAY > 0 && NGENFB > 0 */ | 231 | #else /* NWSDISPLAY > 0 && NGENFB > 0 */ | |
215 | int | 232 | int | |
233 | x86_genfb_init(void) | |||
234 | { | |||
235 | return 0; | |||
236 | } | |||
237 | ||||
238 | int | |||
216 | x86_genfb_cnattach(void) | 239 | x86_genfb_cnattach(void) | |
217 | { | 240 | { | |
218 | return 0; | 241 | return 0; | |
219 | } | 242 | } | |
220 | #endif | 243 | #endif |
--- src/sys/arch/x86/x86/hyperv.c 2019/06/03 09:51:04 1.4
+++ src/sys/arch/x86/x86/hyperv.c 2019/12/08 13:09:28 1.4.4.1
@@ -1,14 +1,14 @@ | @@ -1,14 +1,14 @@ | |||
1 | /* $NetBSD: hyperv.c,v 1.4 2019/06/03 09:51:04 nonaka Exp $ */ | 1 | /* $NetBSD: hyperv.c,v 1.4.4.1 2019/12/08 13:09:28 martin Exp $ */ | |
2 | 2 | |||
3 | /*- | 3 | /*- | |
4 | * Copyright (c) 2009-2012,2016-2017 Microsoft Corp. | 4 | * Copyright (c) 2009-2012,2016-2017 Microsoft Corp. | |
5 | * Copyright (c) 2012 NetApp Inc. | 5 | * Copyright (c) 2012 NetApp Inc. | |
6 | * Copyright (c) 2012 Citrix Inc. | 6 | * Copyright (c) 2012 Citrix Inc. | |
7 | * All rights reserved. | 7 | * All rights reserved. | |
8 | * | 8 | * | |
9 | * Redistribution and use in source and binary forms, with or without | 9 | * Redistribution and use in source and binary forms, with or without | |
10 | * modification, are permitted provided that the following conditions | 10 | * modification, are permitted provided that the following conditions | |
11 | * are met: | 11 | * are met: | |
12 | * 1. Redistributions of source code must retain the above copyright | 12 | * 1. Redistributions of source code must retain the above copyright | |
13 | * notice unmodified, this list of conditions, and the following | 13 | * notice unmodified, this list of conditions, and the following | |
14 | * disclaimer. | 14 | * disclaimer. | |
@@ -23,27 +23,27 @@ | @@ -23,27 +23,27 @@ | |||
23 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | 23 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | |
24 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 24 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
25 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
26 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
27 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 27 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | |
28 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
29 | */ | 29 | */ | |
30 | 30 | |||
31 | /** | 31 | /** | |
32 | * Implements low-level interactions with Hyper-V/Azuree | 32 | * Implements low-level interactions with Hyper-V/Azuree | |
33 | */ | 33 | */ | |
34 | #include <sys/cdefs.h> | 34 | #include <sys/cdefs.h> | |
35 | #ifdef __KERNEL_RCSID | 35 | #ifdef __KERNEL_RCSID | |
36 | __KERNEL_RCSID(0, "$NetBSD: hyperv.c,v 1.4 2019/06/03 09:51:04 nonaka Exp $"); | 36 | __KERNEL_RCSID(0, "$NetBSD: hyperv.c,v 1.4.4.1 2019/12/08 13:09:28 martin Exp $"); | |
37 | #endif | 37 | #endif | |
38 | #ifdef __FBSDID | 38 | #ifdef __FBSDID | |
39 | __FBSDID("$FreeBSD: head/sys/dev/hyperv/vmbus/hyperv.c 331757 2018-03-30 02:25:12Z emaste $"); | 39 | __FBSDID("$FreeBSD: head/sys/dev/hyperv/vmbus/hyperv.c 331757 2018-03-30 02:25:12Z emaste $"); | |
40 | #endif | 40 | #endif | |
41 | 41 | |||
42 | #ifdef _KERNEL_OPT | 42 | #ifdef _KERNEL_OPT | |
43 | #include "lapic.h" | 43 | #include "lapic.h" | |
44 | #include "genfb.h" | 44 | #include "genfb.h" | |
45 | #include "opt_ddb.h" | 45 | #include "opt_ddb.h" | |
46 | #include "vmbus.h" | 46 | #include "vmbus.h" | |
47 | #include "wsdisplay.h" | 47 | #include "wsdisplay.h" | |
48 | #endif | 48 | #endif | |
49 | 49 | |||
@@ -60,27 +60,27 @@ __FBSDID("$FreeBSD: head/sys/dev/hyperv/ | @@ -60,27 +60,27 @@ __FBSDID("$FreeBSD: head/sys/dev/hyperv/ | |||
60 | #include <sys/timetc.h> | 60 | #include <sys/timetc.h> | |
61 | 61 | |||
62 | #include <uvm/uvm_extern.h> | 62 | #include <uvm/uvm_extern.h> | |
63 | 63 | |||
64 | #include <machine/autoconf.h> | 64 | #include <machine/autoconf.h> | |
65 | #include <machine/bootinfo.h> | 65 | #include <machine/bootinfo.h> | |
66 | #include <machine/cpufunc.h> | 66 | #include <machine/cpufunc.h> | |
67 | #include <machine/cputypes.h> | 67 | #include <machine/cputypes.h> | |
68 | #include <machine/cpuvar.h> | 68 | #include <machine/cpuvar.h> | |
69 | #include <machine/cpu_counter.h> | 69 | #include <machine/cpu_counter.h> | |
70 | #include <x86/efi.h> | 70 | #include <x86/efi.h> | |
71 | 71 | |||
72 | #include <dev/wsfb/genfbvar.h> | 72 | #include <dev/wsfb/genfbvar.h> | |
73 | #include <arch/x86/include/genfb_machdep.h> | 73 | #include <x86/genfb_machdep.h> | |
74 | 74 | |||
75 | #include <x86/x86/hypervreg.h> | 75 | #include <x86/x86/hypervreg.h> | |
76 | #include <x86/x86/hypervvar.h> | 76 | #include <x86/x86/hypervvar.h> | |
77 | #include <dev/hyperv/vmbusvar.h> | 77 | #include <dev/hyperv/vmbusvar.h> | |
78 | #include <dev/hyperv/genfb_vmbusvar.h> | 78 | #include <dev/hyperv/genfb_vmbusvar.h> | |
79 | 79 | |||
80 | #ifdef DDB | 80 | #ifdef DDB | |
81 | #include <machine/db_machdep.h> | 81 | #include <machine/db_machdep.h> | |
82 | #include <ddb/db_sym.h> | 82 | #include <ddb/db_sym.h> | |
83 | #include <ddb/db_extern.h> | 83 | #include <ddb/db_extern.h> | |
84 | #endif | 84 | #endif | |
85 | 85 | |||
86 | struct hyperv_softc { | 86 | struct hyperv_softc { | |
@@ -1093,26 +1093,29 @@ populate_fbinfo(device_t dev, prop_dicti | @@ -1093,26 +1093,29 @@ populate_fbinfo(device_t dev, prop_dicti | |||
1093 | device_t | 1093 | device_t | |
1094 | device_hyperv_register(device_t dev, void *aux) | 1094 | device_hyperv_register(device_t dev, void *aux) | |
1095 | { | 1095 | { | |
1096 | #if NVMBUS > 0 | 1096 | #if NVMBUS > 0 | |
1097 | device_t parent = device_parent(dev); | 1097 | device_t parent = device_parent(dev); | |
1098 | 1098 | |||
1099 | if (parent && device_is_a(parent, "vmbus") && !x86_found_console) { | 1099 | if (parent && device_is_a(parent, "vmbus") && !x86_found_console) { | |
1100 | struct vmbus_attach_args *aa = aux; | 1100 | struct vmbus_attach_args *aa = aux; | |
1101 | 1101 | |||
1102 | if (memcmp(aa->aa_type, &hyperv_guid_video, | 1102 | if (memcmp(aa->aa_type, &hyperv_guid_video, | |
1103 | sizeof(*aa->aa_type)) == 0) { | 1103 | sizeof(*aa->aa_type)) == 0) { | |
1104 | prop_dictionary_t dict = device_properties(dev); | 1104 | prop_dictionary_t dict = device_properties(dev); | |
1105 | 1105 | |||
1106 | /* Initialize genfb for serial console */ | |||
1107 | x86_genfb_init(); | |||
1108 | ||||
1106 | /* | 1109 | /* | |
1107 | * framebuffer drivers other than genfb can work | 1110 | * framebuffer drivers other than genfb can work | |
1108 | * without the address property | 1111 | * without the address property | |
1109 | */ | 1112 | */ | |
1110 | populate_fbinfo(dev, dict); | 1113 | populate_fbinfo(dev, dict); | |
1111 | 1114 | |||
1112 | #if 1 && NWSDISPLAY > 0 && NGENFB > 0 | 1115 | #if 1 && NWSDISPLAY > 0 && NGENFB > 0 | |
1113 | /* XXX */ | 1116 | /* XXX */ | |
1114 | if (device_is_a(dev, "genfb")) { | 1117 | if (device_is_a(dev, "genfb")) { | |
1115 | prop_dictionary_set_bool(dict, "is_console", | 1118 | prop_dictionary_set_bool(dict, "is_console", | |
1116 | genfb_is_console()); | 1119 | genfb_is_console()); | |
1117 | } else | 1120 | } else | |
1118 | #endif | 1121 | #endif |