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

Commit 518e5cd4 authored by Jack Steiner's avatar Jack Steiner Committed by Linus Torvalds
Browse files

gru: allow users to specify gru chiplet 1



Add table & user request infrastructure that is needed to allow users to
specify the blade and chiplet for allocation of GRU contexts.  Use of this
information is in a subsequent patch.

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 9178052f
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -763,6 +763,16 @@ int gru_set_context_option(unsigned long arg)
		return -EINVAL;

	switch (req.op) {
	case sco_blade_chiplet:
		/* Select blade/chiplet for GRU context */
		if (req.val1 < -1 || req.val1 >= GRU_MAX_BLADES || !gru_base[req.val1] ||
		    req.val0 < -1 || req.val0 >= GRU_CHIPLETS_PER_HUB) {
			ret = -EINVAL;
		} else {
			gts->ts_user_blade_id = req.val1;
			gts->ts_user_chiplet_id = req.val0;
		}
		break;
	case sco_gseg_owner:
 		/* Register the current task as the GSEG owner */
		gts->ts_tgid_owner = current->tgid;
+3 −2
Original line number Diff line number Diff line
@@ -98,11 +98,12 @@ struct gru_unload_context_req {
/*
 * Structure used to set context options
 */
enum {sco_gseg_owner, sco_cch_req_slice};
enum {sco_gseg_owner, sco_cch_req_slice, sco_blade_chiplet};
struct gru_set_context_option_req {
	unsigned long	gseg;
	int		op;
	unsigned long	val1;
	int		val0;
	long		val1;
};

/*
+2 −0
Original line number Diff line number Diff line
@@ -328,6 +328,8 @@ struct gru_thread_state *gru_alloc_gts(struct vm_area_struct *vma,
	gts->ts_cbr_au_count = cbr_au_count;
	gts->ts_dsr_au_count = dsr_au_count;
	gts->ts_user_options = options;
	gts->ts_user_blade_id = -1;
	gts->ts_user_chiplet_id = -1;
	gts->ts_tsid = tsid;
	gts->ts_ctxnum = NULLCTX;
	gts->ts_tlb_int_select = -1;
+2 −0
Original line number Diff line number Diff line
@@ -369,6 +369,8 @@ struct gru_thread_state {
	long			ts_user_options;/* misc user option flags */
	pid_t			ts_tgid_owner;	/* task that is using the
						   context - for migration */
	short			ts_user_blade_id;/* user selected blade */
	char			ts_user_chiplet_id;/* user selected chiplet */
	unsigned short		ts_sizeavail;	/* Pagesizes in use */
	int			ts_tsid;	/* thread that owns the
						   structure */