Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp2577667ybl; Sat, 14 Dec 2019 15:03:07 -0800 (PST) X-Google-Smtp-Source: APXvYqyRbUeCKITQCpko8eAuYxQjSjHa1OV/CTqrjPfdWb7GhL0+kJpsxnMQ3JEn9NgKT60ADelH X-Received: by 2002:a05:6830:2141:: with SMTP id r1mr21796340otd.124.1576364587436; Sat, 14 Dec 2019 15:03:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1576364587; cv=none; d=google.com; s=arc-20160816; b=WgeUF3zOxiLs5A1KqbBhNt8bf2nOOrQ6cbtk/O1A7PxhqVf4lutiQDo+vos80lFwL+ 80oamnFrF7sgpkAx8Z088h+QUEryL+WgeLOn1P65OSEUhIT+Dfu9BZyEOwULddKmZp3o mlA+T2bCRC0ePjhnZQaq3SL9Rz/x9gCi2986ZvMFLLZN6JyVOGxYq5V1sgYPm4yDcqyL GYzFTlwFL2hm+7vgAVTnxv7S1aV8E66goYO/YeRAd70MkfO3sBR0i6f2RNJXrTxyvSq4 R0PD0IvMKR4EON57bYXWqPPkOXixTC6Hau1v3vEFF23TAD3ayd4JZkGe5W2KaTdtj+GA fcGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:date:from:dkim-signature; bh=O0EJ8z82U7cWD2uni2Q2FGfAdsBj1eTYHVZ/EPN98kk=; b=kRQ6cdCLRXO7Pv15SzrDkbCV+GT6t9SZTDRBEfs3wsd+dKdiL0kZ4ZX3i+7DHEe64K HiSANj6ZIf2cvmeSuWBgI5ITLttijgLSJ3vEvhulT/ngIHAPeAd1cViIOuFLMYf33jry kJqxjX81b0yEN0MV6+q3xgGuDWjIJYoPiiEL8834/kIX80JQfEQyaRhVXVIF/YYpFKvC 3tDgf0dPvWuxhdNElGP22o7kTBsrtEpiOJVObJXoawJEKtFm0hKbJeZrIspmLGi/+Be8 TlX3+HsqFydCiDKQg08h81SoKqK/+FQ497oRlXv/9QMlrn/nxo0FzBgcJb+C+jfqh8f6 1Y5A== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=T6LD9sLL; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p28si8224185oth.296.2019.12.14.15.02.53; Sat, 14 Dec 2019 15:03:07 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=T6LD9sLL; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727030AbfLNXCJ (ORCPT + 99 others); Sat, 14 Dec 2019 18:02:09 -0500 Received: from mail-qk1-f194.google.com ([209.85.222.194]:38694 "EHLO mail-qk1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726687AbfLNXCI (ORCPT ); Sat, 14 Dec 2019 18:02:08 -0500 Received: by mail-qk1-f194.google.com with SMTP id k6so2324819qki.5; Sat, 14 Dec 2019 15:02:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:date:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=O0EJ8z82U7cWD2uni2Q2FGfAdsBj1eTYHVZ/EPN98kk=; b=T6LD9sLLdWm4+nk4kvddozLORNhycxUNvOeSdNthxifkZ5juszirkY53Z9E7ma9Z6m F02d6lErVyywjdJ38RN8wIewaz67LKJb78E8qViYojn3o9Vi7rTxghT8tTFPwpZf2p1a 3G2estihGTlQBQcAl4cWSnI+TnRd+2EiKSJ6xAufzLYZJuu0BG8BXO71pExYS2uvOg0k cJssmhj7l6ULrzCyeebkzt5xEPBkJF2sR8NVECTAFqgNr/gFYkZpxicPfNbYufjWvMfY XWl59sGiKvmgGTSvFXiEzhrdxNAyKHg6u21Qqah2hoTQ9PeecVwAdHqRbCrNO9X5Boqt 4UcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:date:to:cc:subject:message-id :references:mime-version:content-disposition:in-reply-to:user-agent; bh=O0EJ8z82U7cWD2uni2Q2FGfAdsBj1eTYHVZ/EPN98kk=; b=NW+p3YUn5qcv6QgAOPuz+1LIt7FrpZYDbd01/Qgwg3/8nhIR0Ep8hn01iRjmw1QN3m pKB8dPqWIhAVCq8k8tOEMV9djCUyhWbwVp2lK0m2rQvK+7ltisfvhgEXqZEfK0jh6W8k 0vIufp1OluVPTawGnYwDqb16rBRPybIiow+v6P9uSJ8nhDTBOibXWz2uftwOaTBqbsYQ zmcrEOnTKFYb3Op8tMVz+iRxVRmhRoEqfFG4syubyl0eXC285/Xkw4pY5ybhWpkDgLHF +WE3sEVsTSU6ADSAogTlx41u4Yp8/SRITazdQo9BkjBZ6qRCarNOANUc12dJmQRu3Vi+ 3lBA== X-Gm-Message-State: APjAAAVi8M+vOR0om0rcwCdjfKTNcu9SGeuk6bAts2ZPXKU5gh3uA9K0 PvoBiJlvlgg+QKArXkYvbKg= X-Received: by 2002:a05:620a:150e:: with SMTP id i14mr20451749qkk.273.1576364527660; Sat, 14 Dec 2019 15:02:07 -0800 (PST) Received: from rani.riverdale.lan ([2001:470:1f07:5f3::b55f]) by smtp.gmail.com with ESMTPSA id l37sm5149187qtl.53.2019.12.14.15.02.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 14 Dec 2019 15:02:07 -0800 (PST) From: Arvind Sankar X-Google-Original-From: Arvind Sankar Date: Sat, 14 Dec 2019 18:02:05 -0500 To: Ard Biesheuvel Cc: Arvind Sankar , Ard Biesheuvel , Linux Kernel Mailing List , linux-efi , Hans de Goede , Matthew Garrett , Ingo Molnar , Andy Lutomirski , Thomas Gleixner Subject: Re: [PATCH 05/10] efi/libstub: distinguish between native/mixed not 32/64 bit Message-ID: <20191214230204.GB314531@rani.riverdale.lan> References: <20191214175735.22518-1-ardb@kernel.org> <20191214175735.22518-6-ardb@kernel.org> <20191214194626.GA140998@rani.riverdale.lan> <20191214194936.GB140998@rani.riverdale.lan> <20191214201334.GC140998@rani.riverdale.lan> <20191214211725.GG140998@rani.riverdale.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, Dec 14, 2019 at 10:14:38PM +0000, Ard Biesheuvel wrote: > On Sat, 14 Dec 2019 at 22:30, Ard Biesheuvel wrote: > > > > On Sat, 14 Dec 2019 at 22:17, Arvind Sankar wrote: > > > > > > On Sat, Dec 14, 2019 at 08:27:50PM +0000, Ard Biesheuvel wrote: > > > > On Sat, 14 Dec 2019 at 21:13, Arvind Sankar wrote: > > > > > > > > > > On Sat, Dec 14, 2019 at 07:54:25PM +0000, Ard Biesheuvel wrote: > > > > > > On Sat, 14 Dec 2019 at 20:49, Arvind Sankar wrote: > > > > > > > > > > > > > > On Sat, Dec 14, 2019 at 02:46:27PM -0500, Arvind Sankar wrote: > > > > > > > > On Sat, Dec 14, 2019 at 06:57:30PM +0100, Ard Biesheuvel wrote: > > > > > > > > > + > > > > > > > > > +#define efi_table_attr(table, attr, instance) ({ \ > > > > > > > > > + __typeof__(((table##_t *)0)->attr) __ret; \ > > > > > > > > > + if (efi_is_native()) { \ > > > > > > > > > + __ret = ((table##_t *)instance)->attr; \ > > > > > > > > > + } else { \ > > > > > > > > > + __typeof__(((table##_32_t *)0)->attr) at; \ > > > > > > > > > + at = (((table##_32_t *)(unsigned long)instance)->attr); \ > > > > > > > > > + __ret = (__typeof__(__ret))(unsigned long)at; \ > > > > > > > > > + } \ > > > > > > > > > + __ret; \ > > > > > > > > > +}) > > > > > > > > > > > > Yes. I'm open to suggestions on how to improve this, but mixed mode is > > > > somewhat of a maintenance burden, so if new future functionality needs > > > > to leave mixed mode behind, I'm not too bothered. > > > > > > > > > > Maybe just do > > > if (sizeof(at) < sizeof(__ret)) > > > __ret = (__typeof__(__ret))(uintptr_t)at; > > > else > > > __ret = (__typeof__(__ret))at; > > > That should cover most of the cases. > > > > But the compiler will still be unhappy about the else clause if __ret > > is a pointer type, since we'll be casting an u32 to a pointer, > > I think the answer is to have efi_table_ptr() for pointers and > efi_table_attr() for other types. Using __builtin_choose_expr avoids the warning: __ret = (__typeof__(__ret)) __builtin_choose_expr(sizeof(at) < sizeof(ret), (uintptr_t)at, at); But having different efi_table_ macros sounds cleaner.