Message ID | 1388934290-27700-1-git-send-email-mmishael@redhat.com |
---|---|
State | New |
Headers | show |
Il 05/01/2014 16:04, Miki Mishael ha scritto: > Support for pci-serial-2x and pci-serial-4x added to inf file. > Standard Windows driver mf.sys used to split single function > device into per-port nodes. > > Signed-off-by: Miki Mishael <mmishael@redhat.com> > Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com> > --- > docs/qemupciserial.inf | 227 ++++++++++++++++++++++++++++++------------------- > 1 file changed, 140 insertions(+), 87 deletions(-) > > diff --git a/docs/qemupciserial.inf b/docs/qemupciserial.inf > index 3474310..c6988b9 100644 > --- a/docs/qemupciserial.inf > +++ b/docs/qemupciserial.inf > @@ -11,99 +11,152 @@ > ; (Com+Lpt)" from the list. Click "Have a disk". Select this file. > ; Procedure may vary a bit depending on the windows version. > > -; FIXME: This file covers the single port version only. > +; This file covers all options: pci-serial, pci-serial-2x, pci-serial-4x > +; for both 32 and 64 bit platforms. > > [Version] > -Signature="$CHICAGO$" > -Class=Ports > -ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} > +Signature="$Windows NT$" > +Class=MultiFunction > +ClassGUID={4d36e971-e325-11ce-bfc1-08002be10318} > Provider=%QEMU% > -DriverVer=09/24/2012,1.3.0 > - > -[SourceDisksNames] > -3426=windows cd > - > -[SourceDisksFiles] > -serial.sys = 3426 > -serenum.sys = 3426 > - > -[DestinationDirs] > -DefaultDestDir = 11 ;LDID_SYS > -ComPort.NT.Copy = 12 ;DIRID_DRIVERS > -SerialEnumerator.NT.Copy=12 ;DIRID_DRIVERS > - > -; Drivers > -;---------------------------------------------------------- > +DriverVer=12/29/2013,1.3.0 > +[ControlFlags] > +ExcludeFromSelect=* > [Manufacturer] > -%QEMU%=QEMU,NTx86 > +%QEMU%=QEMU,NTx86,NTAMD64 > > [QEMU.NTx86] > -%QEMU-PCI_SERIAL.DeviceDesc% = ComPort, "PCI\VEN_1b36&DEV_0002&CC_0700" > +%QEMU-PCI_SERIAL_1_PORT%=ComPort_inst1, PCI\VEN_1B36&DEV_0002&SUBSYS_11001AF4&REV_01 > +%QEMU-PCI_SERIAL_2_PORT%=ComPort_inst2, PCI\VEN_1B36&DEV_0003&SUBSYS_11001AF4&REV_01 > +%QEMU-PCI_SERIAL_4_PORT%=ComPort_inst4, PCI\VEN_1B36&DEV_0004&SUBSYS_11001AF4&REV_01 I think checking the subsystem is not necessary (and I think downstreams could legitimately change it). Can you check CC and REV but not SUBSYS? Otherwise I cannot pretend I know what's going on, but it makes sense. :) Paolo
On Jan 7, 2014, at 4:45 PM, Paolo Bonzini <pbonzini@redhat.com> wrote: > Il 05/01/2014 16:04, Miki Mishael ha scritto: >> Support for pci-serial-2x and pci-serial-4x added to inf file. >> Standard Windows driver mf.sys used to split single function >> device into per-port nodes. >> >> Signed-off-by: Miki Mishael <mmishael@redhat.com> >> Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com> >> --- >> docs/qemupciserial.inf | 227 ++++++++++++++++++++++++++++++------------------- >> 1 file changed, 140 insertions(+), 87 deletions(-) >> >> diff --git a/docs/qemupciserial.inf b/docs/qemupciserial.inf >> index 3474310..c6988b9 100644 >> --- a/docs/qemupciserial.inf >> +++ b/docs/qemupciserial.inf >> @@ -11,99 +11,152 @@ >> ; (Com+Lpt)" from the list. Click "Have a disk". Select this file. >> ; Procedure may vary a bit depending on the windows version. >> >> -; FIXME: This file covers the single port version only. >> +; This file covers all options: pci-serial, pci-serial-2x, pci-serial-4x >> +; for both 32 and 64 bit platforms. >> >> [Version] >> -Signature="$CHICAGO$" >> -Class=Ports >> -ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} >> +Signature="$Windows NT$" >> +Class=MultiFunction >> +ClassGUID={4d36e971-e325-11ce-bfc1-08002be10318} >> Provider=%QEMU% >> -DriverVer=09/24/2012,1.3.0 >> - >> -[SourceDisksNames] >> -3426=windows cd >> - >> -[SourceDisksFiles] >> -serial.sys = 3426 >> -serenum.sys = 3426 >> - >> -[DestinationDirs] >> -DefaultDestDir = 11 ;LDID_SYS >> -ComPort.NT.Copy = 12 ;DIRID_DRIVERS >> -SerialEnumerator.NT.Copy=12 ;DIRID_DRIVERS >> - >> -; Drivers >> -;---------------------------------------------------------- >> +DriverVer=12/29/2013,1.3.0 >> +[ControlFlags] >> +ExcludeFromSelect=* >> [Manufacturer] >> -%QEMU%=QEMU,NTx86 >> +%QEMU%=QEMU,NTx86,NTAMD64 >> >> [QEMU.NTx86] >> -%QEMU-PCI_SERIAL.DeviceDesc% = ComPort, "PCI\VEN_1b36&DEV_0002&CC_0700" >> +%QEMU-PCI_SERIAL_1_PORT%=ComPort_inst1, PCI\VEN_1B36&DEV_0002&SUBSYS_11001AF4&REV_01 >> +%QEMU-PCI_SERIAL_2_PORT%=ComPort_inst2, PCI\VEN_1B36&DEV_0003&SUBSYS_11001AF4&REV_01 >> +%QEMU-PCI_SERIAL_4_PORT%=ComPort_inst4, PCI\VEN_1B36&DEV_0004&SUBSYS_11001AF4&REV_01 > > I think checking the subsystem is not necessary (and I think downstreams > could legitimately change it). Can you check CC and REV but not SUBSYS? PNP ID can be reduced to vendor and device ID only, for example: PCI\VEN_1B36&DEV_0002 . But in this case we cannot check revision. Yan. > > Otherwise I cannot pretend I know what's going on, but it makes sense. :) > > Paolo
Il 08/01/2014 16:07, Yan Vugenfirer ha scritto: >>> >>> +%QEMU-PCI_SERIAL_1_PORT%=ComPort_inst1, >>> PCI\VEN_1B36&DEV_0002&SUBSYS_11001AF4&REV_01 >>> +%QEMU-PCI_SERIAL_2_PORT%=ComPort_inst2, >>> PCI\VEN_1B36&DEV_0003&SUBSYS_11001AF4&REV_01 >>> +%QEMU-PCI_SERIAL_4_PORT%=ComPort_inst4, >>> PCI\VEN_1B36&DEV_0004&SUBSYS_11001AF4&REV_01 >> >> I think checking the subsystem is not necessary (and I think downstreams >> could legitimately change it). Can you check CC and REV but not SUBSYS? > > PNP ID can be reduced to vendor and device ID only, for example: > PCI\VEN_1B36&DEV_0002 . But in this case we cannot check revision. Gerd, Michael, what do you think is better? Not check revision, or enforcing subsystem? Paolo
On Wed, Jan 08, 2014 at 05:11:48PM +0100, Paolo Bonzini wrote: > Il 08/01/2014 16:07, Yan Vugenfirer ha scritto: > >>> > >>> +%QEMU-PCI_SERIAL_1_PORT%=ComPort_inst1, > >>> PCI\VEN_1B36&DEV_0002&SUBSYS_11001AF4&REV_01 > >>> +%QEMU-PCI_SERIAL_2_PORT%=ComPort_inst2, > >>> PCI\VEN_1B36&DEV_0003&SUBSYS_11001AF4&REV_01 > >>> +%QEMU-PCI_SERIAL_4_PORT%=ComPort_inst4, > >>> PCI\VEN_1B36&DEV_0004&SUBSYS_11001AF4&REV_01 > >> > >> I think checking the subsystem is not necessary (and I think downstreams > >> could legitimately change it). Can you check CC and REV but not SUBSYS? > > > > PNP ID can be reduced to vendor and device ID only, for example: > > PCI\VEN_1B36&DEV_0002 . But in this case we cannot check revision. > > Gerd, Michael, what do you think is better? Not check revision, or > enforcing subsystem? > > Paolo AFAIK the 0.9.X spec explicitly says you should look at subsystem.
On Mi, 2014-01-08 at 17:11 +0100, Paolo Bonzini wrote: > Il 08/01/2014 16:07, Yan Vugenfirer ha scritto: > >>> > >>> +%QEMU-PCI_SERIAL_1_PORT%=ComPort_inst1, > >>> PCI\VEN_1B36&DEV_0002&SUBSYS_11001AF4&REV_01 > >>> +%QEMU-PCI_SERIAL_2_PORT%=ComPort_inst2, > >>> PCI\VEN_1B36&DEV_0003&SUBSYS_11001AF4&REV_01 > >>> +%QEMU-PCI_SERIAL_4_PORT%=ComPort_inst4, > >>> PCI\VEN_1B36&DEV_0004&SUBSYS_11001AF4&REV_01 > >> > >> I think checking the subsystem is not necessary (and I think downstreams > >> could legitimately change it). Can you check CC and REV but not SUBSYS? > > > > PNP ID can be reduced to vendor and device ID only, for example: > > PCI\VEN_1B36&DEV_0002 . But in this case we cannot check revision. > > Gerd, Michael, what do you think is better? Not check revision, or > enforcing subsystem? No need to check the revision. There is only one, I doubt this will ever change, and should we do a rev2 virtual hardware it is supposed to be backward-compatible to rev1 (otherwise we should hand out a new pci id to the device). [ drivers which depend on few features of the hypothetical rev2 hardware and don't work with rev1 would need a revision check ] cheers, Gerd
On Mon, Jan 13, 2014 at 11:13:07AM +0100, Gerd Hoffmann wrote: > On Mi, 2014-01-08 at 17:11 +0100, Paolo Bonzini wrote: > > Il 08/01/2014 16:07, Yan Vugenfirer ha scritto: > > >>> > > >>> +%QEMU-PCI_SERIAL_1_PORT%=ComPort_inst1, > > >>> PCI\VEN_1B36&DEV_0002&SUBSYS_11001AF4&REV_01 > > >>> +%QEMU-PCI_SERIAL_2_PORT%=ComPort_inst2, > > >>> PCI\VEN_1B36&DEV_0003&SUBSYS_11001AF4&REV_01 > > >>> +%QEMU-PCI_SERIAL_4_PORT%=ComPort_inst4, > > >>> PCI\VEN_1B36&DEV_0004&SUBSYS_11001AF4&REV_01 > > >> > > >> I think checking the subsystem is not necessary (and I think downstreams > > >> could legitimately change it). Can you check CC and REV but not SUBSYS? > > > > > > PNP ID can be reduced to vendor and device ID only, for example: > > > PCI\VEN_1B36&DEV_0002 . But in this case we cannot check revision. > > > > Gerd, Michael, what do you think is better? Not check revision, or > > enforcing subsystem? > > No need to check the revision. There is only one, I doubt this will > ever change, and should we do a rev2 virtual hardware it is supposed to > be backward-compatible to rev1 (otherwise we should hand out a new pci > id to the device). > > [ drivers which depend on few features of the hypothetical rev2 hardware > and don't work with rev1 would need a revision check ] > > cheers, > Gerd > Well linux checks revision: if (pci_dev->revision != VIRTIO_PCI_ABI_VERSION) { printk(KERN_ERR "virtio_pci: expected ABI version %d, got %d\n", VIRTIO_PCI_ABI_VERSION, pci_dev->revision); return -ENODEV; } so it seems better to be consistent. in any case, we must check subsystem ids, the spec is very explicit on this point.
Il 13/01/2014 15:48, Michael S. Tsirkin ha scritto: > > if (pci_dev->revision != VIRTIO_PCI_ABI_VERSION) { > printk(KERN_ERR "virtio_pci: expected ABI version %d, > got %d\n", > VIRTIO_PCI_ABI_VERSION, pci_dev->revision); > return -ENODEV; > } > > so it seems better to be consistent. > in any case, we must check subsystem ids, the spec is very > explicit on this point. This is not a virtio device. Paolo
On Mon, Jan 13, 2014 at 03:56:49PM +0100, Paolo Bonzini wrote: > Il 13/01/2014 15:48, Michael S. Tsirkin ha scritto: > > > > if (pci_dev->revision != VIRTIO_PCI_ABI_VERSION) { > > printk(KERN_ERR "virtio_pci: expected ABI version %d, > > got %d\n", > > VIRTIO_PCI_ABI_VERSION, pci_dev->revision); > > return -ENODEV; > > } > > > > so it seems better to be consistent. > > in any case, we must check subsystem ids, the spec is very > > explicit on this point. > > This is not a virtio device. > > Paolo oh I didn't realize that - thought it's virtio serial we are talking about. In that case I agree with Gerd.
Il 13/01/2014 16:03, Michael S. Tsirkin ha scritto: >>> > > so it seems better to be consistent. >>> > > in any case, we must check subsystem ids, the spec is very >>> > > explicit on this point. >> > >> > This is not a virtio device. >> > >> > Paolo > oh > I didn't realize that - thought it's virtio serial we are talking about. > In that case I agree with Gerd. Ok, so we all agree. Miki, can you do v2 with the same ID (vendor/product/CC)? Thanks, Paolo
diff --git a/docs/qemupciserial.inf b/docs/qemupciserial.inf index 3474310..c6988b9 100644 --- a/docs/qemupciserial.inf +++ b/docs/qemupciserial.inf @@ -11,99 +11,152 @@ ; (Com+Lpt)" from the list. Click "Have a disk". Select this file. ; Procedure may vary a bit depending on the windows version. -; FIXME: This file covers the single port version only. +; This file covers all options: pci-serial, pci-serial-2x, pci-serial-4x +; for both 32 and 64 bit platforms. [Version] -Signature="$CHICAGO$" -Class=Ports -ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} +Signature="$Windows NT$" +Class=MultiFunction +ClassGUID={4d36e971-e325-11ce-bfc1-08002be10318} Provider=%QEMU% -DriverVer=09/24/2012,1.3.0 - -[SourceDisksNames] -3426=windows cd - -[SourceDisksFiles] -serial.sys = 3426 -serenum.sys = 3426 - -[DestinationDirs] -DefaultDestDir = 11 ;LDID_SYS -ComPort.NT.Copy = 12 ;DIRID_DRIVERS -SerialEnumerator.NT.Copy=12 ;DIRID_DRIVERS - -; Drivers -;---------------------------------------------------------- +DriverVer=12/29/2013,1.3.0 +[ControlFlags] +ExcludeFromSelect=* [Manufacturer] -%QEMU%=QEMU,NTx86 +%QEMU%=QEMU,NTx86,NTAMD64 [QEMU.NTx86] -%QEMU-PCI_SERIAL.DeviceDesc% = ComPort, "PCI\VEN_1b36&DEV_0002&CC_0700" - -; COM sections -;---------------------------------------------------------- -[ComPort.AddReg] -HKR,,PortSubClass,1,01 - -[ComPort.NT] -AddReg=ComPort.AddReg, ComPort.NT.AddReg -LogConfig=caa -SyssetupPnPFlags = 1 - -[ComPort.NT.HW] -AddReg=ComPort.NT.HW.AddReg - -[ComPort.NT.AddReg] -HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" - -[ComPort.NT.HW.AddReg] -HKR,,"UpperFilters",0x00010000,"serenum" - -;-------------- Service installation -; Port Driver (function driver for this device) -[ComPort.NT.Services] -AddService = Serial, 0x00000002, Serial_Service_Inst, Serial_EventLog_Inst -AddService = Serenum,,Serenum_Service_Inst - -; -------------- Serial Port Driver install sections -[Serial_Service_Inst] -DisplayName = %Serial.SVCDESC% -ServiceType = 1 ; SERVICE_KERNEL_DRIVER -StartType = 1 ; SERVICE_SYSTEM_START (this driver may do detection) -ErrorControl = 0 ; SERVICE_ERROR_IGNORE -ServiceBinary = %12%\serial.sys -LoadOrderGroup = Extended base - -; -------------- Serenum Driver install section -[Serenum_Service_Inst] -DisplayName = %Serenum.SVCDESC% -ServiceType = 1 ; SERVICE_KERNEL_DRIVER -StartType = 3 ; SERVICE_DEMAND_START -ErrorControl = 1 ; SERVICE_ERROR_NORMAL -ServiceBinary = %12%\serenum.sys -LoadOrderGroup = PNP Filter - -[Serial_EventLog_Inst] -AddReg = Serial_EventLog_AddReg - -[Serial_EventLog_AddReg] -HKR,,EventMessageFile,0x00020000,"%%SystemRoot%%\System32\IoLogMsg.dll;%%SystemRoot%%\System32\drivers\serial.sys" -HKR,,TypesSupported,0x00010001,7 - -; The following sections are COM port resource configs. -; Section name format means: -; Char 1 = c (COM port) -; Char 2 = I/O config: 1 (3f8), 2 (2f8), 3 (3e8), 4 (2e8), a (any) -; Char 3 = IRQ config: #, a (any) - -[caa] ; Any base, any IRQ -ConfigPriority=HARDRECONFIG -IOConfig=8@100-ffff%fff8(3ff::) -IRQConfig=S:3,4,5,7,9,10,11,12,14,15 +%QEMU-PCI_SERIAL_1_PORT%=ComPort_inst1, PCI\VEN_1B36&DEV_0002&SUBSYS_11001AF4&REV_01 +%QEMU-PCI_SERIAL_2_PORT%=ComPort_inst2, PCI\VEN_1B36&DEV_0003&SUBSYS_11001AF4&REV_01 +%QEMU-PCI_SERIAL_4_PORT%=ComPort_inst4, PCI\VEN_1B36&DEV_0004&SUBSYS_11001AF4&REV_01 + +[ComPort_inst1] +Include=mf.inf +Needs=MFINSTALL.mf + +[ComPort_inst2] +Include=mf.inf +Needs=MFINSTALL.mf + +[ComPort_inst4] +Include=mf.inf +Needs=MFINSTALL.mf + +[ComPort_inst1.HW] +AddReg=ComPort_inst1.NTAMD64.RegHW + +[ComPort_inst2.HW] +AddReg=ComPort_inst2.NTAMD64.RegHW + +[ComPort_inst4.HW] +AddReg=ComPort_inst4.NTAMD64.RegHW + +[ComPort_inst1.Services] +Include=mf.inf +Needs=MFINSTALL.mf.Services + +[ComPort_inst2.Services] +Include=mf.inf +Needs=MFINSTALL.mf.Services + +[ComPort_inst4.Services] +Include=mf.inf +Needs=MFINSTALL.mf.Services + +[ComPort_inst1.RegHW] +HKR,Child0000,HardwareID,,*PNP0501 +HKR,Child0000,VaryingResourceMap,1,00, 00,00,00,00, 08,00,00,00 +HKR,Child0000,ResourceMap,1,02 + +[ComPort_inst2.RegHW] +HKR,Child0000,HardwareID,,*PNP0501 +HKR,Child0000,VaryingResourceMap,1,00, 00,00,00,00, 08,00,00,00 +HKR,Child0000,ResourceMap,1,02 +HKR,Child0001,HardwareID,,*PNP0501 +HKR,Child0001,VaryingResourceMap,1,00, 08,00,00,00, 08,00,00,00 +HKR,Child0001,ResourceMap,1,02 + +[ComPort_inst4.RegHW] +HKR,Child0000,HardwareID,,*PNP0501 +HKR,Child0000,VaryingResourceMap,1,00, 00,00,00,00, 08,00,00,00 +HKR,Child0000,ResourceMap,1,02 +HKR,Child0001,HardwareID,,*PNP0501 +HKR,Child0001,VaryingResourceMap,1,00, 08,00,00,00, 08,00,00,00 +HKR,Child0001,ResourceMap,1,02 +HKR,Child0002,HardwareID,,*PNP0501 +HKR,Child0002,VaryingResourceMap,1,00, 10,00,00,00, 08,00,00,00 +HKR,Child0002,ResourceMap,1,02 +HKR,Child0003,HardwareID,,*PNP0501 +HKR,Child0003,VaryingResourceMap,1,00, 18,00,00,00, 08,00,00,00 +HKR,Child0003,ResourceMap,1,02 + +[QEMU.NTAMD64] +%QEMU-PCI_SERIAL_1_PORT%=ComPort_inst1, PCI\VEN_1B36&DEV_0002&SUBSYS_11001AF4&REV_01 +%QEMU-PCI_SERIAL_2_PORT%=ComPort_inst2, PCI\VEN_1B36&DEV_0003&SUBSYS_11001AF4&REV_01 +%QEMU-PCI_SERIAL_4_PORT%=ComPort_inst4, PCI\VEN_1B36&DEV_0004&SUBSYS_11001AF4&REV_01 + +[ComPort_inst1.NTAMD64] +Include=mf.inf +Needs=MFINSTALL.mf + +[ComPort_inst2.NTAMD64] +Include=mf.inf +Needs=MFINSTALL.mf + +[ComPort_inst4.NTAMD64] +Include=mf.inf +Needs=MFINSTALL.mf + +[ComPort_inst1.NTAMD64.HW] +AddReg=ComPort_inst1.NTAMD64.RegHW + +[ComPort_inst2.NTAMD64.HW] +AddReg=ComPort_inst2.NTAMD64.RegHW + +[ComPort_inst4.NTAMD64.HW] +AddReg=ComPort_inst4.NTAMD64.RegHW + +[ComPort_inst1.NTAMD64.Services] +Include=mf.inf +Needs=MFINSTALL.mf.Services + +[ComPort_inst2.NTAMD64.Services] +Include=mf.inf +Needs=MFINSTALL.mf.Services + +[ComPort_inst4.NTAMD64.Services] +Include=mf.inf +Needs=MFINSTALL.mf.Services + +[ComPort_inst1.NTAMD64.RegHW] +HKR,Child0000,HardwareID,,*PNP0501 +HKR,Child0000,VaryingResourceMap,1,00, 00,00,00,00, 08,00,00,00 +HKR,Child0000,ResourceMap,1,02 + +[ComPort_inst2.NTAMD64.RegHW] +HKR,Child0000,HardwareID,,*PNP0501 +HKR,Child0000,VaryingResourceMap,1,00, 00,00,00,00, 08,00,00,00 +HKR,Child0000,ResourceMap,1,02 +HKR,Child0001,HardwareID,,*PNP0501 +HKR,Child0001,VaryingResourceMap,1,00, 08,00,00,00, 08,00,00,00 +HKR,Child0001,ResourceMap,1,02 + +[ComPort_inst4.NTAMD64.RegHW] +HKR,Child0000,HardwareID,,*PNP0501 +HKR,Child0000,VaryingResourceMap,1,00, 00,00,00,00, 08,00,00,00 +HKR,Child0000,ResourceMap,1,02 +HKR,Child0001,HardwareID,,*PNP0501 +HKR,Child0001,VaryingResourceMap,1,00, 08,00,00,00, 08,00,00,00 +HKR,Child0001,ResourceMap,1,02 +HKR,Child0002,HardwareID,,*PNP0501 +HKR,Child0002,VaryingResourceMap,1,00, 10,00,00,00, 08,00,00,00 +HKR,Child0002,ResourceMap,1,02 +HKR,Child0003,HardwareID,,*PNP0501 +HKR,Child0003,VaryingResourceMap,1,00, 18,00,00,00, 08,00,00,00 +HKR,Child0003,ResourceMap,1,02 [Strings] QEMU="QEMU" -QEMU-PCI_SERIAL.DeviceDesc="QEMU Serial PCI Card" - -Serial.SVCDESC = "Serial port driver" -Serenum.SVCDESC = "Serenum Filter Driver" +QEMU-PCI_SERIAL_1_PORT="1x QEMU PCI Serial Card" +QEMU-PCI_SERIAL_2_PORT="2x QEMU PCI Serial Card" +QEMU-PCI_SERIAL_4_PORT="4x QEMU PCI Serial Card"