On 22.02.21 09:27, Raimundo Sagarzazu wrote: > > Hi all, > > > > I'm trying to give SMbus access to an inmate cell but the system hangs > on this error: “Invalid PCI config write, port cfc, size 1, address > port: 8000f940” when I try to load the cell. > > > > It’s a x86 host and we already have jailhouse running with two inmate > cells giving access to net devices, sharing memory, etc. > > > > From "lspci", I have: > > > > 00:1f.1 SMBus: Intel Corporation Celeron N3350/Pentium > N4200/Atom E3900 Series SMBus Controller (rev 0b) > > DeviceName: Onboard - Other > > Subsystem: Intel Corporation Device 7270 > > Flags: medium devsel, IRQ 20 > > Memory at 91616000 (64-bit, > non-prefetchable) [size=256] > > I/O ports at f040 [size=32] > > Kernel driver in use: i801_smbus > > > > From "jailhouse config create ...": > > > > /* MemRegion: 91516000-915160ff : 0000:00:1f.1 */ > > { > > .phys_start = 0x91516000, > > .virt_start = 0x91516000, > > .size = 0x1000, > > .flags = JAILHOUSE_MEM_READ | > JAILHOUSE_MEM_WRITE, > > }, > > ... > > /* Port I/O: f040-f05f : 0000:00:1f.1 */ > > PIO_RANGE(0xf040, 0x20), > > ... > > /* PCIDevice: 00:1f.1 */ > > { > > .type = JAILHOUSE_PCI_TYPE_DEVICE, > > .iommu = 1, > > .domain = 0x0, > > .bdf = 0xf9, > > .bar_mask = { > > 0xffffff00, 0xffffffff, > 0x00000000, > > 0x00000000, 0xffffffe0, > 0x00000000, > > }, > > .caps_start = 0, > > .num_caps = 0, > > .num_msi_vectors = 0, > > .msi_64bits = 0, > > .msi_maskable = 0, > > .num_msix_vectors = 0, > > .msix_region_size = 0x0, > > .msix_address = 0x0, > > }, > > > > First thing I can see is that lspci shows that device's memory region is: > > Memory at 91616000 (64-bit, non-prefetchable) [size=256] > > > > While "jailhouse config create ..." shows: > > MemRegion: 91516000-915160ff : 0000:00:1f.1 > > > > Is that correct? > > > > Anyway, digging in the code I can see that the error comes on > "hypervisor/pci.c, pci_cfg_write_moderate() ...", when trying to > access address 0x40 but device has no capabilities. > > > > Giving access to this device is not a big issue for us because we can > share "/dev/i2c-0" status over IVshmem but I'd like to known if > there's something else I can do or it just can't be done. > > >
This config space register might be a side-band register. You could permit access by modelling it like a capability, ie. create one at 0x04 of the needed size (at least 1 byte) and with write permissions. Cap ID can be 0 or anything else invalid. Jan -- Siemens AG, T RDA IOT Corporate Competence Center Embedded Linux -- You received this message because you are subscribed to the Google Groups "Jailhouse" group. To unsubscribe from this group and stop receiving emails from it, send an email to jailhouse-dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jailhouse-dev/0d6ec3fd-adf2-d54e-57c9-99244f280538%40siemens.com.