Received: by 10.213.65.68 with SMTP id h4csp1217845imn; Wed, 21 Mar 2018 05:43:23 -0700 (PDT) X-Google-Smtp-Source: AG47ELvPOP2YwPO57cOe6xiL7Mv+iLW/NxYj90Pj2J0c9llaiIaybe5dBUcoTyjXLULdLZMXa3Sd X-Received: by 10.101.67.2 with SMTP id j2mr14887065pgq.147.1521636203299; Wed, 21 Mar 2018 05:43:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521636203; cv=none; d=google.com; s=arc-20160816; b=pTR5Md8jRRyNHd5ECmSeuAxEufogI6J0Ffxh87TY4RFanjMxEyQ20PaNjHW2yOsrZ4 brPqmH0iMjRdzhsXD4e814DpQaZe7WVHeDJRM8T4stuNoT6MqC2M8MZCtwnQu5BYinRR 3LarV79yMc5I0gGGWtHvZS/ausbcdC9kn3ZqZseXrkuOLlngK4qskg5NonbAk4kFToO2 xUsHpwrdHyXuQdbjk/cEn0AVp4+NneVgXkZNOM8Iu8pintD16mvRXVcocC6+2KMzWCuK Esn2Jj5exMOLtIzYZ8TuRSkWaadhrprmCVjz9FmspVAYZDcfrQ9fbsHBrnIApCltdYQx Z30Q== 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:from:date:arc-authentication-results; bh=+eeqa2LstWhTEs8Me3y0sZ1m9r7MUSoB0uKpveg4G2Y=; b=qERpXwoqw9ubNwJz5D+n62VvB6v5YqWyXqB2Bfr0+S0kEMlLCCniKrnovnLrQhTsrP fqfcTW2Xl5NdLMO7oFjaZqYIdrsHkGpIb2e72LXg3KJ6hAsxSYYZuQCiLMzd2KDpguba /57SHKHDNt1zoHQr7X96oGc2AYcC8v7G5MOp/p7WL8Yb+TZsGyssTBbhhV3rLlIukZe3 iTZE5cwp/h/FwGTtrRU3k7xCWAsKCuotXjZ4B9DHUYAjScpeWM32J3cqc9hSG/8pbhZu R/p/Wq4CpAQqjuj7CFMIZzBZXgcBkCgWrOrWBeTMZjJhB36W6txtxOJ9txLyFqSY1sCS JiKg== ARC-Authentication-Results: i=1; mx.google.com; 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 d126si2710392pgc.385.2018.03.21.05.43.09; Wed, 21 Mar 2018 05:43:23 -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; 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 S1751854AbeCUMmD (ORCPT + 99 others); Wed, 21 Mar 2018 08:42:03 -0400 Received: from smtp2200-217.mail.aliyun.com ([121.197.200.217]:57829 "EHLO smtp2200-217.mail.aliyun.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751644AbeCUMl6 (ORCPT ); Wed, 21 Mar 2018 08:41:58 -0400 X-Alimail-AntiSpam: AC=CONTINUE;BC=0.07444526|-1;CH=green;FP=0|0|0|0|0|-1|-1|-1;HT=e01e04486;MF=ren_guo@c-sky.com;NM=1;PH=DS;RN=10;RT=10;SR=0;TI=SMTPD_---.BOJ3L6V_1521636097; Received: from localhost(mailfrom:ren_guo@c-sky.com fp:223.93.147.148) by smtp.aliyun-inc.com(10.147.44.118); Wed, 21 Mar 2018 20:41:37 +0800 Date: Wed, 21 Mar 2018 20:41:37 +0800 From: Guo Ren To: Arnd Bergmann 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 Subject: Re: [PATCH 15/19] csky: Build infrastructure Message-ID: <20180321124137.GA21320@guoren> References: <20180320131342.GA31542@guoren> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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) > >> > +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< >> > +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. > >> > +config CSKY_NR_IRQS > >> > + int "NR_IRQS to max virtual interrupt numbers of the whole system" > >> > + range 64 8192 > >> > + default "128" > >> > +endmenu > >> > >> This should no longer be needed, with the IRQ domain code, any number > >> of interrupts > >> can be used without noticeable overhead. > > Not I use it, some of our users need it to expand the GPIO irqs. Because > > they don't use irq domain code properly. I move it to Kconfig.debug, OK? > > It sounds like your GPIO driver should get fixed to use irq domains right, > it should not be too hard. The number of GPIOs is typically a compile > time constant today, but we also try to turn it into a dynamic allocation > that we have for IRQs on most targets. Got it, remove the CSKY_NR_IRQS. > What I meant here is that you can get the same behavior by > appending the dtb to the kernel rather than linking it into the > kernel. The reason for preferring the appended one is that you > can more easily use the same kernel binary across boards with > different bootloaders. Ok, got it. I'll use the dtb passed by bootloader first. > I'd say it's better to get rid of it for the upstream port, more importantly > getting rid of the code that checks for this symbol. Usually what happens > with version checks like this one is that they get out of sync quickly > as a new kernel version does things differently and diverges more > from the old release you were comparing against. In device drivers, > we tend to remove all those checks. Ok, follow the rules. > > >> -fno-tree-dse? > > This is from "gcc-4.5 compile linux-4.7" and it will cause wrong code without > > -fno-tree-dse for list.h. Now we use gcc-6.3, so I will try to remove it. > > You can also use the cc-ifversion Makefile macro to apply it on > the old compiler. That way you can still use gcc-4.5 as long as > that remains relevant but don't get worse code generation on > modern versions. Thx for advice, but we don't need support gcc-4.5 now. I'll just remove them. > >> Can you explain why you need the alignement fixups? > > For abiv1 ck610 couldn't handle the unalignment address access, so we > > need soft-alignment exception to fixup. There is no problem in abiv2 cpus. > > Ok. Generally speaking, architectures that don't allow unaligned access > should have all code built in a way that uses aligned access (gcc normally > falls back to byte access when it encounters an unaligned pointer at > compile time), but if this is just for old CPUs that are not used in future > products, having the fixup does sound simpler, as it allows you to still > run new binaries on the old machines. I haven't looked at the implementation > for the fixup here, but I remember the same thing from the nds32 port. > In that case, we ended up keeping the fixup as an option for old > user space, but disabled to softalign fixups for kernel code. Can you do > the same thing here? Ok. I got it, I'll do the same as nds32. Best Regards Guo Ren