From owner-freebsd-mips@FreeBSD.ORG Mon Sep 6 07:34:20 2010 Return-Path: Delivered-To: freebsd-mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8E06810656CA; Mon, 6 Sep 2010 07:34:20 +0000 (UTC) (envelope-from c.jayachandran@gmail.com) Received: from mail-wy0-f182.google.com (mail-wy0-f182.google.com [74.125.82.182]) by mx1.freebsd.org (Postfix) with ESMTP id C535D8FC17; Mon, 6 Sep 2010 07:34:19 +0000 (UTC) Received: by wyb33 with SMTP id 33so5081414wyb.13 for ; Mon, 06 Sep 2010 00:34:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=tqf3msNEBXKb37xP5q3BcXkzFeveNTP43D6i3g3WByk=; b=stKfn6lG/V162f1OrkRlAFR26oPO3bqFwEr4+QU7jCnT8paTrv+4Jo2cSmadEAAW1F 3OEm0UALUZwmp/fe41m7cNWDjWG9eHtFtYMrg0t2eeWorp0HgiA9Il9nD9wfVFxS1kYI pK1GD+szJgfQS4wdiac9RqSpg7F4jT2fBmUis= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=EC3jtq4/f2VYaNAhFTCDaTj+nQmz79r3FpyhvnawzLOIZtJSMaypBc+IVAvfHV0rPB C5QocPaXYovjwAcR+LfoU2enoKHAec/OSUWr8rDXj5FeXHfL1APLETmiP6wbRePr/bGD oG542lmIu3CJKv0fAzepesPG0d5gs+O6niT9k= MIME-Version: 1.0 Received: by 10.216.17.135 with SMTP id j7mr3427568wej.97.1283758458590; Mon, 06 Sep 2010 00:34:18 -0700 (PDT) Received: by 10.216.171.12 with HTTP; Mon, 6 Sep 2010 00:34:18 -0700 (PDT) In-Reply-To: References: Date: Mon, 6 Sep 2010 13:04:18 +0530 Message-ID: From: "Jayachandran C." To: freebsd-mips@freebsd.org Content-Type: multipart/mixed; boundary=0016e64c25c6e6d5b2048f924ed0 Cc: gonzo@freebsd.org Subject: Re: busdma_machdep.c with more than 512M memory X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Sep 2010 07:34:20 -0000 --0016e64c25c6e6d5b2048f924ed0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Wed, Sep 1, 2010 at 12:37 PM, Jayachandran C. wrote: > I was looking at a few crashes I see with PCI drivers, and I think it > is caused by an issue in busdma_machdep.c where physical address is > directly converted using MIPS_PHYS_TO_KSEG1. I have not looked at it > in detail, but it looks obviously wrong. > > Any suggestions on how to fix thiis is welcome, it probably needs an > uncached TLB entry. On 64bit we could use XKPHYS uncached. > > > --- > =A0632 =A0 =A0 =A0 =A0 if (newmap->flags & DMAMAP_UNCACHEABLE) { > =A0633 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 void *tmpaddr =3D (void *)*vaddr; > =A0634 > =A0635 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (tmpaddr) { > =A0636 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 tmpaddr =3D (void > *)MIPS_PHYS_TO_KSEG1(vtophys(tmpaddr)); > =A0637 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 newmap->origbuffer= =3D *vaddr; > =A0638 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 newmap->allocbuffe= r =3D tmpaddr; > =A0639 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 mips_dcache_wbinv_= range((vm_offset_t)*vaddr, > =A0640 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 dmat->maxs= ize); > =A0641 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 *vaddr =3D tmpaddr= ; > =A0642 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 } > --- > 1361 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 bpage->busaddr =3D pmap_kextract(bpa= ge->vaddr); > 1362 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 bpage->vaddr_nocache =3D > 1363 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 (vm_offset_t)MIPS_PHYS_TO_KS= EG1(bpage->busaddr); > 1364 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 mtx_lock(&bounce_lock); Based on Juli's suggestion, I have a patch (attached) to switch the calls to pmap_mapdev/pmap_unmapdev. Seems to work for me now, please review. Thanks, JC. --0016e64c25c6e6d5b2048f924ed0 Content-Type: text/x-patch; charset=US-ASCII; name="busdma.patch" Content-Disposition: attachment; filename="busdma.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gdr0mhbi0 SW5kZXg6IHN5cy9taXBzL21pcHMvYnVzZG1hX21hY2hkZXAuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMv bWlwcy9taXBzL2J1c2RtYV9tYWNoZGVwLmMJKHJldmlzaW9uIDIxMTk4NCkKKysrIHN5cy9taXBz L21pcHMvYnVzZG1hX21hY2hkZXAuYwkod29ya2luZyBjb3B5KQpAQCAtNjIwLDYgKzYyMCw3IEBA CiAgICAgICAgICAgICAgICAgICAgIDB1bCwgZG1hdC0+bG93YWRkciwgZG1hdC0+YWxpZ25tZW50 PyBkbWF0LT5hbGlnbm1lbnQgOiAxdWwsCiAgICAgICAgICAgICAgICAgICAgIGRtYXQtPmJvdW5k YXJ5KTsKICAgICAgICAgfQorCiAgICAgICAgIGlmICgqdmFkZHIgPT0gTlVMTCkgewogCQlpZiAo bmV3bWFwICE9IE5VTEwpIHsKIAkJCV9idXNkbWFfZnJlZV9kbWFtYXAobmV3bWFwKTsKQEAgLTYz Myw3ICs2MzQsOCBAQAogCQl2b2lkICp0bXBhZGRyID0gKHZvaWQgKikqdmFkZHI7CiAKIAkJaWYg KHRtcGFkZHIpIHsKLQkJCXRtcGFkZHIgPSAodm9pZCAqKU1JUFNfUEhZU19UT19LU0VHMSh2dG9w aHlzKHRtcGFkZHIpKTsKKwkJCXByaW50ZigidW5jYWNoZSBtYXBwaW5nICVwICVseFxuIiwgdG1w YWRkciwgKHVfbG9uZyl2dG9waHlzKHRtcGFkZHIpKTsKKwkJCXRtcGFkZHIgPSAodm9pZCAqKXBt YXBfbWFwZGV2KHZ0b3BoeXModG1wYWRkciksIGRtYXQtPm1heHNpemUpOwogCQkJbmV3bWFwLT5v cmlnYnVmZmVyID0gKnZhZGRyOwogCQkJbmV3bWFwLT5hbGxvY2J1ZmZlciA9IHRtcGFkZHI7CiAJ CQltaXBzX2RjYWNoZV93Ymludl9yYW5nZSgodm1fb2Zmc2V0X3QpKnZhZGRyLApAQCAtNjYwLDYg KzY2Miw5IEBACiAJCXZhZGRyID0gbWFwLT5vcmlnYnVmZmVyOwogCX0KIAorCWlmIChtYXAtPmZs YWdzICYgRE1BTUFQX1VOQ0FDSEVBQkxFKSAKKwkJcG1hcF91bm1hcGRldigodm1fb2Zmc2V0X3Qp bWFwLT5hbGxvY2J1ZmZlciwgZG1hdC0+bWF4c2l6ZSk7CisKICAgICAgICAgaWYgKG1hcC0+Zmxh Z3MgJiBETUFNQVBfTUFMTE9DVVNFRCkKIAkJZnJlZSh2YWRkciwgTV9ERVZCVUYpOwogICAgICAg ICBlbHNlCkBAIC0xMzU5LDggKzEzNjQsOSBAQAogCQkJYnJlYWs7CiAJCX0KIAkJYnBhZ2UtPmJ1 c2FkZHIgPSBwbWFwX2tleHRyYWN0KGJwYWdlLT52YWRkcik7Ci0JCWJwYWdlLT52YWRkcl9ub2Nh Y2hlID0gCi0JCSAgICAodm1fb2Zmc2V0X3QpTUlQU19QSFlTX1RPX0tTRUcxKGJwYWdlLT5idXNh ZGRyKTsKKwkJYnBhZ2UtPnZhZGRyX25vY2FjaGUgPSAodm1fb2Zmc2V0X3QpcG1hcF9tYXBkZXYo YnBhZ2UtPmJ1c2FkZHIsIFBBR0VfU0laRSk7CisJCXByaW50ZigiYm91bmNlIG1hcHBpbmcgJXAg JXBcbiIsICh2b2lkICopYnBhZ2UtPmJ1c2FkZHIsCisJCSAgICAodm9pZCAqKWJwYWdlLT52YWRk cl9ub2NhY2hlKTsKIAkJbXR4X2xvY2soJmJvdW5jZV9sb2NrKTsKIAkJU1RBSUxRX0lOU0VSVF9U QUlMKCZiei0+Ym91bmNlX3BhZ2VfbGlzdCwgYnBhZ2UsIGxpbmtzKTsKIAkJdG90YWxfYnBhZ2Vz Kys7Cg== --0016e64c25c6e6d5b2048f924ed0--