03:23:53 hrm... 06:50:20 jv 06:50:26 grr. 06:50:50 jbk see impl_setup_ddi() in i86pc/os/ddi_impl.c 06:50:58 for props.. 13:29:03 heh grr is my reaction after looknig at pci_boot.c and trying to add in segment support :) 13:30:12 i'm probably going to reboot a VM a few times w/ kmdb just to figure out what's actually happening when in relation to other stuff (we're still early enough no other cpus or threads are going yet) 13:31:28 because i'm getting a headache trying to reason about all of that (and it wouldn't surprise me if a lot of it is to deal with circa mid-1990s systems) 13:35:12 but i'm hoping (praying) that any root complexes on a > 0 segment should by enumerated by ACPI (so we'll have the segment #) and should happen before any children on those complexes are enumerated (so we'll have the dip of the >0 segment root complex already available) 13:35:50 because if not, i'm not sure how it can work without fairly major surgery in there that'd i'd prefer to avoid if at all possible 13:39:15 (I also have no idea how we should name these things. right now we do (roughly) 'pci@,0' which is roughly the bus# (I'm still teasing apart the code, but I think pci-pci bridges might throw off the numbering) 16:35:10 jbk: I'd think something like "don't change names of stuff on segment #0; prefix stuff on segments > 0 with some identifier of the segment" ? 16:35:38 that's probably what I'm leaning towards... 18:33:55 heh.. this is getting tricky because of all the legacy bits.. 19:49:10 hrm... is there a way for memory allocated with BOP_ALLOC() to persist after release_bootstrap() (it looks like all that memory gets released if not there, by the point that's run) 19:49:18 at least from waht I can tell.. 20:04:38 (ultimately the problem is we're doing things early in boot... likely for legacy reasons where it's unclear if it's still necessary or if changing things would break things... that really is less than ideal 20:47:43 err doing things in an order less than ideal 21:14:21 bop alloc takes from MISC_VA_* and lives long enoug for you 21:14:38 there's also boot_alloc which fills a gap between bop and full kmem 21:16:07 I don't think you should be that early in boot for anything pci though 21:18:04 I wish that was the case 21:23:11 the problem is since the # of segments can be arbitrary, unless we want to parse the MCFG table every time we do a cfgspace access, we need to stash the base address and min, max bus for each segment, which means either declaring a > 512KB array (UINT16_MAX * (sizeof (uint64_t) + 2 * sizeof (uint8_t)) or allocating some memory 21:23:43 though it might be better to just parse it each time (it's not too bad) since it's not clear if segment values are guaranteed to be consecutive 21:24:16 I was going for the mcfg_base_addr[segment] where it's allocated based on the max segmentr #, but that might end up not being great either.. 21:26:30 it seems like it'd be cleaner (and certainly would be easier for this) if the pci/pcie drivers actually drove (ahem) drove the enumeration of their children instead of a separate module, but there's probably a reason for it (unfortunately I've not found anything so far to explain what it'd be) 21:28:55 and would be a pretty big change 21:38:46 I told you I'd forget to do that 21:38:48 (thanks hadfl) 21:40:21 jbk: I reorganized aarch64 so the PCI drivers drove their own enumeration. It doesn't work like that on x86 because you don't have a device node to kick it off 21:40:42 you could discover only the roots, and have them enumerate themselves, but it turns out you'll use the same code you're using anyway andi t's not worth it 21:40:48 (on x86) 21:41:14 the magical reason things happen that way is there was no other way to discover PCI in the x86 world 21:41:49 being told about it in detail by firmware is novel up until acpi and really pci-e 21:47:35 jbk: I guess relevant to that also is that we drive config space access through the root dip 21:47:48 so the drivers know how to access their own config space and nobody else does 21:47:59 (because some PCIe on ARM boards isn't strictly PCIe per the spec) 22:07:17 richlowe: yeah, the problem is on x86, we don't use the root dip while enumerating or re-enumerating (renumerating? :P) 22:07:25 or adding/removing workaround while doing all of that 22:08:26 I know, that's why I had to change all on the arm side 22:10:03 am I blind, or do we not have a easy CLI way to see if LSO is enabled on an interface. 22:10:03 I'm not sure of the specifics, but I'm pretty sure michael has run arm64-gate+acpi on an unfortunately segmented ampere system 22:10:36 so I'm maybe 90% sure what I did is enough for the "has segments for more bdf space, but doesn't really care after that" class of system. 22:58:11 sommerfeld: I feel like you might be right, and that it should really appear in "ipadm show-ifprop" presumably 23:07:34 yeah, I looked in both ipadm and dladm and didn't see it in either place. 23:09:20 found it via mdb -k (and discovered that our e1000g driver doesn't enable LSO on the 82574 but does enable it on the 82753) 23:26:47 i suspect it might (at best) be a private property of the NIC 23:29:29 yeah, it really belongs in ipadm (showing what was actually negotiated).