Received: by 2002:ac0:a582:0:0:0:0:0 with SMTP id m2-v6csp850845imm; Mon, 1 Oct 2018 21:15:07 -0700 (PDT) X-Google-Smtp-Source: ACcGV62OQfGSohbJ1yKejh/9G6O1ijCVko9WUGK5nr4H/SLw0iSWOZkQhlfBRc7RP66LkqNHNwjw X-Received: by 2002:a17:902:a9c9:: with SMTP id b9-v6mr14139200plr.225.1538453707615; Mon, 01 Oct 2018 21:15:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1538453707; cv=none; d=google.com; s=arc-20160816; b=NuG7PSAwK05DkQgmSviqE/i+filtoOFX5f5R+q9vJtJzJzHKTx37tsreCTsLQiHsp+ +TNSIk96V7T2GQxigVRGpQkMKWpn0uBGoeTq/p4y+ispt8ZotDdbBxp7q/gZuJBWN+hB kxNDN7Urav9tzEDcnBsEbEnF//E9medRkV1R9hgp0NZbybNljXxQWghwJreuYGZs8vlx bZXatvkNeytRPOVzhy3wJmv4IFgbd9674ELydrNkNdx6mzWqAB3nKv74FvsVpGjbYfMC kkLcw7vbr2lSogVSvQDgUKHtaXbsT5IDBZlqgWKdBE6cIDfs9d6h9PTORzHfrxa1hfBz I7Iw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:subject :smtp-origin-cluster:cc:to:smtp-origin-hostname:from :smtp-origin-hostprefix:dkim-signature; bh=KhGFRYG2jaLmoijPykpnc7CLDvnfAyslQghCVfVZ/js=; b=APlf+OsTMmB1LjUHeUgcU0fMKderIeBfbk6hOlFRpj/fW9NyjdJkqmA5w7HosiX5kC gHRHJ9z6hu04d4tpbBLPnvWYQdly9gOTV9mq+EB3A0LD6lbbYpWUnQTih/0NNW0toqhc DyiC+jC+5uCaKsdpopa4lU+UG9pac9SszRwbDXHsM06xDv4q3cyS2s3j0GkQJa9T1X40 MlT5Qg85BvkGYXNuChSLzsZ6RUsrLxPt8tma9dZE4KUyfQnGSAWkNFY1l1NQZcQTtXCl nov2MGSYgWiCuWmxVEF9vXlUsVcvvBoPcwGFym4taZKaeYiSLmtGSBNSQxYlMF273W5n u3IQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@fb.com header.s=facebook header.b=JyEmGbad; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fb.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p184-v6si13673657pga.536.2018.10.01.21.14.51; Mon, 01 Oct 2018 21:15:07 -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=pass header.i=@fb.com header.s=facebook header.b=JyEmGbad; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=fb.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726710AbeJBKz4 (ORCPT + 99 others); Tue, 2 Oct 2018 06:55:56 -0400 Received: from mx0a-00082601.pphosted.com ([67.231.145.42]:47448 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726373AbeJBKz4 (ORCPT ); Tue, 2 Oct 2018 06:55:56 -0400 Received: from pps.filterd (m0109334.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w924DmO6020889 for ; Mon, 1 Oct 2018 21:14:45 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fb.com; h=from : to : cc : subject : date : message-id : mime-version : content-type; s=facebook; bh=KhGFRYG2jaLmoijPykpnc7CLDvnfAyslQghCVfVZ/js=; b=JyEmGbadWkZQlcvIC+xwefP5OXoF8kBtSRswLvV5945H3mNqGz6v5Ye4Wfh8N9h+K1A8 UYxkShodNxMEpLeM+tK5yRb5K0xFuugjkh/DrrJ1G1DPTUFavPVxYkq94POk0TW6keUw foY8R2/5F4yceU+bcU6q8tDBohElcMePAH0= Received: from mail.thefacebook.com ([199.201.64.23]) by mx0a-00082601.pphosted.com with ESMTP id 2muwd0gk3q-9 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT) for ; Mon, 01 Oct 2018 21:14:45 -0700 Received: from mx-out.facebook.com (192.168.52.123) by mail.thefacebook.com (192.168.16.24) with Microsoft SMTP Server (TLS) id 14.3.361.1; Mon, 1 Oct 2018 21:14:44 -0700 Received: by devvm24792.prn1.facebook.com (Postfix, from userid 150176) id 29B73648C915; Mon, 1 Oct 2018 21:14:40 -0700 (PDT) Smtp-Origin-Hostprefix: devvm From: Tao Ren Smtp-Origin-Hostname: devvm24792.prn1.facebook.com To: Daniel Lezcano , Thomas Gleixner , Joel Stanley , Andrew Jeffery , Linus Walleij , Lei YU , , , CC: Tao Ren Smtp-Origin-Cluster: prn1c35 Subject: [PATCH] clocksource/drivers/fttmr010: fix invalid interrupt register access Date: Mon, 1 Oct 2018 21:14:37 -0700 Message-ID: <20181002041437.2493192-1-taoren@fb.com> X-Mailer: git-send-email 2.17.1 X-FB-Internal: Safe MIME-Version: 1.0 Content-Type: text/plain X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-10-02_01:,, signatures=0 X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org TIMER_INTR_MASK register (Base Address of Timer + 0x38) is not designed for masking interrupts on ast2500 chips, and it's not even listed in ast2400 datasheet, so it's not safe to access TIMER_INTR_MASK on aspeed chips. Similarly, TIMER_INTR_STATE register (Base Address of Timer + 0x34) is not interrupt status register on ast2400 and ast2500 chips. Although there is no side effect to reset the register in fttmr010_common_init(), it's just misleading to do so. Signed-off-by: Tao Ren --- drivers/clocksource/timer-fttmr010.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/drivers/clocksource/timer-fttmr010.c b/drivers/clocksource/timer-fttmr010.c index c020038ebfab..daf063c9842e 100644 --- a/drivers/clocksource/timer-fttmr010.c +++ b/drivers/clocksource/timer-fttmr010.c @@ -171,16 +171,17 @@ static int fttmr010_timer_set_oneshot(struct clock_event_device *evt) /* Setup counter start from 0 or ~0 */ writel(0, fttmr010->base + TIMER1_COUNT); - if (fttmr010->count_down) + if (fttmr010->count_down) { writel(~0, fttmr010->base + TIMER1_LOAD); - else + } else { writel(0, fttmr010->base + TIMER1_LOAD); - /* Enable interrupt */ - cr = readl(fttmr010->base + TIMER_INTR_MASK); - cr &= ~(TIMER_1_INT_OVERFLOW | TIMER_1_INT_MATCH2); - cr |= TIMER_1_INT_MATCH1; - writel(cr, fttmr010->base + TIMER_INTR_MASK); + /* Enable interrupt */ + cr = readl(fttmr010->base + TIMER_INTR_MASK); + cr &= ~(TIMER_1_INT_OVERFLOW | TIMER_1_INT_MATCH2); + cr |= TIMER_1_INT_MATCH1; + writel(cr, fttmr010->base + TIMER_INTR_MASK); + } return 0; } @@ -287,13 +288,13 @@ static int __init fttmr010_common_init(struct device_node *np, bool is_aspeed) fttmr010->count_down = true; } else { fttmr010->t1_enable_val = TIMER_1_CR_ENABLE | TIMER_1_CR_INT; - } - /* - * Reset the interrupt mask and status - */ - writel(TIMER_INT_ALL_MASK, fttmr010->base + TIMER_INTR_MASK); - writel(0, fttmr010->base + TIMER_INTR_STATE); + /* + * Reset the interrupt mask and status + */ + writel(TIMER_INT_ALL_MASK, fttmr010->base + TIMER_INTR_MASK); + writel(0, fttmr010->base + TIMER_INTR_STATE); + } /* * Enable timer 1 count up, timer 2 count up, except on Aspeed, -- 2.17.1