From owner-freebsd-mips@FreeBSD.ORG Mon Sep 6 07:38:17 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 2AB1D10656B4; Mon, 6 Sep 2010 07:38:17 +0000 (UTC) (envelope-from c.jayachandran@gmail.com) Received: from mail-ww0-f50.google.com (mail-ww0-f50.google.com [74.125.82.50]) by mx1.freebsd.org (Postfix) with ESMTP id 602168FC08; Mon, 6 Sep 2010 07:38:16 +0000 (UTC) Received: by wwb18 with SMTP id 18so2526662wwb.31 for ; Mon, 06 Sep 2010 00:38:15 -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=tBGb2uNPZkJmoXBZcERkBYOuwQ4PMyvP3aP4voHH8Sc=; b=jokWzLmW3qr85rqzc7vAjMQIzF2wuumt2dhiSD6ZVW931cIe2emBgNYKu4DGDMJYai hiJLeHajW0tvKW3aOzYTY46RhUyqK9fC8IwvN6o/RMniJBZapoNzB3bC0IOnYDBjXH7E kySvz17wwFJvyFKB5sbuExchjR3rhVJwWSZ+Y= 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=XgAg6rdvIBZuRYh5g0yJCLVidq6HtnLGrzGjchk5Q01CT/mRpbYZKkCvyswTJXr3ES MaX8Mfd3GCU28K28+QHZwpBXvYijPtHQCruwpUysqVzhdIW5cuDT5MKCUMh4cuwZlKMx Hayb/fPeRx4HdzSF5PhXq1bULkNAihqyIUkNU= MIME-Version: 1.0 Received: by 10.216.17.207 with SMTP id j57mr1140562wej.68.1283758695465; Mon, 06 Sep 2010 00:38:15 -0700 (PDT) Received: by 10.216.171.12 with HTTP; Mon, 6 Sep 2010 00:38:15 -0700 (PDT) In-Reply-To: References: Date: Mon, 6 Sep 2010 13:08:15 +0530 Message-ID: From: "Jayachandran C." To: freebsd-mips@freebsd.org Content-Type: multipart/mixed; boundary=0016364d26cb054440048f925db7 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:38:17 -0000 --0016364d26cb054440048f925db7 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Mon, Sep 6, 2010 at 1:04 PM, Jayachandran C. wrote: > 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->origbuffe= r =3D *vaddr; >> =A0638 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 newmap->allocbuff= er =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->max= size); >> =A0641 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 *vaddr =3D tmpadd= r; >> =A0642 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 } >> --- >> 1361 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 bpage->busaddr =3D pmap_kextract(bp= age->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_K= SEG1(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. That was an older version of the patch, here is the correct version. Thanks, JC. --0016364d26cb054440048f925db7 Content-Type: text/x-patch; charset=US-ASCII; name="mips-busdma.patch" Content-Disposition: attachment; filename="mips-busdma.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gdr0q3bx1 SW5kZXg6IHN5cy9taXBzL21pcHMvYnVzZG1hX21hY2hkZXAuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMv bWlwcy9taXBzL2J1c2RtYV9tYWNoZGVwLmMJKHJldmlzaW9uIDIxMjI0NykKKysrIHN5cy9taXBz L21pcHMvYnVzZG1hX21hY2hkZXAuYwkod29ya2luZyBjb3B5KQpAQCAtNDI1LDcgKzQyNSw2IEBA CiAjZW5kaWYKIAogCWlmIChkbWF0ICE9IE5VTEwpIHsKLQkJCiAgICAgICAgICAgICAgICAgaWYg KGRtYXQtPm1hcF9jb3VudCAhPSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChF QlVTWSk7CiAJCQpAQCAtNjAyLDIwICs2MDEsNiBAQAogICAgICAgICAgICAgICAgICAqICAgICBh bmQgaGFuZGxlcyBtdWx0aS1zZWcgYWxsb2NhdGlvbnMuICBOb2JvZHkgaXMgZG9pbmcKICAgICAg ICAgICAgICAgICAgKiAgICAgbXVsdGktc2VnIGFsbG9jYXRpb25zIHlldCB0aG91Z2guCiAgICAg ICAgICAgICAgICAgICovCi0JICAgICAgICAgdm1fcGFkZHJfdCBtYXhwaHlzOwotCSAgICAgICAg IGlmKCh1aW50MzJfdClkbWF0LT5sb3dhZGRyID49IE1JUFNfS1NFRzBfTEFSR0VTVF9QSFlTKSB7 Ci0JCSAgIC8qIE5vdGUgaW4gdGhlIGVsc2UgY2FzZSBJIGp1c3QgcHV0IGluIHdoYXQgd2FzIGFs cmVhZHkKLQkJICAgICogYmVpbmcgcGFzc2VkIGluIGRtYXQtPmxvd2FkZHIuIEkgYW0gbm90IHN1 cmUKLQkJICAgICogaG93IHRoaXMgd291bGQgaGF2ZSB3b3JrZWQuIFNpbmNlIGxvd2FkZHIgaXMg aW4gdGhlCi0JCSAgICAqIG1heCBhZGRyZXNzIHBvc3Rpb24uIEkgd291bGQgaGF2ZSB0aG91Z2h0 IHRoYXQgdGhlCi0JCSAgICAqIGNhbGxlciB3b3VsZCBoYXZlIHdhbnRlZCBkbWF0LT5oaWdoYWRk ci4gVGhhdCBpcwotCQkgICAgKiBwcmVzdW1pbmcgdGhleSBhcmUgYXNraW5nIGZvciBwaHlzaWNh bCBhZGRyZXNzZXMKLQkJICAgICogd2hpY2ggaXMgd2hhdCBjb250aWdtYWxsb2MgdGFrZXMuIC0g UlJTCi0JCSAgICAqLwotCQkgICBtYXhwaHlzID0gTUlQU19LU0VHMF9MQVJHRVNUX1BIWVMgLSAx OwotCQkgfSBlbHNlIHsKLQkJICAgbWF4cGh5cyA9IGRtYXQtPmxvd2FkZHI7Ci0JCSB9CiAgICAg ICAgICAgICAgICAgKnZhZGRyID0gY29udGlnbWFsbG9jKGRtYXQtPm1heHNpemUsIE1fREVWQlVG LCBtZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgIDB1bCwgZG1hdC0+bG93YWRkciwgZG1hdC0+ YWxpZ25tZW50PyBkbWF0LT5hbGlnbm1lbnQgOiAxdWwsCiAgICAgICAgICAgICAgICAgICAgIGRt YXQtPmJvdW5kYXJ5KTsKQEAgLTYzMyw3ICs2MTgsOCBAQAogCQl2b2lkICp0bXBhZGRyID0gKHZv aWQgKikqdmFkZHI7CiAKIAkJaWYgKHRtcGFkZHIpIHsKLQkJCXRtcGFkZHIgPSAodm9pZCAqKU1J UFNfUEhZU19UT19LU0VHMSh2dG9waHlzKHRtcGFkZHIpKTsKKwkJCXRtcGFkZHIgPSAodm9pZCAq KXBtYXBfbWFwZGV2KHZ0b3BoeXModG1wYWRkciksCisJCQkgICAgZG1hdC0+bWF4c2l6ZSk7CiAJ CQluZXdtYXAtPm9yaWdidWZmZXIgPSAqdmFkZHI7CiAJCQluZXdtYXAtPmFsbG9jYnVmZmVyID0g dG1wYWRkcjsKIAkJCW1pcHNfZGNhY2hlX3diaW52X3JhbmdlKCh2bV9vZmZzZXRfdCkqdmFkZHIs CkBAIC02NjAsNiArNjQ2LDggQEAKIAkJdmFkZHIgPSBtYXAtPm9yaWdidWZmZXI7CiAJfQogCisJ aWYgKG1hcC0+ZmxhZ3MgJiBETUFNQVBfVU5DQUNIRUFCTEUpCisJCXBtYXBfdW5tYXBkZXYoKHZt X29mZnNldF90KW1hcC0+YWxsb2NidWZmZXIsIGRtYXQtPm1heHNpemUpOwogICAgICAgICBpZiAo bWFwLT5mbGFncyAmIERNQU1BUF9NQUxMT0NVU0VEKQogCQlmcmVlKHZhZGRyLCBNX0RFVkJVRik7 CiAgICAgICAgIGVsc2UKQEAgLTEzNjAsNyArMTM0OCw3IEBACiAJCX0KIAkJYnBhZ2UtPmJ1c2Fk ZHIgPSBwbWFwX2tleHRyYWN0KGJwYWdlLT52YWRkcik7CiAJCWJwYWdlLT52YWRkcl9ub2NhY2hl ID0gCi0JCSAgICAodm1fb2Zmc2V0X3QpTUlQU19QSFlTX1RPX0tTRUcxKGJwYWdlLT5idXNhZGRy KTsKKwkJICAgICh2bV9vZmZzZXRfdClwbWFwX21hcGRldihicGFnZS0+YnVzYWRkciwgUEFHRV9T SVpFKTsKIAkJbXR4X2xvY2soJmJvdW5jZV9sb2NrKTsKIAkJU1RBSUxRX0lOU0VSVF9UQUlMKCZi ei0+Ym91bmNlX3BhZ2VfbGlzdCwgYnBhZ2UsIGxpbmtzKTsKIAkJdG90YWxfYnBhZ2VzKys7Cg== --0016364d26cb054440048f925db7--