Received: by 2002:a05:6a10:d5a5:0:0:0:0 with SMTP id gn37csp299448pxb; Thu, 30 Sep 2021 06:23:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwd9edVvHPfRoFS3jGWl8VyUH5+oqA84Ycya9d5sI0SO/pg5U8/Q11vbFbnCwc/Vy/yuJiR X-Received: by 2002:a65:6ab0:: with SMTP id x16mr4982798pgu.181.1633008209621; Thu, 30 Sep 2021 06:23:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633008209; cv=none; d=google.com; s=arc-20160816; b=WyJ27y1A7Qx56Y/yNKM33ZM2pDYOeG4mnzMadVZQZzA04Nj+IjkPcwRXSgDFc7RylG cT9EqzcLQKCPs+4GohygcdZzSwyNyNFORwKbpzX8pS8BG6UzmRaYZXWXv34JU/2aIAPt 3Hwh7g0Vy3PRGqvnK056RSqmCDnxnlr9E+5nHaR8XWhOKh8EtIHkiUlwUP4g8XsfWa4V w8oXd4lfYm76uReH3t4R4H6upqsc1u/5DagCO7luwGsJ3Hg8lzLvaerBGiimLiGN3/eB s/ytboYAmqOi877O4h29G2HNPzV8r/+0Neko0Kb0EakZldcEukuotMBAi89uVJV4nu2j rHsw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=Gomd8IxF8yRzl0fRYyKAoIfKOx8voqFogqaCEcVCQUg=; b=TNtJAgJfo679Ovh3BEb2w/2k+Fk+LQMfJLPENk4/rPBOUDttpjpULePFB3RWrtVOWh e53h5OQyMnkOhfX0xabk6ezcN32qBxcHRAVRWpmI70kNhGq88lwbqQgAK34sB4Pl6Whn w3mmnJVPEVZxqTFQRkZtTDNquK4enCqTbZU8tyZYm6QS8oXwjMw7f/1ho9gXRWyjWS7E 3y2bCZ/BrybpOJdHs/rldeSDgNv0RpQDPrUBPgySgZalmzzP0AeWKj/ace9kQJqU0zd0 so32VqeH8wD1c0GzGKYVqjWQACac7cLf6Bk0CDZ2lkgYEP0D2pf4ReuSizqgwf/hTrYn 7pEw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=pg6avzB8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z7si3861200pjb.48.2021.09.30.06.23.11; Thu, 30 Sep 2021 06:23:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=pg6avzB8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1351204AbhI3NAh (ORCPT + 99 others); Thu, 30 Sep 2021 09:00:37 -0400 Received: from mail.kernel.org ([198.145.29.99]:55822 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348795AbhI3NAe (ORCPT ); Thu, 30 Sep 2021 09:00:34 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 5D12A613A7; Thu, 30 Sep 2021 12:58:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1633006732; bh=XaLJOpJXyC0/AKRC/2WDJUbGWh++7znRLGEqxEgcGtU=; h=From:To:Cc:Subject:Date:From; b=pg6avzB8dmvoh6yqYuxdxQ8IIXXPyCZbEjB1q+8QwdqsdhHx2F444zyJpayMKuXuy nCuWJVvM+VywCxG4D0voRyTM+jLlY6gki14yu93KmBiOyJr7tpNFqQw+6ww/QgD+t1 sfxdWtM6DbD37v+mwbJYsCcs8xKkR4RLJpXDBoI85enXGAmaSExYkjDZcG29AEwpu1 ZUt2MWci2A3kBKUh9eAvkbv5iZxwx441R4DYcZT71Kv0U/ZggVnbqvFooD0Mr/ckc7 VCdzWMdYOLTXOTvi1/6RA69rzxCLYdjbIJ+XRuLzT0MDTHHAuXjVW4JB4d7KU0CldB pJeNLUZ6FuUsw== From: Ard Biesheuvel To: linux-kernel@vger.kernel.org Cc: Ard Biesheuvel , Keith Packard , Russell King , Catalin Marinas , Will Deacon , Michael Ellerman , Benjamin Herrenschmidt , Christophe Leroy , Paul Mackerras , Paul Walmsley , Palmer Dabbelt , Albert Ou , Heiko Carstens Subject: [PATCH v2 0/7] Move task_struct::cpu back into thread_info Date: Thu, 30 Sep 2021 14:58:06 +0200 Message-Id: <20210930125813.197418-1-ardb@kernel.org> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit c65eacbe290b ("sched/core: Allow putting thread_info into task_struct") mentions that, along with moving thread_info into task_struct, the cpu field is moved out of the former into the latter, as at that point, it was the intention to ultimately get rid of thread_info entirely, but this never happened. While collaborating with Keith on adding THREAD_INFO_IN_TASK support to ARM, we noticed that keeping CPU in task_struct is problematic for architectures that define raw_smp_processor_id() in terms of this field, as it requires linux/sched.h to be included, which causes a lot of pain in terms of circular dependencies (or 'header soup', as the original commit refers to it). For examples of how existing architectures work around this, please refer to patches #6 or #7. In the former case, it uses an awful asm-offsets hack to index thread_info/current without using its type definition. The latter approach simply keeps a copy of the task_struct CPU field in thread_info, and keeps it in sync at context switch time. We also discussed introducing yet another Kconfig symbol to indicate that the arch has THREAD_INFO_IN_TASK enabled but still prefers to keep its CPU field in thread_info, but simply keeping it in thread_info in all cases seems to be the cleanest approach here, so that is what this series implements. Changes since v1/RFC: - use macro for task_thread_info() to work around constness of task_cpu()'s task_struct argument - add various acks - drop patch #8 for ARM - it was preliminary in the RFC, and it can be taken as a fix in the ARM tree once THREAD_INFO_IN_TASK actually lands. Code can be found here: https://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git/log/?h=move-task-cpu-to-ti-v2 Cc: Keith Packard Cc: Russell King Cc: Catalin Marinas Cc: Will Deacon Cc: Michael Ellerman Cc: Benjamin Herrenschmidt Cc: Christophe Leroy Cc: Paul Mackerras Cc: Paul Walmsley Cc: Palmer Dabbelt Cc: Albert Ou Cc: Heiko Carstens Ard Biesheuvel (7): arm64: add CPU field to struct thread_info x86: add CPU field to struct thread_info s390: add CPU field to struct thread_info powerpc: add CPU field to struct thread_info sched: move CPU field back into thread_info if THREAD_INFO_IN_TASK=y powerpc: smp: remove hack to obtain offset of task_struct::cpu riscv: rely on core code to keep thread_info::cpu updated arch/arm64/include/asm/thread_info.h | 1 + arch/arm64/kernel/asm-offsets.c | 2 +- arch/arm64/kernel/head.S | 2 +- arch/powerpc/Makefile | 11 ----------- arch/powerpc/include/asm/smp.h | 17 +---------------- arch/powerpc/include/asm/thread_info.h | 3 +++ arch/powerpc/kernel/asm-offsets.c | 4 +--- arch/powerpc/kernel/smp.c | 2 +- arch/riscv/kernel/asm-offsets.c | 1 - arch/riscv/kernel/entry.S | 5 ----- arch/riscv/kernel/head.S | 1 - arch/s390/include/asm/thread_info.h | 1 + arch/x86/include/asm/thread_info.h | 3 +++ include/linux/sched.h | 13 +------------ kernel/sched/sched.h | 4 ---- 15 files changed, 14 insertions(+), 56 deletions(-) -- 2.30.2