Received: by 10.213.65.68 with SMTP id h4csp1351153imn; Mon, 26 Mar 2018 06:01:19 -0700 (PDT) X-Google-Smtp-Source: AG47ELsb4haxyZ+S7mIj6ywXmywOpJ1v/FLjUs/sHkR/oTNdZDWICcH9JYd4p/8sBfUcvE8X03ec X-Received: by 10.98.70.8 with SMTP id t8mr18890320pfa.185.1522069279096; Mon, 26 Mar 2018 06:01:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522069279; cv=none; d=google.com; s=arc-20160816; b=n1h5Xw/IDtzmn5kdFOoBsWbmffvZKFES8AUVPx1vipbwT7NjhmjCkOypfo/Odhnlb8 sn9wTphZ/Mmk3K6PhmHkbzFOAs+m00YB2mioXUDaOlgCMlmVHC0Gl3/FSAe1jVpiFWUg iTmmGrgnn8t1YDOuWu+W6d5lStaToxSjmBPZAlYs7Np1I2q5rMM4XW5vm3gUUX4hAvLF mYfz9A35o/X3hLknU/Gtm58gYjPkT5IKHSb68gIAbgS53r6cPsxk2O91m2EKtkgxilxM p467Dip+88+H6ctLYdBGSUrk2M9X0km5+cFM8wB34P424C0s/uFCrJ/VLXnFf67BrVLA g/yQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=LLSasl0IIkD8YwnC4oyXg50SznsK2mv9pBFueA3yeQU=; b=dM/h0OnRJ35btvD1SrMA3E1Rb39CiHKTFErXFxO7cEFPtONW374rEuem/vFeSY8uvC tb3jWyXp+qy6F8+XbNEEFiUGWFeAvxMi5vBRzaODxuOF0k/wcBZRJ7XoYgInHc79oRSk 3S9+jB5xOcsYNEjKOHIBnhvJTLkwHNMdVIiB/eoa2760HIjBHnHwSTDNqoNsIwS5IcvB H4Tc1NN0+rB8O9EEDxb5/mCGI3bBP0Momv+W0WRpgQ4QNaQXp85JD25uiWzu/u8qtlVM ZrVbtMVESTnMm9DH7Nr4vbEQ6BeSFlA6XYWfKbzJtRy0RBhYhtx9jKLtOHO/nGwgUkCM YicA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=te66DdP9; 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 197si10028386pge.78.2018.03.26.06.01.04; Mon, 26 Mar 2018 06:01:19 -0700 (PDT) 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=te66DdP9; 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 S1751398AbeCZNAF (ORCPT + 99 others); Mon, 26 Mar 2018 09:00:05 -0400 Received: from mail-qk0-f195.google.com ([209.85.220.195]:37302 "EHLO mail-qk0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751024AbeCZNAC (ORCPT ); Mon, 26 Mar 2018 09:00:02 -0400 Received: by mail-qk0-f195.google.com with SMTP id w6so19911862qkb.4; Mon, 26 Mar 2018 06:00:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=LLSasl0IIkD8YwnC4oyXg50SznsK2mv9pBFueA3yeQU=; b=te66DdP97WvZxdvN7oV7F9vPQ5UqOf/OzRUEs97ujd9QOdLeH72n5lim8eEZNak9sz thjL0jbg/JEG0+siJond3XYFMEiAF/KMWLp2Nm6HRQBZnj0Rc7kX/qdHc8VDalikZDUw Mrn5c56tQllTQYsIxdUN0maMYYXl3BmfS5eOaDSUdFMJnXkbhbPCFvQExh33zolAvAbL WRr4+9mUTqqGvz5mlojXmdBXMPZ1zy+HDzysxKGa1Y+QIPYt+lKo1KIV8jKvNioEaA8U 1RBBBCDTf82hayoBVXNqTyVxyVlTpYhsH2wmJ16F21UsWm5TDsoVzrqeDwCo6wP2rNCm JcYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=LLSasl0IIkD8YwnC4oyXg50SznsK2mv9pBFueA3yeQU=; b=HYRMWmyyajJN4NSdL+8oNij/9GFEENSTEK7YeiqR2Mftjthg+nwTv50w7GfMFf1OQa HSl3u/vNJrk/BbY67tq4he0aGVtGr7iWeLUtiEgjEGA9y6QAwY1rR/TZKSt06hFVD/uk 9JPXxXKaLBjViXT8Ho+uG+iTDyVWGoQO3U4HaMAcuNT4qHdVBnvn2DCAG0PTvggOjEAq kPy/B1C2QmZ0EkC1Y0Zh+suEmZsbHwYBY5bQ5b2kbEJwCIXqSQfZrv2/O+jtxng7E77b U1cvuQf2SWYlZd0XZXOtFF2fCX9cTGDFj4zd2/vOGYzCPPo9MLIOK1x0qE68LszZl9HH Vh3A== X-Gm-Message-State: AElRT7E0u2zNv67aXTpHg3IaxaxcJsgAXsgeqZmapbYppu1G2rRZ6dg8 thlvORzlW81OCJ4T56Rsv6Ikh2/tPgqUdkcIN7c= X-Received: by 10.55.157.66 with SMTP id g63mr55747515qke.107.1522069201383; Mon, 26 Mar 2018 06:00:01 -0700 (PDT) MIME-Version: 1.0 Received: by 10.12.185.25 with HTTP; Mon, 26 Mar 2018 06:00:00 -0700 (PDT) In-Reply-To: <20180321124137.GA21320@guoren> References: <20180320131342.GA31542@guoren> <20180321124137.GA21320@guoren> From: Arnd Bergmann Date: Mon, 26 Mar 2018 15:00:00 +0200 X-Google-Sender-Auth: fRZqaB0GrVLddd4DP8muV9bbbtc Message-ID: Subject: Re: [PATCH 15/19] csky: Build infrastructure To: Guo Ren Cc: linux-arch , Linux Kernel Mailing List , Thomas Gleixner , Daniel Lezcano , Jason Cooper , c-sky_gcc_upstream@c-sky.com, gnu-csky@mentor.com, thomas.petazzoni@bootlin.com, wbx@uclibc-ng.org Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Mar 21, 2018 at 1:41 PM, Guo Ren wrote: > Hi arnd, > > On Wed, Mar 21, 2018 at 03:36:43PM +0800, Arnd Bergmann wrote: >> If the clocksource depends on a driver rather than a feature of the >> architecture, >> this may not be worth optimizing though, so maybe leave it as it is for now. >> > Ok, I'll keep it. > >> >> Usually the kernel should allow multiple CPU types to be selected >> >> together, or ask for a "minimum architecture" level to be selected >> >> by allow newer cores to be used as a superset. >> > No, I need keep them seperate. >> >> Can you explain? What is it that makes them all incompatible? > ck610 is abiv1 and its gcc is different from abiv2, they are: > - csky-linux-abiv1-gcc > - csky-linux-abiv2-gcc > > ck807/810/860 use the same csky-linux-abiv2-gcc, but their instruction-sets > and pipeline schedule are different. So our gcc must&only use '-mcpu=' to > determine which cpu series is. They are different cpu series. > > ck610 only have: ck610 > ck807 could have: ck807 ck807f ck807vf ck807ef > ck810 could have: ck810 ck810f ck810vf ck810ef > ck860 could have: ck860 ck860f ck860vf > f: means FPU co-processor > v: means VDSP co-processor just like "ARM-NEON" > e: is our old DSP co-processor which use HI-LO regs for operation. In > current ck807/ck810 they default have HI-LO regs, so ck807&ck807e is > the same for me. > > For this patch-set, we support: > ck610 > (ck807/ck807f/ck807ef) > (ck810/ck810e/ck810ef) Ok, I understand the part about ck610 being incompatible, but I'm still not sure about the 8xx ones: Do you mean it's impossible to have one kernel that runs across all of them for some other reason, or is it something you haven't allowed because you see no use for it? >> >> > +config CPU_TLB_SIZE >> >> > + int >> >> > + default "128" if(CPU_CK610 || CPU_CK807 || CPU_CK810) >> >> > + default "1024" if(CPU_CK860) >> >> > + >> >> > +config L1_CACHE_SHIFT >> >> > + int >> >> > + default "4" if(CPU_CK610) >> >> > + default "5" if(CPU_CK807 || CPU_CK810) >> >> > + default "6" if(CPU_CK860) >> >> >> >> I think you then need to reverse the order of the list here: When e.g. CK860 >> >> and CK810 are both enabled, L1_CACHE_SHIFT should be the largest >> >> possible size. >> > No, I use L1_CACHE_SHIFT to determine the size of cache_line. >> > When I flush cache for a range of memory, I need the size to loop flush cache line. >> >> This is still relatively easy to fix, you just need a cpu specific loop >> that uses the actual line size rather than the maximum size. > Here is my cacheflush code in mm/cachev2.c: > #define L1_CACHE_BYTES (1< for(i=start; i asm volatile("dcache.cval1 %0\n"::"r"(i)); > asm volatile("sync.is\n"); > > I use L1_CACHE_BYTES as the loop element to increase. So it must be the > current CPU cache line size for "correct&performance". Each of our CPU-series > has a fixed cache line size: > ck610 is 16Bytes > ck807/ck810 is 32Bytes > ck860 is 64Bytes > So I don't need determine them in .dts or detect on boot, just define them in Kconfig. This is basically the same question as above: For c610, using the fixed value is sufficient, because it's incompatible with the others. But if you want to run the same kernel on both ck810 and ck860, then it needs some form of runtime detection. On other architectures, the L1_CACHE_BYTES constant is the maximum possible cache line size, and the cache flush function uses the actual size >> >> > +config SSEG0_BASE >> >> > + hex "Direct mapping physical address" >> >> > + default 0x0 >> >> > + help >> >> > + There are MSAx regs can be used to change the base physical address >> >> > + of direct mapping. The default base physical address is 0x0. >> >> > + >> >> > +config RAM_BASE >> >> > + hex "DRAM base address offset from SSEG0_BASE, it must be the same with dts memory." >> >> > + default 0x08000000 >> >> >> >> To allow one kernel to run on multiple boards, it's better to detect >> >> these two at runtime. >> > CK-CPUs have a mips-like direct-mapping, and I use the macros to calculate the virtual-addr >> > in headers. >> >> On many architectures, we detect the offsets at boot time and pass >> them as variables. On >> ARM, we go as far as patching the kernel at boot time to have constant >> offsets, but usually >> it's not worth the effort. > I know it's duplicate setting with dts for users. But now, I still want > to keep them. I'll consider your advices in future. Ok. Just make sure that the DT always has this information as well, so this can be changed in the future when desired, without having to make incompatible changes to the devicetree binary files. Arnd