Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2b702b28 authored by Jack Steiner's avatar Jack Steiner Committed by Linus Torvalds
Browse files

gru: fixes to grudump utility



Minor fixes to the SGI GRU grudump facility:
	- fix address where user data is written
	- add gru number to data passed to user
	- indicate if context is locked

Signed-off-by: default avatarJack Steiner <steiner@sgi.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 1926ee85
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@

static int gru_user_copy_handle(void __user **dp, void *s)
{
	if (copy_to_user(dp, s, GRU_HANDLE_BYTES))
	if (copy_to_user(*dp, s, GRU_HANDLE_BYTES))
		return -1;
	*dp += GRU_HANDLE_BYTES;
	return 0;
@@ -109,7 +109,7 @@ static int gru_dump_context(struct gru_state *gru, int ctxnum,
{
	struct gru_dump_context_header hdr;
	struct gru_dump_context_header __user *uhdr = ubuf;
	struct gru_context_configuration_handle *cch;
	struct gru_context_configuration_handle *cch, *ubufcch;
	struct gru_thread_state *gts;
	int try, cch_locked, cbrcnt = 0, dsrcnt = 0, bytes = 0, ret = 0;
	void *grubase;
@@ -125,8 +125,11 @@ static int gru_dump_context(struct gru_state *gru, int ctxnum,
	}

	ubuf += sizeof(hdr);
	ubufcch = ubuf;
	if (gru_user_copy_handle(&ubuf, cch))
		goto fail;
	if (cch_locked)
		ubufcch->delresp = 0;
	bytes = sizeof(hdr) + GRU_CACHE_LINE_BYTES;

	if (cch_locked || !lock_cch) {
@@ -155,6 +158,7 @@ static int gru_dump_context(struct gru_state *gru, int ctxnum,
		return ret;

	hdr.magic = GRU_DUMP_MAGIC;
	hdr.gid = gru->gs_gid;
	hdr.ctxnum = ctxnum;
	hdr.cbrcnt = cbrcnt;
	hdr.dsrcnt = dsrcnt;
+2 −2
Original line number Diff line number Diff line
@@ -120,7 +120,7 @@ struct gru_flush_tlb_req {
enum {dcs_pid, dcs_gid};
struct gru_dump_chiplet_state_req {
	unsigned int	op;
	int		gid;
	unsigned int	gid;
	int		ctxnum;
	char		data_opt;
	char		lock_cch;
@@ -134,7 +134,7 @@ struct gru_dump_chiplet_state_req {
#define GRU_DUMP_MAGIC	0x3474ab6c
struct gru_dump_context_header {
	unsigned int	magic;
	unsigned char	gid;
	unsigned int	gid;
	unsigned char	ctxnum;
	unsigned char	cbrcnt;
	unsigned char	dsrcnt;