# K1441–K1445 PCI memory BAR size contract The caller owns a PCI configuration mapping and must save the command register and every BAR DWORD before probing size. With memory and I/O decoding disabled, it writes all ones, reads back the sizing mask, restores the BAR DWORDs and command register, then verifies readback. A BAR with no assigned base may publish its measured size and type, but it cannot claim a memory range. A logical BAR range is published only after restoration and assigned-base decoding succeed. A probe failure leaves no newly owned range and must still restore the original device configuration. The pure decoder distinguishes I/O BARs by bit 0 and memory width by bits 2–1. It accepts 32-bit memory type 0 and 64-bit memory type 2; other memory types are rejected. It removes the low four flag bits from the sizing mask, combines the high DWORD for a 64-bit BAR, and requires a nonzero power-of-two size. The size-only decoder accepts an unassigned BAR. For a range claim, the decoded base must be nonzero and aligned to that size, and `base + size` must not overflow. I/O space is never published as memory. Local positive fixtures cover aligned 32-bit and 64-bit memory BARs and size-only decoding of unassigned BARs. The negative fixture supplies a non-contiguous size mask and requires an explicit `MalformedMask` error with unchanged range ownership. K1445 must measure actual PCI BAR save/probe/restore and mapped-range bounds in an isolated guest before development guest acceptance is recorded.