Commit e98eda92 authored by Heiko Carstens's avatar Heiko Carstens
Browse files

s390/hypfs_diag0c: fix virtual vs physical address confusion



Add missing virt_to_phys() translation to diag0c(). This doesn't fix a
bug since virtual and physical addresses are currently the same.

Reviewed-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
parent 49c372ae
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -20,8 +20,7 @@
 */
static void diag0c_fn(void *data)
{
	diag_stat_inc(DIAG_STAT_X00C);
	diag_amode31_ops.diag0c(((void **)data)[smp_processor_id()]);
	diag0c(((void **)data)[smp_processor_id()]);
}

/*
+9 −2
Original line number Diff line number Diff line
@@ -44,6 +44,13 @@ enum diag_stat_enum {
void diag_stat_inc(enum diag_stat_enum nr);
void diag_stat_inc_norecursion(enum diag_stat_enum nr);

struct hypfs_diag0c_entry;

/*
 * Diagnose 0c: Pseudo Timer
 */
void diag0c(struct hypfs_diag0c_entry *data);

/*
 * Diagnose 10: Release page range
 */
@@ -334,7 +341,7 @@ struct diag_ops {
	int (*diag26c)(unsigned long rx, unsigned long rx1, enum diag26c_sc subcode);
	int (*diag14)(unsigned long rx, unsigned long ry1, unsigned long subcode);
	int (*diag8c)(struct diag8c *addr, struct ccw_dev_id *devno, size_t len);
	void (*diag0c)(struct hypfs_diag0c_entry *entry);
	void (*diag0c)(unsigned long rx);
	void (*diag308_reset)(void);
};

@@ -344,7 +351,7 @@ extern struct diag210 *__diag210_tmp_amode31;
int _diag210_amode31(struct diag210 *addr);
int _diag26c_amode31(unsigned long rx, unsigned long rx1, enum diag26c_sc subcode);
int _diag14_amode31(unsigned long rx, unsigned long ry1, unsigned long subcode);
void _diag0c_amode31(struct hypfs_diag0c_entry *entry);
void _diag0c_amode31(unsigned long rx);
void _diag308_reset_amode31(void);
int _diag8c_amode31(struct diag8c *addr, struct ccw_dev_id *devno, size_t len);

+9 −0
Original line number Diff line number Diff line
@@ -146,6 +146,15 @@ void notrace diag_stat_inc_norecursion(enum diag_stat_enum nr)
}
EXPORT_SYMBOL(diag_stat_inc_norecursion);

/*
 * Diagnose 0c: Pseudo Timer
 */
void diag0c(struct hypfs_diag0c_entry *data)
{
	diag_stat_inc(DIAG_STAT_X00C);
	diag_amode31_ops.diag0c(virt_to_phys(data));
}

/*
 * Diagnose 14: Input spool file manipulation
 */
+1 −1
Original line number Diff line number Diff line
@@ -90,7 +90,7 @@ SYM_FUNC_START(_diag26c_amode31)
SYM_FUNC_END(_diag26c_amode31)

/*
 * void _diag0c_amode31(struct hypfs_diag0c_entry *entry)
 * void _diag0c_amode31(unsigned long rx)
 */
SYM_FUNC_START(_diag0c_amode31)
	sam31