https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=271062
Joerg Pulz <joerg.p...@frm2.tum.de> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #241807|0 |1 is obsolete| | --- Comment #10 from Joerg Pulz <joerg.p...@frm2.tum.de> --- Created attachment 241908 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=241908&action=edit patch v4 for CURRENT and RELENG-13.2 New patch. Introduce FLT (flash layout table) handling for isp(4). Get and parse the FLT header contents to get knowledge about the FLT (version, size, checksum). Verify checksum. Use the retrieved information (size) to get and parse all FLT regions. An FLT region contains information about the regions code, size, start and end. Those can be used to directly access specific data (e.g. NVRAM) without using hardcoded addresses. Currently only the NVRAM addresses are really used, everything else is debug or for future purposes. This should probably work for older, probably since 24xx, cards too. Currently it's only used for 28xx based cards. Some debug from isp(4) showing FLT header and region parsing and using the NVRAM addresses from FLT: isp0: <Qlogic ISP 2812 PCI FC Adapter> mem 0xeea05000-0xeea05fff,0xeea02000-0xeea03fff,0xee900000-0xee9fffff at device 0.0 numa-domain 1 on pci13 isp0: set PCI latency to 64 isp0: loading firmware from flash isp0: Board Type 2800, Chip Revision 0x2, resident F/W Revision 9.4.1 isp0: Attributes: Class2 MultiID T10CRC MQ MSIX VP0_Decoupling HotFW EXMOFF NPMOFF DIFCHOP ASICTMP ATIOMQ (unknown 0x0000162078020000) isp0: 2048 max I/O command limit set isp0: request area @ 0x35e4380000/0x80000 isp0: response area @ 0x35c07d0000/0x10000 isp0: FLTL[DEF]: 0x4400 isp0: FLT[DEF]: version=0x1 length=0xc38(3128) checksum=0xea11 isp0: FLT[DEF]: regions=195 isp0: FLT[0xce]: start=0x0 end=0x3fff size=0x4000 attribute=0x0 isp0: FLT[0x1a]: start=0x4000 end=0x401f size=0x20 attribute=0x0 isp0: FLT[0x1b]: start=0x4020 end=0x43ff size=0x3e0 attribute=0x0 isp0: FLT[0x1c]: start=0x4400 end=0x47ff size=0x400 attribute=0x1 isp0: FLT[0x26]: start=0x4800 end=0x4bff size=0x400 attribute=0x0 isp0: FLT[0x130]: start=0x4c00 end=0x7fff size=0x3400 attribute=0x0 isp0: FLT[0x131]: start=0x8000 end=0xbfff size=0x4000 attribute=0x0 isp0: FLT[0x82]: start=0xc000 end=0xffff size=0x4000 attribute=0x0 isp0: FLT[0x150]: start=0x10000 end=0x13fff size=0x4000 attribute=0x0 isp0: FLT[0x132]: start=0x14000 end=0x17fff size=0x4000 attribute=0x0 isp0: FLT[0x95]: start=0x18000 end=0x1bfff size=0x4000 attribute=0x0 isp0: FLT[0x96]: start=0x1c000 end=0x1ffff size=0x4000 attribute=0x0 isp0: FLT[0x133]: start=0x20000 end=0x23fff size=0x4000 attribute=0x0 isp0: FLT[0x9e]: start=0x24000 end=0x27fff size=0x4000 attribute=0x1 isp0: FLT[0x125]: start=0x28000 end=0x2bfff size=0x4000 attribute=0x0 isp0: FLT[0x126]: start=0x2c000 end=0x2ffff size=0x4000 attribute=0x0 isp0: FLT[0x136]: start=0x30000 end=0x37fff size=0x8000 attribute=0x0 isp0: FLT[0x137]: start=0x38000 end=0x3ffff size=0x8000 attribute=0x0 isp0: FLT[0xd2]: start=0x40000 end=0x47fff size=0x8000 attribute=0x0 isp0: FLT[0x138]: start=0x48000 end=0x4ffff size=0x8000 attribute=0x0 isp0: FLT[0xd1]: start=0x50000 end=0x57fff size=0x8000 attribute=0x0 isp0: FLT[0x139]: start=0x58000 end=0x5ffff size=0x8000 attribute=0x0 isp0: FLT[0xcf]: start=0x60000 end=0x67fff size=0x8000 attribute=0x0 isp0: FLT[0x13a]: start=0x68000 end=0x6ffff size=0x8000 attribute=0x0 isp0: FLT[0x13b]: start=0x70000 end=0x77fff size=0x8000 attribute=0x0 isp0: FLT[0x13]: start=0x78000 end=0x7ffff size=0x8000 attribute=0x0 isp0: FLT[0x13c]: start=0x80000 end=0x87fff size=0x8000 attribute=0x0 isp0: FLT[0x134]: start=0x88000 end=0x8ffff size=0x8000 attribute=0x0 isp0: FLT[0x13d]: start=0x90000 end=0x97fff size=0x8000 attribute=0x0 isp0: FLT[0x101]: start=0x98000 end=0x9bfff size=0x4000 attribute=0x0 isp0: FLT[0x13e]: start=0x9c000 end=0xa3fff size=0x8000 attribute=0x0 isp0: FLT[0xd3]: start=0xa4000 end=0xb3fff size=0x10000 attribute=0x1 isp0: FLT[0x13f]: start=0xb4000 end=0xc3fff size=0x10000 attribute=0x0 isp0: FLT[0x102]: start=0xc4000 end=0xc7fff size=0x4000 attribute=0x0 isp0: FLT[0x140]: start=0xc8000 end=0xcbfff size=0x4000 attribute=0x0 isp0: FLT[0x141]: start=0xcc000 end=0xd3fff size=0x8000 attribute=0x0 isp0: FLT[0x103]: start=0xd4000 end=0xd7fff size=0x4000 attribute=0x0 isp0: FLT[0x142]: start=0xd8000 end=0xdffff size=0x8000 attribute=0x0 isp0: FLT[0xba]: start=0xe0000 end=0xe7fff size=0x8000 attribute=0x0 isp0: FLT[0x143]: start=0xe8000 end=0xeffff size=0x8000 attribute=0x0 isp0: FLT[0x1]: start=0xf0000 end=0x18ffff size=0xa0000 attribute=0x3 isp0: FLT[0x144]: start=0x190000 end=0x1cffff size=0x40000 attribute=0x0 isp0: FLT[0x145]: start=0x1d0000 end=0x20ffff size=0x40000 attribute=0x0 isp0: FLT[0x146]: start=0x210000 end=0x22ffff size=0x20000 attribute=0x0 isp0: FLT[0x147]: start=0x230000 end=0x23ffff size=0x10000 attribute=0x0 isp0: FLT[0x7]: start=0x240000 end=0x24ffff size=0x10000 attribute=0x0 isp0: FLT[0x11]: start=0x250000 end=0x25ffff size=0x10000 attribute=0x0 isp0: FLT[0x148]: start=0x260000 end=0x267fff size=0x8000 attribute=0x0 isp0: FLT[0x149]: start=0x268000 end=0x26ffff size=0x8000 attribute=0x0 isp0: FLT[0x14a]: start=0x270000 end=0x27ffff size=0x10000 attribute=0x0 isp0: FLT[0x14b]: start=0x280000 end=0x2bffff size=0x40000 attribute=0x0 isp0: FLT[0x14c]: start=0x2c0000 end=0x2fffff size=0x40000 attribute=0x0 isp0: FLT[0x14]: start=0x300000 end=0x30007f size=0x80 attribute=0x0 isp0: FLT[0x15]: start=0x300080 end=0x3000ff size=0x80 attribute=0x0 isp0: FLT[0x16]: start=0x300100 end=0x30017f size=0x80 attribute=0x0 isp0: FLT[0x17]: start=0x300180 end=0x3001ff size=0x80 attribute=0x0 isp0: FLT[0xd4]: start=0x300200 end=0x30027f size=0x80 attribute=0x0 isp0: FLT[0xd5]: start=0x300280 end=0x3002ff size=0x80 attribute=0x0 isp0: FLT[0xd6]: start=0x300300 end=0x30037f size=0x80 attribute=0x0 isp0: FLT[0xd7]: start=0x300380 end=0x3003ff size=0x80 attribute=0x0 isp0: FLT[0x3e]: start=0x300400 end=0x303fff size=0x3c00 attribute=0x0 isp0: FLT[0x14d]: start=0x304000 end=0x307fff size=0x4000 attribute=0x0 isp0: FLT[0x50]: start=0x308000 end=0x30807f size=0x80 attribute=0x0 isp0: FLT[0x51]: start=0x308080 end=0x3080ff size=0x80 attribute=0x0 isp0: FLT[0x52]: start=0x308100 end=0x30817f size=0x80 attribute=0x0 isp0: FLT[0x53]: start=0x308180 end=0x3081ff size=0x80 attribute=0x0 isp0: FLT[0xd8]: start=0x308200 end=0x30827f size=0x80 attribute=0x0 isp0: FLT[0xd9]: start=0x308280 end=0x3082ff size=0x80 attribute=0x0 isp0: FLT[0xda]: start=0x308300 end=0x30837f size=0x80 attribute=0x0 isp0: FLT[0xdb]: start=0x308380 end=0x3083ff size=0x80 attribute=0x0 isp0: FLT[0x3f]: start=0x308400 end=0x30bfff size=0x3c00 attribute=0x0 isp0: FLT[0x14e]: start=0x30c000 end=0x30ffff size=0x4000 attribute=0x0 isp0: FLT[0x104]: start=0x310000 end=0x313fff size=0x4000 attribute=0x0 isp0: FLT[0x190]: start=0x314000 end=0x31407f size=0x80 attribute=0x0 isp0: FLT[0x191]: start=0x314080 end=0x3140ff size=0x80 attribute=0x0 isp0: FLT[0x192]: start=0x314100 end=0x31417f size=0x80 attribute=0x0 isp0: FLT[0x193]: start=0x314180 end=0x3141ff size=0x80 attribute=0x0 isp0: FLT[0x194]: start=0x314200 end=0x31427f size=0x80 attribute=0x0 isp0: FLT[0x195]: start=0x314280 end=0x3142ff size=0x80 attribute=0x0 isp0: FLT[0x196]: start=0x314300 end=0x31437f size=0x80 attribute=0x0 isp0: FLT[0x197]: start=0x314380 end=0x3143ff size=0x80 attribute=0x0 isp0: FLT[0x14f]: start=0x314400 end=0x317fff size=0x3c00 attribute=0x0 isp0: FLT[0xa0]: start=0x318000 end=0x31bfff size=0x4000 attribute=0x0 isp0: FLT[0xdf]: start=0x31c000 end=0x31ffff size=0x4000 attribute=0x0 isp0: FLT[0x29]: start=0x320000 end=0x321fff size=0x2000 attribute=0x0 isp0: FLT[0x2a]: start=0x322000 end=0x323fff size=0x2000 attribute=0x0 isp0: FLT[0x5e]: start=0x324000 end=0x325fff size=0x2000 attribute=0x0 isp0: FLT[0x5f]: start=0x326000 end=0x327fff size=0x2000 attribute=0x0 isp0: FLT[0x151]: start=0x328000 end=0x32ffff size=0x8000 attribute=0x0 isp0: FLT[0x152]: start=0x330000 end=0x337fff size=0x8000 attribute=0x0 isp0: FLT[0x87]: start=0x338000 end=0x339fff size=0x2000 attribute=0x0 isp0: FLT[0x88]: start=0x33a000 end=0x33bfff size=0x2000 attribute=0x0 isp0: FLT[0x3c]: start=0x33c000 end=0x33dfff size=0x2000 attribute=0x0 isp0: FLT[0x3d]: start=0x33e000 end=0x33ffff size=0x2000 attribute=0x0 isp0: FLT[0xf4]: start=0x340000 end=0x347fff size=0x8000 attribute=0x0 isp0: FLT[0xf5]: start=0x348000 end=0x34ffff size=0x8000 attribute=0x0 isp0: FLT[0xf6]: start=0x350000 end=0x357fff size=0x8000 attribute=0x0 isp0: FLT[0xf7]: start=0x358000 end=0x35ffff size=0x8000 attribute=0x0 isp0: FLT[0x153]: start=0x360000 end=0x36ffff size=0x10000 attribute=0x0 isp0: FLT[0x154]: start=0x370000 end=0x37ffff size=0x10000 attribute=0x0 isp0: FLT[0x1d]: start=0x380000 end=0x3803ff size=0x400 attribute=0x0 isp0: FLT[0x1f]: start=0x380400 end=0x3807ff size=0x400 attribute=0x0 isp0: FLT[0xf2]: start=0x380800 end=0x380bff size=0x400 attribute=0x0 isp0: FLT[0xf3]: start=0x380c00 end=0x380fff size=0x400 attribute=0x0 isp0: FLT[0x155]: start=0x381000 end=0x383fff size=0x3000 attribute=0x0 isp0: FLT[0x156]: start=0x384000 end=0x387fff size=0x4000 attribute=0x0 isp0: FLT[0xc5]: start=0x388000 end=0x38bfff size=0x4000 attribute=0x0 isp0: FLT[0x157]: start=0x38c000 end=0x38ffff size=0x4000 attribute=0x0 isp0: FLT[0x21]: start=0x390000 end=0x393fff size=0x4000 attribute=0x0 isp0: FLT[0x158]: start=0x394000 end=0x39bfff size=0x8000 attribute=0x0 isp0: FLT[0x159]: start=0x39c000 end=0x3bbfff size=0x20000 attribute=0x0 isp0: FLT[0x15a]: start=0x3bc000 end=0x3fbfff size=0x40000 attribute=0x0 isp0: FLT[0x122]: start=0x3fc000 end=0x3fffff size=0x4000 attribute=0x0 isp0: FLT[0x15b]: start=0x400000 end=0x403fff size=0x4000 attribute=0x0 isp0: FLT[0x15c]: start=0x404000 end=0x407fff size=0x4000 attribute=0x0 isp0: FLT[0x15d]: start=0x408000 end=0x40bfff size=0x4000 attribute=0x0 isp0: FLT[0x15e]: start=0x40c000 end=0x40ffff size=0x4000 attribute=0x0 isp0: FLT[0x15f]: start=0x410000 end=0x417fff size=0x8000 attribute=0x0 isp0: FLT[0x160]: start=0x418000 end=0x41ffff size=0x8000 attribute=0x0 isp0: FLT[0x161]: start=0x420000 end=0x42ffff size=0x10000 attribute=0x0 isp0: FLT[0x162]: start=0x430000 end=0x43ffff size=0x10000 attribute=0x0 isp0: FLT[0x105]: start=0x440000 end=0x447fff size=0x8000 attribute=0x0 isp0: FLT[0x163]: start=0x448000 end=0x44ffff size=0x8000 attribute=0x0 isp0: FLT[0xf1]: start=0x450000 end=0x457fff size=0x8000 attribute=0x0 isp0: FLT[0x164]: start=0x458000 end=0x45ffff size=0x8000 attribute=0x0 isp0: FLT[0x106]: start=0x460000 end=0x467fff size=0x8000 attribute=0x0 isp0: FLT[0x165]: start=0x468000 end=0x46ffff size=0x8000 attribute=0x0 isp0: FLT[0x166]: start=0x470000 end=0x477fff size=0x8000 attribute=0x0 isp0: FLT[0x107]: start=0x478000 end=0x47ffff size=0x8000 attribute=0x0 isp0: FLT[0x167]: start=0x480000 end=0x487fff size=0x8000 attribute=0x0 isp0: FLT[0x187]: start=0x488000 end=0x48ffff size=0x8000 attribute=0x0 isp0: FLT[0x168]: start=0x490000 end=0x497fff size=0x8000 attribute=0x0 isp0: FLT[0x108]: start=0x498000 end=0x49bfff size=0x4000 attribute=0x0 isp0: FLT[0x169]: start=0x49c000 end=0x4a3fff size=0x8000 attribute=0x0 isp0: FLT[0xf0]: start=0x4a4000 end=0x4b3fff size=0x10000 attribute=0x1 isp0: FLT[0x16a]: start=0x4b4000 end=0x4c3fff size=0x10000 attribute=0x0 isp0: FLT[0x109]: start=0x4c4000 end=0x4c7fff size=0x4000 attribute=0x0 isp0: FLT[0x16b]: start=0x4c8000 end=0x4cbfff size=0x4000 attribute=0x0 isp0: FLT[0x16c]: start=0x4cc000 end=0x4d3fff size=0x8000 attribute=0x0 isp0: FLT[0x10a]: start=0x4d4000 end=0x4d7fff size=0x4000 attribute=0x0 isp0: FLT[0x16d]: start=0x4d8000 end=0x4dffff size=0x8000 attribute=0x0 isp0: FLT[0x10b]: start=0x4e0000 end=0x4e7fff size=0x8000 attribute=0x0 isp0: FLT[0x16e]: start=0x4e8000 end=0x4effff size=0x8000 attribute=0x0 isp0: FLT[0x2]: start=0x4f0000 end=0x58ffff size=0xa0000 attribute=0x3 isp0: FLT[0x16f]: start=0x590000 end=0x5cffff size=0x40000 attribute=0x0 isp0: FLT[0x170]: start=0x5d0000 end=0x60ffff size=0x40000 attribute=0x0 isp0: FLT[0x171]: start=0x610000 end=0x62ffff size=0x20000 attribute=0x0 isp0: FLT[0x172]: start=0x630000 end=0x63ffff size=0x10000 attribute=0x0 isp0: FLT[0x9]: start=0x640000 end=0x64ffff size=0x10000 attribute=0x0 isp0: FLT[0xa]: start=0x650000 end=0x65ffff size=0x10000 attribute=0x0 isp0: FLT[0x173]: start=0x660000 end=0x667fff size=0x8000 attribute=0x0 isp0: FLT[0x174]: start=0x668000 end=0x66ffff size=0x8000 attribute=0x0 isp0: FLT[0x175]: start=0x670000 end=0x67ffff size=0x10000 attribute=0x0 isp0: FLT[0x176]: start=0x680000 end=0x6bffff size=0x40000 attribute=0x0 isp0: FLT[0x177]: start=0x6c0000 end=0x6fffff size=0x40000 attribute=0x0 isp0: FLT[0x10c]: start=0x700000 end=0x70007f size=0x80 attribute=0x0 isp0: FLT[0x10d]: start=0x700080 end=0x7000ff size=0x80 attribute=0x0 isp0: FLT[0x10e]: start=0x700100 end=0x70017f size=0x80 attribute=0x0 isp0: FLT[0x10f]: start=0x700180 end=0x7001ff size=0x80 attribute=0x0 isp0: FLT[0x110]: start=0x700200 end=0x70027f size=0x80 attribute=0x0 isp0: FLT[0x111]: start=0x700280 end=0x7002ff size=0x80 attribute=0x0 isp0: FLT[0x112]: start=0x700300 end=0x70037f size=0x80 attribute=0x0 isp0: FLT[0x113]: start=0x700380 end=0x7003ff size=0x80 attribute=0x0 isp0: FLT[0x114]: start=0x700400 end=0x703fff size=0x3c00 attribute=0x0 isp0: FLT[0x178]: start=0x704000 end=0x707fff size=0x4000 attribute=0x0 isp0: FLT[0x115]: start=0x708000 end=0x70807f size=0x80 attribute=0x0 isp0: FLT[0x116]: start=0x708080 end=0x7080ff size=0x80 attribute=0x0 isp0: FLT[0x117]: start=0x708100 end=0x70817f size=0x80 attribute=0x0 isp0: FLT[0x118]: start=0x708180 end=0x7081ff size=0x80 attribute=0x0 isp0: FLT[0x119]: start=0x708200 end=0x70827f size=0x80 attribute=0x0 isp0: FLT[0x11a]: start=0x708280 end=0x7082ff size=0x80 attribute=0x0 isp0: FLT[0x11b]: start=0x708300 end=0x70837f size=0x80 attribute=0x0 isp0: FLT[0x11c]: start=0x708380 end=0x7083ff size=0x80 attribute=0x0 isp0: FLT[0x11d]: start=0x708400 end=0x70bfff size=0x3c00 attribute=0x0 isp0: FLT[0x179]: start=0x70c000 end=0x70ffff size=0x4000 attribute=0x0 isp0: FLT[0x17a]: start=0x710000 end=0x713fff size=0x4000 attribute=0x0 isp0: FLT[0x17b]: start=0x714000 end=0x717fff size=0x4000 attribute=0x0 isp0: FLT[0x17c]: start=0x718000 end=0x71bfff size=0x4000 attribute=0x0 isp0: FLT[0x124]: start=0x71c000 end=0x71ffff size=0x4000 attribute=0x0 isp0: FLT[0x11e]: start=0x720000 end=0x721fff size=0x2000 attribute=0x0 isp0: FLT[0x11f]: start=0x722000 end=0x723fff size=0x2000 attribute=0x0 isp0: FLT[0x120]: start=0x724000 end=0x725fff size=0x2000 attribute=0x0 isp0: FLT[0x121]: start=0x726000 end=0x727fff size=0x2000 attribute=0x0 isp0: FLT[0x17e]: start=0x728000 end=0x72ffff size=0x8000 attribute=0x0 isp0: FLT[0x17f]: start=0x730000 end=0x73ffff size=0x10000 attribute=0x0 isp0: FLT[0x180]: start=0x740000 end=0x75ffff size=0x20000 attribute=0x0 isp0: FLT[0x181]: start=0x760000 end=0x77ffff size=0x20000 attribute=0x0 isp0: FLT[0x182]: start=0x780000 end=0x783fff size=0x4000 attribute=0x0 isp0: FLT[0x183]: start=0x784000 end=0x78bfff size=0x8000 attribute=0x0 isp0: FLT[0x184]: start=0x78c000 end=0x79bfff size=0x10000 attribute=0x0 isp0: FLT[0x185]: start=0x79c000 end=0x7bbfff size=0x20000 attribute=0x0 isp0: FLT[0x186]: start=0x7bc000 end=0x7fbfff size=0x40000 attribute=0x0 isp0: FLT[0x123]: start=0x7fc000 end=0x7fffff size=0x4000 attribute=0x0 isp0: FLT[0xff]: start=0x0 end=0x7fffff size=0x800000 attribute=0x0 isp0: FLT[0xffff]: start=0x0 end=0x7fffff size=0x800000 attribute=0x0 isp0: FLT[FLT]: boot=0x240000 fw=0xf0000 vpd_nvram=0x300000 vpd=0x300000 nvram 0x300080 fdt=0x4000 flt=0x4400 npiv=0x320000 fcp_prif_cfg=0x338000 isp0: NVRAM 0x2000f4c7aa0212b0 0x2100f4c7aa0212b0 maxframelen 2048 isp0: NVRAM loopid 0 fwopt1 0x6006 fwopt2 0x26 fwopt3 0x4000 isp0: Chan 0 0x2000f4c7aa0212b0/0x2100f4c7aa0212b0 Role Initiator isp0: Setting ICB Node 0x2000f4c7aa0212b0 Port 0x2100f4c7aa0212b0 isp0: isp_init: fwopt1 0x6006 fwopt2 0x4401026 fwopt3 0x4022 isp0: isp_init: rqst 00000035e4380000 rsp 00000035c07d0000 isp0: isp_init: isp0: 0x00000000: 01 00 00 00 00 08 00 00 00 00 00 00 21 00 f4 c7 isp0: 0x00000010: aa 02 12 b0 20 00 f4 c7 aa 02 12 b0 00 00 00 00 isp0: 0x00000020: 03 00 00 00 00 04 00 20 00 00 00 00 00 00 38 e4 isp0: 0x00000030: 35 00 00 00 00 00 7d c0 35 00 00 00 00 00 00 00 isp0: 0x00000040: 00 00 00 00 01 00 02 00 00 00 00 00 00 00 00 00 isp0: 0x00000050: 00 00 00 00 00 00 00 00 00 00 0a 00 06 60 00 00 isp0: 0x00000060: 26 10 40 04 22 40 00 00 00 00 00 00 00 00 00 00 isp0: 0x00000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 isp0: INIT F/W from 00000030aaad1000 -- You are receiving this mail because: You are the assignee for the bug.