xref: /freebsd-src/sys/dev/hyperv/vmbus/hyperv_mmu.h (revision 2b887687edc25bb4553f0d8a1183f454a85d413d)
1*2b887687SSouradeep Chakrabarti /*-
2*2b887687SSouradeep Chakrabarti  * Copyright (c) 2009-2012,2016-2024 Microsoft Corp.
3*2b887687SSouradeep Chakrabarti  * Copyright (c) 2012 NetApp Inc.
4*2b887687SSouradeep Chakrabarti  * Copyright (c) 2012 Citrix Inc.
5*2b887687SSouradeep Chakrabarti  * All rights reserved.
6*2b887687SSouradeep Chakrabarti  *
7*2b887687SSouradeep Chakrabarti  * Redistribution and use in source and binary forms, with or without
8*2b887687SSouradeep Chakrabarti  * modification, are permitted provided that the following conditions
9*2b887687SSouradeep Chakrabarti  * are met:
10*2b887687SSouradeep Chakrabarti  * 1. Redistributions of source code must retain the above copyright
11*2b887687SSouradeep Chakrabarti  *    notice unmodified, this list of conditions, and the following
12*2b887687SSouradeep Chakrabarti  *    disclaimer.
13*2b887687SSouradeep Chakrabarti  * 2. Redistributions in binary form must reproduce the above copyright
14*2b887687SSouradeep Chakrabarti  *    notice, this list of conditions and the following disclaimer in the
15*2b887687SSouradeep Chakrabarti  *    documentation and/or other materials provided with the distribution.
16*2b887687SSouradeep Chakrabarti  *
17*2b887687SSouradeep Chakrabarti  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18*2b887687SSouradeep Chakrabarti  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19*2b887687SSouradeep Chakrabarti  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20*2b887687SSouradeep Chakrabarti  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21*2b887687SSouradeep Chakrabarti  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22*2b887687SSouradeep Chakrabarti  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23*2b887687SSouradeep Chakrabarti  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24*2b887687SSouradeep Chakrabarti  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25*2b887687SSouradeep Chakrabarti  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26*2b887687SSouradeep Chakrabarti  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27*2b887687SSouradeep Chakrabarti  */
28*2b887687SSouradeep Chakrabarti 
29*2b887687SSouradeep Chakrabarti #ifndef _HYPERV_MMU_H_
30*2b887687SSouradeep Chakrabarti #define _HYPERV_MMU_H_
31*2b887687SSouradeep Chakrabarti 
32*2b887687SSouradeep Chakrabarti #include "vmbus_var.h"
33*2b887687SSouradeep Chakrabarti 
34*2b887687SSouradeep Chakrabarti #define HV_VCPUS_PER_SPARSE_BANK (64)
35*2b887687SSouradeep Chakrabarti #define HV_MAX_SPARSE_VCPU_BANKS (64)
36*2b887687SSouradeep Chakrabarti 
37*2b887687SSouradeep Chakrabarti 
38*2b887687SSouradeep Chakrabarti struct hyperv_tlb_flush {
39*2b887687SSouradeep Chakrabarti 	uint64_t address_space;
40*2b887687SSouradeep Chakrabarti 	uint64_t flags;
41*2b887687SSouradeep Chakrabarti 	uint64_t processor_mask;
42*2b887687SSouradeep Chakrabarti 	uint64_t gva_list[];
43*2b887687SSouradeep Chakrabarti }__packed;
44*2b887687SSouradeep Chakrabarti 
45*2b887687SSouradeep Chakrabarti struct hv_vpset {
46*2b887687SSouradeep Chakrabarti 	uint64_t format;
47*2b887687SSouradeep Chakrabarti 	uint64_t valid_bank_mask;
48*2b887687SSouradeep Chakrabarti 	uint64_t bank_contents[];
49*2b887687SSouradeep Chakrabarti } __packed;
50*2b887687SSouradeep Chakrabarti 
51*2b887687SSouradeep Chakrabarti struct hv_tlb_flush_ex {
52*2b887687SSouradeep Chakrabarti 	uint64_t address_space;
53*2b887687SSouradeep Chakrabarti 	uint64_t flags;
54*2b887687SSouradeep Chakrabarti 	struct hv_vpset hv_vp_set;
55*2b887687SSouradeep Chakrabarti } __packed;
56*2b887687SSouradeep Chakrabarti 
57*2b887687SSouradeep Chakrabarti #endif
58