[systemd-commits] 5 commits - .gitignore hwdb/20-OUI.hwdb hwdb/20-pci-vendor-model.hwdb Makefile.am src/boot src/core src/efi-boot-generator src/shared src/test TODO

Kay Sievers kay at kemper.freedesktop.org
Tue Sep 24 06:52:22 PDT 2013


 .gitignore                                  |    2 
 Makefile.am                                 |   15 -
 TODO                                        |    2 
 hwdb/20-OUI.hwdb                            |  201 ++++++++++++++++-
 hwdb/20-pci-vendor-model.hwdb               |  322 +++++++++++++++++-----------
 src/boot/boot-efi.c                         |    2 
 src/core/manager.c                          |    4 
 src/efi-boot-generator/efi-boot-generator.c |    2 
 src/shared/acpi-fpdt.c                      |  155 +++++++++++++
 src/shared/acpi-fpdt.h                      |   26 ++
 src/shared/boot-timestamps.c                |   65 +++++
 src/shared/boot-timestamps.h                |   27 ++
 src/shared/device-nodes.c                   |    2 
 src/shared/device-nodes.h                   |    2 
 src/shared/efivars.c                        |   41 ---
 src/shared/efivars.h                        |    5 
 src/shared/utf8.c                           |    3 
 src/test/test-boot-timestamps.c             |   98 ++++++++
 src/test/test-efivars.c                     |   47 ----
 19 files changed, 786 insertions(+), 235 deletions(-)

New commits:
commit ee9c9500ab13c1093fc3feaf2aa5a0d330d0bfad
Author: Kay Sievers <kay at vrfy.org>
Date:   Tue Sep 24 15:47:42 2013 +0200

    TODO: add header back

diff --git a/TODO b/TODO
index b79e265..0f2398a 100644
--- a/TODO
+++ b/TODO
@@ -1,3 +1,5 @@
+Bugfixes:
+
 * enabling an instance unit creates pointless link, and
   the unit will be started with getty at getty.service:
     $ systemctl enable getty at .service

commit 540fd137af627bb002a016637bf87e517e62f86c
Author: Kay Sievers <kay at vrfy.org>
Date:   Tue Sep 24 15:47:12 2013 +0200

    hwdb: update

diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb
index 4633977..e913b28 100644
--- a/hwdb/20-OUI.hwdb
+++ b/hwdb/20-OUI.hwdb
@@ -2519,7 +2519,7 @@ OUI:0050C2351*
  ID_OUI_FROM_DATABASE=Finesystem Co., Ltd
 
 OUI:0050C2352*
- ID_OUI_FROM_DATABASE=edixia
+ ID_OUI_FROM_DATABASE=LUCEO
 
 OUI:0050C2353*
  ID_OUI_FROM_DATABASE=Crossing Informationssysteme GmbH
@@ -10565,7 +10565,7 @@ OUI:0050C2DDA*
  ID_OUI_FROM_DATABASE=rbz robot design s.l.
 
 OUI:0050C2DDB*
- ID_OUI_FROM_DATABASE=EDIXIA
+ ID_OUI_FROM_DATABASE=LUCEO
 
 OUI:0050C2DDC*
  ID_OUI_FROM_DATABASE=Vision  & Control GmbH
@@ -13291,6 +13291,39 @@ OUI:40D855170*
 OUI:40D855171*
  ID_OUI_FROM_DATABASE=Sicon srl
 
+OUI:40D855172*
+ ID_OUI_FROM_DATABASE=YAWATA ELECTRIC INDUSTRIAL CO.,LTD.
+
+OUI:40D855173*
+ ID_OUI_FROM_DATABASE=Contec Steuerungstechnik & Automation GmbH
+
+OUI:40D855174*
+ ID_OUI_FROM_DATABASE=EcoGuard AB
+
+OUI:40D855175*
+ ID_OUI_FROM_DATABASE=AHB Systeme GmbH
+
+OUI:40D855176*
+ ID_OUI_FROM_DATABASE=Schneider Electric Motion, Inc. USA
+
+OUI:40D855177*
+ ID_OUI_FROM_DATABASE=TRI Engineering co.,ltd.
+
+OUI:40D855178*
+ ID_OUI_FROM_DATABASE=REDER Domotic GmbH
+
+OUI:40D855179*
+ ID_OUI_FROM_DATABASE=Servo-Robot Inc.
+
+OUI:40D85517A*
+ ID_OUI_FROM_DATABASE=ARGUS-SPECTRUM
+
+OUI:40D85517B*
+ ID_OUI_FROM_DATABASE=LUCEO
+
+OUI:40D85517C*
+ ID_OUI_FROM_DATABASE=Critical Link
+
 OUI:000000*
  ID_OUI_FROM_DATABASE=XEROX CORPORATION
 
@@ -32510,7 +32543,7 @@ OUI:001934*
  ID_OUI_FROM_DATABASE=TRENDON TOUCH TECHNOLOGY CORP.
 
 OUI:001935*
- ID_OUI_FROM_DATABASE=DÃœRR DENTAL AG
+ ID_OUI_FROM_DATABASE=DUERR DENTAL AG
 
 OUI:001936*
  ID_OUI_FROM_DATABASE=STERLITE OPTICAL TECHNOLOGIES LIMITED
@@ -36530,7 +36563,7 @@ OUI:001E70*
  ID_OUI_FROM_DATABASE=Cobham Defence Communications Ltd
 
 OUI:001E71*
- ID_OUI_FROM_DATABASE=Igeacare Solutions Inc.
+ ID_OUI_FROM_DATABASE=MIrcom Group of Companies
 
 OUI:001E72*
  ID_OUI_FROM_DATABASE=PCS
@@ -46598,7 +46631,7 @@ OUI:008063*
  ID_OUI_FROM_DATABASE=Hirschmann Automation and Control GmbH
 
 OUI:008064*
- ID_OUI_FROM_DATABASE=Tattile SRL
+ ID_OUI_FROM_DATABASE=WYSE TECHNOLOGY LLC
 
 OUI:008065*
  ID_OUI_FROM_DATABASE=CYBERGRAPHIC SYSTEMS PTY LTD.
@@ -51346,6 +51379,9 @@ OUI:043604*
 OUI:043D98*
  ID_OUI_FROM_DATABASE=ChongQing QingJia Electronics CO.,LTD
 
+OUI:0444A1*
+ ID_OUI_FROM_DATABASE=TELECON GALICIA,S.A.
+
 OUI:044665*
  ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
 
@@ -52078,6 +52114,9 @@ OUI:083E0C*
 OUI:083E8E*
  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind.Co.Ltd
 
+OUI:084027*
+ ID_OUI_FROM_DATABASE=Gridstore Inc.
+
 OUI:08482C*
  ID_OUI_FROM_DATABASE=Raycore Taiwan Co., LTD.
 
@@ -52444,6 +52483,9 @@ OUI:0CAF5A*
 OUI:0CB4EF*
  ID_OUI_FROM_DATABASE=Digience Co.,Ltd.
 
+OUI:0CBD51*
+ ID_OUI_FROM_DATABASE=TCT Mobile Limited
+
 OUI:0CBF15*
  ID_OUI_FROM_DATABASE=Genetec
 
@@ -52750,6 +52792,9 @@ OUI:109FA9*
 OUI:10A13B*
  ID_OUI_FROM_DATABASE=FUJIKURA RUBBER LTD.
 
+OUI:10A5D0*
+ ID_OUI_FROM_DATABASE=Murata Manufacturing Co.,Ltd.
+
 OUI:10A743*
  ID_OUI_FROM_DATABASE=SK Mtek Limited
 
@@ -53041,6 +53086,9 @@ OUI:14E6E4*
 OUI:14EB33*
  ID_OUI_FROM_DATABASE=BSMediasoft Co., Ltd.
 
+OUI:14EDA5*
+ ID_OUI_FROM_DATABASE=Wächter GmbH Sicherheitssysteme
+
 OUI:14EE9D*
  ID_OUI_FROM_DATABASE=AirNav Systems LLC
 
@@ -53110,6 +53158,9 @@ OUI:181BEB*
 OUI:181EB0*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
+OUI:182012*
+ ID_OUI_FROM_DATABASE=Aztech Associates Inc.
+
 OUI:182032*
  ID_OUI_FROM_DATABASE=Apple
 
@@ -53248,6 +53299,9 @@ OUI:1897FF*
 OUI:189A67*
  ID_OUI_FROM_DATABASE=CSE-Servelec Limited
 
+OUI:189C5D*
+ ID_OUI_FROM_DATABASE=Cisco
+
 OUI:189EFC*
  ID_OUI_FROM_DATABASE=Apple
 
@@ -53258,7 +53312,7 @@ OUI:18A99B*
  ID_OUI_FROM_DATABASE=Dell Inc PCBA Test
 
 OUI:18AA45*
- ID_OUI_FROM_DATABASE=Fon Japan K. K.
+ ID_OUI_FROM_DATABASE=Fon Technology
 
 OUI:18ABF5*
  ID_OUI_FROM_DATABASE=Ultra Electronics - Electrics
@@ -53479,6 +53533,9 @@ OUI:1C7508*
 OUI:1C76CA*
  ID_OUI_FROM_DATABASE=Terasic Technologies Inc.
 
+OUI:1C7839*
+ ID_OUI_FROM_DATABASE=Shenzhen Tencent Computer System Co., Ltd.
+
 OUI:1C7B21*
  ID_OUI_FROM_DATABASE=Sony Mobile Communications AB
 
@@ -53788,6 +53845,9 @@ OUI:20BFDB*
 OUI:20C1AF*
  ID_OUI_FROM_DATABASE=i Wit Digital Co., Limited
 
+OUI:20C60D*
+ ID_OUI_FROM_DATABASE=Shanghai annijie Information technology Co.,LTD
+
 OUI:20C6EB*
  ID_OUI_FROM_DATABASE=Panasonic Corporation AVC Networks Company
 
@@ -54910,6 +54970,9 @@ OUI:3429EA*
 OUI:342F6E*
  ID_OUI_FROM_DATABASE=Anywire corporation
 
+OUI:343111*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
 OUI:3440B5*
  ID_OUI_FROM_DATABASE=IBM
 
@@ -54979,6 +55042,9 @@ OUI:34862A*
 OUI:34885D*
  ID_OUI_FROM_DATABASE=Logitech Far East
 
+OUI:348AAE*
+ ID_OUI_FROM_DATABASE=SAGEMCOM SAS
+
 OUI:3495DB*
  ID_OUI_FROM_DATABASE=Logitec Corporation
 
@@ -55066,6 +55132,9 @@ OUI:34BDF9*
 OUI:34BDFA*
  ID_OUI_FROM_DATABASE=Cisco SPVTG
 
+OUI:34BE00*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
 OUI:34BF90*
  ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd.
 
@@ -55150,6 +55219,9 @@ OUI:380A0A*
 OUI:380A94*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
+OUI:380B40*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
 OUI:380DD4*
  ID_OUI_FROM_DATABASE=Primax Electronics LTD.
 
@@ -55303,6 +55375,9 @@ OUI:38BB23*
 OUI:38BC1A*
  ID_OUI_FROM_DATABASE=Meizu technology co.,ltd
 
+OUI:38BF2F*
+ ID_OUI_FROM_DATABASE=Espec Corp.
+
 OUI:38BF33*
  ID_OUI_FROM_DATABASE=NEC CASIO Mobile Communications
 
@@ -55315,6 +55390,9 @@ OUI:38C7BA*
 OUI:38C85C*
  ID_OUI_FROM_DATABASE=Cisco SPVTG
 
+OUI:38CA97*
+ ID_OUI_FROM_DATABASE=Contour Design LLC
+
 OUI:38D135*
  ID_OUI_FROM_DATABASE=EasyIO Corporation Sdn. Bhd.
 
@@ -55423,6 +55501,9 @@ OUI:3C2DB7*
 OUI:3C2F3A*
  ID_OUI_FROM_DATABASE=SFORZATO Corp.
 
+OUI:3C300C*
+ ID_OUI_FROM_DATABASE=Dewar Electronics Pty Ltd
+
 OUI:3C363D*
  ID_OUI_FROM_DATABASE=Nokia Corporation
 
@@ -55975,6 +56056,9 @@ OUI:443839*
 OUI:4439C4*
  ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co.,Ltd
 
+OUI:443C9C*
+ ID_OUI_FROM_DATABASE=Pintsch Tiefenbach GmbH
+
 OUI:443D21*
  ID_OUI_FROM_DATABASE=Nuvolt
 
@@ -56263,6 +56347,9 @@ OUI:489D24*
 OUI:48A22D*
  ID_OUI_FROM_DATABASE=Shenzhen Huaxuchang Telecom Technology Co.,Ltd
 
+OUI:48A2B7*
+ ID_OUI_FROM_DATABASE=Kodofon JSC
+
 OUI:48A6D2*
  ID_OUI_FROM_DATABASE=GJsun Optical Science and Tech Co.,Ltd.
 
@@ -56845,6 +56932,9 @@ OUI:50FAAB*
 OUI:50FC30*
  ID_OUI_FROM_DATABASE=Treehouse Labs
 
+OUI:50FC9F*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
 OUI:5403F5*
  ID_OUI_FROM_DATABASE=EBN Technology Corp.
 
@@ -57559,6 +57649,9 @@ OUI:5CFFFF*
 OUI:6002B4*
  ID_OUI_FROM_DATABASE=Wistron NeWeb Corp.
 
+OUI:600347*
+ ID_OUI_FROM_DATABASE=Billion Electric Co. Ltd.
+
 OUI:600F77*
  ID_OUI_FROM_DATABASE=SilverPlus, Inc
 
@@ -57742,6 +57835,9 @@ OUI:60BC4C*
 OUI:60BD91*
  ID_OUI_FROM_DATABASE=Move Innovation
 
+OUI:60BEB5*
+ ID_OUI_FROM_DATABASE=Motorola Mobility LLC
+
 OUI:60C397*
  ID_OUI_FROM_DATABASE=2Wire Inc
 
@@ -59446,9 +59542,15 @@ OUI:78ABBB*
 OUI:78ACC0*
  ID_OUI_FROM_DATABASE=Hewlett-Packard Company
 
+OUI:78AE0C*
+ ID_OUI_FROM_DATABASE=Far South Networks
+
 OUI:78B3CE*
  ID_OUI_FROM_DATABASE=Elo touch solutions
 
+OUI:78B5D2*
+ ID_OUI_FROM_DATABASE=Ever Treasure Industrial Limited
+
 OUI:78B6C1*
  ID_OUI_FROM_DATABASE=AOBO Telecom Co.,Ltd
 
@@ -59482,6 +59584,9 @@ OUI:78CA04*
 OUI:78CA39*
  ID_OUI_FROM_DATABASE=Apple
 
+OUI:78CA5E*
+ ID_OUI_FROM_DATABASE=ELNO
+
 OUI:78CB33*
  ID_OUI_FROM_DATABASE=DHC Software Co.,Ltd
 
@@ -59611,6 +59716,9 @@ OUI:7C1E52*
 OUI:7C1EB3*
  ID_OUI_FROM_DATABASE=2N TELEKOMUNIKACE a.s.
 
+OUI:7C2048*
+ ID_OUI_FROM_DATABASE=KoamTac
+
 OUI:7C2064*
  ID_OUI_FROM_DATABASE=Alcatel Lucent IPD
 
@@ -59704,6 +59812,9 @@ OUI:7C6F06*
 OUI:7C6FF8*
  ID_OUI_FROM_DATABASE=ShenZhen ACTO Digital Video Technology Co.,Ltd.
 
+OUI:7C72E4*
+ ID_OUI_FROM_DATABASE=Unikey Technologies
+
 OUI:7C7673*
  ID_OUI_FROM_DATABASE=ENMAS GmbH
 
@@ -59731,6 +59842,9 @@ OUI:7C94B2*
 OUI:7C95F3*
  ID_OUI_FROM_DATABASE=Cisco
 
+OUI:7C9763*
+ ID_OUI_FROM_DATABASE=Openmatics s.r.o.
+
 OUI:7C9A9B*
  ID_OUI_FROM_DATABASE=VSE valencia smart energy
 
@@ -60217,6 +60331,9 @@ OUI:844F03*
 OUI:845181*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
+OUI:84569C*
+ ID_OUI_FROM_DATABASE=Coho Data, Inc.,
+
 OUI:845787*
  ID_OUI_FROM_DATABASE=DVR C&C Co., Ltd.
 
@@ -60286,6 +60403,9 @@ OUI:849DC5*
 OUI:84A6C8*
  ID_OUI_FROM_DATABASE=Intel Corporate
 
+OUI:84A783*
+ ID_OUI_FROM_DATABASE=Alcatel Lucent
+
 OUI:84A8E4*
  ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd
 
@@ -60589,6 +60709,9 @@ OUI:88F490*
 OUI:88FD15*
  ID_OUI_FROM_DATABASE=LINEEYE CO., LTD
 
+OUI:88FED6*
+ ID_OUI_FROM_DATABASE=ShangHai WangYong Software Co., Ltd.
+
 OUI:8C006D*
  ID_OUI_FROM_DATABASE=Apple
 
@@ -61159,6 +61282,9 @@ OUI:940070*
 OUI:940149*
  ID_OUI_FROM_DATABASE=AutoHotBox
 
+OUI:9401C2*
+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+
 OUI:940B2D*
  ID_OUI_FROM_DATABASE=NetView Technologies(Shenzhen) Co., Ltd
 
@@ -61654,6 +61780,9 @@ OUI:98FE03*
 OUI:98FE94*
  ID_OUI_FROM_DATABASE=Apple
 
+OUI:98FFD0*
+ ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd.
+
 OUI:9C0111*
  ID_OUI_FROM_DATABASE=Shenzhen Newabel Electronic Co., Ltd.
 
@@ -62167,6 +62296,9 @@ OUI:A0CEC8*
 OUI:A0CF5B*
  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
 
+OUI:A0D3C1*
+ ID_OUI_FROM_DATABASE=Hewlett Packard
+
 OUI:A0DC04*
  ID_OUI_FROM_DATABASE=Becker-Antriebe GmbH
 
@@ -62233,6 +62365,9 @@ OUI:A40130*
 OUI:A4059E*
  ID_OUI_FROM_DATABASE=STA Infinity LLP
 
+OUI:A409CB*
+ ID_OUI_FROM_DATABASE=Alfred Kaercher GmbH & Co KG
+
 OUI:A40BED*
  ID_OUI_FROM_DATABASE=Carry Technology Co.,Ltd
 
@@ -62326,6 +62461,9 @@ OUI:A46706*
 OUI:A46E79*
  ID_OUI_FROM_DATABASE=DFT System Co.Ltd
 
+OUI:A47760*
+ ID_OUI_FROM_DATABASE=Nokia Corporation
+
 OUI:A479E4*
  ID_OUI_FROM_DATABASE=KLINFO Corp
 
@@ -62599,6 +62737,9 @@ OUI:A870A5*
 OUI:A875D6*
  ID_OUI_FROM_DATABASE=FreeTek International Co., Ltd.
 
+OUI:A875E2*
+ ID_OUI_FROM_DATABASE=Aventura Technologies, Inc.
+
 OUI:A8776F*
  ID_OUI_FROM_DATABASE=Zonoff
 
@@ -63541,6 +63682,9 @@ OUI:B82410*
 OUI:B8241A*
  ID_OUI_FROM_DATABASE=SWEDA INFORMATICA LTDA
 
+OUI:B8266C*
+ ID_OUI_FROM_DATABASE=ANOV France
+
 OUI:B826D4*
  ID_OUI_FROM_DATABASE=Furukawa Industrial S.A. Produtos Elétricos
 
@@ -63871,6 +64015,9 @@ OUI:BC2BD7*
 OUI:BC2C55*
  ID_OUI_FROM_DATABASE=Bear Flag Design, Inc.
 
+OUI:BC2D98*
+ ID_OUI_FROM_DATABASE=ThinGlobal LLC
+
 OUI:BC305B*
  ID_OUI_FROM_DATABASE=Dell Inc.
 
@@ -64063,6 +64210,9 @@ OUI:BCEA2B*
 OUI:BCF2AF*
  ID_OUI_FROM_DATABASE=devolo AG
 
+OUI:BCF5AC*
+ ID_OUI_FROM_DATABASE=LG Electronics
+
 OUI:BCF685*
  ID_OUI_FROM_DATABASE=D-Link International
 
@@ -64135,6 +64285,9 @@ OUI:C03F0E*
 OUI:C03F2A*
  ID_OUI_FROM_DATABASE=Biscotti, Inc.
 
+OUI:C03FD5*
+ ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co., LTD
+
 OUI:C041F6*
  ID_OUI_FROM_DATABASE=LG Electronics Inc
 
@@ -64183,6 +64336,9 @@ OUI:C06C0F*
 OUI:C06C6D*
  ID_OUI_FROM_DATABASE=MagneMotion, Inc.
 
+OUI:C07BBC*
+ ID_OUI_FROM_DATABASE=Cisco
+
 OUI:C07E40*
  ID_OUI_FROM_DATABASE=SHENZHEN XDK COMMUNICATION EQUIPMENT CO.,LTD
 
@@ -64309,6 +64465,9 @@ OUI:C0EAE4*
 OUI:C0F8DA*
  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
 
+OUI:C0F991*
+ ID_OUI_FROM_DATABASE=GME Standard Communications P/L
+
 OUI:C40142*
  ID_OUI_FROM_DATABASE=MaxMedia Technology Limited
 
@@ -64390,6 +64549,9 @@ OUI:C4438F*
 OUI:C44567*
  ID_OUI_FROM_DATABASE=SAMBON PRECISON and ELECTRONICS
 
+OUI:C445EC*
+ ID_OUI_FROM_DATABASE=Shanghai Yali Electron Co.,LTD
+
 OUI:C44619*
  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
 
@@ -64654,6 +64816,9 @@ OUI:C84C75*
 OUI:C85645*
  ID_OUI_FROM_DATABASE=Intermas France
 
+OUI:C85663*
+ ID_OUI_FROM_DATABASE=Sunflex Europe GmbH
+
 OUI:C86000*
  ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
 
@@ -66277,6 +66442,9 @@ OUI:E0469A*
 OUI:E05597*
  ID_OUI_FROM_DATABASE=Emergent Vision Technologies Inc.
 
+OUI:E056F4*
+ ID_OUI_FROM_DATABASE=AxesNetwork Solutions inc.
+
 OUI:E0589E*
  ID_OUI_FROM_DATABASE=Laerdal Medical
 
@@ -66451,6 +66619,9 @@ OUI:E0DB55*
 OUI:E0DCA0*
  ID_OUI_FROM_DATABASE=Siemens Electrical Apparatus Ltd., Suzhou Chengdu Branch
 
+OUI:E0E631*
+ ID_OUI_FROM_DATABASE=SNB TECHNOLOGIES LIMITED
+
 OUI:E0E751*
  ID_OUI_FROM_DATABASE=Nintendo Co., Ltd.
 
@@ -66970,6 +67141,9 @@ OUI:E8E5D6*
 OUI:E8E732*
  ID_OUI_FROM_DATABASE=Alcatel-Lucent
 
+OUI:E8E770*
+ ID_OUI_FROM_DATABASE=Warp9 Tech Design, Inc.
+
 OUI:E8E776*
  ID_OUI_FROM_DATABASE=Shenzhen Kootion Technology Co., Ltd
 
@@ -67087,6 +67261,9 @@ OUI:EC66D1*
 OUI:EC6C9F*
  ID_OUI_FROM_DATABASE=Chengdu Volans Technology CO.,LTD
 
+OUI:EC71DB*
+ ID_OUI_FROM_DATABASE=Shenzhen Baichuan Digital Technology Co., Ltd.
+
 OUI:EC7C74*
  ID_OUI_FROM_DATABASE=Justone Technologies Co., Ltd.
 
@@ -67456,6 +67633,9 @@ OUI:F0E5C3*
 OUI:F0E77E*
  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
 
+OUI:F0EBD0*
+ ID_OUI_FROM_DATABASE=Shanghai Feixun Communication Co.,Ltd.
+
 OUI:F0EC39*
  ID_OUI_FROM_DATABASE=Essec
 
@@ -67765,6 +67945,9 @@ OUI:F81654*
 OUI:F81A67*
  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO., LTD.
 
+OUI:F81CE5*
+ ID_OUI_FROM_DATABASE=Telefonbau Behnke GmbH
+
 OUI:F81D93*
  ID_OUI_FROM_DATABASE=Longdhua(Beijing) Controls Technology Co.,Ltd
 
@@ -67846,6 +68029,9 @@ OUI:F852DF*
 OUI:F854AF*
  ID_OUI_FROM_DATABASE=ECI Telecom Ltd.
 
+OUI:F8572E*
+ ID_OUI_FROM_DATABASE=Core Brands, LLC
+
 OUI:F85BC9*
  ID_OUI_FROM_DATABASE=M-Cube Spa
 
@@ -67924,6 +68110,9 @@ OUI:F8A03D*
 OUI:F8A45F*
  ID_OUI_FROM_DATABASE=Beijing Xiaomi communications co.,ltd
 
+OUI:F8A963*
+ ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD.
+
 OUI:F8A9DE*
  ID_OUI_FROM_DATABASE=PUISSANCE PLUS
 
diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb
index f94f54a..fdb534d 100644
--- a/hwdb/20-pci-vendor-model.hwdb
+++ b/hwdb/20-pci-vendor-model.hwdb
@@ -4212,7 +4212,7 @@ pci:v00001002d00006651*
  ID_MODEL_FROM_DATABASE=Bonaire
 
 pci:v00001002d00006658*
- ID_MODEL_FROM_DATABASE=Bonaire
+ ID_MODEL_FROM_DATABASE=Bonaire XTX [Radeon R7 260X]
 
 pci:v00001002d0000665C*
  ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon HD 7790/8770]
@@ -4245,13 +4245,13 @@ pci:v00001002d00006663*
  ID_MODEL_FROM_DATABASE=Sun PRO [Radeon HD 8500M Series]
 
 pci:v00001002d00006664*
- ID_MODEL_FROM_DATABASE=Sun [Radeon R5 M200 Series]
+ ID_MODEL_FROM_DATABASE=Jet XT [Radeon R5 M200 Series]
 
 pci:v00001002d00006665*
- ID_MODEL_FROM_DATABASE=Sun [Radeon R5 M200 Series]
+ ID_MODEL_FROM_DATABASE=Jet PRO [Radeon R5 M200 Series]
 
 pci:v00001002d00006667*
- ID_MODEL_FROM_DATABASE=Sun [Radeon R5 M200 Series]
+ ID_MODEL_FROM_DATABASE=Jet ULT [Radeon R5 M200 Series]
 
 pci:v00001002d0000666F*
  ID_MODEL_FROM_DATABASE=Sun [Radeon HD 8500M]
@@ -5787,10 +5787,10 @@ pci:v00001002d000067A2*
  ID_MODEL_FROM_DATABASE=Hawaii GL
 
 pci:v00001002d000067B0*
- ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon HD 8970]
+ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X]
 
 pci:v00001002d000067B1*
- ID_MODEL_FROM_DATABASE=Hawaii PRO
+ ID_MODEL_FROM_DATABASE=Hawaii PRO [Radeon R9 290]
 
 pci:v00001002d000067B9*
  ID_MODEL_FROM_DATABASE=Vesuvius
@@ -5838,10 +5838,10 @@ pci:v00001002d00006809*
  ID_MODEL_FROM_DATABASE=Pitcairn LE GL [FirePro W5000]
 
 pci:v00001002d00006810*
- ID_MODEL_FROM_DATABASE=Pitcairn
+ ID_MODEL_FROM_DATABASE=Curacao XT [Radeon R9 270X]
 
 pci:v00001002d00006811*
- ID_MODEL_FROM_DATABASE=Pitcairn [Radeon R9 200 Series]
+ ID_MODEL_FROM_DATABASE=Curacao PRO [Radeon R9 270]
 
 pci:v00001002d00006816*
  ID_MODEL_FROM_DATABASE=Pitcairn
@@ -25658,6 +25658,9 @@ pci:v000010DEd00001026*
 pci:v000010DEd00001028*
  ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20m]
 
+pci:v000010DEd0000103A*
+ ID_MODEL_FROM_DATABASE=GK110GL [Quadro K6000]
+
 pci:v000010DEd00001040*
  ID_MODEL_FROM_DATABASE=GF119 [GeForce GT 520]
 
@@ -26189,6 +26192,9 @@ pci:v000010DEd00001140sv0000152Dsd00000983*
 pci:v000010DEd00001140sv0000152Dsd00001030*
  ID_MODEL_FROM_DATABASE=GeForce GT 630M
 
+pci:v000010DEd00001140sv0000152Dsd00001055*
+ ID_MODEL_FROM_DATABASE=GeForce 710M
+
 pci:v000010DEd00001140sv000017AAsd00002200*
  ID_MODEL_FROM_DATABASE=NVS 5200M
 
@@ -26384,6 +26390,9 @@ pci:v000010DEd000011B0sv000010DEsd0000101B*
 pci:v000010DEd000011B1*
  ID_MODEL_FROM_DATABASE=GK104GL [Tesla K2 USM]
 
+pci:v000010DEd000011B6*
+ ID_MODEL_FROM_DATABASE=GK104GLM [Quadro K3100M]
+
 pci:v000010DEd000011B7*
  ID_MODEL_FROM_DATABASE=GK104GLM [Quadro K4100M]
 
@@ -26645,6 +26654,9 @@ pci:v000010DEd00001294*
 pci:v000010DEd00001295*
  ID_MODEL_FROM_DATABASE=GK208M [GeForce 710M]
 
+pci:v000010DEd00001298*
+ ID_MODEL_FROM_DATABASE=GK208M [GeForce GT 720M]
+
 pci:v000010DEd000012A0*
  ID_MODEL_FROM_DATABASE=GK208
 
@@ -46280,6 +46292,12 @@ pci:v000015B3d00001015*
 pci:v000015B3d00001016*
  ID_MODEL_FROM_DATABASE=MT27631 Family
 
+pci:v000015B3d00001017*
+ ID_MODEL_FROM_DATABASE=MT27640 Family
+
+pci:v000015B3d00001018*
+ ID_MODEL_FROM_DATABASE=MT27641 Family
+
 pci:v000015B3d00005274*
  ID_MODEL_FROM_DATABASE=MT21108 InfiniBridge
 
@@ -48155,6 +48173,12 @@ pci:v0000175E*
 pci:v00001760*
  ID_VENDOR_FROM_DATABASE=TEDIA spol. s r. o.
 
+pci:v00001760d00000101*
+ ID_MODEL_FROM_DATABASE=PCD-7004 Digital Bi-Directional Ports PCI Card
+
+pci:v00001760d00000102*
+ ID_MODEL_FROM_DATABASE=PCD-7104 Digital Input & Output PCI Card
+
 pci:v00001771*
  ID_VENDOR_FROM_DATABASE=InnoVISION Multimedia Ltd.
 
@@ -51138,7 +51162,7 @@ pci:v00001B4Bd00009192*
  ID_MODEL_FROM_DATABASE=88SE9172 SATA III 6Gb/s RAID Controller
 
 pci:v00001B4Bd000091A0*
- ID_MODEL_FROM_DATABASE=88SE91A0 SATA 6Gb/s Controller
+ ID_MODEL_FROM_DATABASE=88SE912x SATA 6Gb/s Controller [IDE mode]
 
 pci:v00001B4Bd000091A4*
  ID_MODEL_FROM_DATABASE=88SE912x IDE Controller
@@ -51149,6 +51173,9 @@ pci:v00001B4Bd00009230*
 pci:v00001B4Bd00009480*
  ID_MODEL_FROM_DATABASE=88SE9480 SAS/SATA 6Gb/s RAID controller
 
+pci:v00001B4Bd00009485*
+ ID_MODEL_FROM_DATABASE=88SE9485 SAS/SATA 6Gb/s controller
+
 pci:v00001B55*
  ID_VENDOR_FROM_DATABASE=NetUP Inc.
 
@@ -54354,352 +54381,397 @@ pci:v00008086d00000D36*
  ID_MODEL_FROM_DATABASE=Crystal Well Integrated Graphics Controller
 
 pci:v00008086d00000E00*
- ID_MODEL_FROM_DATABASE=Ivytown DMI2
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DMI2
 
 pci:v00008086d00000E01*
- ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port in DMI2 Mode
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port in DMI2 Mode
 
 pci:v00008086d00000E02*
- ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port 1a
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port 1a
 
 pci:v00008086d00000E03*
- ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port 1b
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port 1b
 
 pci:v00008086d00000E04*
- ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port 2a
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port 2a
 
 pci:v00008086d00000E05*
- ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port 2b
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port 2b
 
 pci:v00008086d00000E06*
- ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port 2c
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port 2c
 
 pci:v00008086d00000E07*
- ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port 2d
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port 2d
 
 pci:v00008086d00000E08*
- ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port 3a
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port 3a
 
 pci:v00008086d00000E09*
- ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port 3b
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port 3b
 
 pci:v00008086d00000E0A*
- ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port 3c
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port 3c
 
 pci:v00008086d00000E0B*
- ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port 3d
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port 3d
+
+pci:v00008086d00000E10*
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 IIO Configuration Registers
+
+pci:v00008086d00000E13*
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 IIO Configuration Registers
+
+pci:v00008086d00000E17*
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 IIO Configuration Registers
+
+pci:v00008086d00000E18*
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 IIO Configuration Registers
 
 pci:v00008086d00000E1C*
- ID_MODEL_FROM_DATABASE=Ivytown Debug and Error Injection Related Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 IIO Configuration Registers
 
 pci:v00008086d00000E1D*
- ID_MODEL_FROM_DATABASE=Ivytown R2PCIe
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 R2PCIe
 
 pci:v00008086d00000E1E*
- ID_MODEL_FROM_DATABASE=Ivytown Semaphore and Scratchpad Configuration Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 UBOX Registers
 
 pci:v00008086d00000E1F*
- ID_MODEL_FROM_DATABASE=Ivytown Semaphore and Scratchpad Configuration Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 UBOX Registers
 
 pci:v00008086d00000E20*
- ID_MODEL_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 0
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Crystal Beach DMA Channel 0
 
 pci:v00008086d00000E21*
- ID_MODEL_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 1
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Crystal Beach DMA Channel 1
 
 pci:v00008086d00000E22*
- ID_MODEL_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 2
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Crystal Beach DMA Channel 2
 
 pci:v00008086d00000E23*
- ID_MODEL_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 3
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Crystal Beach DMA Channel 3
 
 pci:v00008086d00000E24*
- ID_MODEL_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 4
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Crystal Beach DMA Channel 4
 
 pci:v00008086d00000E25*
- ID_MODEL_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 5
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Crystal Beach DMA Channel 5
 
 pci:v00008086d00000E26*
- ID_MODEL_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 6
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Crystal Beach DMA Channel 6
 
 pci:v00008086d00000E27*
- ID_MODEL_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 7
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Crystal Beach DMA Channel 7
 
 pci:v00008086d00000E28*
- ID_MODEL_FROM_DATABASE=Ivytown VTd/Memory Map/Misc
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 VTd/Memory Map/Misc
 
 pci:v00008086d00000E29*
- ID_MODEL_FROM_DATABASE=Ivytown Memory Hotplug
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Memory Hotplug
 
 pci:v00008086d00000E2A*
- ID_MODEL_FROM_DATABASE=Ivytown IIO RAS
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 IIO RAS
 
 pci:v00008086d00000E2C*
- ID_MODEL_FROM_DATABASE=Ivytown IOAPIC
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 IOAPIC
 
 pci:v00008086d00000E2E*
- ID_MODEL_FROM_DATABASE=Ivytown CBDMA
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 CBDMA
 
 pci:v00008086d00000E2F*
- ID_MODEL_FROM_DATABASE=Ivytown CBDMA
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 CBDMA
 
 pci:v00008086d00000E30*
- ID_MODEL_FROM_DATABASE=Ivytown Home Agent 0
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Home Agent 0
 
 pci:v00008086d00000E32*
- ID_MODEL_FROM_DATABASE=Ivytown QPI Link 0
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link 0
 
 pci:v00008086d00000E33*
- ID_MODEL_FROM_DATABASE=Ivytown QPI Link 1
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link 1
 
 pci:v00008086d00000E34*
- ID_MODEL_FROM_DATABASE=Ivytown PCI Express Ring Performance Monitoring
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 R2PCIe
 
 pci:v00008086d00000E36*
- ID_MODEL_FROM_DATABASE=Ivytown QPI Ring Performance Ring Monitoring
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring
 
 pci:v00008086d00000E37*
- ID_MODEL_FROM_DATABASE=Ivytown QPI Ring Performance Ring Monitoring
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring
 
 pci:v00008086d00000E38*
- ID_MODEL_FROM_DATABASE=Ivytown Home Agent 1
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Home Agent 1
 
 pci:v00008086d00000E3A*
- ID_MODEL_FROM_DATABASE=Ivytown QPI Link 2
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link 2
 
 pci:v00008086d00000E3E*
- ID_MODEL_FROM_DATABASE=Ivytown QPI Ring Performance Ring Monitoring
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring
 
 pci:v00008086d00000E3F*
- ID_MODEL_FROM_DATABASE=Ivytown QPI Ring Performance Ring Monitoring
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring
 
 pci:v00008086d00000E40*
- ID_MODEL_FROM_DATABASE=Ivytown QPI Link 2
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link 2
 
 pci:v00008086d00000E41*
- ID_MODEL_FROM_DATABASE=Ivytown QPI Ring Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Ring Registers
 
 pci:v00008086d00000E43*
- ID_MODEL_FROM_DATABASE=Ivytown QPI Link Reut 2
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link Reut 2
 
 pci:v00008086d00000E44*
- ID_MODEL_FROM_DATABASE=Ivytown QPI Link Reut 2
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link Reut 2
 
 pci:v00008086d00000E60*
- ID_MODEL_FROM_DATABASE=Ivytown Home Agent 1
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Home Agent 1
 
 pci:v00008086d00000E68*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Target Address/Thermal Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Target Address/Thermal Registers
 
 pci:v00008086d00000E6A*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel Target Address Decoder Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers
 
 pci:v00008086d00000E6B*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel Target Address Decoder Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers
 
 pci:v00008086d00000E6C*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel Target Address Decoder Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers
 
 pci:v00008086d00000E6D*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel Target Address Decoder Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers
 
 pci:v00008086d00000E71*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 RAS Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 RAS Registers
+
+pci:v00008086d00000E74*
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 R2PCIe
+
+pci:v00008086d00000E75*
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 R2PCIe
+
+pci:v00008086d00000E77*
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Ring Registers
 
 pci:v00008086d00000E79*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 RAS Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 RAS Registers
+
+pci:v00008086d00000E7D*
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 UBOX Registers
+
+pci:v00008086d00000E7F*
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Ring Registers
 
 pci:v00008086d00000E80*
- ID_MODEL_FROM_DATABASE=Ivytown QPI Link 0
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link 0
 
 pci:v00008086d00000E81*
- ID_MODEL_FROM_DATABASE=Ivytown QPI Ring Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Ring Registers
 
 pci:v00008086d00000E83*
- ID_MODEL_FROM_DATABASE=Ivytown QPI Link Reut 0
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link Reut 0
 
 pci:v00008086d00000E84*
- ID_MODEL_FROM_DATABASE=Ivytown QPI Link Reut 0
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link Reut 0
+
+pci:v00008086d00000E87*
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Registers
 
 pci:v00008086d00000E90*
- ID_MODEL_FROM_DATABASE=Ivytown QPI Link 1
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link 1
 
 pci:v00008086d00000E93*
- ID_MODEL_FROM_DATABASE=Ivytown QPI Link 1
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link 1
 
 pci:v00008086d00000E94*
- ID_MODEL_FROM_DATABASE=Ivytown QPI Link Reut 1
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link Reut 1
 
 pci:v00008086d00000EA0*
- ID_MODEL_FROM_DATABASE=Ivytown Home Agent 0
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Home Agent 0
 
 pci:v00008086d00000EA8*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Target Address/Thermal Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Target Address/Thermal Registers
 
 pci:v00008086d00000EAA*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel Target Address Decoder Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers
 
 pci:v00008086d00000EAB*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel Target Address Decoder Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers
 
 pci:v00008086d00000EAC*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel Target Address Decoder Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers
 
 pci:v00008086d00000EAD*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel Target Address Decoder Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers
+
+pci:v00008086d00000EAE*
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO Registers
+
+pci:v00008086d00000EAF*
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO Registers
 
 pci:v00008086d00000EB0*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 Thermal Control 0
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 0
 
 pci:v00008086d00000EB1*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 Thermal Control 1
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 1
 
 pci:v00008086d00000EB2*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 ERROR Registers 0
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 0
 
 pci:v00008086d00000EB3*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 ERROR Registers 1
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 1
 
 pci:v00008086d00000EB4*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 Thermal Control 2
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 2
 
 pci:v00008086d00000EB5*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 Thermal Control 3
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 3
 
 pci:v00008086d00000EB6*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 ERROR Registers 2
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 2
 
 pci:v00008086d00000EB7*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 ERROR Registers 3
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 3
+
+pci:v00008086d00000EBC*
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO Registers
+
+pci:v00008086d00000EBE*
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO Registers
+
+pci:v00008086d00000EBF*
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO Registers
 
 pci:v00008086d00000EC0*
- ID_MODEL_FROM_DATABASE=Ivytown Power Control Unit 0
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Power Control Unit 0
 
 pci:v00008086d00000EC1*
- ID_MODEL_FROM_DATABASE=Ivytown Power Control Unit 1
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Power Control Unit 1
 
 pci:v00008086d00000EC2*
- ID_MODEL_FROM_DATABASE=Ivytown Power Control Unit 2
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Power Control Unit 2
 
 pci:v00008086d00000EC3*
- ID_MODEL_FROM_DATABASE=Ivytown Power Control Unit 3
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Power Control Unit 3
 
 pci:v00008086d00000EC4*
- ID_MODEL_FROM_DATABASE=Ivytown Power Control Unit 4
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Power Control Unit 4
 
 pci:v00008086d00000EC8*
- ID_MODEL_FROM_DATABASE=Ivytown System Address Decoder
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 System Address Decoder
 
 pci:v00008086d00000EC9*
- ID_MODEL_FROM_DATABASE=Ivytown Broadcast Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Broadcast Registers
 
 pci:v00008086d00000ECA*
- ID_MODEL_FROM_DATABASE=Ivytown Broadcast Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Broadcast Registers
 
 pci:v00008086d00000ED8*
- ID_MODEL_FROM_DATABASE=Ivytown DDRIO
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
 
 pci:v00008086d00000ED9*
- ID_MODEL_FROM_DATABASE=Ivytown DDRIO
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
 
 pci:v00008086d00000EDC*
- ID_MODEL_FROM_DATABASE=Ivytown DDRIO
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
 
 pci:v00008086d00000EDD*
- ID_MODEL_FROM_DATABASE=Ivytown DDRIO
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
 
 pci:v00008086d00000EDE*
- ID_MODEL_FROM_DATABASE=Ivytown DDRIO
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
 
 pci:v00008086d00000EDF*
- ID_MODEL_FROM_DATABASE=Ivytown DDRIO
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
 
 pci:v00008086d00000EE0*
- ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
 
 pci:v00008086d00000EE1*
- ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
 
 pci:v00008086d00000EE2*
- ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
 
 pci:v00008086d00000EE3*
- ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
 
 pci:v00008086d00000EE4*
- ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
 
 pci:v00008086d00000EE5*
- ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
 
 pci:v00008086d00000EE6*
- ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
 
 pci:v00008086d00000EE7*
- ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
 
 pci:v00008086d00000EE8*
- ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
 
 pci:v00008086d00000EE9*
- ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
 
 pci:v00008086d00000EEA*
- ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
 
 pci:v00008086d00000EEB*
- ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
 
 pci:v00008086d00000EEC*
- ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
 
 pci:v00008086d00000EED*
- ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
 
 pci:v00008086d00000EEE*
- ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
 
 pci:v00008086d00000EF0*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 Thermal Control 0
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 0
 
 pci:v00008086d00000EF1*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 Thermal Control 1
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 1
 
 pci:v00008086d00000EF2*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 0
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 0
 
 pci:v00008086d00000EF3*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 1
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 1
 
 pci:v00008086d00000EF4*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 Thermal Control 2
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 2
 
 pci:v00008086d00000EF5*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 Thermal Control 3
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 3
 
 pci:v00008086d00000EF6*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 2
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 2
 
 pci:v00008086d00000EF7*
- ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 3
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 3
 
 pci:v00008086d00000EF8*
- ID_MODEL_FROM_DATABASE=Ivytown DDRIO
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
 
 pci:v00008086d00000EF9*
- ID_MODEL_FROM_DATABASE=Ivytown DDRIO
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
 
 pci:v00008086d00000EFA*
- ID_MODEL_FROM_DATABASE=Ivytown DDRIO
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
 
 pci:v00008086d00000EFB*
- ID_MODEL_FROM_DATABASE=Ivytown DDRIO
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
 
 pci:v00008086d00000EFC*
- ID_MODEL_FROM_DATABASE=Ivytown DDRIO
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
 
 pci:v00008086d00000EFD*
- ID_MODEL_FROM_DATABASE=Ivytown DDRIO
+ ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
 
 pci:v00008086d00000F00*
  ID_MODEL_FROM_DATABASE=ValleyView SSA-CUnit

commit c51d84dc09476d9c06b8aac726220bf3c7d62e8d
Author: Kay Sievers <kay at vrfy.org>
Date:   Mon Sep 23 17:23:35 2013 -0500

    support acpi firmware performance data (FPDT)
    
    Prefer firmware-provided performance data over loader-exported ones; if
    ACPI data is available, always use it, otherwise try to read the loader
    data.
    
    The firmware-provided variables start at the time the first EFI image
    is executed and end when the operating system exits the boot services;
    the (loader) time calculated in systemd-analyze increases.

diff --git a/.gitignore b/.gitignore
index 8115d4d..5b38c0b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -85,6 +85,7 @@
 /systemd-user-sessions
 /systemd-vconsole-setup
 /tags
+/test-boot-timestamp
 /test-bus-chat
 /test-bus-kernel
 /test-bus-kernel-bloom
@@ -102,7 +103,6 @@
 /test-daemon
 /test-date
 /test-device-nodes
-/test-efivars
 /test-engine
 /test-env-replace
 /test-fileio
diff --git a/Makefile.am b/Makefile.am
index 89a5c86..0eee1d9 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -717,6 +717,10 @@ libsystemd_shared_la_SOURCES = \
 	src/shared/output-mode.h \
 	src/shared/MurmurHash3.c \
 	src/shared/MurmurHash3.h \
+	src/shared/acpi-fpdt.h \
+	src/shared/acpi-fpdt.c \
+	src/shared/boot-timestamps.h \
+	src/shared/boot-timestamps.c \
 	src/shared/refcnt.h
 
 #-------------------------------------------------------------------------------
@@ -1155,9 +1159,6 @@ EXTRA_DIST += \
 test_device_nodes_SOURCES = \
 	src/test/test-device-nodes.c
 
-test_device_nodes_CFLAGS = \
-	$(AM_CFLAGS)
-
 test_device_nodes_LDADD = \
 	libsystemd-shared.la
 
@@ -1209,12 +1210,12 @@ test_hostname_LDADD = \
 
 if ENABLE_EFI
 manual_tests += \
-	test-efivars
+	test-boot-timestamp
 
-test_efivars_SOURCES = \
-	src/test/test-efivars.c
+test_boot_timestamp_SOURCES = \
+	src/test/test-boot-timestamps.c
 
-test_efivars_LDADD = \
+test_boot_timestamp_LDADD = \
 	libsystemd-shared.la
 endif
 
diff --git a/src/boot/boot-efi.c b/src/boot/boot-efi.c
index 9960c4d..33840b6 100644
--- a/src/boot/boot-efi.c
+++ b/src/boot/boot-efi.c
@@ -174,7 +174,7 @@ int boot_info_query(struct boot_info *info) {
         efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderFirmwareInfo", &info->fw_info);
         efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderImageIdentifier", &info->loader_image_path);
         tilt_slashes(info->loader_image_path);
-        efi_get_loader_device_part_uuid(&info->loader_part_uuid);
+        efi_loader_get_device_part_uuid(&info->loader_part_uuid);
 
         boot_loader_read_entries(info);
         efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderEntrySelected", &loader_active);
diff --git a/src/core/manager.c b/src/core/manager.c
index 079db41..f70ff03 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -70,7 +70,7 @@
 #include "cgroup-util.h"
 #include "path-util.h"
 #include "audit-fd.h"
-#include "efivars.h"
+#include "boot-timestamps.h"
 #include "env-util.h"
 
 /* As soon as 5s passed since a unit was added to our GC queue, make sure to run a gc sweep */
@@ -496,7 +496,7 @@ int manager_new(SystemdRunningAs running_as, bool reexecuting, Manager **_m) {
 
 #ifdef ENABLE_EFI
         if (detect_container(NULL) <= 0)
-                efi_get_boot_timestamps(&m->userspace_timestamp, &m->firmware_timestamp, &m->loader_timestamp);
+                boot_timestamps(&m->userspace_timestamp, &m->firmware_timestamp, &m->loader_timestamp);
 #endif
 
         m->running_as = running_as;
diff --git a/src/efi-boot-generator/efi-boot-generator.c b/src/efi-boot-generator/efi-boot-generator.c
index 4367c53..05b95ed 100644
--- a/src/efi-boot-generator/efi-boot-generator.c
+++ b/src/efi-boot-generator/efi-boot-generator.c
@@ -55,7 +55,7 @@ int main(int argc, char *argv[]) {
         if (dir_is_empty("/boot") <= 0)
                 return EXIT_SUCCESS;
 
-        r = efi_get_loader_device_part_uuid(&id);
+        r = efi_loader_get_device_part_uuid(&id);
         if (r == -ENOENT)
                 return EXIT_SUCCESS;
         if (r < 0) {
diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c
new file mode 100644
index 0000000..b094f34
--- /dev/null
+++ b/src/shared/acpi-fpdt.c
@@ -0,0 +1,155 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+
+/***
+  This file is part of systemd.
+
+  Copyright 2013 Kay Sievers
+
+  systemd is free software; you can redistribute it and/or modify it
+  under the terms of the GNU Lesser General Public License as published by
+  the Free Software Foundation; either version 2.1 of the License, or
+  (at your option) any later version.
+
+  systemd is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with systemd; If not, see <http://www.gnu.org/licenses/>.
+***/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/types.h>
+
+#include <util.h>
+#include <fileio.h>
+#include <time-util.h>
+#include <acpi-fpdt.h>
+
+struct acpi_table_header {
+        char signature[4];
+        uint32_t length;
+        uint8_t revision;
+        uint8_t checksum;
+        char oem_id[6];
+        char oem_table_id[8];
+        uint32_t oem_revision;
+        char asl_compiler_id[4];
+        uint32_t asl_compiler_revision;
+};
+
+enum {
+        ACPI_FPDT_TYPE_BOOT =   0,
+        ACPI_FPDT_TYPE_S3PERF = 1,
+};
+
+struct acpi_fpdt_header {
+        uint16_t type;
+        uint8_t length;
+        uint8_t revision;
+        uint8_t reserved[4];
+        uint64_t ptr;
+};
+
+struct acpi_fpdt_boot_header {
+        char signature[4];
+        uint32_t length;
+};
+
+enum {
+        ACPI_FPDT_S3PERF_RESUME_REC =   0,
+        ACPI_FPDT_S3PERF_SUSPEND_REC =  1,
+        ACPI_FPDT_BOOT_REC =            2,
+};
+
+struct acpi_fpdt_boot {
+        uint16_t type;
+        uint8_t length;
+        uint8_t revision;
+        uint8_t reserved[4];
+        uint64_t reset_end;
+        uint64_t load_start;
+        uint64_t startup_start;
+        uint64_t exit_services_entry;
+        uint64_t exit_services_exit;
+};
+
+int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) {
+        char *buf;
+        struct acpi_table_header *tbl;
+        size_t l;
+        struct acpi_fpdt_header *rec;
+        int r;
+        uint64_t ptr = 0;
+        _cleanup_close_ int fd = -1;
+        struct acpi_fpdt_boot_header hbrec;
+        struct acpi_fpdt_boot brec;
+
+        r = read_full_file("/sys/firmware/acpi/tables/FPDT", &buf, &l);
+        if (r < 0)
+                return r;
+
+        if (l < sizeof(struct acpi_table_header) + sizeof(struct acpi_fpdt_header))
+                return -EINVAL;
+
+        tbl = (struct acpi_table_header *)buf;
+        if (l != tbl->length)
+                return -EINVAL;
+
+        if (memcmp(tbl->signature, "FPDT", 4) != 0)
+                return -EINVAL;
+
+        /* find Firmware Basic Boot Performance Pointer Record */
+        for (rec = (struct acpi_fpdt_header *)(buf + sizeof(struct acpi_table_header));
+             (char *)rec < buf + l;
+             rec = (struct acpi_fpdt_header *)((char *)rec + rec->length)) {
+                if (rec->type != ACPI_FPDT_TYPE_BOOT)
+                        continue;
+                if (rec->length != sizeof(struct acpi_fpdt_header))
+                        continue;
+
+                ptr = rec->ptr;
+                break;
+        }
+
+        if (ptr == 0)
+                return -EINVAL;
+
+        /* read Firmware Basic Boot Performance Data Record */
+        fd = open("/dev/mem", O_CLOEXEC|O_RDONLY);
+        if (fd < 0)
+                return -errno;
+
+        l = pread(fd, &hbrec, sizeof(struct acpi_fpdt_boot_header), ptr);
+        if (l != sizeof(struct acpi_fpdt_boot_header))
+                return -EINVAL;
+
+        if (memcmp(hbrec.signature, "FBPT", 4) != 0)
+                return -EINVAL;
+
+        if (hbrec.length < sizeof(struct acpi_fpdt_boot_header) + sizeof(struct acpi_fpdt_boot))
+                return -EINVAL;
+
+        l = pread(fd, &brec, sizeof(struct acpi_fpdt_boot), ptr + sizeof(struct acpi_fpdt_boot_header));
+        if (l != sizeof(struct acpi_fpdt_boot))
+                return -EINVAL;
+
+        if (brec.length != sizeof(struct acpi_fpdt_boot))
+                return -EINVAL;
+
+        if (brec.type != ACPI_FPDT_BOOT_REC)
+                return -EINVAL;
+
+        if (loader_start)
+                *loader_start = brec.startup_start / 1000;
+        if (loader_exit)
+                *loader_exit = brec.exit_services_exit / 1000;
+
+        return 0;
+}
diff --git a/src/shared/acpi-fpdt.h b/src/shared/acpi-fpdt.h
new file mode 100644
index 0000000..fc4fe6f
--- /dev/null
+++ b/src/shared/acpi-fpdt.h
@@ -0,0 +1,26 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+
+#pragma once
+
+/***
+  This file is part of systemd.
+
+  Copyright 2013 Kay Sievers
+
+  systemd is free software; you can redistribute it and/or modify it
+  under the terms of the GNU Lesser General Public License as published by
+  the Free Software Foundation; either version 2.1 of the License, or
+  (at your option) any later version.
+
+  systemd is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with systemd; If not, see <http://www.gnu.org/licenses/>.
+***/
+
+#include <time-util.h>
+
+int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit);
diff --git a/src/shared/boot-timestamps.c b/src/shared/boot-timestamps.c
new file mode 100644
index 0000000..9449965
--- /dev/null
+++ b/src/shared/boot-timestamps.c
@@ -0,0 +1,65 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+
+/***
+  This file is part of systemd.
+
+  Copyright 2012 Lennart Poettering
+  Copyright 2013 Kay Sievers
+
+  systemd is free software; you can redistribute it and/or modify it
+  under the terms of the GNU Lesser General Public License as published by
+  the Free Software Foundation; either version 2.1 of the License, or
+  (at your option) any later version.
+
+  systemd is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with systemd; If not, see <http://www.gnu.org/licenses/>.
+***/
+#include <unistd.h>
+
+#include "boot-timestamps.h"
+#include "acpi-fpdt.h"
+#include "efivars.h"
+
+int boot_timestamps(const dual_timestamp *n, dual_timestamp *firmware, dual_timestamp *loader) {
+        usec_t x, y, a;
+        int r;
+        dual_timestamp _n;
+
+        assert(firmware);
+        assert(loader);
+
+        if (!n) {
+                dual_timestamp_get(&_n);
+                n = &_n;
+        }
+
+        r = acpi_get_boot_usec(&x, &y);
+        if (r < 0) {
+                r = efi_loader_get_boot_usec(&x, &y);
+                if (r < 0)
+                        return r;
+        }
+
+        /* Let's convert this to timestamps where the firmware
+         * began/loader began working. To make this more confusing:
+         * since usec_t is unsigned and the kernel's monotonic clock
+         * begins at kernel initialization we'll actually initialize
+         * the monotonic timestamps here as negative of the actual
+         * value. */
+
+        firmware->monotonic = y;
+        loader->monotonic = y - x;
+
+        a = n->monotonic + firmware->monotonic;
+        firmware->realtime = n->realtime > a ? n->realtime - a : 0;
+
+        a = n->monotonic + loader->monotonic;
+        loader->realtime = n->realtime > a ? n->realtime - a : 0;
+
+        return 0;
+}
diff --git a/src/shared/boot-timestamps.h b/src/shared/boot-timestamps.h
new file mode 100644
index 0000000..a3d2405
--- /dev/null
+++ b/src/shared/boot-timestamps.h
@@ -0,0 +1,27 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+
+#pragma once
+
+/***
+  This file is part of systemd.
+
+  Copyright 2012 Lennart Poettering
+  Copyright 2013 Kay Sievers
+
+  systemd is free software; you can redistribute it and/or modify it
+  under the terms of the GNU Lesser General Public License as published by
+  the Free Software Foundation; either version 2.1 of the License, or
+  (at your option) any later version.
+
+  systemd is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with systemd; If not, see <http://www.gnu.org/licenses/>.
+***/
+
+#include <time-util.h>
+
+int boot_timestamps(const dual_timestamp *n, dual_timestamp *firmware, dual_timestamp *loader);
diff --git a/src/shared/efivars.c b/src/shared/efivars.c
index 8d004ba..1d5b6f9 100644
--- a/src/shared/efivars.c
+++ b/src/shared/efivars.c
@@ -24,6 +24,7 @@
 #include <fcntl.h>
 #include <ctype.h>
 
+#include "acpi-fpdt.h"
 #include "util.h"
 #include "utf8.h"
 #include "efivars.h"
@@ -413,7 +414,7 @@ static int read_usec(sd_id128_t vendor, const char *name, usec_t *u) {
         return 0;
 }
 
-static int get_boot_usec(usec_t *firmware, usec_t *loader) {
+int efi_loader_get_boot_usec(usec_t *firmware, usec_t *loader) {
         uint64_t x, y;
         int r;
 
@@ -440,43 +441,7 @@ static int get_boot_usec(usec_t *firmware, usec_t *loader) {
         return 0;
 }
 
-int efi_get_boot_timestamps(const dual_timestamp *n, dual_timestamp *firmware, dual_timestamp *loader) {
-        usec_t x, y, a;
-        int r;
-        dual_timestamp _n;
-
-        assert(firmware);
-        assert(loader);
-
-        if (!n) {
-                dual_timestamp_get(&_n);
-                n = &_n;
-        }
-
-        r = get_boot_usec(&x, &y);
-        if (r < 0)
-                return r;
-
-        /* Let's convert this to timestamps where the firmware
-         * began/loader began working. To make this more confusing:
-         * since usec_t is unsigned and the kernel's monotonic clock
-         * begins at kernel initialization we'll actually initialize
-         * the monotonic timestamps here as negative of the actual
-         * value. */
-
-        firmware->monotonic = y;
-        loader->monotonic = y - x;
-
-        a = n->monotonic + firmware->monotonic;
-        firmware->realtime = n->realtime > a ? n->realtime - a : 0;
-
-        a = n->monotonic + loader->monotonic;
-        loader->realtime = n->realtime > a ? n->realtime - a : 0;
-
-        return 0;
-}
-
-int efi_get_loader_device_part_uuid(sd_id128_t *u) {
+int efi_loader_get_device_part_uuid(sd_id128_t *u) {
         _cleanup_free_ char *p = NULL;
         int r, parsed[16];
         unsigned i;
diff --git a/src/shared/efivars.h b/src/shared/efivars.h
index 2b88c60..7921bed 100644
--- a/src/shared/efivars.h
+++ b/src/shared/efivars.h
@@ -42,6 +42,5 @@ int efi_get_boot_option(uint16_t nr, char **title, sd_id128_t *partuuid, char **
 int efi_get_boot_order(uint16_t **order);
 int efi_get_boot_options(uint16_t **options);
 
-int efi_get_boot_timestamps(const dual_timestamp *n, dual_timestamp *firmware, dual_timestamp *loader);
-
-int efi_get_loader_device_part_uuid(sd_id128_t *u);
+int efi_loader_get_device_part_uuid(sd_id128_t *u);
+int efi_loader_get_boot_usec(usec_t *firmware, usec_t *loader);
diff --git a/src/test/test-boot-timestamps.c b/src/test/test-boot-timestamps.c
new file mode 100644
index 0000000..4ede318
--- /dev/null
+++ b/src/test/test-boot-timestamps.c
@@ -0,0 +1,98 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+
+/***
+  This file is part of systemd.
+
+  Copyright 2013 Lennart Poettering
+  Copyright 2013 Kay Sievers
+
+  systemd is free software; you can redistribute it and/or modify it
+  under the terms of the GNU Lesser General Public License as published by
+  the Free Software Foundation; either version 2.1 of the License, or
+  (at your option) any later version.
+
+  systemd is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with systemd; If not, see <http://www.gnu.org/licenses/>.
+***/
+
+#include "util.h"
+#include "log.h"
+#include "boot-timestamps.h"
+#include "efivars.h"
+#include "acpi-fpdt.h"
+
+static int test_acpi_fpdt(void) {
+        usec_t loader_start;
+        usec_t loader_exit;
+        char ts_start[FORMAT_TIMESPAN_MAX];
+        char ts_exit[FORMAT_TIMESPAN_MAX];
+        char ts_span[FORMAT_TIMESPAN_MAX];
+        int r;
+
+        r = acpi_get_boot_usec(&loader_start, &loader_exit);
+        if (r < 0) {
+                if (r != -ENOENT)
+                        log_error("Failed to read ACPI FPDT: %s", strerror(-r));
+                return r;
+        }
+
+        log_info("ACPI FPDT: loader start=%s exit=%s duration=%s",
+                 format_timespan(ts_start, sizeof(ts_start), loader_start, USEC_PER_MSEC),
+                 format_timespan(ts_exit, sizeof(ts_exit), loader_exit, USEC_PER_MSEC),
+                 format_timespan(ts_span, sizeof(ts_span), loader_exit - loader_start, USEC_PER_MSEC));
+
+        return 0;
+}
+
+static int test_efi_loader(void) {
+        usec_t loader_start;
+        usec_t loader_exit;
+        char ts_start[FORMAT_TIMESPAN_MAX];
+        char ts_exit[FORMAT_TIMESPAN_MAX];
+        char ts_span[FORMAT_TIMESPAN_MAX];
+        int r;
+
+        r = efi_loader_get_boot_usec(&loader_start, &loader_exit);
+        if (r < 0) {
+                if (r != -ENOENT)
+                        log_error("Failed to read EFI loader data: %s", strerror(-r));
+                return r;
+        }
+
+        log_info("EFI Loader: start=%s exit=%s duration=%s",
+                 format_timespan(ts_start, sizeof(ts_start), loader_start, USEC_PER_MSEC),
+                 format_timespan(ts_exit, sizeof(ts_exit), loader_exit, USEC_PER_MSEC),
+                 format_timespan(ts_span, sizeof(ts_span), loader_exit - loader_start, USEC_PER_MSEC));
+
+        return 0;
+}
+
+int main(int argc, char* argv[]) {
+        char s[MAX(FORMAT_TIMESPAN_MAX, FORMAT_TIMESTAMP_MAX)];
+        int r;
+        dual_timestamp fw, l, k;
+
+        test_acpi_fpdt();
+        test_efi_loader();
+
+        dual_timestamp_from_monotonic(&k, 0);
+
+        r = boot_timestamps(NULL, &fw, &l);
+        if (r < 0) {
+                log_error("Failed to read variables: %s", strerror(-r));
+                return 1;
+        }
+
+        log_info("Firmware began %s before kernel.", format_timespan(s, sizeof(s), fw.monotonic, 0));
+        log_info("Loader began %s before kernel.", format_timespan(s, sizeof(s), l.monotonic, 0));
+        log_info("Firmware began %s.", format_timestamp(s, sizeof(s), fw.realtime));
+        log_info("Loader began %s.", format_timestamp(s, sizeof(s), l.realtime));
+        log_info("Kernel began %s.", format_timestamp(s, sizeof(s), k.realtime));
+
+        return 0;
+}
diff --git a/src/test/test-efivars.c b/src/test/test-efivars.c
deleted file mode 100644
index 43ea591..0000000
--- a/src/test/test-efivars.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
-
-/***
-  This file is part of systemd.
-
-  Copyright 2013 Lennart Poettering
-
-  systemd is free software; you can redistribute it and/or modify it
-  under the terms of the GNU Lesser General Public License as published by
-  the Free Software Foundation; either version 2.1 of the License, or
-  (at your option) any later version.
-
-  systemd is distributed in the hope that it will be useful, but
-  WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-  Lesser General Public License for more details.
-
-  You should have received a copy of the GNU Lesser General Public License
-  along with systemd; If not, see <http://www.gnu.org/licenses/>.
-***/
-
-#include "util.h"
-#include "log.h"
-#include "efivars.h"
-
-int main(int argc, char* argv[]) {
-        char s[MAX(FORMAT_TIMESPAN_MAX, FORMAT_TIMESTAMP_MAX)];
-        int r;
-        dual_timestamp fw, l, k;
-
-        dual_timestamp_from_monotonic(&k, 0);
-
-        r = efi_get_boot_timestamps(NULL, &fw, &l);
-        if (r < 0) {
-                log_error("Failed to read variables: %s", strerror(-r));
-                return 1;
-        }
-
-        log_info("Firmware began %s before kernel.", format_timespan(s, sizeof(s), fw.monotonic, 0));
-        log_info("Loader began %s before kernel.", format_timespan(s, sizeof(s), l.monotonic, 0));
-
-        log_info("Firmware began %s.", format_timestamp(s, sizeof(s), fw.realtime));
-        log_info("Loader began %s.", format_timestamp(s, sizeof(s), l.realtime));
-        log_info("Kernel began %s.", format_timestamp(s, sizeof(s), k.realtime));
-
-        return 0;
-}

commit 036ae95ac4a425475b58e1a8e53d5c52b2c8a218
Author: Kay Sievers <kay at vrfy.org>
Date:   Mon Sep 23 16:53:19 2013 -0500

    shared: device-nodes - add include guard

diff --git a/src/shared/device-nodes.c b/src/shared/device-nodes.c
index 986553e..9837375 100644
--- a/src/shared/device-nodes.c
+++ b/src/shared/device-nodes.c
@@ -3,7 +3,7 @@
 /***
   This file is part of systemd.
 
-  Copyright 2012 Lennart Poettering
+  Copyright 2008-2011 Kay Sievers
 
   systemd is free software; you can redistribute it and/or modify it
   under the terms of the GNU Lesser General Public License as published by
diff --git a/src/shared/device-nodes.h b/src/shared/device-nodes.h
index a98195a..04ba489 100644
--- a/src/shared/device-nodes.h
+++ b/src/shared/device-nodes.h
@@ -1,5 +1,7 @@
 /*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
 
+#pragma once
+
 /***
   This file is part of systemd.
 
diff --git a/src/shared/utf8.c b/src/shared/utf8.c
index c3d97cc..a8e28ac 100644
--- a/src/shared/utf8.c
+++ b/src/shared/utf8.c
@@ -3,6 +3,7 @@
 /***
   This file is part of systemd.
 
+  Copyright 2008-2011 Kay Sievers
   Copyright 2012 Lennart Poettering
 
   systemd is free software; you can redistribute it and/or modify it
@@ -19,7 +20,7 @@
   along with systemd; If not, see <http://www.gnu.org/licenses/>.
 ***/
 
-/* This file is based on the GLIB utf8 validation functions. The
+/* Parts of this file are based on the GLIB utf8 validation functions. The
  * original license text follows. */
 
 /* gutf8.c - Operations on UTF-8 strings.

commit fb8f3f986991e2ee249ee0d0b303f6123b709f43
Author: Kay Sievers <kay at vrfy.org>
Date:   Mon Sep 23 16:52:58 2013 -0500

    TODO: update

diff --git a/TODO b/TODO
index 01bc993..b79e265 100644
--- a/TODO
+++ b/TODO
@@ -1,7 +1,3 @@
-Bugfixes:
-* the running hwdb seems not to pick up updated database files without
-  an explicit: udevadm control --reload
-
 * enabling an instance unit creates pointless link, and
   the unit will be started with getty at getty.service:
     $ systemctl enable getty at .service



More information about the systemd-commits mailing list