Date: Sat, 25 Nov 2006 12:51:28 -0600 From: "Scot Hetzel" <swhetzel@gmail.com> To: FreeBSD-CURRENT <freebsd-current@freebsd.org>, "Bill Paul" <wpaul@windriver.com> Subject: Latest Broadcom NDIS driver requires 4 additional functions Message-ID: <790a9fff0611251051md2ef50cja84440ba3cc7942f@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
------=_Part_99721_1078503.1164480688231 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline I'm trying to upgrade my ndis driver from version 3.100.64.0 to 4.40.19.0, but when I try to load the driver I get a Fatal trap 12 error. #fetch ftp://ftp.hp.com/pub/softpaq/sp33001-33500/sp33008.exe #cabextract -q -L -F 'bcmwl5*' sp33008.exe #ndisgen bcmwl5.inf bcmwl564.sys #kldloadd ./bcmwl564_sys.ko no match for strrchr no match for MmFreeContiguousMemorySpecifyCache no match for MmAllocateContiguousMemorySpecifyCache no match for MmGetPhysicalAddress ichsmb0: <SMBus Controller> port 0x8400-0x840f mem 0xc0003000-0xc0003fff at device 20.0 on pci0 device_attach: ichsmb0 attach returned 6 ndis0: <Broadcom 802.11b/g WLAN> mem 0xc0204000-0xc0205fff irq 21 at device 20.0 on pci6 ndis0: NDIS API Version: 5.1 fpudna in kernel mode! ntoskrnl dummy called... Fatal trap 12: page fault while in kernel mode cpuid = 0; apic id = 00 fault virtual address = 0x1a fault code = supervisor read, page not present instruction pointer = 0x8:0xffffffffa2b1b1eb stack pointer = 0x10:0xffffffffa2a6f100 frame pointer = 0x10:0xffffffffa2b82140 code segment = base 0x0, limit 0xfffff, type 0x1b = DPL 0, pres 1, long 1, def32 0, gran 1 processor eflags = intrrupt enabled, resume, IOPL=0 current process = 1503 (kldload) [thread pid 1503 tid 100099] stopped at 0xffffffffa2b1b1eb: cmpb (%rax, %rdx, 1), %cl db>bt tracing pid 1503 tid 100099 td 0xffffff002f569810 bcmwl564_sys_drv_data_start() at 0xffffffffa2b1b1eb (null)() at 0x11600000000 NOTE: This fatal trap 12 was caused by the missing strrchr function, after implementing only that function, and recompiling the ndis.ko module the driver nolonger crashed the kernel. I was able to create the first 3 functions for the NDIS compatibility layer, but I'm not sure how to find the Physical address from the Virtual Address for the MmGetPhysicalAddress function. Implemented Functions: stricmp strrchr MmAllocateContiguousMemory MmAllocateContiguousMemorySpecifyCache MmFreeContiguousMemory MmFreeContiguousMemorySpecifyCache Unimplemented Functions: memchr - implemented but causes "cast discards qualifiers from pointer target type" (copied from lib/libc/string/memchr.c) MmGetPhysicalAddress - needs to be implemented Any ideas as to how to fix memchr, and implement MmGetPhysicalAddress? Scot -- DISCLAIMER: No electrons were mamed while sending this message. Only slightly bruised. ------=_Part_99721_1078503.1164480688231 Content-Type: text/x-diff; name="ndis.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ndis.patch" X-Attachment-Id: f_euydk0bh SW5kZXg6IHN5cy9jb21wYXQvbmRpcy9zdWJyX250b3Nrcm5sLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls ZTogL2hvbWUvbmN2cy9zcmMvc3lzL2NvbXBhdC9uZGlzL3N1YnJfbnRvc2tybmwuYyx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS44NwpkaWZmIC11IC1yMS44NyBzdWJyX250b3Nrcm5sLmMKLS0tIHN5 cy9jb21wYXQvbmRpcy9zdWJyX250b3Nrcm5sLmMJMTYgTWF5IDIwMDYgMTQ6Mzc6NTcgLTAwMDAJ MS44NworKysgc3lzL2NvbXBhdC9uZGlzL3N1YnJfbnRvc2tybmwuYwkyNSBOb3YgMjAwNiAwNzoy ODo1MSAtMDAwMApAQCAtMTk3LDYgKzE5NywxNiBAQAogc3RhdGljIHVpbnQzMl90IEludGVybG9j a2VkSW5jcmVtZW50KHZvbGF0aWxlIHVpbnQzMl90ICopOwogc3RhdGljIHVpbnQzMl90IEludGVy bG9ja2VkRGVjcmVtZW50KHZvbGF0aWxlIHVpbnQzMl90ICopOwogc3RhdGljIHZvaWQgRXhJbnRl cmxvY2tlZEFkZExhcmdlU3RhdGlzdGljKHVpbnQ2NF90ICosIHVpbnQzMl90KTsKK3N0YXRpYyB2 b2lkICpNbUFsbG9jYXRlQ29udGlndW91c01lbW9yeSh1aW50MzJfdCwgdWludDY0X3QpOworc3Rh dGljIHZvaWQgKk1tQWxsb2NhdGVDb250aWd1b3VzTWVtb3J5U3BlY2lmeUNhY2hlKHVpbnQzMl90 LAorCXVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQzMl90KTsKK3N0YXRpYyB2b2lk IE1tRnJlZUNvbnRpZ3VvdXNNZW1vcnkodm9pZCAqKTsKK3N0YXRpYyB2b2lkIE1tRnJlZUNvbnRp Z3VvdXNNZW1vcnlTcGVjaWZ5Q2FjaGUodm9pZCAqLCB1aW50MzJfdCwgdWludDMyX3QpOworLyoK KyNpZmRlZiBNTUdFVFBIWVNJQ0FMQUREUkVTUworc3RhaWMgdWludDY0X3QgTW1HZXRQaHlzaWNh bEFkZHJlc3Modm9pZCAqKTsKKyNlbmRpZgorKi8KIHN0YXRpYyB1aW50MzJfdCBNbVNpemVPZk1k bCh2b2lkICosIHNpemVfdCk7CiBzdGF0aWMgdm9pZCAqTW1NYXBMb2NrZWRQYWdlcyhtZGwgKiwg dWludDhfdCk7CiBzdGF0aWMgdm9pZCAqTW1NYXBMb2NrZWRQYWdlc1NwZWNpZnlDYWNoZShtZGwg KiwKQEAgLTIzMiw2ICsyNDIsOSBAQAogCXVpbnQzMl90LCB2b2lkICopOwogc3RhdGljIHVpbnQz Ml90IFdtaVRyYWNlTWVzc2FnZSh1aW50NjRfdCwgdWludDMyX3QsIHZvaWQgKiwgdWludDE2X3Qs IC4uLik7CiBzdGF0aWMgdWludDMyX3QgSW9XTUlSZWdpc3RyYXRpb25Db250cm9sKGRldmljZV9v YmplY3QgKiwgdWludDMyX3QpOworI2lmZGVmIE1FTUNIUgorc3RhdGljIHZvaWQgKm50b3Nrcm5s X21lbWNocihjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsKKyNlbmRpZgogc3RhdGljIHZvaWQg Km50b3Nrcm5sX21lbXNldCh2b2lkICosIGludCwgc2l6ZV90KTsKIHN0YXRpYyB2b2lkICpudG9z a3JubF9tZW1tb3ZlKHZvaWQgKiwgdm9pZCAqLCBzaXplX3QpOwogc3RhdGljIGNoYXIgKm50b3Nr cm5sX3N0cnN0cihjaGFyICosIGNoYXIgKik7CkBAIC00MzMsNiArNDQ2LDMyIEBACiAJcmV0dXJu KGRzdCk7CiB9CiAKKyNpZmRlZiBNRU1DSFIKKworLyoKKyAqIC91c3Ivc3JjL3N5cy9tb2R1bGVz L25kaXMvLi4vLi4vY29tcGF0L25kaXMvc3Vicl9udG9za3JubC5jOiBJbiBmdW5jdGlvbiBgbnRv c2tybmxfbWVtY2hyJzoKKyAqIC91c3Ivc3JjL3N5cy9tb2R1bGVzL25kaXMvLi4vLi4vY29tcGF0 L25kaXMvc3Vicl9udG9za3JubC5jOjQ1ODogd2FybmluZzogY2FzdCBkaXNjYXJkcyBxdWFsaWZp ZXJzIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZQorICogKioqIEVycm9yIGNvZGUgMQorICovCisK K3N0YXRpYyB2b2lkICoKK250b3Nrcm5sX21lbWNocihidWYsIGNoLCBsZW4pCisJY29uc3Qgdm9p ZAkqYnVmOworCWludAkJY2g7CisJc2l6ZV90CQlsZW47Cit7CisJaWYgKGxlbiAhPSAwKSB7CisJ CWNvbnN0IHVuc2lnbmVkIGNoYXIgKnAgPSBidWY7CisKKwkJZG8geworCQkJaWYgKCpwKysgPT0g Y2gpCisJCQkJcmV0dXJuICgodm9pZCAqKShwIC0gMSkpOyAvKiBlcnJvciBvY2N1cnMgaGVyZSAq LworCQl9IHdoaWxlICgtLWxlbiAhPSAwKTsKKwl9CisJcmV0dXJuIChOVUxMKTsKK30KKyNlbmRp ZgorCiBzdGF0aWMgY2hhciAqCiBudG9za3JubF9zdHJzdHIocywgZmluZCkKIAljaGFyICpzLCAq ZmluZDsKQEAgLTI0NzEsNiArMjUxMCw2NiBAQAogICAgICAgICByZXR1cm47CiB9CiAKK3N0YXRp YyB2b2lkICoKK01tQWxsb2NhdGVDb250aWd1b3VzTWVtb3J5KHNpemUsIGhpZ2hlc3QpCisJdWlu dDMyX3QJc2l6ZTsJCS8qIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGFsbG9jYXRl ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCXVpbnQ2NF90CWhpZ2hlc3Q7CS8qIFNw ZWNpZmllcyB0aGUgaGlnaGVzdCB2YWxpZCBwaHlzaWNhbCBhZGRyZXNzIHRoYXQgdGhlIGRyaXZl ciBjYW4gdXNlLiAqLworeworCXZvaWQgKmFkZHI7CisJc2l6ZV90IHBhZ2VsZW5ndGggPSAoKHNp emUgKyBQQUdFX1NJWkUgLSAxKSAvIFBBR0VfU0laRSkgKiBQQUdFX1NJWkU7CisKKwlhZGRyID0g RXhBbGxvY2F0ZVBvb2xXaXRoVGFnKE5vblBhZ2VkUG9vbCwgcGFnZWxlbmd0aCwgMCk7CisKKwly ZXR1cm4oYWRkcik7Cit9CisKK3N0YXRpYyB2b2lkICoKK01tQWxsb2NhdGVDb250aWd1b3VzTWVt b3J5U3BlY2lmeUNhY2hlKHNpemUsIGxvd2VzdCwgaGlnaGVzdCwgYm91bmRhcnksIGNhY2hldHlw ZSkKKwl1aW50MzJfdAlzaXplOwkJLyogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8g YWxsb2NhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgIHVpbnQ2NF90 CWxvd2VzdDsJCS8qIFNwZWNpZmllcyB0aGUgbG93ZXN0IHZhbGlkIHBoeXNpY2FsIGFkZHJlc3Mg dGhhdCB0aGUgZHJpdmVyIGNhbiB1c2UuICAqLworCXVpbnQ2NF90CWhpZ2hlc3Q7CS8qIFNwZWNp ZmllcyB0aGUgaGlnaGVzdCB2YWxpZCBwaHlzaWNhbCBhZGRyZXNzIHRoYXQgdGhlIGRyaXZlciBj YW4gdXNlLiAqLworCXVpbnQ2NF90CWJvdW5kYXJ5OwkvKiBJZiBub256ZXJvLCB0aGlzIHZhbHVl IHNwZWNpZmllcyB0aGUgcGh5c2ljYWwgYWRkcmVzcyBtdWx0aXBsZSB0aGF0ICAgKi8KKwkJCQkJ LyogdGhlIGFsbG9jYXRlZCBidWZmZXIgbXVzdCBub3QgY3Jvc3MuICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICovCisJdWludDMyX3QJY2FjaGV0eXBlOwkvKiBpbmRpY2F0ZXMgdGhl IHR5cGUgb2YgY2FjaGluZyBhbGxvd2VkIGZvciB0aGUgcmVxdWVzdGVkIG1lbW9yeSAgICAgICAg Ki8KK3sKKwl2b2lkICphZGRyOworCXNpemVfdCBwYWdlbGVuZ3RoID0gKChzaXplICsgUEFHRV9T SVpFIC0xKSAvIFBBR0VfU0laRSkgKiBQQUdFX1NJWkU7CisKKwlhZGRyID0gRXhBbGxvY2F0ZVBv b2xXaXRoVGFnKE5vblBhZ2VkUG9vbCwgcGFnZWxlbmd0aCwgMCk7CisKKwlyZXR1cm4oYWRkcik7 Cit9CisKK3N0YXRpYyB2b2lkCitNbUZyZWVDb250aWd1b3VzTWVtb3J5KGJhc2UpCisJdm9pZAkJ KmJhc2U7CQkvKiBTcGVjaWZpZXMgdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgYnVmZmVyIHRvIGJl IGZyZWVkICAgICAgICAgICAgICAgICAgKi8KK3sKKwlFeEZyZWVQb29sKGJhc2UpOworfQorCitz dGF0aWMgdm9pZAorTW1GcmVlQ29udGlndW91c01lbW9yeVNwZWNpZnlDYWNoZShiYXNlLCBzaXpl LCBjYWNoZXR5cGUpCisJdm9pZAkJKmJhc2U7CQkvKiBTcGVjaWZpZXMgdGhlIGJhc2UgYWRkcmVz cyBvZiB0aGUgYnVmZmVyIHRvIGJlIGZyZWVkICAgICAgICAgICAgICAgICAgKi8KKwl1aW50MzJf dAlzaXplOwkJLyogU3BlY2lmaWVzIHRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSBidWZmZXIgdG8g YmUgZnJlZWQuIE11c3QgbWF0Y2ggdGhlICovCisJCQkJCS8qIHNpemUgcmVxdWVzdGVkIHdoZW4g dGhlIGJ1ZmZlciB3YXMgYWxsb2NhdGVkICAgICAgICAgICAgICAgICAgICAgICAgICAqLyAKKwl1 aW50MzJfdAljYWNoZXR5cGU7CS8qIFNwZWNpZmllcyB0aGUgY2FjaGUgdHlwZSBvZiB0aGUgYnVm ZmVyIHRvIGJlIGZyZWVkICAgICAgICAgICAgICAgICAgICAqLworeworCUV4RnJlZVBvb2woYmFz ZSk7Cit9CisKKyNpZmRlZiBNTUdFVFBIWVNJQ0FMQUREUkVTUworLyogVGhlIE1tR2V0UGh5c2lj YWxBZGRyZXNzIHJvdXRpbmUgcmV0dXJucyB0aGUgcGh5c2ljYWwgYWRkcmVzcyBjb3JyZXNwb25k aW5nIHRvIGEgdmFsaWQgdmlydHVhbCBhZGRyZXNzLiAqLworCitzdGFpYyB1aW50NjRfdAorTW1H ZXRQaHlzaWNhbEFkZHJlc3MoYmFzZSk7CisJdm9pZAkqYmFzZTsJLyogUG9pbnRlciB0byB0aGUg dmlydHVhbCBhZGRyZXNzIGZvciB3aGljaCB0byByZXR1cm4gdGhlIHBoeXNpY2FsIGFkZHJlc3Mu ICovCit7CisJdm9pZCAqcGh5c2ljYWw7CS8qIHBoeXNpY2FsIGFkZHJlc3MgdGhhdCBjb3JyZXNw b25kcyB0byB0aGUgZ2l2ZW4gdmlydHVhbCBhZGRyZXNzLiAqLworCisJcmV0dXJuKHBoeXNpY2Fs KTsKK30KKyNlbmRpZgorCiBzdGF0aWMgdWludDMyX3QKIE1tU2l6ZU9mTWRsKHZhZGRyLCBsZW4p CiAJdm9pZAkJCSp2YWRkcjsKQEAgLTQxNDQsNiArNDI0Myw3IEBACiAJSU1QT1JUX1NGVU5DKERi Z0JyZWFrUG9pbnQsIDApLAogCUlNUE9SVF9DRlVOQyhzdHJuY21wLCAwKSwKIAlJTVBPUlRfQ0ZV TkMoc3RyY21wLCAwKSwKKwlJTVBPUlRfQ0ZVTkNfTUFQKHN0cmljbXAsIHN0cmNhc2VjbXAsIDAp LAogCUlNUE9SVF9DRlVOQyhzdHJuY3B5LCAwKSwKIAlJTVBPUlRfQ0ZVTkMoc3RyY3B5LCAwKSwK IAlJTVBPUlRfQ0ZVTkMoc3RybGVuLCAwKSwKQEAgLTQxNTEsNiArNDI1MSwxMCBAQAogCUlNUE9S VF9DRlVOQ19NQVAodG9sb3dlciwgbnRvc2tybmxfdG9sb3dlciwgMCksCiAJSU1QT1JUX0NGVU5D X01BUChzdHJzdHIsIG50b3Nrcm5sX3N0cnN0ciwgMCksCiAJSU1QT1JUX0NGVU5DX01BUChzdHJj aHIsIGluZGV4LCAwKSwKKwlJTVBPUlRfQ0ZVTkNfTUFQKHN0cnJjaHIsIHJpbmRleCwgMCksCisj aWZkZWYgTUVNQ0hSCisJSU1QT1JUX0NGVU5DX01BUChtZW1jaHIsIG50b3Nrcm5sX21lbWNociwg MCksCisjZW5kaWYKIAlJTVBPUlRfQ0ZVTkMobWVtY3B5LCAwKSwKIAlJTVBPUlRfQ0ZVTkNfTUFQ KG1lbW1vdmUsIG50b3Nrcm5sX21lbW1vdmUsIDApLAogCUlNUE9SVF9DRlVOQ19NQVAobWVtc2V0 LCBudG9za3JubF9tZW1zZXQsIDApLApAQCAtNDIzOSw2ICs0MzQzLDEzIEBACiAJSU1QT1JUX0ZG VU5DKEV4SW50ZXJsb2NrZWRBZGRMYXJnZVN0YXRpc3RpYywgMiksCiAJSU1QT1JUX1NGVU5DKElv QWxsb2NhdGVNZGwsIDUpLAogCUlNUE9SVF9TRlVOQyhJb0ZyZWVNZGwsIDEpLAorCUlNUE9SVF9T RlVOQyhNbUFsbG9jYXRlQ29udGlndW91c01lbW9yeSwgMiksCisJSU1QT1JUX1NGVU5DKE1tQWxs b2NhdGVDb250aWd1b3VzTWVtb3J5U3BlY2lmeUNhY2hlLCA1KSwKKwlJTVBPUlRfU0ZVTkMoTW1G cmVlQ29udGlndW91c01lbW9yeSwgMSksCisJSU1QT1JUX1NGVU5DKE1tRnJlZUNvbnRpZ3VvdXNN ZW1vcnlTcGVjaWZ5Q2FjaGUsIDMpLAorI2lmZGVmIE1NR0VUUEhZU0lDQUxBRERSRVNTCisJSU1Q T1JUX1NGVU5DKE1tR2V0UGh5c2ljYWxBZGRyZXNzLCAxKSwKKyNlbmRpZgogCUlNUE9SVF9TRlVO QyhNbVNpemVPZk1kbCwgMSksCiAJSU1QT1JUX1NGVU5DKE1tTWFwTG9ja2VkUGFnZXMsIDIpLAog CUlNUE9SVF9TRlVOQyhNbU1hcExvY2tlZFBhZ2VzU3BlY2lmeUNhY2hlLCA2KSwK ------=_Part_99721_1078503.1164480688231--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?790a9fff0611251051md2ef50cja84440ba3cc7942f>