u32 reserved70[3];                      /* 0x0070 */
        u32 max_num_sec_conf;                   /* 0x007c */
        u64 max_guest_stor_addr;                /* 0x0080 */
-       u8  reserved88[158 - 136];              /* 0x0088 */
+       u8  reserved88[0x9e - 0x88];            /* 0x0088 */
        u16 max_guest_cpu_id;                   /* 0x009e */
        u64 uv_feature_indications;             /* 0x00a0 */
        u64 reserveda8;                         /* 0x00a8 */
        u64 reservedd8;                         /* 0x00d8 */
        u64 supp_att_req_hdr_ver;               /* 0x00e0 */
        u64 supp_att_pflags;                    /* 0x00e8 */
-       u8 reservedf0[256 - 240];               /* 0x00f0 */
+       u64 reservedf0;                         /* 0x00f0 */
+       u64 supp_add_secret_req_ver;            /* 0x00f8 */
+       u64 supp_add_secret_pcf;                /* 0x0100 */
+       u64 supp_secret_types;                  /* 0x0180 */
+       u16 max_secrets;                        /* 0x0110 */
+       u8 reserved112[0x120 - 0x112];          /* 0x0112 */
 } __packed __aligned(8);
 
 /* Initialize Ultravisor */
        unsigned long conf_dump_finalize_len;
        unsigned long supp_att_req_hdr_ver;
        unsigned long supp_att_pflags;
+       unsigned long supp_add_secret_req_ver;
+       unsigned long supp_add_secret_pcf;
+       unsigned long supp_secret_types;
+       unsigned short max_secrets;
 };
 
 extern struct uv_info uv_info;
 
 static struct kobj_attribute uv_query_supp_att_pflags_attr =
        __ATTR(supp_att_pflags, 0444, uv_query_supp_att_pflags, NULL);
 
+static ssize_t uv_query_supp_add_secret_req_ver(struct kobject *kobj,
+                                               struct kobj_attribute *attr, char *buf)
+{
+       return sysfs_emit(buf, "%lx\n", uv_info.supp_add_secret_req_ver);
+}
+
+static struct kobj_attribute uv_query_supp_add_secret_req_ver_attr =
+       __ATTR(supp_add_secret_req_ver, 0444, uv_query_supp_add_secret_req_ver, NULL);
+
+static ssize_t uv_query_supp_add_secret_pcf(struct kobject *kobj,
+                                           struct kobj_attribute *attr, char *buf)
+{
+       return sysfs_emit(buf, "%lx\n", uv_info.supp_add_secret_pcf);
+}
+
+static struct kobj_attribute uv_query_supp_add_secret_pcf_attr =
+       __ATTR(supp_add_secret_pcf, 0444, uv_query_supp_add_secret_pcf, NULL);
+
+static ssize_t uv_query_supp_secret_types(struct kobject *kobj,
+                                         struct kobj_attribute *attr, char *buf)
+{
+       return sysfs_emit(buf, "%lx\n", uv_info.supp_secret_types);
+}
+
+static struct kobj_attribute uv_query_supp_secret_types_attr =
+       __ATTR(supp_secret_types, 0444, uv_query_supp_secret_types, NULL);
+
+static ssize_t uv_query_max_secrets(struct kobject *kobj,
+                                   struct kobj_attribute *attr, char *buf)
+{
+       return sysfs_emit(buf, "%d\n", uv_info.max_secrets);
+}
+
+static struct kobj_attribute uv_query_max_secrets_attr =
+       __ATTR(max_secrets, 0444, uv_query_max_secrets, NULL);
+
 static struct attribute *uv_query_attrs[] = {
        &uv_query_facilities_attr.attr,
        &uv_query_feature_indications_attr.attr,
        &uv_query_dump_cpu_len_attr.attr,
        &uv_query_supp_att_req_hdr_ver_attr.attr,
        &uv_query_supp_att_pflags_attr.attr,
+       &uv_query_supp_add_secret_req_ver_attr.attr,
+       &uv_query_supp_add_secret_pcf_attr.attr,
+       &uv_query_supp_secret_types_attr.attr,
+       &uv_query_max_secrets_attr.attr,
        NULL,
 };