xen/x86: obtain upper 32 bits of video frame buffer address for Dom0
The hypervisor has been supplying this information for a couple of major releases. Make use of it. The need to set a flag in the capabilities field also points out that the prior setting of that field from the hypervisor interface's gbl_caps one was wrong, so that code gets deleted (there's also no equivalent of this in native boot code). Signed-off-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> Link: https://lore.kernel.org/r/a3df8bf3-d044-b7bb-3383-cd5239d6d4af@suse.com Signed-off-by: Juergen Gross <jgross@suse.com>
This commit is contained in:
		
							parent
							
								
									ce2f46f353
								
							
						
					
					
						commit
						335e4dd67b
					
				| @ -62,14 +62,18 @@ void __init xen_init_vga(const struct dom0_vga_console_info *info, size_t size) | |||||||
| 			break; | 			break; | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		if (size >= offsetof(struct dom0_vga_console_info, |  | ||||||
| 				     u.vesa_lfb.gbl_caps) |  | ||||||
| 		    + sizeof(info->u.vesa_lfb.gbl_caps)) |  | ||||||
| 			screen_info->capabilities = info->u.vesa_lfb.gbl_caps; |  | ||||||
| 		if (size >= offsetof(struct dom0_vga_console_info, | 		if (size >= offsetof(struct dom0_vga_console_info, | ||||||
| 				     u.vesa_lfb.mode_attrs) | 				     u.vesa_lfb.mode_attrs) | ||||||
| 		    + sizeof(info->u.vesa_lfb.mode_attrs)) | 		    + sizeof(info->u.vesa_lfb.mode_attrs)) | ||||||
| 			screen_info->vesa_attributes = info->u.vesa_lfb.mode_attrs; | 			screen_info->vesa_attributes = info->u.vesa_lfb.mode_attrs; | ||||||
|  | 
 | ||||||
|  | 		if (size >= offsetof(struct dom0_vga_console_info, | ||||||
|  | 				     u.vesa_lfb.ext_lfb_base) | ||||||
|  | 		    + sizeof(info->u.vesa_lfb.ext_lfb_base) | ||||||
|  | 		    && info->u.vesa_lfb.ext_lfb_base) { | ||||||
|  | 			screen_info->ext_lfb_base = info->u.vesa_lfb.ext_lfb_base; | ||||||
|  | 			screen_info->capabilities |= VIDEO_CAPABILITY_64BIT_BASE; | ||||||
|  | 		} | ||||||
| 		break; | 		break; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -722,6 +722,9 @@ struct dom0_vga_console_info { | |||||||
| 			uint32_t gbl_caps; | 			uint32_t gbl_caps; | ||||||
| 			/* Mode attributes (offset 0x0, VESA command 0x4f01). */ | 			/* Mode attributes (offset 0x0, VESA command 0x4f01). */ | ||||||
| 			uint16_t mode_attrs; | 			uint16_t mode_attrs; | ||||||
|  | 			uint16_t pad; | ||||||
|  | 			/* high 32 bits of lfb_base */ | ||||||
|  | 			uint32_t ext_lfb_base; | ||||||
| 		} vesa_lfb; | 		} vesa_lfb; | ||||||
| 	} u; | 	} u; | ||||||
| }; | }; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user