Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results


Before Posting...

Please check out the Community Guidelines in the Announcements and Administration Category.

More Info on Driver Writing and Debugging

The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.

Check out The OSR Learning Library at:

Re: Can read PCI config space, but not normal space on one motherboard?

OSR_Community_UserOSR_Community_User Member Posts: 110,217

When the PCI function is first scanned it presents to the BIOS the
size of the range of memory it offers to be addressed from the PCI
side (as oppossed to the local side). In English, it means how much
memory it requests to be visible by the main CPU. The pnp BIOS
replaces this value by the base address which you are trying to

I would like to check that the BAR shows a real base address and not
the initial range request value. It is the BIOS task to replace RR
with the Base Address.

I hope this might help.


At 08:25 AM 5/6/00 -0700, you wrote:
>> Are you sure that the physical memory is assigned to the same
>> region. Is
>> that runtime space pointed by BAR0 or BAR1?
>No, it isn't the same address. That's why I read the Base Address Register
>first. Is there any other way of doing it? I thought that step was
>required for PCI devices.
>> Alternatively, is it also available in I/O space?
>Another piece of data, though: It turns out that it works fine on the "bad"
>motherboard if I ENABLE Plug-and-Play in the BIOS (which we disable by
>default). Since the only PNP devices in the system are some "legacy" ISA
>devices that have only fixed I/O at location 0x100, I don't see how that
>causes any issue. But that's clearly the path I have to go down now...
>You are currently subscribed to ntdev as: [email protected]
>To unsubscribe send a blank email to $subst('Email.Unsub')


  • OSR_Community_UserOSR_Community_User Member Posts: 110,217
    > memory it requests to be visible by the main CPU. The pnp BIOS

    ..or the PCI enumerator, or by NT4 HAL. When I boot NT4, BARs are
    uninitialized by BIOS. HalAssignSlotResources initializes them.
    IIRC BIOS can be told (by CMOS setup) what PCI cards must be initialized by
    BIOS, and what must not (the initialization must be left to kernel).
    IIRC they are usually left to kernel for all devices but boot one.

    Interrupts are different song. If BIOS setting "PnP OS installed" is true,
    will left PCI interrupt initialization to the OS. The OS will be capable of
    this only if it has a feature called "PCI IRQ Steering". Win9x and w2k has.
    NT4 has not.
    And if "PnP OS installed" is false - then BIOS will set up PCI interrupts by
    So - never run NT4 with "PnP OS installed" = true.

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. Sign in or register to get started.

Upcoming OSR Seminars
OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead!
Kernel Debugging 30 January 2023 Live, Online
Developing Minifilters 20 March 2023 Live, Online
Writing WDF Drivers TBD 2023 Live, Online
Internals & Software Drivers 17 April 2023 Live, Online