
##### SUMMARY
NVMe devices can have their serial number read by reading (eg) /sys/block/nvme1n1/device/serial, without having to try and run sg_inq, which requires root.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
Facts collection, linux.py

##### ANSIBLE VERSION
```paste below
$ ansible --version
ansible 2.10.0.dev0
  config file = None
  configured module search path = ['/local/apps/egsadmin/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /local/apps/egsadmin/randy/ansible-src-current/lib/ansible
  executable location = /local/apps/egsadmin/randy/ansible-src-current/bin/ansible
  python version = 3.6.8 (default, Jun 11 2019, 15:15:01) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]

```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below
$ ansible-config dump --only-changed
<nothing>
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
AWS NVMe-based systems

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->
Run setup task with and without "become" on a system or VM with NVMe and observe that "serial" only appears with "become"

<!--- HINT: You can paste gist.github.com links for larger files -->

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
ansible_devices[*].serial is populated for NVMe, regardless of become

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->
ansible_devices[*].serial is populated for NVMe, regardless of become

''' learn dmi facts from system
        Try /sys first for dmi related facts.
        If that is not available, fall back to dmidecode executable '''
        dmi_facts = {}
        if os.path.exists('/sys/devices/virtual/dmi/id/product_name'):
            
            
            FORM_FACTOR = ["Unknown", "Other", "Unknown", "Desktop",
                           "Low Profile Desktop", "Pizza Box", "Mini Tower", "Tower",
                           "Portable", "Laptop", "Notebook", "Hand Held", "Docking Station",
                           "All In One", "Sub Notebook", "Space-saving", "Lunch Box",
                           "Main Server Chassis", "Expansion Chassis", "Sub Chassis",
                           "Bus Expansion Chassis", "Peripheral Chassis", "RAID Chassis",
                           "Rack Mount Chassis", "Sealed-case PC", "Multi-system",
                           "CompactPCI", "AdvancedTCA", "Blade", "Blade Enclosure",
                           "Tablet", "Convertible", "Detachable", "IoT Gateway",
                           "Embedded PC", "Mini PC", "Stick PC"]
            DMI_DICT = {
                'bios_date': '/sys/devices/virtual/dmi/id/bios_date',
                'bios_vendor': '/sys/devices/virtual/dmi/id/bios_vendor',
                'bios_version': '/sys/devices/virtual/dmi/id/bios_version',
                'board_asset_tag': '/sys/devices/virtual/dmi/id/board_asset_tag',
                'board_name': '/sys/devices/virtual/dmi/id/board_name',
                'board_serial': '/sys/devices/virtual/dmi/id/board_serial',
                'board_vendor': '/sys/devices/virtual/dmi/id/board_vendor',
                'board_version': '/sys/devices/virtual/dmi/id/board_version',
                'chassis_asset_tag': '/sys/devices/virtual/dmi/id/chassis_asset_tag',
                'chassis_serial': '/sys/devices/virtual/dmi/id/chassis_serial',
                'chassis_vendor': '/sys/devices/virtual/dmi/id/chassis_vendor',