[Bug 271238] mpr (LSI SAS3816) driver not finding all devices in HP D6020 enclosures
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 25 Nov 2024 22:46:52 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=271238 --- Comment #8 from Peter Eriksson <pen@lysator.liu.se> --- Hmm. I added some debugging printf's to the mpr driver and rebooted. It says: > mpr0: mpr_mapping_initialize: Mapping table has a max of 2622 entries and DPM has a max of 128 entries. > mpr0: _mapping_process_dpm_pg0: Start copy of 128 DPM entries into the mapping table. > mpr0: _mapping_find_enc_map_space: Looking for space in the mapping table for added enclosure. [max_num_phy_ids=16, skip_count=0, eot=2622] > mpr0: _mapping_find_enc_map_space: Found space in the mapping for enclosure at map index 16. > mpr0: _mapping_get_dev_info: Initialize 18 map entries for the enclosure, starting at map index 16. > mpr0: _mapping_flush_dpm_pages: Flushing DPM entry 0. And then it preceeds and adds 35 drives (there are 35 drives in each drawer/on each expander). > mpr0: Handle 0x005f SAS Address from SAS device page0 = 5001438041bb92bc > mpr0: mprsas_add_device: Target ID for added device is 33. > mpr0: Found device <4441<SspInit,SspTarg,SepDev>,End Device> <12.0Gbps> handle<0x005f> enclosureHandle<0x0002> slot 17 > mpr0: At enclosure level 0 and connector name (C1 ) > mpr0: Target id 0x21 added > > mpr0: _mapping_find_enc_map_space: Looking for space in the mapping table for added enclosure. [max_num_phy_ids=16, skip_count=0, eot=2622] > mpr0: _mapping_find_enc_map_space: Found space in the mapping for enclosure at map index 34. > mpr0: _mapping_get_dev_info: Initialize 18 map entries for the enclosure, starting at map index 34. > mpr0: _mapping_flush_dpm_pages: Flushing DPM entry 1. Then it adds 18 more map entries starting at 16+18. And promply starts reusing stuff... I wonder if things wouldn't work better it it would add 35 entries and start the next group at 16+35 instead... I wonder where it gets that number 18 from. Aha! root@:/ # mprutil show enclosures Slots Logical ID SEPHandle EncHandle Type 17 300062b218119a40 0000 0001 Direct Attached SES-2 18 5001438041bb9280 005f 0002 External SES-2 18 5001438041bb0000 0061 0003 External SES-2 18 5001438030897600 009c 0004 External SES-2 18 5001438030889a80 009d 0005 External SES-2 There it is... Each drawer has 35 drive slots. And the comes from this code in mpr_mapping.c line 2285: if ((ioc_pg8_flags & MPI2_IOCPAGE8_FLAGS_MASK_MAPPING_MODE) == MPI2_IOCPAGE8_FLAGS_ENCLOSURE_SLOT_MAPPING) { /* * The dev_idx for an enclosure is the start index. If * the start index is within the controller's default * enclosure area, set the number of slots for this * enclosure to the max allowed. Otherwise, it should be * a normal enclosure and the number of slots is in the * DPM entry's Mapping Information. */ if (dev_idx < (sc->num_rsvd_entries + max_num_phy_ids)) { slot_id = 0; if (ioc_pg8_flags & MPI2_IOCPAGE8_FLAGS_DA_START_SLOT_1) slot_id = 1; num_slots = max_num_phy_ids; } else { slot_id = 0; num_slots = dpm_entry->MappingInformation & MPI2_DRVMAP0_MAPINFO_SLOT_MASK; num_slots >>= MPI2_DRVMAP0_MAPINFO_SLOT_SHIFT; } -- You are receiving this mail because: You are on the CC list for the bug.